2012-05-10 36 views
1

我知道.NET應用程序本地化問題在這裏問了很多次。選擇一種方法來本地化大型.NET應用程序

但我對使用Resources和3-d資源編輯工具來本地化大型.NET應用程序的方法的有效性表示懷疑。

我想用下面的一個停留辦法:

  1. 設置本地化=適用於所有解決方案的形式,並使用3-d方的資源編輯器,例如:澤塔資源編輯器,編輯並管理資源。 缺點:

    • 我們的解決方案具有〜100點的形式,和30周額外的語言就會有30 * 100 = 3000新的resx文件!
    • 與翻譯人員交流的很多努力:每次更新產品後,我都需要用純文本向他們發送excel文件,並在每種語言更改後手動更新項目資源。
    • 語言文件的部分(大多數?)將始終過時,因爲翻譯者可能會在產品發佈後執行其作品,並且我們無法在不重新編譯項目的情況下包含其更改。
  2. 使用自定義詞典基於類(如GNU的getText),將加載與翻譯老式的ini文件。 缺點:需要做額外的工作,比如編寫幫助工具編輯翻譯人員的ini文件。 優點:產品發佈後可能會將新語言版本作爲單獨的ini文件發佈。

不幸的是,我無法比較兩種方式的性能。

哪種方法比較好?請分享您的經驗!

回答

2

你真的應該堅持使用標準的.NET本地化系統(ResourceManager)。

解決您遇到的問題的一種方法(管理將各種語言的許多.resx文件導入到您的解決方案中,處理延遲提供翻譯)將包括一種語言(英語,通常)在您的解決方案,但保持本地化啓用。所以從現在開始,只需要英語資源即可構建解決方案,但仍然可以加載附屬程序集(如果存在)。

然後,您可以設置一個不同的項目(稱爲本地化項目),目的是管理您的英語資源翻譯成各種語言。您必須定期將英語resx文件從您的主要解決方案同步到您的本地化項目(但這樣可以以受控的方式執行此操作,這將有助於解決翻譯問題)。您收到的譯文將被簽入此項目的源代碼管理系統。

然後,您需要編寫一些從您的本地化項目構建您的衛星程序集,然後將它們放入僅限英文版本中,爲您提供具有其所有本地化版本的構建。從resx文件構建衛星程序集可以使用Resgen.exe(創建.resources文件),然後Al.exe(創建dll文件)完成。

+0

塞巴斯蒂安,非常感謝您的建議,以不推倒重來。我會堅持使用ResourceManager和第三方本地化工具。我發現Sisulizer是一個很好的工具,可以覆蓋我的大多數需求,除了將Hard Coded Strings自動轉換爲Resources文件。爲此,我將評估ReSharper。 Anders,謝謝您也參與討論。 –

1

我們使用與第一列鍵大excel文件,每一個語言列。在excel文檔中的一個小腳本吐出必要的resx文件(每種語言一個),然後這些resx文件被檢入到源碼樹中。

只有平移組件將衛星組件,並處理對整個應用程序的翻譯。所以其他所有組件(UI等)都沒有衛星組件。

在表格中,我們使用鍵作爲文本(用於標籤,按鈕,標題),並顯示在遞歸翻譯形式。對於非控制文本,我們只需使用一個靜態類來獲取帶有代碼的資源鍵的翻譯文本。

這種「單一文件」翻譯數據庫工作得非常好,而且使用Excel很方便,因爲您的翻譯可能會已經安裝並熟悉它。

+0

嗨安德斯和塞巴斯蒂安!謝謝你的回答! 當新版本發佈時 - 譯員如何看到新的未翻譯的行?在ini文件的情況下,我可以編寫一個工具來比較english.ini和japanese.ini,並突出顯示新的字符串。 也有可能看看你的Excel腳本? –

+0

在Excel工作表中,我們使用條件高亮顯示來顯示需要填充的單元格(即具有翻譯鍵的行,但缺少該列中的翻譯值)。 –

+0

這裏有本地化和CAT(計算機輔助翻譯)工具,導入/導出.resx文件和更新幫助(顯然,當添加或更改英文內容時,翻譯必須更新),並且幫助自動回收翻譯的內容(如果有重複,該工具找到以前的匹配,這意味着翻譯者的工作較少,您花費的金錢較少,質量較好,因爲這可以提高一致性)。因此,滾動我們自己的系統並不是一個好主意 - 本地化工具可以處理原生格式,例如.resx – Clafou

0

好了,我不想在這裏下車,話題當然,但沒有腳本,做需要做的事情是合理的定義簡單或微不足道的。涉及的問題太廣泛。即使是最瑣碎的腳本的編寫成本也會遠遠超過購買全面翻譯應用程序的成本。而且這個應用程序幾乎肯定會做的遠遠超過一個腳本(甚至只提到基本功能)。

相關問題