首页 > 解决方案 > C# Localized Resources.resx 不允许其他语言

问题描述

晚上好,

我碰巧遇到了 Winforms 和 Resources.resx 的问题。

我正在开发的应用程序是通过可通过 Visual Studio 选择的“Winforms App”模板构建的。我遇到的问题是 winforms 本地化之外的问题——我认为这一点很重要。

这是我的问题: - 我创建了一个“HistoryManager”类,它只有一个方法和一个要执行的操作 - 将历史记录添加到 SQL 数据库。- 我创建了 Resource.resx 文件,在“MsgTaskAdded”下输入了一个格式字符串,等于“任务 {0} 已添加到 {1}”。- 所述字符串完美地添加到数据库中。

Resources.resx效果很好 - 如果我更改MsgTaskAdded资源字符串,它会更改将添加到数据库的内容。

现在,我遇到的问题是。- 我创建了一个Resources.de-DE.resx文件,从中复制字符串Resources.resx并翻译成德语。- 更改CurrentThread.CurrentCultureCurrentThread.CurrentUICulture“de-DE”。结果,添加到数据库的文本仍然是英文的,就好像找不到该文件,它又回到使用默认的Resources.resx.

标签: c#winforms

解决方案


确保您的Resources.de-DE.resx文件包含在项目的 Properties 文件夹中,并且它的 Build Action 为Embedded Resource,以便Resources.resx在编译期间它与您的默认值正确关联。文化设置CurrentThread也需要在调用数据库之前发生,最好是在调用static void Main()之前在你的函数中的某个地方Application.Run(…)

这应该会在您的文件夹中生成一个特定于文化的文件bin\<build_configuration>夹,其中包含一个名为<your_app>.resources.dll. 如果需要,您可以使用 ILSpy 或 Reflector 之类的工具将其破解,以验证已翻译的资源是否存在于程序集中的预期位置。


推荐阅读