.NET全球化和卫星DLL

我正在努力本地化我用C#编写的应用程序。

一切似乎都很好用,使用卫星资源程序集来翻译每个表单的字符串(根据本教程: http : //msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx )

但是,应用程序最终将需要相当多的语言,这意味着我的工作目录中的目录(即/ zh-tw,/ zh-cn,/ fr-FR,/ ja-JP等)。 我想通过在/ languages或/ resources子目录中找到所有这些来清理它(换句话说,设置“附属程序集的基本路径”)。 但我搜索了高低,并且无法找到任何方法来定制这些附属组件的位置。

任何提示将非常感谢!

找到一个更简单的解决方案 – 在app.config中:

       

然后你可以在“Lang”子目录中抛出所有这些目录,它就可以开箱即用! 一个post-build事件也很方便在编译后自动复制它们:)

在应用程序中使用资源第I部分 – 简单嵌入。

恕我直言,我不会在这里改变任何东西。 .NET中有一种标准的本地化机制,它基于卫星dll和这些子目录。 如果您使用工具进行本地化,例如。 Passolo,它也将支持这个结构,没有别的。

会有很多子目录……那又怎么样? 其他一切都会非常复杂。

将所有资源文件(即* .resx)添加到/ Resource文件夹,并创建ResourceManager的对象,如下所示

System.Resources.ResourceManager rm = new System.Resources.ResourceManager(“ApplicationName.Resources.MyResource”,Assembly.GetExecutingAssembly());

这里对lang de-DE说你的resx文件将被命名为MyResource.de-DE.resx