我的应用包含 4 种不同的语言。开发语言现在是英语 我想将其他语言(俄语)设置为默认语言(第一次安装应用程序时应用程序语言必须是俄语)我该如何实现?
在我的应用委托(delegate)中:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NSBundle.setLanguage(defaultLanguage)
}
extension NSBundle {
class func setLanguage(language: String) {
defer {
object_setClass(NSBundle.mainBundle(), Language.self)
}
objc_setAssociatedObject(NSBundle.mainBundle(), &bundleKey, NSBundle.mainBundle().pathForResource(language, ofType: "lproj"), .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
我已经添加了这段代码,但语言没有改变。
最佳答案
您可以使用 UserDefaults 来存储当前语言。如果未设置,则使用默认语言。
以中文为例:
var bundle: Bundle? = nil
func setLanguage(_ index: Int) {
switch index {
case 0:
print("Set language to En.")
let path = Bundle.main.path(forResource: "Base", ofType: "lproj")
self.bundle = Bundle.init(path: path!)
case 1:
print("Set language to Zh.")
let path = Bundle.main.path(forResource: "zh-Hant", ofType: "lproj")
self.bundle = Bundle.init(path: path!)
case 2:
print("Set language to Ch.")
let path = Bundle.main.path(forResource: "zh-Hans", ofType: "lproj")
self.bundle = Bundle.init(path: path!)
default:
let path = Bundle.main.path(forResource: "zh-Hant", ofType: "lproj")
self.bundle = Bundle.init(path: path!)
break
}
}
func get(_ key: String) -> String {
if self.bundle != nil {
return NSLocalizedString(key, tableName: "Localizable", bundle: bundle!, value: "", comment: "")
}
return ""
}
关于ios - 如何为 ios 应用程序设置默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678386/