ios - 如何为 ios 应用程序设置默认语言

标签 ios swift xcode localization

我的应用包含 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/

相关文章:

ios - 如何在 swift 中正确添加 http header "Connection :close"?

ios - 适用于 iOS 的 AWS API Gateway 客户端返回错误 "Failed to serialize the body JSON"

ios - 快速单击后按钮图像未更改

ios - 将 NSNull 对象分配给 NSString

ios - 不支持 Xcode iOS 8 键盘类型

ios - XmppFramework 我收到 KissXml 错误

发送到 http post 和设置实体时 IOS Json 错误

swift - 如何在 SwiftUI 中的堆栈上设置背景颜色

xcode - Swift 2 - 如何将导航 Controller 后退按钮自定义为自定义按钮?

objective-c - -DNDEBUG 和 -DNS_BLOCK_ASSERTIONS 标志有什么区别