2014年1月13日

在iOS應用程式中支援多國語言

無論是撰寫Android還是iOS應用程式,在這科技無國界的現代化社會中,支援多國語言可說是相當重要的一個環節,也是讓應用程式被更多人使用的關鍵要素之一。

欲讓iOS應用程式能支援多國語言,請參照以下步驟一步步來即可。

(筆者的XCode版本是5.0.2,若您的XCode的版本與筆者差異甚大,請斟酌參考)

在Info.plist中增加Localizations

在Info.plist中找到名為Localizations的key
(若沒有,則手動新增即可)
展開其子項目,設定欲支援的語言,如下圖:

在專案中新增Localizable.strings檔案

在專案中新增Localizable.strings檔案, 檔案類型選擇iOS -> Resource -> Strings File,檔名輸入Localizable.strings

Project的Info頁籤中增加Localizations

點開Project的Info頁籤,找到Localizations項目, 增加欲支援的語言。

每增加一個語言時,XCode會彈出視窗詢問『有哪些檔案需要製作該語言版本』, 此時先選擇Localizable.strings即可,如下圖:

編輯各語言版本的Localizable.strings

完成上述步驟後, 可以看到Localizable.strings檔案多了不同語言的版本 如下圖:

而各個不同的多國語言文字,則分別存放在這幾個檔案中。

因此我們需要編輯這幾個Localizable.strings檔案,

Localizable.strings檔案內容的格式為

"key1" = "字串內容1"
"key2" = "字串內容2"

key為識別這段文字的英文字串,稍後在程式中會用到。

舉例來說,繁體中文版Localizable.strings的範例如下:

"testHello" = "測試你好" 
"settings" = "設定"
"networkerror" = "網路連線發生問題!"

而英文版Localizable.strings的範例如下:

"testHello" = "test hello" 
"settings" = "Settings"
"networkerror" = "Network Error!"

只要將程式中所有需要用到的多國語言文字,輸入至各個Localizable.strings檔案即可。

在程式中讀取多國語言字串

在程式中,可以使用NSLocalizedString函式讀取多國語言字串。

第一個參數是Localizable.strings中的key,

第二個參數是注解,可視情況使用。

-(void)viewWillAppear:(BOOL)animated {
    self.label.text = NSLocalizedString(@"testHello", @"");
}

此函式會依照當前iOS系統所設定的語言,以及key參數讀取對應於Localizable.strings中的文字。

以上,即為讓iOS應用程式支援多國語言的完整流程。

iOS Localizable.strings與Android strings.xml線上轉換工具

多數手機應用程式開發者會同時開發iOS與Android應用程式,而Android應用程式則以XML格式儲存多國語言文字,範例如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="testHello">測試你好</string>
    <string name="settings">設定</string>
    <string name="networkError">網路連線發生問題</string>
</resources>

以下介紹一個iOS Localizable.strings與Android strings.xml的線上轉換工具

只要將多國語言文字檔拖曳至網頁中央,等待後端處理完畢,即可依需求選擇iOS Localizable.strings或是Android strings.xml下載。在多國語言文字檔案相當龐大時,是個很方便的線上處理工具。

結語

開發手機應用程式時,支援多國語言往往是被開發者忽略的功能之一。 然而,支援多國語言在技術上並不是非常困難, 卻是使應用程式能被更多人注意到的重要因素之一, 正所謂事半功倍,支援多國語言應當是所有應用程式開發者必須注意的課題。