2011年10月18日 星期二

Visual C# 2010 簡易開發多國語言程式

  寫過很多次多國語言的程式,但是每一次自己都沒有紀錄下來,這一次決定寫一篇,除了自己紀錄外也供大家分享。

  首先要確定自己的需求,多國語言有幾種寫法,這次要採定使用設定檔的方式,也就是說不用在程式執行時變換語言種類,只能在程式起始時讀取設定檔確定使用語言的種類。

  先在要使用多國語言的 Form 上把會使用到的物件先都擺上: Label、Button、Menu。 先都設定好 Default 的語言,再來要修改 Form 的屬性 Localizable to True,如下圖:

Change Localizable from False to True
接著再把 Language 設定成所需使用的語言: Chinese (Traditional, Taiwan),修改 Lable、Button等的Text ,系統會自動產生相對應的 Form1.zh-TW.resx 如下:

Form1.zh-TW.resx
在程式一開始Using的後面加上:

using System.Threading;
using System.Globalization;
using System.Resources;

並在 Form1 的 InitializeComponent(); 前加上:

Thread.CurrentThread.CurrentCulture = new CultureInfo("");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("");

雙引號中間沒資料就是用 Default Language, 如果雙引號中間是 "zh-TW" 就是使用繁體中文如:

Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-TW");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-TW");

再從專案中 Properties下的 Settings.settings 加一個 Language 的變數如下:

Setting.settings
把原有程式 :
Thread.CurrentThread.CurrentCulture = new CultureInfo("");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("");

修改成:
Thread.CurrentThread.CurrentCulture = new CultureInfo(Properties.Settings.Default.Language); Thread.CurrentThread.CurrentUICulture = new CultureInfo(Properties.Settings.Default.Language);

這樣只要修改Properties 中的 Language 就能改變使用的語系。

再在程式中找一處可以加入修改Properties 值得地方:

Properties.Settings.Default.Language = "zh-TW";
Properties.Settings.Default.Save();
            
這樣使用者就可以自己更改語系。