这与本地化无关,而是与市场特定的标准有关。具体来说,国际地址格式。我不知道有现成的解决方案,但您可以找到定义这些格式的现有资源(例如在 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: £