【发布时间】:2019-04-18 10:43:02
【问题描述】:
我有一个 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 上包含“语言文件”的文件夹,然后应用程序读取用户在设置选项卡中选择的语言文件(然后选择的文件将每次应用程序运行时都可以重复使用)。这样我就可以稍后将语言文件部署给用户,而无需重新构建和发送新版本的软件。
有没有人做过类似的事情,有什么建议让我试试吗?
【问题讨论】:
-
资源文件只能是嵌入资源(不能是外部文件)。恐怕你必须用另一种方法重新实现你的全球化。或者,改为将语言加载为 DLL。见stackoverflow.com/questions/1508570/…