1. 导入 Localisation.swift 到项目
文件github下载地址:https://github.com/kmyhy/Localisation/tree/master/LocalizedSwift
2. 实现 LocalisationProtocol
新建扩展,实现 LocalisationProtocol协议,比如:
extension Localisation {
struct Trade: LocalisationProtocol {
// 1.
static var stringsTableName: String {
return "Trade"
}
// 2.
static var bundle: Bundle? {
return Localisation.languageBundle
}
// 3.
static var labelText: String {
return localizedString(key: "label_text")
}
}
}
- stringsTableName 用于指定你的 strings 文件名(不包括扩展名)。
- bundle 属性指定你的 strings 文件所在的 bundle。
- labelText 属性返回 strings 文件中的每个字符串值, label_text 则是这个字符串在 strings 文件中的 key。
这里引用到了另一个 Bundle 扩展:
extension Bundle{
static let localisationBundle = Bundle(for: Localisation.self)
}
这是因为我们的 strings 文件和 Localisation 类是位于同一个 bundle。
原则上,一个 strings 文件用一个 struct 定义。
3. 调用
首先设置语言:Localisation.setLanguage(language: "zh-Hans")
通常,app 使用的语言在一次运行中应该是统一的。因此在 app 启动时设置一次即可,不用像 demo 中那样点一次按钮设置一次。
然后这样调用:
label.text = Localisation.Trade.labelText