iOS 程序内国际化的一些心得(1)
最近接到需求,原有的app需要做一个程序内的国际化,可以让用户选择要展示的语言。
but哥可是没有一点思路。。。。
肿么办。
百度。。。
百度下来,取到了一些思路。
自己写到可能有些不尽如人意的地方,烦请各位大牛批评指正。
现总结如下:
1,判断用户手机设置的语言是否包含在当前app支持的语言里面。
如果包含着app支持语言里面。直接根据这个语言设置配置项。
如果不包含在app支持语言里面,弹出语言设置页面,让用户设置。
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
未完待续。。。。。