我正在开发一个支持英语和阿拉伯语的 iOS 应用程序。用户可以从应用程序内部更改应用程序语言。 当用户更改我设置的语言时,
//change app language
UserDefaults.standard.set([language], forKey: "AppleLanguages")
currentLanguage = language
UserDefaults.standard.synchronize()
//current language updating
var currentLanguage : String{
get{
if let selectedLanguage = UserDefaults.standard.string(forKey: "selectedLanguage"){
return selectedLanguage
}else{
let language = Locale.preferredLanguages[0]
if language.hasPrefix("ar"){
return SupportedLanguage.ar.rawValue
}else{
return SupportedLanguage.en.rawValue
}
}
}
set{
UserDefaults.standard.setValue(newValue, forKey: "selectedLanguage")
}
}
这样,App就不会退出了。只需重新加载 Root View Controller
我面临的问题是,当我像这样更改应用程序语言时,“..requesting permission for using Location”、“... would ,like to use Photo album”等隐私警报不会显示在所选中语言。我已经为英语和阿拉伯语创建了 InfoPlist.string 文件并添加了
NSCameraUsageDescription = "....想要访问相机"; NSLocationAlwaysAndWhenInUseUsageDescription = "....想要使用您当前的位置以获得更好的可用性";
仍然没有显示。我还尝试删除、清理应用程序、删除派生数据。
知道为什么会这样吗?
最佳答案
更改 AppleLanguages
键需要重新启动应用程序以便应用新的本地化,您可以尝试将 NSLocalizedString
与 tableName 一起使用或更改您从中读取的当前包,但系统本地化获胜在应用程序重新启动之前不会更改
关于ios - 在 iOS 中未显示隐私警报的本地化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48861302/