使用
swift,我如何强制我的应用程序从特定的Localizable.strings读取数据.
我在实例化ViewController之前将它放在didFinishLaunchingWithOptions中,但它仍然显示我的英文应用程序.
NSUserDefaults.standardUserDefaults().removeObjectForKey("AppleLanguages") NSUserDefaults.standardUserDefaults().setObject("fr",forKey: "AppleLanguages" NSUserDefaults.standardUserDefaults().synchronize()
我试图像这样传递“AppleLanguages”键的数组,但它仍然不起作用:
NSUserDefaults.standardUserDefaults().setObject(["fr"],forKey: "AppleLanguages"
解决方法
通过更改AppleLanguages的值,无法立即更改应用程序的语言.它需要在更改生效之前重新启动应用程序.
您的问题似乎是访问不同语言的本地化字符串而不是更改应用程序的语言,对吧?如果您希望您的应用支持多种语言,您只需提供翻译并依赖settings.app进行实际更改即可.
如果要从当前使用的本地化以外的位置访问本地化字符串,则需要访问正确的翻译包.然后只需查询该包的翻译.以下代码应该可以解决问题.
let language = "en" let path = NSBundle.mainBundle().pathForResource(language,ofType: "lproj") let bundle = NSBundle(path: path!) let string = bundle?.localizedStringForKey("key",value: nil,table: nil)