首页 文章

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

提问于
浏览
8

我正在开发一个.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 回答

  • 4

    是否可以为无效的文化名称创建自定义CultureInfo对象

    是 .

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

  • 5

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

    或者甚至更好地创造一种结合两者的定制文化

    Create custom culture in ASP.NET

  • 0

    你应该使用 CultureInfo.InvariantCulture 属性

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

    CultureInfo.InvariantCulture Property

    这是另一种选择Custom Global Application Culture

相关问题