1. 程式人生 > >語言國際化(適配中英文之外的第三方語言--預設載入英文)

語言國際化(適配中英文之外的第三方語言--預設載入英文)

       大家都知道,iOS9以後App預設語言為英文,但有時使用者切換到指定配置的國際化語言環境之外的第三種語言時(比如某島語言:一般(我們)專案中,國際化只做了中英文,但如果您法語、德語......‘能想到的語’都做國際化了的話,那下面的對您就沒用了),可能會出現載入的是中文而非英文的情況,這個時候查詢資料通過修改工程plist檔案也沒解決問題的,可以參考如下方法:

1.在主函式或入口函式中copy如下程式碼:這裡我寫在了主函式中

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    
    @autoreleasepool {
        NSArray *languages = [NSLocale preferredLanguages];
        NSString *language = [languages objectAtIndex:0];
        if ([language hasPrefix:@"zh"]) {//開頭匹配
            [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
        }else{
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
        }
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

2.載入語言的方法定義成巨集

/** 程式碼切換語言 **/
#define LOAD_STRING(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]

     其實大家也都看出來了,就是用程式碼實現在這種尷尬情況下,強制載入資原始檔的功能,這樣就算使用者選擇了其它語言,而你專案中對其並沒有做國際化,也可以讓它顯示中文或英文。