如果你想要在 iOS 上做 i18n,而且還要在 App 內動態切換語言,這是好用的 library
如果你要進行 iOS 的 i18n,而且還要在 App 內動態切換語言,你可以使用這個套件 Localize-Swift。前陣子正在進行 i18n 的 feature,這邊整理了一下相關的資料。
安裝方法
使用 CocoaPods
pod 'Localize-Swift'
使用 Swift Package Manager
dependencies: [
.package(url: "https://github.com/marmelroy/Localize-Swift.git", .upToNextMajor(from: "3.2.0"))
]
使用方法
/// 在需要多國語系的地方先引入套件
import Localize_Swift
新增 .localized()
到你想要翻譯的任何字串對象後面:
textLabel.text = "Hello World".localized()
取得可用語言的陣列:
Localize.availableLanguages()
更改當前語言:
Localize.setCurrentLanguage("fr")
如果需要在視圖控制器中更新 UI 以應對語言變更,請監聽 LCLLanguageChangeNotification
:
NotificationCenter.default.addObserver(self, selector: #selector(setText), name: NSNotification.Name(LCLLanguageChangeNotification), object: nil)
將語言重設為應用的預設語言:
Localize.resetCurrentLanguageToDefault()
除了 Localizable.strings 之外,現在還有 xcstrings 可以使用
在開發的過程中,有看到新增 strings 檔時,旁邊多了一個 deprecated 的字樣,旁邊則是多了個 xcstrings 的選項。一查之後,才看到 WWDC 2023 時,有推出 xcstrings 的功能,個格式看起來和 Android 開發的多國語系很像,我指的是 GUI 界面的長相。相關影片我列在下面,之後在真的用上專案後,會再寫一篇 blog。