當前位置:
首頁 >
Swift之本地国际化与App内切换语言
發布時間:2024/5/21
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Swift之本地国际化与App内切换语言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
添加語言庫
- 點擊項目 -> PROJECT -> Info -> Localizations -> + , 添加需要的語言;
- 添加完成的語言庫如下所示:
- 創建Localizable.strings
- 然后選擇新創建的 Localizable.string, 選中所需要的語言;
Localizable.strings 文件寫入
- 添加語言庫成功之后, Localizable.strings就生成了English、Chinese Simplified、Chinese Traditional三個語言文件;
- Localizable.strings 文件中寫入, 以"key" = “value”; 這樣的格式;
- English:
- Chinese Simplified
- Chinese Traditional
YDWLocalizationHelper
該工具類可以直接拖入工程中使用, 主要實現功能:
- 第一次進入App時, 自動根據系統的語言設定當前App的語言;
- 保存當前用戶設定的語言;
- 自定義切換語言功能;
- 控件賦值的獲取和設定;
- 切換語言后替換掉mainBundle為當前語言的bundle;
語言切換
- AppDelegate中: object_setClass(Foundation.Bundle.main, Bundle.self)
- 使用:設定時只需要在控件上, 通過YDWLocalizationHelper.shared.valueWithKey(key: “INTERNATIONALIZATION”)來設定即可; 而切換語言只需要通過設定YDWLocalizationHelper.shared.language = .Chinese即可;(其中valueWithKey和YDWLocalizationHelper.shared.language實現如下)
- 最后重載RootViewController即可:
- 對于story 中的國際化, 需要重設一下RootViewController
刷新界面
對于所有界面的刷新最方便的就是重新設置 rootViewController, 將keyWindow先變黑,假裝loading個幾秒,再變回來即可。如果需要再次回到之前所在頁面,再添加相應的跳轉VC的方法;
func chooseLanguage(menu: [String : Any]) {let language = menu["language"] as! Stringvar noticeContent = "正在設置語言..."if language == "中文(簡體)" {noticeContent = "正在設置語言..."YDWLocalizationHelper.shared.language = .Chinese} else if language == "中文(繁體)" {noticeContent = "正在設置語言..."YDWLocalizationHelper.shared.language = .Tradition} else if language == "English" {noticeContent = "Setting Language..."YDWLocalizationHelper.shared.language = .English} else if language == "Ti?ng Vi?t" {noticeContent = "Thi?t l?p ng?n ng?..."YDWLocalizationHelper.shared.language = .Vietnamese} else {noticeContent = "正在設置語言..."YDWLocalizationHelper.shared.language = .Chinese}if UIApplication.shared.delegate != nil {let appDelegate = UIApplication.shared.delegate as! AppDelegateappDelegate.setupRootViewController()}let backView = UIView(frame: UIScreen.main.bounds)backView.backgroundColor = .blackUIApplication.shared.keyWindow?.addSubview(backView)YDWToast.showToast(text: noticeContent, duration: 2, location: .center)DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {UIView.animate(withDuration: 0.2, animations: {backView.alpha = 0}) { (isFinished) inbackView.removeFromSuperview()}}}效果展示
完整示例
Swift之Internationalization本地國際化和App內切換語言
總結
以上是生活随笔為你收集整理的Swift之本地国际化与App内切换语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL ES之GLSL常用内建函数
- 下一篇: Swift之实现表格UITableVie