2011-03-16 72 views
4

我有多个资源文件来支持不同的语言。用户以他的首选语言呈现资源。正在对应用程序日志执行其他日志记录,我只想使用中性语言(英语)来记录日志。如何在不同语言的多个资源文件存在时检索中性语言资源?

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

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

+0

为什么你需要配置日志?只是硬编码他们。 – Patrick 2011-03-16 16:17:08

+0

请举例说明如何写入日志 – Patrick 2011-03-16 16:17:53

+0

我不希望将消息硬编码到应用程序中。由于我已经在资源文件中定义了资源字符串,因此我想使用这些资源字符串,而不是将其他消息硬编码到代码中。我使用自定义日志记录类。资源字符串表示错误消息并具有参数占位符{0},{1}等,它们在运行时被替换以构造最终的错误消息。我希望能够以英文专门登录到应用程序日志。 – Elan 2011-03-16 17:34:37

回答

4

尝试

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

这可行,但我们会失去访问资源字符串的强类型。如果资源名称中存在拼写错误,这很容易出错。 – Elan 2011-03-16 17:30:39

+0

Resource类具有culture属性。您可以在检索值之前将其设置为不变,并在检索值之后将其恢复。虽然这是一种黑客。另一种方法是为你的字符串资源文件做你自己的代码生成。 – Naraen 2011-04-01 22:09:36

+2

@Elan幸运的是,我们现在有'nameof'运算符,所以代码中没有更多的硬编码资源名称。 'Resources.ResourceManager.GetString(nameof(Resources.MyResouceString),...)' – jirkamat 2017-09-08 09:12:24