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

来源:互联网 发布:免费流量软件下载 编辑:程序博客网 时间:2024/06/06 09:05

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

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


2.  新建类:LanguageHelper.swift

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

////  LanguageHelper.swift////  Created by amberoot on 17/8/24.//  Copyright  2017年 amberoot. All rights reserved.//import UIKitclass 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的初始语言环境。




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



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


阅读全文
0 0
原创粉丝点击