WP7 本地化應用程式

WP7 本地化應用程式

1. 新增資源檔案
     (1) 新增目錄 Resources
     (2) 該目錄中, 新增 Resources File, 取名 AppResources.resx
 

2. 編輯預設資源檔案 AppResources.resx
    (1) 新增 Name 與 Value 組合
    (2) txtHello, Hello
    (3) Access Modifier, 從 Internal 改為 public
 

3. 新增本地化資源檔案
    (1) 在 Resources 目錄中, 新增 Resources File
    (2) 依照地區語言類型來命名, 例如台灣地區, 取名 AppResources.zh-TW.resx
 

4. 編輯本地化資源檔案 AppResources.zh-TW.resx
     (1) 新增 Name 與 Value 組合
     (2) txtHello, 哈囉
     (3) Access Modifier, 從 Internal 改為 public
 

2011-10-29_104603

參考 : Culture and Language Support for Windows Phone
http://msdn.microsoft.com/en-us/library/hh202918(v=vs.92).aspx
 

5. 修改 App 專案檔, 增加支援語言
     (1) Applicaiton -> Assembly Inofrmation -> Neutral Language
            -> 確定為 English (United States), 與預設語言一致
     (2) 打開 Notepad, 編輯專案檔 .csproj
     (3) 找到, <SupportedCultures>標籤, 依照支援的語言加入資料
     (4) 例如 : <SupportedCultures>en-US;zh-TW;</SupportedCultures>
 

2011-10-29_105342

6. 新增資源檔類別檔案, 新增 LocalizedStrings.class
namespace PhoneApp1.Resources
{
    public class LocalizedStrings
    {
        public LocalizedStrings() { }

        private static AppResources _localizedResources = new AppResources();

        public AppResources LocalizedResources { get { return _localizedResources; } }
    }
}
 

7. 將資源檔設定可取用的本地資源
    (1) 打開 App.xaml, 並進行修改
    (2) 加入以下程式碼
    <Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:PhoneApp1.Resources" x:Key="LocalizedStrings" />
    </Application.Resources>
 

8. 以 MainPage.xaml 的 PageTitle 為設定範例:
    將 Text 屬性改為 :  Text="{Binding Path=LocalizedResources.txtHello, Source={StaticResource LocalizedStrings}}"
 

9. 編譯並且執行 :
     應該可以看到 PageTitle 為 Hello
 

作法一  :
10. 使用者透過, 修改地區設定來改變顯示語言
       (1) 按 <- 返回
       (2) 按 -> 按鈕, 並點擊 Settings, 進入設定頁面
       (3) 點擊 region + language
       (4) 點擊 Display language
       (5) 選擇 中文(繁體)
       (6) 點擊 Tap here to accept changes and restart  your phone
 

01

11. 重新進入應用程式
       應該可以看到 PageTitle 為 哈囉
 

作法二 :
12.  開發測試階段,如果要測試某個語系,可以直接設定應用程式預設語言,例如:中文(繁體)
       (1) 在 App.xaml.cs 的 Application_Launching 事件, 加入以下程式碼
        private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-TW");
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-TW");
        }
 

13. 按下 F5 進行編譯及執行, 進入應用程式
       第一次執行, 應該可以看到 PageTitle 為 哈囉

02