應該要翻成本地化(Localization)才是,不過我想會查詢的人多會以支援多國語系(Localization)為關鍵字,如此也才讓人好理解英文字Localization所要代表的意義。
進入Xcode專案,首先點專案檔,PROJECT->Info->Localizations新增想要的語言,於是出現Chinese和English。
接著在Resources中新增檔案,iOS->Resource->Strings File,命名為Localizable。右側界面有個Locale按鈕,Localization會增加Chinese和English。
左側界面的Localizable.strings便會出現兩個子檔案,Chinese和English。
在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; }
NSLocalizedString這個方法是個關鍵,只要將想要轉語系的字串包起來即可。而以上程式意思是語系在Chinese模式會顯示「作品」,而English模式會顯示「Work」,不過最後執行結果,English模式卻會顯示.strings檔中的「Works」!
做過一遍之後,感覺多國語系(Localization)還滿簡單的,只要在.strings檔中定義對照表,任何語系都可以順利轉換!
此篇是將code中的字串做多國語系轉換設定,那麼如果字串是在IB中又該怎麼辦?其實大同小異,只要點選界面檔.xib,右側界面的locale按鈕,Localization會增加Chinese和English,便會出現兩個子檔案,接著分別對兩個檔案作界面設定~
那假如我要換圖呢?在IB中的圖就如上去改.xib子檔,若在code中就只要調用關鍵方法NSLocalizedString,將檔案名稱包在方法之中,.strings檔設定對應檔案名稱,如:
“happyman.png" = “happyman_en.png"
(中文檔案名稱)=(英文檔案名稱)
注意:編輯完.xib檔後,要把原本的App砍掉,程式再編到設備上,如此切換語言就可以看到修改過的結果喔!否則結果會是舊有.xib檔的樣子。
參考:老闆
Comments on: "[iOS] 多國語系 (Localization)" (4)
[…] 可以見到我的Info.plist檔中有五處是中文字,想要多國語言化可以怎麼做?其實也跟幾年前我寫的多國語言化很類似,參考文章:多國語系 (Localization)。 […]
讚讚
[…] 以繁體中文(因為是母語喲!)為主來做多國語言化,另外兩個語言是簡體中文和英文,跟著多國語系 (Localization)這篇文章做,照理說已經沒有其它問題,但是呢⋯⋯若哪天日本人想用這個App,那麼他會看到哪個語言?實際跑過發現是偉大的繁體中文,然而我們的期望卻是套用英文,這時候該怎麼辦呢?打掉重練?噢~不。 […]
讚讚
[…] 一個能夠跨國際使用的App,需要多國語言化(Localization),之前介紹的是系統運行時自動轉換字串的語言,然而我們想要知道目前使用者的偏好語言 (Prefer Language),來做更進一步的運用,比如將語言碼當作參數傳遞。 […]
讚讚
[…] 跟程式裡的字串做多國語言化(Localization)不一樣,要讓App顯示名稱多國語言化 (Bundle Display Name Localization)必須經由別的做法,可以找尋檔案列表中InfoPlist.strings,在「Localization」打勾所需的語系。 […]
讚讚