【问题标题】:How retrieve neutral language resource when multiple resource files for different languages exist?存在多个不同语言的资源文件时如何检索中性语言资源?
【发布时间】:2011-03-16 15:55:02
【问题描述】:

我有多个资源文件来支持不同的语言。以他的首选语言向用户呈现资源。正在对应用程序日志进行额外的日志记录,我想只使用中性语言(英语)进行记录。

我不想为纯英文消息提供专用资源文件。以最终用户的语言显示给最终用户的相同消息应该能够以英语额外记录到应用程序日志文件中。

这样做的最佳方法是什么?

【问题讨论】:

  • 为什么需要可配置的日志?只需对它们进行硬编码。
  • 请举例说明如何写入日志
  • 我不喜欢将消息硬编码到应用程序中。因为我已经在资源文件中定义了资源字符串,所以我想使用这些而不是将附加消息硬编码到代码中。我使用自定义日志记录类。资源字符串表示错误消息并具有参数占位符 {0}、{1} 等,它们在运行时被替换以构造最终的错误消息。我希望能够专门用英文登录到应用程序日志。

标签: c# resources localization culture resourcemanager


【解决方案1】:

试试

string res = Resources.ResourceManager.GetString("...", CultureInfo.InvariantCulture);

【讨论】:

  • 这可行,但我们将失去访问资源字符串的强类型。如果资源名称中有拼写错误,这很容易出错。
  • Resource 类具有culture 属性。您可以在检索值之前将其设置为不变,并在检索值后将其还原。不过,这有点像 hack。另一种方法是为您的字符串资源文件生成自己的代码。
  • @Elan 幸运的是,我们现在有 nameof 运算符,因此代码中不再有硬编码资源名称.. Resources.ResourceManager.GetString(nameof(Resources.MyResouceString),...)
  • 是的,幸运的是,我们现在有了“nameof”! :)
  • 当你想加载外部资源时,你只需要ResourceManager。请改用<Namespace>.Properties
猜你喜欢
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多