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
未完待续。。。。。
浙公网安备 33010602011771号