【问题标题】:.net resx files and localization.net resx 文件和本地化
【发布时间】:2012-02-05 22:46:00
【问题描述】:

认为我明白了,但有几个方面让我感到困惑。假设我想要在德国、西班牙和美国为 MyApp 本地化字符串。

MyApp.resx
MyApp.de-DE.resx
MyApp.es-ES.resx
MyApp.en-US.resx // this *feels* redundant

最后一个 rex 文件(“en”)将与“neutral”文件具有相同的键和值,因为我是一名美国开发人员,但是......我需要两者吗?

我可以猜到答案,但它似乎令人困惑,尽管或可能是因为所有 msdn 文档都解释了最终后备、卫星和中性语言。

有国际发展经验的人能否以(真正)简单的方式解释为什么或为什么不?如果我在做 WPF、Silverlight、ASP 或其他一些 .Net 变体,这有关系吗?

干杯,
浆果

【问题讨论】:

  • 很难猜到你是怎么得到它们的,本地化通常是用一个 GUI 组件完成的。你会使用 MyApp.en-GB.resx,这样你就不会对女王说话了。问写它的人。
  • @Hans Passant。我的文件是通过 Visual Studio 生成的。完全不确定我明白你的意思,除了美式英语与英式英语不同。请澄清。
  • @HansPassant。我相信任何能回答这个问题的人都知道我省略了 en.Us,因为特定的文化方面不是问题的重点!
  • @HansPassant。好的,问题已解决

标签: .net wpf localization internationalization resx


【解决方案1】:

如果主程序集 (MyApp.resx) 中的资源采用 en-US 区域性,则无需创建 MyApp.en-US.resx 文件。如果没有找到这种文化的附属程序集,资源管理器将回退到主程序集中的资源。

【讨论】:

    【解决方案2】:

    同意托马斯。如果您的应用程序的主要语言是 en-us,那么您只需将所有字符串放在主要资源中,并将该字符串的所有翻译(例如德语、法语等)放在相应的卫星资源文件中。

    例如 - 主要语言是 En-Us,但你也想支持英国、德语、西班牙语。因此,您将所有原始字符串放在默认资源文件中,例如 Resources.resx。然后您创建 Resources.en-GB.resx、Resources.de-De.resx、Resources.es-ES.resx 并将原始字符串的翻译放置在那里。

    如果美国和英国版本的某些字符串相同,您只需从 Resources.en-GB.resx 文件中删除这些字符串。因为将检查第一个附属程序集的资源,如果没有找到资源字符串 - 将使用该字符串的主程序集版本。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 2013-06-17
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多