swift 国际化,app内部中英语言切换
2017-06-30 10:04
387 查看
重点是app 内部切换
1.配置languege.strings.infoPist.Strings
2.LocalizationTool.swift,实现内部切换
3.在appdelegate里面
4.语言切换界面
页面所有的viewdidload方法里面加上监听
tip:日期选择器
1.配置languege.strings.infoPist.Strings
2.LocalizationTool.swift,实现内部切换
// // LocalizationTool.swift // IFXY // // Created by LiuXing on 2017/3/7. // Copyright © 2017年 IFly. All rights reserved. // import UIKit class LocalizationTool: NSObject { static let shareInstance = LocalizationTool() let def = UserDefaults.standard var bundle : Bundle? func valueWithKey(key: String!) -> String { let bundle = LocalizationTool.shareInstance.bundle let str = bundle?.localizedString(forKey: key, value: nil, table: "Language") return str! } // class func valueWithKey(key: String!) -> String { // // let languageString = SynthesizerSettingTool.shareIntance.vocieParams?.languageType // let path = Bundle.main.path(forResource: languageString!, ofType: "lproj") // let value = (Bundle.init(path: path!)?.localizedString(forKey: key, value: nil, table: "Language"))! // return value // } func setLanguage(langeuage:String) { var str=langeuage if langeuage=="" || langeuage==nil{ let languages:[String]=UserDefaults.standard.object(forKey: "AppleLanguages") as! [String] let str2:String=languages[0] if ((str2=="zh-Hans-CN")||(str2=="zh-Hans")){ str="zh-Hans" }else{ str="en" } } UserDefaults.standard.set(str, forKey: "langeuage") UserDefaults.standard.synchronize() let path = Bundle.main.path(forResource:str , ofType: "lproj") bundle = Bundle(path: path!) // def.set(langeuage, forKey: UserLanguage) // def.synchronize() NotificationCenter.default.post(name: NSNotification.Name(rawValue: "LanguageChanged"), object: nil) } }
3.在appdelegate里面
var languege:String="" // guard languege==UserDefaults.standard.value(forKey: "langeuage") as! String else{ // languege="" // } if (UserDefaults.standard.value(forKey: "langeuage")) != nil { languege=UserDefaults.standard.value(forKey: "langeuage") as! String } LocalizationTool.shareInstance.setLanguage(langeuage: languege)
4.语言切换界面
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: false) selectCol = indexPath.row tableView.reloadData() if indexPath.row == 0 { LocalizationTool.shareInstance.setLanguage(langeuage: "zh-Hans") } else { LocalizationTool.shareInstance.setLanguage(langeuage: "en") } }点击切换语言之后,需要立即修改之前缓存的页面
NotificationCenter.default.addObserver(self, selector: #selector(changeLanguage), name: NSNotification.Name(rawValue: "LanguageChanged"), object: nil)
页面所有的viewdidload方法里面加上监听
func changeLanguage(){ items = [["title": LocalizationTool.shareInstance.valueWithKey(key: "my_language_zh")],["title": LocalizationTool.shareInstance.valueWithKey(key: "trans_title_en")]] self.title = LocalizationTool.shareInstance.valueWithKey(key: "my_language_switch")//"切换语言" if (UserDefaults.standard.value(forKey: "langeuage") as! String) == "en"{ // 英语 selectCol = 1 } else { selectCol = 0 } m_TableView.reloadData() }
tip:日期选择器
fileprivate lazy var datePicker:UIDatePicker = {[unowned self] in let datePic = UIDatePicker() datePic.backgroundColor = UIColor.white let languege=UserDefaults.standard.value(forKey: "langeuage") as! String var sexstr=UserAccountTool.shareIntance.account?.sex if languege=="en" { datePic.locale = Locale(identifier: "en") }else{ datePic.locale = Locale(identifier: "zh_CN") } // datePic.locale = Locale(identifier: "zh_CN") return datePic }()
相关文章推荐
- IOS APP软件多国语言切换,国际化app
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
- ios8+swift app多语言——国际化和本土化
- swift3.0-iOS app内部语言国际化(本地化)
- 关于iOS国际化(根据手机App用户自己来切换语言) App支持多语言切换
- app内部切换语言
- IOS:国际化APP内部切换
- IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)
- iOS开发:国际化之app支持多种语言切换
- app系统语言切换及app内部切换语言
- 【Swift 3.0】iOS 国际化切换语言
- iOS开发 - app国际化+手动切换语言
- iOS App的国际化,以及App内的语言切换
- iOS开发:国际化之app支持多种语言切换
- 关于iOS国际化(根据手机系统来切换语言) App支持多语言切换
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
- iOS国际化之app内切换语言
- iOS App的国际化,以及App内的语言切换
- Android学习–Android app 语言切换功能
- IOS 程序内部切换语言 的一种方法