如何使用自定义文化?

时间:2014-01-28 10:07:13

标签: c# .net winforms visual-studio-2010 globalization

我们的一位客户要求我们使用的某些术语应根据他们的需要进行更改。这意味着更改表单和用户消息中的一堆标签。我们的应用程序是作为多语言应用程序开发的,所以一切都在资源文件中。

为了解决这个需求,我决定创建一个自定义文化。我用标准的hr-HR语言创建了hr-HR-HP。我做了一些测试,一切正常。

但是,在我们的项目中,我们的第三方组件因以下异常而崩溃

CultureNotFoundException: Culture is not supported.
Parameter name: culture
4096 (0x1000) is an invalid culture identifier.

Google表示,当CultureInfo是通过LCID创建的时候会发生这种情况,并且自定义文化不支持这种情况。因此,为了避免这种情况,我将Culture参数设置如下:

Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("hr-HR-HP");

很好,错误消失了,表单按预期读取了他们的资源。但是,现在ResourceManager就是问题所在。它使用hr卫星装配而不是hr-HR-HP。我使用ResourceManager从附属程序集中读取用户消息。

有什么建议吗?是否可以为ResourceManager指定我想要的语言?我应该尝试其他方法吗?

1 个答案:

答案 0 :(得分:0)

傻傻的我,我非常接近答案。再多一点谷歌搜索显示我可以在ResourceManager.GetString()方法中指定我想要的文化。