我有兴趣让我的用户选择我的应用程序显示给他们的语言/区域设置。我已经弄清楚如何加载正确的包,选择正确的字符串文件等。但是,我似乎仍然有一些系统项目无法控制。例如,切换控件。
我有什么方法可以告诉系统这个应用程序现在应该以特定语言运行,而不是用户当前的系统设置?
我有兴趣让我的用户选择我的应用程序显示给他们的语言/区域设置。我已经弄清楚如何加载正确的包,选择正确的字符串文件等。但是,我似乎仍然有一些系统项目无法控制。例如,切换控件。
我有什么方法可以告诉系统这个应用程序现在应该以特定语言运行,而不是用户当前的系统设置?
最简单的方法是 via NSUserDefaults
:语言环境由AppleLocale
(语言环境 ID 作为字符串)确定,语言由AppleLanguages
(语言 ID 数组)中的第一个匹配项确定;您的应用只能为您的应用覆盖这些默认值。要检查它是否被您的应用程序覆盖,您可以使用类似[defaults persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]] objectForKey:@"AppleLocale"]
. 要删除覆盖,请使用-removeObjectForKey:
.
无论您采用哪种方式,在更改语言时都可能需要重新启动应用程序;OS X 和 iOS 应用程序根本不是为了在运行时更改语言而设计的(在 OS X 上,只有新启动的应用程序才能看到语言更改;在 iOS 上,系统会终止所有应用程序以更改语言)。
我添加了此功能以使切换语言更容易进行开发/测试;我不知道这是否会通过 App Store 审核流程。