2012-04-04 47 views
2

我在基于Web的应用程序中有一个场景,用户从下拉列表中选择一个国家。选择国家后,国家/地区列表框下方的本地化字段就会显示为该国家/地区的相应字段。在这里,我还需要根据该国的语言环境预选该国家的预选和下拉菜单。如何基于ASP.Net中的本地化对象创建UI?

让我说明这个举例:

举例

Country: United States 

Corresponding Fields: 
State: 
Zip Code: 
Time: 
Currency: 
Date: 



Country: United Kingdom 

Corresponding Fields: 
County: 
Postal Code: 
Time: 
Currency: 
Date: 



Country: India 

Corresponding Fields: 
Province: 
District: 
PO Box: 
Currency: 
Date: 
Time: 

我怎么能在ASP.Net(3.5或4.0)dinamically实现这一目标?

不知道我们是否可以使用Google Web服务API来满足此要求?期待以经过验证的经验寻求答案。谢谢

+1

嗨,你是什么意思,指出“寻找来自可信和/或官方消息来源的答案”? 它让我怀疑我应该为你的问题写一个答案,因为我可能不是你的官方或可信。 – Dima 2012-04-10 21:19:02

回答

1

我可以看到,国家“印度”的字段数量比其他字段多1个。这是打算?如果是,您可以在数据库中设置与国家相关的字段,并将其本地化文本存储在其他“链接”表格中。每个国家的字段数量可能不同。

如果字段要相同,您可以创建特定于语言环境的资源文件并向其中添加不同的文本。当您在下拉菜单中更改选择时,只需将System.Threading.Thread.CurrentThread.CurrentUICulture设置为相关区域设置代码即可。

1

这是不是这么多的本地化而是市场的具体标准。特别是国际地址格式。我并不知道现成的解决方案,但您可以找到定义这些格式的现有资源(例如,在MSDN上:http://msdn.microsoft.com/en-us/library/cc195167.aspx)。

我想你可以使用你喜欢的方法(可能是XML,也许硬编码的数据定义)为每个市场定义它的适当的“结构”(结构我指的是哪些字段和顺序)并使用标准本地化翻译每个相应的标签。

编辑:

关于日期,时间和货币,你可以使用.NET框架的文化定义,它可以通过的CultureInfo的DateTimeFormat和NumberFormat的性质(MSDN link)进行访问的。我不确定是否要通过示例(如今天的日期或当前时间)或格式本身(如mm/dd/yy和hh:mm:ss)显示日期,时间和货币。对于前者,你实例化一个CultureInfo并将其传递给带有IFormatProvider的ToString覆盖。日期和时间的一个很好的示例显示在this MSDN page上。这同样适用于货币格式(MSDN link)。它的工作原理是这样的:

CultureInfo cultureInfo = new CultureInfo("en-GB"); // Change en-GB to the desired culture name 
DateTime now = DateTime.Now; 
string sampleTime = now.ToString("T", cultureInfo); // Result: 5:04:32 PM 
string sampleDate = now.ToString("d", cultureInfo); // Result: 13/3/2012 
double value = 16325.62901; 
string sampleCurrency = value.ToString("C", cultureInfo); // Result: £16,325.63 

如果在另一方面,你要显示的格式,你可以通过的DateTimeFormatInfo和的NumberFormatInfo的相关性得到这个数据。例如:

CultureInfo cultureInfo = new CultureInfo("en-GB"); 
string shortDatePattern = cultureInfo.DateTimeFormat.ShortDatePattern; // Result: d/M/yyyy 
string shortTimePattern = cultureInfo.DateTimeFormat.ShortTimePattern; // Result: h:mm tt 
string currencySymbol = cultureInfo.NumberFormat.CurrencySymbol; // Result: £ 
+0

日期,时间和货币如何? – 2012-04-13 20:15:58

+1

请参阅我的编辑。 – Clafou 2012-04-13 22:08:35

+0

这确实是一个有价值的信息。也可以请您讨论邮政编码/邮政编码/邮政信箱的情况。例如,对于加拿大我们有一个单独的规则(FYI:http://en.wikipedia.org/wiki/Postal_codes_in_Canada),对于英国(http://en.wikipedia.org/wiki/UK_postal_code)我们有一个单独的规则。谢谢 – 2012-05-09 11:45:18