Just a Computer Graphics Studio & My Life

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

Default (Fallback) Language of Localization

好在可以改掉預設的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中出現喔!

參考:Localizing strings in iOS: default (fallback) language?

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: