你如何处理本地化/ CultureInfo
某些方法(如string.Format()或.Parse())需要IFormatProvider。 你是如何提供的?
-
在封闭环境应用程序中(您知道永远不需要本地化),您是否只是跳过它并在没有IFormatProvider的情况下调用方法?
-
在可能已本地化的应用程序中,您是否考虑了每个方法调用的正确值,并将其设置在那里? 这可能是’CultureInfo.CurrentCulture’或’CultureInfo.CurrentUiCulture’。
-
或者您是否使用“MyUiCultureInfo”和“MyCultureInfo”等全局变量来通过更改其值来切换本地化? 你如何以及在哪里存储这些变量?
-
在开发库或框架时有什么需要考虑的 – 在这种情况下如何处理本地化?
我将当前的文化设置为美国英语,因为在我的国家,很少有“聪明”的人认为小数点分隔符是逗号。 有时十进制数用’,’,有时用’。’。 并非所有计算机都配置了正确的区域设置, 您不应该依赖它 。
要设置应用程序范围的设置:
Application.CurrentCulture = new CultureInfo("en-US"); Application.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
正如您所说,您可以在封闭的环境中调用方法,而无需提供任何IFormatProvider。
正如您所写,您可以提供如下的CultureInfo对象:
Console.WriteLine(String.Format(CultureInfo.CurrentCulture, "{0}", DateTime.Now)); Console.WriteLine(String.Format(new CultureInfo("en-US"), "{0}", DateTime.Now));
这样我可以用两种不同的方式显示日期,因为我的CurrentCulture是瑞典语,如下所示:
2009-05-28 13:12:43
5/28/2009 1:12:43 PM
CultureInfo.CurrentCulture处理日期等的格式化,并且是从您当前机器上的设置提供的。
CurrentCulture.CurrentUiCulture与翻译本地化有关。 意思是在窗口中的菜单等上显示的内容。
我的猜测是,如果没有提供,则方法的默认行为是使用CurrentCulture。
我总是将Culture属性放在ASPX或Master页面的开头,它会为我完成所有转换。 我永远不需要做任何硬编码或将日期/时间转换为我自己所需的文化……
. <%@ Page Language="C#" ..etc... Culture="en-AU" %> .
Simplez