【问题标题】:How to use custom cultures?如何使用自定义文化?
【发布时间】: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


【解决方案1】:

愚蠢的我,我离答案太近了。再谷歌搜索一下,我可以在 ResourceManager.GetString() 方法中指定我想要的文化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2019-11-28
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多