【发布时间】:2014-01-28 10:07:13
【问题描述】:
我们的一位客户要求我们根据他们的需要更改我们使用的一些术语。这意味着更改表单和用户消息中的一堆标签。我们的应用程序是作为多语言应用程序开发的,所以一切都在资源文件中。
为了解决这个需求,我决定创建一种自定义文化。我从标准的 hr-HR 语言创建了 hr-HR-HP。我做了一些测试,一切正常。
但是,在我们的项目中,我们的第三方组件出现了以下异常
CultureNotFoundException: Culture is not supported.
Parameter name: culture
4096 (0x1000) is an invalid culture identifier.
Google 表示,如果 CultureInfo 是通过 LCID 创建的,并且自定义文化不支持这种情况,则会发生这种情况。因此,为避免这种情况,我将文化参数设置如下:
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("hr-HR-HP");
太好了,错误消失了,表单按预期读取了它们的资源。但是,现在 ResourceManager 是问题所在。它使用 hr 卫星组件而不是 hr-HR-HP 卫星组件。我使用 ResourceManager 从附属程序集中读取用户消息。
有什么建议吗?是否可以为 ResourceManager 指定我想要的语言?我应该尝试其他方法吗?
【问题讨论】:
-
请考虑使用 BCP47 命名约定:hr-HR-x-HP 会更好。
-
从未听说过 BCP47。我会查查的。谢谢。
标签: c# .net winforms visual-studio-2010 globalization