ios – 强制NSLocalizedString使用Swift使用特定语言

使用 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)

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...