场景需求 :
在系统语言选定为中文时,App 语言为 中文
其他情况下全部作 英文 显示
因此需要添加系统语言读取,经过判断后直接调用我需要的某种语言对应的值来显示。
// 在 Appdelegate.m 中添加系统语言检测与赋值
NSArray *languages = [NSLocale preferredLanguages];
NSString *language = [languages objectAtIndex:0];
if ([language hasPrefix:@"zh"]) { // 检测开头匹配, 是否为中文
[[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"]; // App语言设置为中文
} else { // 其他语言
[[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"]; // App语言设置为英文
}
// 在需要的部分添加手动选取语言的宏, 并调用得到对应的值
// 宏
#define Localized(key) [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]
// 调用
self.label.text = Localized(@"mainText");
选定系统语言为中文,安装App并运行,之后修改系统语言为日文,使用 NSLocalizedString 国际化的文字显示为中文,使用自定义宏 Localized 国际化的文字显示为英文。
网友评论