我有兴趣允许我的用户选择我的应用程序显示给他们的语言/语言环境。我已经想出如何加载正确的包,选择正确的字符串文件等等。但是,我还是一些系统项目似乎无法控制。例如,切换控件。
有没有办法让我告诉系统这个应用现在应该使用特定语言,而不是用户当前的系统设置?
答案 0 :(得分:5)
最少hacky方式是通过NSUserDefaults
:语言环境由AppleLocale
确定(区域设置ID为字符串),语言由AppleLanguages
中的第一个匹配确定(语言ID数组);您的应用只能为您的应用覆盖这些默认值。要检查它是否被您的应用覆盖,您可以使用[defaults persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]] objectForKey:@"AppleLocale"]
之类的内容。要删除覆盖,请使用-removeObjectForKey:
。
无论你采用哪种方式,改变语言时你都可能需要relaunch the app; OS X和iOS应用程序根本不是为了在运行时更改语言而设计的(在OS X上,只有新推出的应用程序才能看到语言变化;在iOS上,系统会杀死所有应用程序以更改语言)。
我添加了此功能,使开关语言更易于开发/测试;我不知道这是否会使App Store审核流程失败。