最近接到需求,原有的app須要作一個程序內的國際化,能夠讓用戶選擇要展現的語言。服務器
but哥但是沒有一點思路。。。。app
腫麼辦。ssh
百度。。。blog
百度下來,取到了一些思路。資源
本身寫到可能有些不盡如人意的地方,煩請各位大牛批評指正。get
現總結以下:it
1,判斷用戶手機設置的語言是否包含在當前app支持的語言裏面。io
若是包含着app支持語言裏面。直接根據這個語言設置配置項。class
若是不包含在app支持語言裏面,彈出語言設置頁面,讓用戶設置。import
VShowSetLanguage *setlanguage = [[VShowSetLanguage alloc] init]; [setlanguage settinglanguage:^(BOOL isShowUserSelectView) { if (isShowUserSelectView) { //加載語言選擇界面 [self loadLanguageChooseView]; }else{ //用戶已經設置過語言 或者用戶當前系統語言 在app支持語言內 [self reloadRootView]; } }];
VShowSetLanguage:判斷是否加載語言選擇界面處理類
實現以下:
.h文件
#import <Foundation/Foundation.h> typedef void(^showLanguageView)(BOOL isShowUserSelectView); @interface VShowSetLanguage : NSObject - (void)settinglanguage:(showLanguageView)isshow; @end
.m文件
#import "VShowSetLanguage.h" @implementation VShowSetLanguage /*! * @Author Yunis_song, 14-12-15 19:12:49 * * @brief 判斷是否加載語言選擇界面 * * @param isshow 返回值 yes加載選擇界面 no不加載選擇頁面 */ - (void)settinglanguage:(showLanguageView)isshow { NSString *language = [[NSUserDefaults standardUserDefaults] objectForKey:VShowUserLanguage]; if (![VShowUtil isEmptyString:language]) {//判斷用戶是否已經設置過默認語言 若是不爲空則用戶已經選擇過頁面或者app支持當前用戶手機設置語言 不展現選擇頁面 isshow(NO); }else { //獲取用戶當前手機系統設置的語言 NSString *userLanguage = [VShowUtil getPreferredLanguage]; //若是用戶當前設置語言 包含在app預設國際化語言李選擇當前國際化語言 相應設置服務器地址 if ([userLanguage isEqualToString:@"en"] || [userLanguage isEqualToString:@"th"] || [userLanguage isEqualToString:@"zh-Hans"]) { //設置一些對應語言的配置信息 service地址 國際化資源 [VShowUtil setUserLanguageAddServiceAddress:userLanguage]; isshow(NO); }else //若是用戶當前設置語言沒有包含在app預設國際化語言 讓用戶從當前app支持的語言李選擇顯示的語言。 { isshow(YES); } } } @end
未完待續。。。。。