2009-12-12 35 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