c# - 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.CurrentCulture
为CurrentThread.CurrentUICulture
“de-DE”。结果,添加到数据库的文本仍然是英文的,就好像找不到该文件,它又回到使用默认的Resources.resx
.
解决方案
确保您的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 之类的工具将其破解,以验证已翻译的资源是否存在于程序集中的预期位置。
推荐阅读
- java - JAVA:无法在循环中返回响应
- c++ - 减号和加号对c ++中的字符串有什么作用
- python-3.x - 我在 pyhton 3.8 中安装 scipy 时出错
- python - 对这个“实验室”感到困惑
- python - 在 altair 中下载选定的数据
- angular - Highcharts 自定义符号
- google-apps-script - 将基于特定列值的范围复制到新工作簿中的多个选项卡中
- javascript - Vue Leaflet 地图图块顺序错误
- mysql - 在特定问题上使用连接来选择产品的 SQL 查询
- upload - Onedrive Upload API 上传损坏的文件或图像