SKLocalizable —使您的iOS应用本地化更轻松的新方法
大约一个月前,我已经完成了简化iOS应用本地化的工具-SKLocalizable。
本文是可用功能的简短摘要。 您可以在README文件中查看包含功能说明,注释和示例的完整文档。
您也可以在此处找到完整的文章,其中提供了常用的解决方案和工具说明-如何使用Steelkiwi的工具对应用程序进行本地化。
手动进行代码内本地化有两种方法:
带参数的纯文本
localized(tableName:String?= nil,bundle:Bundle = .localization,参数:Dictionary ?= nil-> String
此方法允许您使用命名参数。 您可以在arguments
参数中以Dictionary
形式传递它们。
例:
// Localizable.strings文件
“ Key1” =“没有参数的文本”;
“ Key2” =“传递的值为$(value_key)”; //用法
label1.text =“ Key1” .localized()
label2.text =“ Key2” .localized(参数:[“ value_key”:变量])
具有复数值的文字
localizedPlural(tableName:String?= nil,参数:CVarArg…)-> String
例:
// Localizable.stringsdict文件
Comment.UnitPlural
NSStringLocalizedFormatKey
%#@ comments @
评论
NSStringFormatSpecTypeTypeKey
NSStringPluralRuleType
NSStringFormatValueTypeTypeKey
d
一个
查看%d条评论
other
查看%d条评论
//用法
label3.text =“ Key3” .localizedPlural(参数:pluralValue)
目前,任何NSObject类都可以为其localizationKey
属性设置一个值。 此属性用于检测语言更改通知并将转换后的值分配给组件。 您可以在文档的第3.1节中直接查看实现此行为的组件的列表。
label.localizationKey =“密钥”
此方法将使用与localizationKey
对应的值自动更新组件内容,但不能用于带有参数或复数形式的本地化。
上一段中提到的localizationKey
属性在文档的3.1节中被标记为@IBInspectable
。
默认语言是基于设备的( .main
bundle)。 您可以使用以下代码进行更改:
Bundle.localization = Bundle.init(languageCode:languageCode)
其中languageCode
是语言代码,例如en , es或de 。 设置新捆绑包后,将通过NotificationCenter.default
发送languageChanged
通知。
具有定义的localizationKey
所有组件都将订阅此通知,因此它们将自动更新其可本地化的内容。 但是,您也可以在代码中订阅此通知,并手动更新组件。
//订阅语言更改通知
NotificationCenter.default.addObserver(自身,选择器:#selector(languageChanged(_ :)),名称:.languageChanged,object:nil)//处理
@objc
私人功能语言Changed(_通知:通知){
textField2.text =“ DemoVC.TextField.Text” .localized()
}
- Apple国际化和本地化指南
- SK本地化
- 如何使用复数本地化
- 复数规则