我有一个问题。我创建了一个视图,用户可以在其中选择英语、荷兰语和西班牙语的应用语言。然后下一个视图中的 UILabel 的文本应该根据选择的语言。
我使用以下代码设置当前语言:
NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));
int index = 2;
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
switch (index)
{
case 0:
languages = [NSArray arrayWithObjects:@"en",@"de",@"es", nil];
break;
case 1:
languages = [NSArray arrayWithObjects:@"de",@"en",@"es", nil];
break;
case 2:
languages = [NSArray arrayWithObjects:@"es", @"en", @"de", nil];
break;
}
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));
** 在 Localizable.strings 中(西班牙语):**“正在加载……请稍候……”=“正在加载……西班牙语”;
** 在 Localizable.strings(德语)中:**“正在加载...请稍候...”=“正在加载...德语”;
我使用以下代码在下一个视图中获取当前语言:
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
NSLog(@"preferredLang: %@", preferredLang);
NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));
但它会在控制台中打印“Loading... Please wait...”。它应该打印“Loading... in German”。
是不是哪里出错了??我可以在应用程序运行时更改应用程序的语言吗?