作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户希望将我们的 iOS 应用语言设置与用户的 iPhone 语言完全分开。基本上,在应用程序本身内部,用户选择应用程序的语言,然后应用程序的 UI 和文本全部更改为所选语言。这比苹果的本地化标准更灵活,而且他们没有解决这种情况。对于如何实现这一目标,是否存在一些商定的最佳实践?
具体来说,用户可能希望应用程序的界面为西类牙语,但手机的其余部分仍为英语。
谢谢!
最佳答案
像在 iOS 中进行默认本地化一样创建 Localized.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)
关于ios - 我可以将我的 iOS 应用程序本地化为西类牙语或德语,同时保留手机的其余部分为英语吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605315/
我是一名优秀的程序员,十分优秀!