以繁體中文(因為是母語喲!)為主來做多國語言化,另外兩個語言是簡體中文和英文,跟著多國語系 (Localization)這篇文章做,照理說已經沒有其它問題,但是呢⋯⋯若哪天日本人想用這個App,那麼他會看到哪個語言?實際跑過發現是偉大的繁體中文,然而我們的期望卻是套用英文,這時候該怎麼辦呢?打掉重練?噢~不。
好在可以改掉預設的NSLocalizedString,自己來決定實作內容,在此我會判斷若使用者預設語言非繁中、簡中和英文,再來找其語系索要套用的檔案,看程式碼就知道我們要找en.lproj這個資料夾,它就會去找裡頭的Localizable.strings檔來做語言轉換囉!
/** Theme: Default (Fallback) Language of Localization IDE: Xcode 6 Language: Objective C Date: 103/10/16 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ NSString * HTLocalizedString(NSString * translation_key, NSString *comment) { NSString * s = NSLocalizedString(translation_key, nil); if (!([[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"en"] || [[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"zh-Hant"] || [[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"zh-Hans"])) { NSString * path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; NSBundle * languageBundle = [NSBundle bundleWithPath:path]; s = [languageBundle localizedStringForKey:translation_key value:@"" table:nil]; } return s; }
使用方式就是將NSLocalizedString取代成HTLocalizedString,即可不管你是選擇日語、泰語、韓語等等等,都會看到英語的字詞在App中出現喔!
Comments on: "[iOS] 多國語言化的預設語言 (Default (Fallback) Language of Localization)" (1)
[…] 三年前已有實現過多國語言化的預設語言 (Default (Fallback) Language of Localization),不過那篇文章我是有寫code,這次只要調整專案中的Info.plist即可! […]
讚讚