【问题标题】:Forcing a language change notification iOS强制语言更改通知 iOS
【发布时间】:2013-06-26 15:42:23
【问题描述】:

我的应用正在本地化,我们关注方言。 (即波多黎各的西班牙语和西班牙语之间的区别)我注意到仅更改区域不会将通知推送到将触发本地化的应用程序..仅更改语言会触发此通知。

在我的应用程序委托中,我想检查我的 applicationDidBecomeActive 方法中的区域是否发生了变化,如果发生了变化,我想推送如果语言发生变化,iOS 会推送的通知.. 是这样可能吗?

【问题讨论】:

  • 一种语义技术性:您指的是通过NSNotificationCenter 发出的更改通知,而不是推送通知(可以是本地或远程,但与内部 Objective-C 通知系统的机制不同),您想向通知中心“发布通知”。
  • 通知是指NSCurrentLocaleDidChangeNotification吗?
  • 是的,我想发布 NSCurrentLocaleDidChangeNotification
  • 谢谢,请看下面我的回答。

标签: ios localization nsnotification


【解决方案1】:

每次您的应用返回前台时(而不是在其变为活动状态时),获取当前语言环境。将最新的语言环境与以前的语言环境进行比较。如果新的和以前的语言环境对您来说足够不同,请发布通知。

例如 - 从西班牙到墨西哥应该将语言环境从 es_ES 更改为 es_MX

编辑

要发布通知,您可以:

[[NSNotificationCenter defaultCenter] postNotificationName:NSCurrentLocaleDidChangeNotification object:nil];

【讨论】:

  • 我知道.. 我的问题是如何发布通知
  • 查看我的更新答案。顺便说一句 - 您的问题没有明确表明您的问题是关于如何发布通知。
  • 注意在 iOS 上你需要 NSNotificationCenter 而不是 UINotificationCenter。
  • @orionelenzil 谢谢。那是一个错字。
【解决方案2】:

以编程方式发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:NSCurrentLocaleDidChangeNotification object:self userInfo:nil];

【讨论】:

  • 这个帖子区域更改或语言更改的问题.. 我想要做的实际上是强制更改语言通知,即使语言没有更改
  • 似乎不起作用..当我更改语言并返回应用程序时,我的本地化正在使用正确的方言触发..但如果我只是将地区从美国更改为 peurto rico.. 并返回应用程序,它不会更改我的本地化字符串
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2020-05-22
  • 2015-03-25
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多