我试图使用以下代码获取用户选择的当前首选语言:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];这给了我第一次运行应用程序时所期望的首选语言,但,一旦我在系统设置中更改了语言,这些更改就不会得到反映。如果我卸载应用程序,然后更改语言,然后再重新安装应用程序,则该应用程序现在正在为这种新语言工作(并且只显示这种语言)。
下面是正在发生的事情:
*language给出的值en-AU (正确的值)。*language仍然给予en-AU,而它应该有sr-XX。language将显示正确的值sr-XX,并且该应用程序正在按预期工作,但现在它不会更改为任何其他语言(如所述)。我正在iPhone (iOS 11)上直接测试这个应用程序。我在项目设置中添加了本地化资源,只是为了确保我也将默认的应用程序语言设置为方案中的系统首选语言。
我也尝试过使用currentLocale,但是它仍然给出了相同的结果。
我还在某个地方找到了以下代码,这也是提供和数组2元素,但行为与preferredLanguage相同,不随语言的变化而改变。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *languages = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:@"AppleLanguages"]];我对iOS开发还比较陌生,不知道我在哪里做错了。请帮帮忙。
发布于 2017-12-28 09:06:28
如果您想本地化“总是反映最新的配置设置”,请在Swift中使用autoupdatingCurrent,在Objective中使用autoupdatingCurrentLocale。
您还可能希望在Swift中作为NSLocale.currentLocaleDidChangeNotification的观察者,在Objective中作为NSCurrentLocaleDidChangeNotification的观察者,如果当应用程序在地区变化时碰巧挂起或运行在后台(例如,为了相应地更新UI ),您希望得到任何更改的通知。
https://stackoverflow.com/questions/48004191
复制相似问题