为国家,语言组合创建自定义CultureInfo
我正在开发一个.net 4.5应用程序,需要多语言支持多文化等。
以下是国家/语言的示例列表
- 俄罗斯/俄罗斯
- 比利时/法国
- 比利时/荷兰
对于上述所有内容,可以根据上述文化名称创建CultureInfo对象
- RU-RU
- FR-BE
- NL-BE
当用户进入站点时,我将Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture设置为使用上述名称创建的文化,例如。
Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-BE", false) Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE", false)
以上所有名称均为有效的文化名称。
不,但我需要在俄罗斯添加另一种文化名称,英语。 但问题是代码en-RU无效,所以当我创建new CultureInfo("en-RU", false)
我得到一个CultureNotFoundException,因为en-RU无效。
有了这种文化,我希望俄罗斯的格式等数字,日期等,但我希望网站上的语言是英语。 是否可以使用国家/地区(俄罗斯)的行为为无效的文化名称创建自定义CultureInfo对象?
是否可以为无效的文化名称创建自定义CultureInfo对象
是。
利用CultureAndRegionInfoBuilder
来帮助创建自定义CultureInfo
。 (注意:一旦你有了创建文化的代码,执行此操作的设置可以保存到XML,然后加载,例如从资源中加载,在运行时应该需要更少的代码。)
你可能需要混合和混合和匹配 – 有一个英语文化对象,你用于英文文本,但ru-Ru(俄罗斯)的文化对象用于数字格式。
或者甚至更好地创建两者结合的自定义文化
在ASP.NET中创建自定义文化
您应该使用CultureInfo.InvariantCulture
属性
不变文化对文化不敏感; 它与英语有关,但与任何国家/地区无关。 您可以通过在对CultureInfo实例化方法的调用中使用空字符串(“”)来按名称指定不变文化。 CultureInfo.InvariantCulture还检索不变文化的实例。 它几乎可以在需要文化的System.Globalization命名空间中的任何方法中使用。 CompareInfo,DateTimeFormat和NumberFormat等属性返回的对象也反映了不变文化的字符串比较和格式约定。
CultureInfo.InvariantCulture属性
这是自定义全球应用文化的其他选项