C# ResourceManager和RESX文件 概述及 Winform切換中英文語言功能實現


1.resx簡介

               winform/wpf里,如果想切換中英文,可以通過自己定義key-value數據(xml,json,數據庫,txt,xaml等形式),來遍歷控件(winform)或者修改資源引用(wpf)等方法來實現。

    但是對winform來說,系統提供了rest資源文件,通過rest資源文件來保存key-value對應關系似乎更方便。

    詳細請參考文檔:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/y99d1cd3(v=vs.100)?redirectedfrom=MSDN

    resx根據創建形式分為兩種:form-based和手動添加。

 

2.form-based resx創建步驟

    默認form自身帶有resx,當我們修改控件屬性的時候,此文件會變化,此文件本身是xml格式文件。

 

 

選中form,修改Localizable為true,修改language為某一個地區為【中國】, 這時候,並且修改button1 和button2的名稱分別:英文,中文

再次選中form,修改language為【英語】,並且修改button1 和button2的名稱分別:english,chinese

 

 

這個時候,就建立了兩個語言包,在form1前面的三角點擊一下,可以看到文件大概如下:

 

 其中:form1.resx是默認的,form1.en-us.resx是英文語言包,form1.zh-cn.resx是中文語言包。

我們可以看到 資源包的名稱是這樣的:【form1.zh-cn.resx】即【文件名】+【.語言-地區】+【.resx】

在button1和button2的事件里,切換語言:

            var culture = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
            ResourceManager r = new ResourceManager("winform_通過地區文化語言切換.Form1", typeof(Form1).Assembly);
            button1.Text = r.GetString("button1.Text");
            button2.Text = r.GetString("button2.Text");

其中 resourceManager的第一個參數是:【名稱空間.文件名】

效果就是點擊【語言按鈕】后 ,各個控件的Text變為對應的語言,如下圖:

點擊英文:

 

點擊chinese后

 

 

3.手動添加語言包

手動添加的方法是:類庫上,右鍵,添加,新建項,找到資源文件,然后命名:【文件名】+【.語言-地區】+【.resx】

 

比如我新建了兩個文件:language.en-US.resx和language.zh-CN.resx,

雙擊資源文件,我們可以編輯資源文件的key-value值。

編輯完成后,就可以代碼來調用了

        ResourceManager rm = new ResourceManager("winform_通過地區文化語言切換.language", typeof(Form1).Assembly);

            MessageBox.Show(rm.GetString("String1", culture));

 

 同樣 ResourceManager的第一個參數是:【名稱空間】+【資源文件名】 ,第二個參數是:assemble。rm.GetString的參數是:key名稱,culture

這樣,就可以取得資源里面的內容,實現語言切換了。

另外可以用resx2word工具編輯resx文件:

http://resx.sourceforge.net/

 

另行參考:

https://limitedcode.blogspot.com/2016/09/c-globalization.html

4.源碼下載

https://files.cnblogs.com/files/lizhijian/20201026winform%E9%80%9A%E8%BF%87%E5%9C%B0%E5%8C%BA%E6%96%87%E5%8C%96%E8%AF%AD%E8%A8%80%E5%88%87%E6%8D%A2.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM