如何在iOS中运行时更改语言

时间:2016-06-01 12:12:12

标签: ios objective-c iphone cocoa-touch

在我的iOS应用中,我需要一个更改语言的选项。我们可以在不更改设备设置中的语言的情况下进行更改吗

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码设置语言

- (void) setLanguage:(NSString*) lang {
NSString *path = [[NSBundle mainBundle] pathForResource:lang ofType:@"lproj"]; 
if (path == nil) {
    myBundle = [NSBundle mainBundle];
} else { 
    myBundle = [NSBundle bundleWithPath:path];
}
if (myBundle == nil) {
    myBundle = [NSBundle mainBundle];
}
}

之后,您可以使用

获取本地化
- (NSString*) localizedStringForKey:(NSString*) key {
   return [myBundle localizedStringForKey:key value:@"" table:nil];
}

答案 1 :(得分:0)

例如,在您的应用中使用不同的语言字符串存储不同的静态json / plist等,当您切换选项时解析此设置并设置为标签。

答案 2 :(得分:0)

我不确定但是使用NSUserDefaults

尝试使用此代码
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
[languages insertObject:@"de" atIndex:0]; // ISO639-1
[[NSUserDefaults standardUserDefaults] synchronize];