1. 首先要配置localizable.strings,如下图:
详细的配置过程这里就不说了,可以另行百度。今天主要说的是怎样在内部切换语言环境。
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的初始语言环境。
(2)实际应用:配置label的text或button的title等等
参考博客地址:http://www.zhimengzhe.com/bianchengjiaocheng/swift/337155.html