用户希望将我们的iOS应用语言设置与用户的iPhone语言完全分开。基本上,在应用程序本身内部,用户选择应用程序的语言,然后,应用程序的UI和文本都会更改为所选语言。这比Apple的本地化标准更灵活,并且它们不能解决这种情况。是否有一些关于如何做到这一点的最佳实践?
具体来说,用户可能想要西班牙语的应用程序界面,但手机的其余部分仍为英语。
谢谢!
答案 0 :(得分:0)
在执行iOS中的默认本地化时创建Localizable.strings。然后使用此代码在应用中实现语言切换。
extension String {
func localized() -> String {
let selectedLanguage = UserDefaults.standard.string(forKey:) CURRENT_LANGUAGE)
guard let path = Bundle.main.path(forResource: selectedLanguage == "en" ? "Base" : selectedLanguage, ofType: "lproj") else {
if let basePath = Bundle.main.path(forResource: "Base", ofType: "lproj"){
return Bundle(path: basePath)?.localizedString(forKey: self, value: "", table: nil) ?? self
}
return self
}
return Bundle(path: path)?.localizedString(forKey: self, value: "", table: nil) ?? self
}
}
您可以通过调用let text = "LOGIN_SCREEN_TITLE".localized()
来访问本地化的字符串,其中在本地化文件中添加了 LOGIN_SCREEN_TITLE 。
enum LanguagesSupported: String {
case English = "en"
case French = "fr"
}
UserDefaults.standard.set(LanguagesSupported.French.rawValue, forKey: CURRENT_LANGUAGE)
答案 1 :(得分:0)
首先创建这样的语言代码和语言名称的字典
let applicationLanguages = ["de":"German","es":"Spanish"]
然后,当用户可以选择特定语言时,然后单击任意按钮后,调用此功能并终止该应用。
func setLanguage(languageCode: String){
let languageArray = NSArray(objects: languageCode)
UserDefaults.standard.set(languageArray, forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
UserDefaults.standard.set(true, forKey: "changedLanguage")
UserDefaults.standard.set(languageCode, forKey: "AppLanguage")
}
然后显示所选语言的警报,然后单击确定以终止应用程序。
func endBackgroundTask() {
exit(0)
}