swift3.0-iOS app內部語言國際化(本地化)
阿新 • • 發佈:2018-12-23
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