我正在开发一个.net 4.5应用程序,需要多语言支持多种文化等。
以下是国家/语言的示例列表
对于上述所有内容,可以根据上述文化名称
创建CultureInfo对象当用户进入网站时,我将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对象?
答案 0 :(得分:5)
是否可以为无效的文化名称
创建自定义CultureInfo对象
是
利用CultureAndRegionInfoBuilder
来帮助创建自定义CultureInfo
。 (注意:一旦你有了创建文化的代码,执行此操作的设置可以保存到XML然后加载,例如从资源加载,在运行时需要更少的代码。)
答案 1 :(得分:4)
你可能需要混合,混合和匹配 - 有一个英语文化对象,你用于英文文本,但是ru-Ru(俄语)的文化对象用于数字格式化。
甚至可以更好地创建一个结合了两个
的自定义文化答案 2 :(得分:0)
您应该使用CultureInfo.InvariantCulture
属性
不变文化对文化不敏感;它与...有关 英语,但不包括任何国家/地区。你指定了 通过在调用中使用空字符串(“”)按名称进行不变文化 CultureInfo实例化方法。 CultureInfo.InvariantCulture也 检索不变文化的实例。它可以用于 几乎所有需要的System.Globalization命名空间中的方法 一种文化。 CompareInfo等属性返回的对象, DateTimeFormat和NumberFormat也反映了字符串比较 和不变文化的格式约定。