2

我在基于 Web 的应用程序中有一个场景,用户从下拉列表中选择一个国家/地区。选择国家后,国家列表框下方的本地化字段也会显示为与该国家相对应。在这里,我还需要根据该国家/地区的语言环境预先选择该国家并预先填充下拉列表。

让我用例子来说明这一点:

例子

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)中实现这一点?

想知道我们是否可以使用 Google Web Service API 来满足这个要求?期待以经过验证的经验寻求答案。谢谢

4

3 回答 3

1

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

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

于 2012-04-09T12:41:34.443 回答
1

从长远来看,利用资源文件来存储翻译文本将为您提供更大的灵活性。

请查看以下有关如何使用资源文件的链接:

http://www.codeproject.com/Articles/334820/Using-Globalization-and-Localization-in-ASP-NET

http://www.codeproject.com/Articles/14818/ASP-NET-2-0-Globalization-Localization-solution

于 2012-04-11T14:38:49.283 回答
1

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

我想您可以使用您喜欢的方法(可能是 XML,可能是硬编码的数据定义)为每个市场定义格式,以定义其适当的“结构”(我所说的结构是指哪些字段和以何种顺序)并使用标准本地化来翻译每个市场对应的标签。

编辑:

关于日期、时间和货币,您可以使用 .NET Framework 的区域性定义,可以通过 CultureInfo 的 DateTimeFormat 和 NumberFormat 属性(MSDN 链接)访问。我不确定您是想通过示例(例如今天的日期或当前时间)还是格式本身(例如 mm/dd/yy 和 hh:mm:ss)来显示日期、时间和货币。对于前者,您实例化一个 CultureInfo 并将其传递给采用 IFormatProvider 的 ToString 覆盖。日期和时间的一个很好的例子显示在这个 MSDN 页面上。这同样适用于货币格式(MSDN 链接)。它是这样工作的:

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: £
于 2012-04-13T16:35:13.677 回答