【iOS开发】多语言国际化如何快速找到不同语言的key
2019-11-20 本文已影响0人
我是孙小白
app国际化配置技巧这里就不多做描述了, 一个比较全面的传送门: iOS开发技巧-国际化(Localization),只看一篇就够了
今天主要记录多语言配置时候key的获取。
通常我们处理app语言, 多是跟随系统语言,所以需要读取系统语言,判断匹配后根据语言文件的key,调用对应的语言。
#pragma mark - 语言处理
- (void)checkLanguages{
NSArray *languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
NSString *language = [languages objectAtIndex:0];
if ([language hasPrefix:@"zh"]){
[[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
}else if ([language hasPrefix:@"ru"]){
[[NSUserDefaults standardUserDefaults] setObject:@"ru" forKey:@"appLanguage"];
}else{
[[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
// 获取本地化语言
#define LocalString(key) [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]
那这里就有一个问题, 对于一些不熟悉的语言, 如何知道localizedStringForKey
的key值呢?
选中某一个语言:

打开右侧属性栏:

XX.lproj ,这里的XX就是我们要了解key, 拿到这个, 然后根据系统语言, 把这个key值存到NSUserDefaults里面就可以了。