应用内切换系统语言

文章目录
  1. 1. 创建工具类
  2. 2. 使用

应用内切换系统语言

创建工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// LocalizableTool.h
+(NSBundle *)bundle;//获取当前资源文件

+(void)initUserLanguage;//初始化语言文件

+(NSString *)userLanguage;//获取应用当前语言

+(void)setUserlanguage:(NSString *)language;//设置当前语言

// LocalizableTool.m
+ ( NSBundle * )bundle{

return bundle;
}
+(void)initUserLanguage{

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];

NSString *string = [userDef valueForKey:kCommonLang];

if(string.length == 0){
NSString *current = [WEFileUtils getLangugeAndCountryID][0];
current = [WEFileUtils returnLocalStr:current];
string = current;
[userDef setValue:current forKey:kCommonLang];
[userDef synchronize];//持久化,不加的话不会保存
}
string = [INBaseMethod returnLocalStr:string];
// 获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@.lproj",string] ofType:nil];
bundle = [NSBundle bundleWithPath:path];//生成bundle
}

+(NSString *)userLanguage{

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
NSString *language = [userDef valueForKey:kCommonLang];
return language;
}

+(void)setUserlanguage:(NSString *)language{
// 1.第一步改变bundle的值
NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@.lproj",language] ofType:nil];
bundle = [NSBundle bundleWithPath:path];
}

使用

1
2
3
4
5
// 在AppDelegate里进行初始化
[LocalizableTool initUserLanguage];
// 定义一个宏用来从哪个文件中读数据
// key 代表你要在某个文件中需要读取的key值,table为国际化文件名
#define kLocalizedString(key,comment) [[INLocalizableTool bundle] localizedStringForKey:(key) value:@"" tab
分享到 评论