设置"AppleLanguages"不会改变应用程序的语言。
设置"AppleLanguages"不会改变应用程序的语言。
我正在尝试实现一个可以改变应用语言的函数。
我尝试这样设置它:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("de", forKey: "AppleLanguages")
但是在应用重新启动后,语言仍然是“系统默认”。
现在我通过设置Scheme > Application Language > language
来测试不同的语言。
但是有可能用户点击一个按钮,在重新启动后看到选择的语言吗?
此外,有什么适当的方法可以避免重新启动时更改语言呢?
"AppleLanguages"是一个用于设置应用程序语言的键。根据给出的代码,我们可以看出,该键被用于在应用程序启动之前更改语言设置。然而,根据评论和问题,我们可以推断出在某些情况下,使用该键无法成功更改应用程序的语言设置。
问题的原因可能是与代码版本和IDE版本的兼容性有关。一些评论中提到,在Swift 3和Xcode 7+版本中,使用"main.swift"而不是"Main.swift"作为文件名。另外,还有评论提到,在Xcode 8版本中,该方法已经无效。
为了解决这个问题,一些建议是使用第三方库或更新的Swift语法。其中一个建议是使用MOLH库,该库在GitHub上可以找到。该库使用方法交换来实现语言设置。另一个建议是使用更新的Swift语法来编写"main.swift"文件。
要解决这个问题,可以考虑以下解决方法:
1. 使用MOLH库或其他第三方库来实现语言设置。
2. 使用更新的Swift语法来编写"main.swift"文件。
希望这些解决方法能够帮助解决问题,并实现在应用程序启动之前更改语言设置的目标。
设置"AppleLanguages"并不能改变应用程序的语言。这是因为需要使用数组而不是字符串来设置"AppleLanguages"键。另外,使用synchronize()方法也不再推荐使用。
解决方法是使用以下代码将"AppleLanguages"设置为数组:
UserDefaults.standard.set(["de"], forKey: "AppleLanguages")
更多关于synchronize()方法的信息,请参考Apple的文档:developer.apple.com/documentation/foundation/userdefaults/…
问题的原因:使用NSUserDefaults来设置语言并不能立即改变应用程序的语言。
解决方法:可以通过以下方法来改变应用程序的语言:
1. 使用NSUserDefaults来保存用户选择的语言,例如:
let language = "de"
NSUserDefaults.standardUserDefaults().setObject([language], forKey: "AppleLanguages")
NSUserDefaults.standardUserDefaults().synchronize()
2. 重新启动应用程序,以使新的语言设置生效。
文章内容如下:
使用NSUserDefaults来设置语言并不能立即改变应用程序的语言。要改变应用程序的语言,可以通过以下方法来实现:
首先,使用NSUserDefaults来保存用户选择的语言,例如:
let language = "de"
NSUserDefaults.standardUserDefaults().setObject([language], forKey: "AppleLanguages")
NSUserDefaults.standardUserDefaults().synchronize()
然后,需要重新启动应用程序,以使新的语言设置生效。
请注意,重新启动应用程序是必要的,因为应用程序在启动时会加载本地化资源。只有在重新启动应用程序后,新的语言设置才会生效。
另外,问这种方法是否适用于发送本地化推送通知。对于这个问题,我们可以肯定地说,这种方法不会影响发送本地化推送通知的功能。本地化推送通知是根据设备的语言设置来显示相应的本地化内容的,而不受应用程序语言设置的影响。
总之,通过保存用户选择的语言到NSUserDefaults,并在重新启动应用程序后生效,可以实现改变应用程序的语言。