为国家,语言组合创建自定义CultureInfo

时间:2012-10-16 14:26:50

标签: c# .net cultureinfo culture currentuiculture

我正在开发一个.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对象?

3 个答案:

答案 0 :(得分:5)

  

是否可以为无效的文化名称

创建自定义CultureInfo对象

利用CultureAndRegionInfoBuilder来帮助创建自定义CultureInfo。 (注意:一旦你有了创建文化的代码,执行此操作的设置可以保存到XML然后加载,例如从资源加载,在运行时需要更少的代码。)

答案 1 :(得分:4)

你可能需要混合,混合和匹配 - 有一个英语文化对象,你用于英文文本,但是ru-Ru(俄语)的文化对象用于数字格式化。

甚至可以更好地创建一个结合了两个

的自定义文化

Create custom culture in ASP.NET

答案 2 :(得分:0)

您应该使用CultureInfo.InvariantCulture属性

  

不变文化对文化不敏感;它与...有关   英语,但不包括任何国家/地区。你指定了   通过在调用中使用空字符串(“”)按名称进行不变文化   CultureInfo实例化方法。 CultureInfo.InvariantCulture也   检索不变文化的实例。它可以用于   几乎所有需要的System.Globalization命名空间中的方法   一种文化。 CompareInfo等属性返回的对象,   DateTimeFormat和NumberFormat也反映了字符串比较   和不变文化的格式约定。

CultureInfo.InvariantCulture Property

这是其他选项Custom Global Application Culture