1、新建语言文件,命名为language.strings

2、配置需要用到的语言,我们只用到了中英文

配置好后,language.strings文件下会出现2个文件,一个中文 一个英文

注意:文件中的格式为“key”=“value”; 如:"mine" ="Me"; //我的
接下来就是获取某个文件下的某个值了
3、新建工具类
#import "InternationalControl.h"
@implementation InternationalControl
static NSBundle *bundle = nil;
+ ( NSBundle * )bundle{
return bundle;
}
+(void)initUserLanguage{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *string = [def valueForKey:@"userLanguage"]; //保存在本地
if(string.length <= 0){
NSArray *appLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; //获取系统语言 app首次打开显示的语言与系统语言一致
NSString *languageName = [appLanguages objectAtIndex:0];
if ([languageName containsString:@"en"]) { //系统语言为英文
[def setValue:@"en" forKey:@"userLanguage"]; //英文保存en 为了与服务器保持一致
}else {
//获取系统当前语言版本(中文zh-Hans,英文en)
[def setValue:@"zh-Hans" forKey:@"userLanguage"];
}
[def synchronize];//持久化,不加的话不会保存
}
//获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@"lproj"];
bundle = [NSBundle bundleWithPath:path];//生成bundle
}
//获取当前选择的语言
+(NSString *)userLanguage{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *language = [def valueForKey:@"userLanguage"];
return language;
}
//选择某种语言 保存到本地
+(void)setUserlanguage:(NSString *)language{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
//1.第一步改变bundle的值
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
bundle = [NSBundle bundleWithPath:path];
//2.持久化
[def setValue:language forKey:@"userLanguage"];
[def synchronize];
}
4、初始化语言
[InternationalControl initUserLanguage];
5、加载语言
#define GetLanguageForkey(a) [Utils setTitleWithKey:a]
+ (NSString *)setTitleWithKey:(NSString *)key {
return [[InternationalControl bundle] localizedStringForKey:key value:nil table:@"language"];
}
6、切换语言
[InternationalControl setUserlanguage:@"en"];
文章借鉴http://blog.csdn.net/yang8456211/article/details/12031667
网友评论