我是开发iOS应用的新手。所以我最近遇到了我的应用程序本地化问题。我想针对系统设置中的语言更改执行一些操作。 要获取语言ID,我使用
[[NSLocale preferredLanguages] objectAtIndex:0];
applicationDidFinishLaunchingWithOptions 方法中的。第一次它返回正确的语言ID(例如英语的“en”)。然后,我关闭我的应用程序(或将其发送到后台)并将语言更改为德语。之后,我重新开始我的应用程序,但不是“de”,它仍然返回“en”。我认为我的应用程序可能会在某处存储旧设置......但究竟在哪里?如何检索有效的当前值?
答案 0 :(得分:0)
看看这个老答案:
Getting current device language in iOS?
修改强>
NSString *testLang = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *testLang1 = [[NSLocale preferredLanguages] objectAtIndex:1];
NSString *testLang2 = [[NSLocale preferredLanguages] objectAtIndex:2];
NSString *testLang3 = [[NSLocale preferredLanguages] objectAtIndex:3];
NSString *testLang4 = [[NSLocale preferredLanguages] objectAtIndex:4];
NSLog(@"LINGUA SYS:%@:%@:%@:%@:%@",testLang,testLang1,testLang2,testLang3,testLang4);
在调试器控制台中:
LINGUA SYS:en:it:fr:de:ja
或:
LINGUA SYS:es:en:it:fr:de
或:
LINGUA SYS:pt-PT:en:es:it:fr
所以您发布的代码是正确的,错误应该在其他地方......
答案 1 :(得分:0)
如果您这样做:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en",@"es", nil] forKey:@"AppleLanguages"];
该值存储在NSUSerDefaults中,并且设置上的更改不适用。
答案 2 :(得分:0)
我找到了问题的根源。这是iOS模拟器。我在设备上安装了我的应用程序,所有问题都消失了。