前言
上一片文章介绍的是根据系统语言自动切换,现在我们来说说怎么在APP中手动切换多语言。
iOS 国际化多语言(上)
配置
配置内容还是和上篇文章一样,不知道的可以点击上面链接。
步骤
先新建一个Strings File 文件(iOS->Resource->Strings File)
。文件名称Language,名称可以随意,放的位置也可以随意。
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]) {
NSArray *languages = [NSLocale preferredLanguages];
NSString *language = [languages objectAtIndex:0];
if ([language hasPrefix:@"zh-Hans"]) {//开头匹配
[[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
}else{
[[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
修改语言,我们可以第一个宏,或者自行封装
// 宏
#define Localized(key) [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Language"]
// 方法
NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"];
NSString *path = [[NSBundle mainBundle] pathForResource:str ofType:@"lproj"];
NSBundle *bundle = [NSBundle bundleWithPath: path];
NSString *value = [bundle localizedStringForKey:strL value:nil table:@"Language"];