来自外部类库的多语言(dll)

时间:2014-05-25 16:09:52

标签: c# wpf dll multilingual

我正在寻找创建多语言应用程序的最佳方法。我希望将语言文件放在外部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-USnl-BE的文件夹,每个文件夹中都有自己的Languages.resources.dll文件。


我现在唯一想知道的是,有没有办法摆脱这两个文件夹并将它们嵌入Languages.dll

2 个答案:

答案 0 :(得分:0)

您可能希望阅读WPF和.Net文档中有关全球化/本地化的部分。另外,您可能想查看此博客,其中有WPF中如何使用本地化资源dll的示例:

http://wpfglue.wordpress.com/category/localization/

答案 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-USnl-BE的文件夹,每个文件夹中都有自己的Languages.resources.dll文件。


我现在唯一想知道的是,有没有办法摆脱这两个文件夹并将它们嵌入Languages.dll