[免費了] SailingEase .NET Resources Tool (.NET 多語言資源編輯器)

 

SailingEase WinForm Framework WinForm開發框架開發手冊:http://docs.shengxunwei.com/Home/Browser/sewinformfw/html

 

 

這是我2010年左右,寫 Winform IDE (http://www.cnblogs.com/sheng_chao/p/4387249.html)項目時延伸出的一個小項目。框架

最初是以共享軟件的形式存在的。工具

   

後來忙於其它事情,沒有精力再去打理,就被雪藏至今,最近抽了幾天時間,把軟件裏的註冊驗證相關邏輯都去掉了,以徹底免費的形式發佈,但願對你們有用。 學習

 

痛點:

一般咱們爲了讓軟件支持多語言,會使用 .NET 自帶的資源文件來存儲不一樣的語言資源,在程序中加載和調用,可是對於大型工程或者團隊開發,包括不斷演進的版本,會讓多語言開發十分的麻煩,存在許多不可控的因素,好比如下幾點:網站

1)過去的資源調用方式主要是以字符串做爲key來獲取,而開發人員在獲取資源時,可能出現拼寫錯誤; 
2)修訂資源文件時,對原有資源文件標識進行了修改,而未能同步到程序的各處; 
3)修訂資源文件時,誤刪原有資源條目,或刪除誤認爲已不在使用中但確仍在某處須要的條目。
4)沒法得知某條資源文本的使用狀況:是否在使用,是否在多處使用。
5)增長語言資源時,難以保證各語種資源徹底同步,尤爲在是資源數量較大,修訂次數較多時;spa

若是使用字符串做爲key的方式來調用資源,以上問題都沒法在項目編譯時做靜態檢查,也就是說出了錯誤很難發現。翻譯

 

此外還有兩個問題,讓開發過程當中處理資源文件十分的麻煩:3d

1)在 VisualStudio 中直接編輯資源文件,只能一個文件一個文件的單獨編輯,好比中文和英文兩個資源文件,我須要打開兩個獨立的窗口分別編輯,要來回切換,而且最最重要的是,VisualStudio 不會去檢查你的兩個資源文件中的條目,是否是一一對應的,它們以前沒有什麼聯繫和映射之類的關係,其中一個資源文件中多了一條或少了一條,或是KEY不小寫拼寫錯了,都是不知道的;orm

2)沒有好的與翻譯人員協調的方法,如資源的導入、導出、自動檢查;沒有好的辦法把語言資源交給翻譯人員,並導回來,並且在導回來時,幾千條甚至更多的資源條目,有沒有疏漏,誤刪除,沒有辦法知道。htm

 

分析與構想:

咱們分析 .NET 自帶的資源機制,其在將資源存儲在資源文件中後,會生成一個對應的 Designer.cs 文件,若是有多個語言版本的資源文件,就生成多個對應 的 Designer.cs,但就是沒有將他們抽象起來。

當時我想,若是可以用接口(Interface)把不一樣的資源文件的實體類,約束起來,在程序中使用時,放棄 Language.Get("key") 這種方式,而是轉而使用接口來調用,就能夠解決上面1到5點的問題,造成以下結構:

那麼在代碼中,就徹底解決了上文中1~5的問題。

 

對比,引用一個不存在的資源條目:

好了,核心需求就解決了。

 

那麼對於用戶界面的部分,怎麼樣加載資源呢?其實至關簡單,並不須要開發人員一個一個去設置,在WinForm中,只須要寫一個公共類,檢索UI上符合指定格式的字符,將其替換爲當前資源便可,如:

 

若是是 WPF 項目,直接使用靜態資源綁定便可,比 WinForm 更加簡單。

  

還剩兩個可用性的問題:

 

第1個,怎樣又好又快的同時編輯多個版本的語言資源?

對於 Visual Studio ,多個不一樣的資源文件是分別編輯的,問題上文已經說明:我須要要來回切換分別編輯,而且最最重要的是,VisualStudio 不會去檢查你的兩個資源文件中的條目,是否是一一對應的。

 

 

因此我在寫 SailingEase .NET Resources Tool 時,把不一樣的資源文件編輯集中到了一塊兒,在一個畫面中同時編輯多個不一樣的資源文件,當我添加一個新的資源文件條目時,只要操做一次便可,不用打開每一個資源文件添加一遍(真的很麻煩):

 

 

第2個問題:怎樣與翻譯人員協做

上文提到了,想到的最好的方式是導入導出 Excel,而且在導回來時,能效驗一下,這個並不複雜:

我在軟件中添加一個區域,好比「德語」,軟件會自動生成一個德語的資源列表,這一列的內容如今是空白的,我能夠把當前的資源,連同原語言版本(如中文),導出Excel,交給翻譯:

 

 導出的 Excel 中,包括中原語言(如中文),還包括了 Comments,這樣翻譯人員在翻譯時,有參照有備註,就很方便,翻譯完畢後,再回到軟件中導入便可。

 

 

 

提升效率的輔助功能:

資源行復制:

例如,A項目包含「中文」、「英文」,B項目包含「英文」、「法文」,那麼從A項目向B項目中複製資源行時,可以自動將A項目中的英文資源粘貼到B項目的英文資源中,中文資源則被忽略。哪怕兩個項目只是區域信息的順序不一樣,亦能自動匹配。

 

實時錯誤檢查:

有問題的資源會實時標註出來,在生成的時候會給出提示:

 

Visual Studio 裏若是複製資源行的Key是重複的,會不斷的彈框強制你先改掉,否則光標就移不走,但實際上作多語言編輯的時候,我有時須要一連複製不少行,而後再修改它們的Key,這就很討厭了,因此我本身寫這個工具的時候,就容許在有錯誤的時候光標移走,也不強制必須先改掉,而是給出標註,只是在生成代碼的時候,阻止生成。

Visual Studio 中的錯誤提示:

 

同時編輯多個項目

在實際工程中,我是一個 Module 對應一個資源工程,因此同時編輯多個工程就是必須的,不然就很麻煩:

 

導入既有的資源文件(resx文件或resources文件):

 

歡迎畫面,能夠直接打開最新的項目:

 

對了,新建工程以後不要忘記添加區域:

 

 

 

最後,在軟件中編輯好資源後,須要生成代碼,能夠生成C#或VB.NET的代碼,也能夠僅僅生成資源文件:

 

 

將生成的資源文件和代碼引入工程中使用:

 

 

下載:

我沒找到博文添加附件的地方,須要的朋友可移步到個人網站上免費下載:

http://www.shengxunwei.com

 

 

歡迎加我QQ交流探討,共同窗習:279060597,另外我在南京,有南京的朋友嗎?

相關文章
相關標籤/搜索