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是语言代码,例如enesde 。 设置新捆绑包后,将通过NotificationCenter.default发送languageChanged通知。

具有定义的localizationKey所有组件都将订阅此通知,因此它们将自动更新其可本地化的内容。 但是,您也可以在代码中订阅此通知,并手动更新组件。

  //订阅语言更改通知 
NotificationCenter.default.addObserver(自身,选择器:#selector(languageChanged(_ :)),名称:.languageChanged,object:nil)//处理
@objc
私人功能语言Changed(_通知:通知){
textField2.text =“ DemoVC.TextField.Text” .localized()
}
  • Apple国际化和本地化指南
  • SK本地化
  • 如何使用复数本地化
  • 复数规则