.NET全球化与卫星DLL的

时间:2009-12-12 05:33:38

标签: c# .net localization resources globalization

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

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

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

任何提示都将不胜感激!

4 个答案:

答案 0 :(得分:11)

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

<configuration>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath=".;Lang" />
  </assemblyBinding>
</runtime>
</configuration>

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

答案 1 :(得分:1)

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

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