强制更改iOS语言通知

4
我的应用正在本地化,我们关注方言(例如:西班牙语和波多黎各的西班牙语之间的区别)。我注意到仅更改地区不会向应用程序推送通知以触发本地化,只有更改语言才会触发此通知。
在我的应用程序委托中,我想检查是否在applicationDidBecomeActive方法中更改了地区,如果是,我想推送iOS将推送的通知,如果语言已更改,是否可能实现这一点?

一个语义上的技术细节:你是通过 NSNotificationCenter 引用一个 _change notification_,而不是 _push notification_(它可以是本地或远程的,但是与内部的 Objective-C 通知系统不同),你想要向通知中心 "post a notification"。 - bshirley
你所说的“notification”,是指NSCurrentLocaleDidChangeNotification吗? - Marco
是的,我想要发送NSCurrentLocaleDidChangeNotification的POST请求。 - erik
2个回答

3
每次你的应用程序回到前台(不是变为活动状态),获取当前的语言环境。将最新的语言环境与以前的语言环境进行比较。如果新的和以前的语言环境有足够大的差异,则发布通知。
例如,从西班牙到墨西哥应该将语言环境从“es_ES”更改为“es_MX”。
编辑:
要发布通知,您可以执行以下操作:
[[NSNotificationCenter defaultCenter] postNotificationName:NSCurrentLocaleDidChangeNotification object:nil];

我知道这个.. 我的问题是如何POST通知。 - erik
请查看我的更新答案。顺便说一句,你的问题没有明确表明你的问题是关于如何发布通知的。 - rmaddy
注意,在iOS中,您需要使用NSNotificationCenter而不是UINotificationCenter。 - orion elenzil
1
@orionelenzil 谢谢。那是一个打字错误。 - rmaddy

3

编写程序自动发布通知:

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

这篇帖子的问题是关于区域更改或语言更改的。我想要做的实际上是强制进行语言更改通知,即使语言没有更改。 - erik
似乎无法正常工作。当我更改语言并返回应用程序时,我的本地化会使用正确的方言触发。但是,如果我只是从美国更改到波多黎各等地区,然后返回应用程序,它不会更改我的本地化字符串。 - erik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接