我正在寻找创建多语言应用程序的最佳方法。我希望将语言文件放在外部Class Library
中,以便它可以重复使用多个应用程序,因此我只需将其添加到References
(可能是.xaml本身的一些代码)
编辑1:多语言我的意思是荷兰语,英语,德语,...... 目标是让计算机系统说,如果它是荷兰语,则应用程序必须是荷兰语,但如果它是法语,则默认使用英语。这应该在一个DLL中完成,所以它不是"硬编码"在我做的每个应用程序中。
编辑2:
我设法自己解决了这个问题。对那些回答我问题的人说。
我这样解决了:
我制作了Class Library
并将其命名为#34;语言"。我添加了2 Resources
名为" Language.nl-BE.resx"和Language.en-US.resx"在名为" exDefault"的文件中都有String
。之后我编译了它并将dll
添加为Reference
到我的应用程序。
在应用程序中,我使用以下代码将String
放入我的应用程序中:
ResourceManager rm = new ResourceManager("Languages.Language", System.Reflection.Assembly.LoadFrom("Languages.dll"));
MessageBox.Show(rm.GetString("exDefault", new System.Globalization.CultureInfo("en-US")));
这将获得" exDefault"的内容。 String
来源中的en-US
,并将其显示在MessageBox
中。要显示其他语言,只需将en-US
更改为nl-BE
。
您会注意到有一个名为Languages.dll
的dll和两个名为en-US
和nl-BE
的文件夹,每个文件夹中都有自己的Languages.resources.dll
文件。
我现在唯一想知道的是,有没有办法摆脱这两个文件夹并将它们嵌入Languages.dll
?
答案 0 :(得分:0)
您可能希望阅读WPF和.Net文档中有关全球化/本地化的部分。另外,您可能想查看此博客,其中有WPF中如何使用本地化资源dll的示例:
答案 1 :(得分:0)
我设法自己解决了这个问题。对那些回答我问题的人说。
我这样解决了:
我制作了Class Library
并将其命名为#34;语言"。我添加了2 Resources
名为" Language.nl-BE.resx"和Language.en-US.resx"在名为" exDefault"的文件中都有String
。之后我编译了它并将dll
添加为Reference
到我的应用程序。
在应用程序中,我使用以下代码将String
放入我的应用程序中:
ResourceManager rm = new ResourceManager("Languages.Language", System.Reflection.Assembly.LoadFrom("Languages.dll"));
MessageBox.Show(rm.GetString("exDefault", new System.Globalization.CultureInfo("en-US")));
这将获得" exDefault"的内容。 String
来源中的en-US
,并将其显示在MessageBox
中。要显示其他语言,只需将en-US
更改为nl-BE
。
您会注意到有一个名为Languages.dll
的dll和两个名为en-US
和nl-BE
的文件夹,每个文件夹中都有自己的Languages.resources.dll
文件。
我现在唯一想知道的是,有没有办法摆脱这两个文件夹并将它们嵌入Languages.dll
?