将asp.net应用程序本地化为HK,语言设置为英语

时间:2012-09-27 07:34:20

标签: c# asp.net-mvc localization cultureinfo

我正在构建一个多语言网络应用程序。客户要求香港网站以英文显示。不幸的是,“en-HK”并不是asp.net中的有效文化,所以我试图用“zh-hk”绕过它。但是,这会导致日期时间字符串(格式为dd-MMM-yyyy)以中文显示。

有没有办法用英语显示语言,但将其本地化为Hk?

3 个答案:

答案 0 :(得分:2)

CurrentUICulture控制本地化资源的选择:将其设置为英语文化(例如“en”或“en-GB”)。

CurrentCulture控制数字和日期格式等,包括日期和月份名称。将其设置为“en-GB”,或将其设置为基于“en-GB”的自定义文化,但是可以进行任何修改(例如,您的帖子建议您想要“ - ”作为日期分隔符:dd-MMM-yyyy )。

这些都不会影响时区等,所以我真的不明白为什么只使用“en-GB”会出现问题。

答案 1 :(得分:2)

我对香港了解不多,但鉴于香港最近的历史,那里使用的英语惯例可能基于英国英语而非美国英语。香港使用的短日期格式(记录在维基百科here)肯定似乎支持这种说法:它是日/月/年(英国风格,不像美国风格,月/日/年)。

您可以随时为en-HK创建自定义文化(Windows 7以上版本支持)。这是通过使用CultureAndRegionInfoBuilder类来完成的,如果上面的评论是正确的,你可以根据en-GB文化创建你的en-HK CultureInfo。如果您愿意,这将允许您自定义CultureInfo的一些元素(更重要的是,如果您知道香港的不同之处)。通过将您的自定义文化基于en-GB,您的日期格式将以英语显示月份名称。但是创建一种自定义文化可能有点过头了。

更简单地说,您可以使用en-GB文化名称。您的应用程序可能不会使用不适用于香港的en-GB文化中的一些更神秘的东西。

注意:如果有任何混淆,日期格式Thread.CurrentUICulture无效 - 它完全取决于Thread.CurrentCulture设置的内容(以及哪些必须是一种特定的文化,与CurrentUICulture不同,中性文化如“en”可以。)

答案 2 :(得分:1)

据我所知,你不能自己组合你的文化字符串(意思是,除非在.NET中列出,否则en-HK无效)。

但是,每个帖子有两种不同的文化设置:

System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentUICulture

这两者都控制着不同的东西。也许这可以让你使用英语作为语言,但香港作为本地化格式。

你也可以覆盖日期的格式,特别是,也许找到更好的cultureinfos,它将为你提供所需的日期格式。