天天看點

iOS應用的國際化i18n

iOS應用的國際化,主要分為3個部分:

  • Info.plist 檔案的國際化
  • .xib檔案的國際化
  • .m檔案的國際化

下面我就來一一說明。

Info.plist 檔案的國際化

我們使用Xcode 4.5 建立一個新項目,會自動建立一個 en.lproj 目錄,這個目錄下存放的就是需要國際化的檔案(預設為英文)。下面,我們還需要建立中文國際化支援。

1. 建立名為 zh-Hans.lproj 的目錄

2. 在項目的 Info.plist 檔案中增加配置 Localizations, 添加英文和中文的支援:English, Chinese(simplified)

3. 将 en.lproj/InfoPlist.strings 檔案拷貝到 zh-Hans.lproj/InfoPlist.strings 檔案中。

4. 将 zh-Hans.lproj 目錄添加到項目。注意要選擇 Add to targets

5. 選擇 File -> Info -> Localization 為對應的語言

在 InfoPlist.strings 檔案中,我們可以國際化一些應用資訊,例如:

CFBundleDisplayName 應用顯示名稱。這樣我們就可以根據不同的語言,顯示不同語言的應用名。

更多字段資訊,請參考

http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html

的 Key Summary 部分。

.xib 檔案的國際化

我們已經建立了一個英文的xib檔案,在 en.lproj 檔案下。然後,需要使用指令行來操作:

1. 将 .xib檔案 中的文字提取,另存為 .strings檔案。

ibtool --generate-strings-file MainViewController.strings MainViewController.xib

2. 将 MainViewController.strings 拷貝到 zh-Hans.lproj 目錄下,然後漢化該檔案中的文字

3. 執行指令,根據英文的 .xib檔案 和 .strings漢化檔案 生成一個漢化後的 .xib 檔案

ibtool --strings-file zh-Hans.lproj/MainViewController.strings --write zh-Hans.lproj/MainViewController.xib en.lproj/MainViewController.xib

4. 将生成的這個 .xib 檔案添加到項目中的 zh-Hans.lproj 分組下,注意要選擇 Add to targets

5. 選擇 File -> Info -> Localization 為對應的語言

至此,xib檔案的漢化已經完成。

.m 檔案的國際化

1. 代碼中,凡是需要國際化的文字,都使用 NSLocalizedString 函數,例如 

NSLocalizedString(@"hello_world", @"Hello world!");

2. 執行指令,将所有 .m 檔案中需要漢化的文字都提取出來,并放入 en.lproj 檔案夾下

genstrings -o en.lproj *.m

此時,會自動生成 Localizable.strings 檔案。接着将該檔案也拷貝到 zh-Hans.lproj 檔案夾下去。這個檔案就是需要漢化的内容

3. 将 .strings 檔案添加到項目中相應的漢化目錄下,注意要選擇 Add to targets

4. 選擇 File -> Info -> Localization 為對應的語言

然後,我們運作程式,通過修改系統語言發現,檔案顯示名稱、.xib檔案 和 .m檔案 都可以自動切換顯示語言了。

附上示例:

http://download.csdn.net/detail/midfar/4749454