2009-12-12 37 views
6

我正在努力本地化我用C#编写的应用程序。.NET全球化和卫星DLL的

似乎一切都很好地工作,利用卫星资源集合翻译各种形式的字符串(按照本教程:http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx

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

任何提示将不胜感激!

回答

11

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

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

然后,你可以折腾那些显示目录中的“郎”子目录,它会的工作权利开箱!生成后事件也是很方便的自动复制它们在那里编译后:)

1

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

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

0

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

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

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