为 c# windows 表单应用程序实现语言文件

Implementing language files for c# windows form application

我有一个 windows 表单应用程序,其中有各种字符串显示为文本标签,这些字符串当前是从项目中的 .resx 文件分配的字符串。我用资源管理器查看我需要的资源文件:

ResourceManager rm = new ResourceManager("UICS_Client.english_Lang", Assembly.GetExecutingAssembly());

然后在函数中将表单上的标签设置为资源文件中的字符串:

adminTab.Text = rm.GetString("adminTab");

然后如果用户需要应用程序以运行不同的语言,我切换资源管理器使用的资源文件。

rm = new ResourceManager("UICS_Client.chinese_Lang", Assembly.GetExecutingAssembly());

这很好用,但需要资源文件在构建时位于项目中。我想做的是有一个解决方案,其中表单应用程序可以扫描用户 PC 上包含 'language files' 的文件夹,然后应用程序读取用户在设置选项卡中选择的语言文件(所选文件将然后在每次应用时重新使用 运行s)。这样我以后就可以将语言文件部署给用户,而无需重建和发送新版本的软件。

有没有人做过这样的事情,有什么建议可以尝试吗?

我最终为我的语言文件使用了 SQLite 数据库,其中包含条目编号、标签和语言的列

例如:

|Entry|  Tag  | English | German |
-----------------------------------
|  0  | hello |  Hello  | Hallo  |

所以当表单需要一个英文字符串时,它会向 SQLite 数据库发送一个请求:

SELECT English FROM `Strings` WHERE(Tag='hello')

哪个 return 列英文条目 0: "Hello".

这样,当需要一种新语言时,可以为每个条目创建一个包含翻译的新列。

表单还可以请求列名以查看可用的语言。

然后可以为用户已经使用的现有语言文件部署和更改一个语言文件。

当然如果系统没有找到语言文件,表单也需要处理错误