Just My Life & My Work

[iOS] 多國語系 (Localization)

應該要翻成本地化(Localization)才是,不過我想會查詢的人多會以支援多國語系(Localization)為關鍵字,如此也才讓人好理解英文字Localization所要代表的意義。

localization

進入Xcode專案,首先點專案檔,PROJECT->Info->Localizations新增想要的語言,於是出現Chinese和English。

Localization

接著在Resources中新增檔案,iOS->Resource->Strings File,命名為Localizable。右側界面有個Locale按鈕,Localization會增加Chinese和English。

Localization2

左側界面的Localizable.strings便會出現兩個子檔案,Chinese和English。

Localization3

在English那個填入:

"作品" = "Works";
"產品" = "Products";
"帳號" = "Account";

在ViewController中:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"作品", @"Work");
        self.tabBarItem.image = [UIImage imageNamed:@"icon_work.png"];
    }
    return self;
}
Localization4

程式設定「Product」,結果顯示.strings檔中的「Products」!

NSLocalizedString這個方法是個關鍵,只要將想要轉語系的字串包起來即可。而以上程式意思是語系在Chinese模式會顯示「作品」,而English模式會顯示「Work」,不過最後執行結果,English模式卻會顯示.strings檔中的「Works」!

做過一遍之後,感覺多國語系(Localization)還滿簡單的,只要在.strings檔中定義對照表,任何語系都可以順利轉換!

此篇是將code中的字串做多國語系轉換設定,那麼如果字串是在IB中又該怎麼辦?其實大同小異,只要點選界面檔.xib,右側界面的locale按鈕,Localization會增加Chinese和English,便會出現兩個子檔案,接著分別對兩個檔案作界面設定~

Localization5

那假如我要換圖呢?在IB中的圖就如上去改.xib子檔,若在code中就只要調用關鍵方法NSLocalizedString,將檔案名稱包在方法之中,.strings檔設定對應檔案名稱,如:

“happyman.png" = “happyman_en.png"

(中文檔案名稱)=(英文檔案名稱)

注意:編輯完.xib檔後,要把原本的App砍掉,程式再編到設備上,如此切換語言就可以看到修改過的結果喔!否則結果會是舊有.xib檔的樣子。

參考:老闆

Comments on: "[iOS] 多國語系 (Localization)" (4)

  1. […] 可以見到我的Info.plist檔中有五處是中文字,想要多國語言化可以怎麼做?其實也跟幾年前我寫的多國語言化很類似,參考文章:多國語系 (Localization)。 […]

  2. […] 以繁體中文(因為是母語喲!)為主來做多國語言化,另外兩個語言是簡體中文和英文,跟著多國語系 (Localization)這篇文章做,照理說已經沒有其它問題,但是呢⋯⋯若哪天日本人想用這個App,那麼他會看到哪個語言?實際跑過發現是偉大的繁體中文,然而我們的期望卻是套用英文,這時候該怎麼辦呢?打掉重練?噢~不。 […]

  3. […] 一個能夠跨國際使用的App,需要多國語言化(Localization),之前介紹的是系統運行時自動轉換字串的語言,然而我們想要知道目前使用者的偏好語言 (Prefer Language),來做更進一步的運用,比如將語言碼當作參數傳遞。 […]

  4. […] 跟程式裡的字串做多國語言化(Localization)不一樣,要讓App顯示名稱多國語言化 (Bundle Display Name Localization)必須經由別的做法,可以找尋檔案列表中InfoPlist.strings,在「Localization」打勾所需的語系。 […]

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲