首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLocale NSLocale preferredLanguages不更新语言更改

NSLocale NSLocale preferredLanguages不更新语言更改
EN

Stack Overflow用户
提问于 2017-12-28 08:34:17
回答 1查看 1.4K关注 0票数 4

我试图使用以下代码获取用户选择的当前首选语言:

代码语言:javascript
复制
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];

这给了我第一次运行应用程序时所期望的首选语言,但,一旦我在系统设置中更改了语言,这些更改就不会得到反映。如果我卸载应用程序,然后更改语言,然后再重新安装应用程序,则该应用程序现在正在为这种新语言工作(并且只显示这种语言)。

下面是正在发生的事情:

  • 当应用程序首次安装时,该语言设置为英语(澳大利亚语)。
  • 应用程序将显示*language给出的值en-AU (正确的值)。
  • 现在语言改为塞尔维亚语。
  • 在重新启动应用程序之后,*language仍然给予en-AU,而它应该有sr-XX
  • 重新安装应用程序后,language将显示正确的值sr-XX,并且该应用程序正在按预期工作,但现在它不会更改为任何其他语言(如所述)。

我正在iPhone (iOS 11)上直接测试这个应用程序。我在项目设置中添加了本地化资源,只是为了确保我也将默认的应用程序语言设置为方案中的系统首选语言。

我也尝试过使用currentLocale,但是它仍然给出了相同的结果。

我还在某个地方找到了以下代码,这也是提供和数组2元素,但行为与preferredLanguage相同,不随语言的变化而改变。

代码语言:javascript
复制
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *languages = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:@"AppleLanguages"]];

我对iOS开发还比较陌生,不知道我在哪里做错了。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-28 09:06:28

如果您想本地化“总是反映最新的配置设置”,请在Swift中使用autoupdatingCurrent,在Objective中使用autoupdatingCurrentLocale

您还可能希望在Swift中作为NSLocale.currentLocaleDidChangeNotification的观察者,在Objective中作为NSCurrentLocaleDidChangeNotification的观察者,如果当应用程序在地区变化时碰巧挂起或运行在后台(例如,为了相应地更新UI ),您希望得到任何更改的通知。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48004191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档