为国家,语言组合创建自定义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属性

这是自定义全球应用文化的其他选项