swift3.0-iOS app内部语言国际化(本地化)

时间:2021-12-02 20:22:02

1. 首先要配置localizable.strings,如下图:

swift3.0-iOS app内部语言国际化(本地化)

详细的配置过程这里就不说了,可以另行百度。今天主要说的是怎样在内部切换语言环境。


2.  新建类:LanguageHelper.swift

代码中注释已经很详细了,这里就不多说了。请看代码:

//
//  LanguageHelper.swift
//
//  Created by amberoot on 17/8/24.
//  Copyright  2017年 amberoot. All rights reserved.
//

import UIKit

class LanguageHelper: NSObject {
    //单例
    static let shareInstance = LanguageHelper()
    
    let def = UserDefaults.standard
    var bundle : Bundle?
    
    ///根据用户设置的语言类型获取字符串
    func getUserStr(key: String) -> String
    {
         // 获取本地化字符串,字符串根据手机系统语言自动切换
        let str = NSLocalizedString(key, comment: "default")
        return str
    }
    ///根据app内部设置的语言类型获取字符串
    func getAppStr(key: String) -> String
    {
        // 获取本地化字符串,字符串会根据app系统语言自动切换
        let str = NSLocalizedString(key, tableName: "Localizable", bundle: LanguageHelper.shareInstance.bundle!, value: "default", comment: "default")
        return str
    }
    
    ///设置app语言环境
    func setLanguage(langeuage: String) {
        var str = langeuage
        //如果获取不到系统语言,就把app语言设置为首选语言
        if langeuage == "" {
            //获取系统首选语言顺序
            let languages:[String] = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
            let str2:String = languages[0]
            //如果首选语言是中文,则设置APP语言为中文,否则设置成英文
            if ((str2=="zh-Hans-CN")||(str2=="zh-Hans"))
            {
                str = "zh-Hans"
            }else
            {
                str="en"
            }
            
        }
        //语言设置
        def.set(str, forKey: "langeuage")
        def.synchronize()
        //根据str获取语言数据(因为设置了本地化,所以项目中有en.lproj和zn-Hans.lproj)
        let path = Bundle.main.path(forResource:str , ofType: "lproj")
        bundle = Bundle(path: path!)
 
    
    }
}


3. LanguageHelper.swift的应用

(1)在AppDelegate.swift中设置app的初始语言

可以获取手机系统语言来设置APP的初始语言环境,也可以根据自己的需求设置APP的初始语言环境。

swift3.0-iOS app内部语言国际化(本地化)



(2)实际应用:配置label的text或button的title等等

swift3.0-iOS app内部语言国际化(本地化)


参考博客地址:http://www.zhimengzhe.com/bianchengjiaocheng/swift/337155.html