我们如何在界面构建器属性检查器中将占位符属性的UITextField值国际化?
答案 0 :(得分:7)
您无需编写任何代码即可轻松更改。 以下是本地化字符串文件中的示例,将占位符设置如下
" ITW-S8-fkt.placeholder" ="你的文字&#34 ;;
答案 1 :(得分:5)
您可以像往常一样进行本地化:
myTextField.placeholder = NSLocalizedString(@"emptyUsername",
@"userNameTextFieldPlaceholder");
然后在可本地化的字符串文件中输入相应的字符串。
这里也讨论了这个问题: How to use NSLocalizedString in IB [iPhone SDK]?
使用多个xib文件描述替代方案。
答案 2 :(得分:0)
为了做到最大程度减少本地化样板,我要做的是遵循概述的模型here(GitHub here):创建对Interface Builder友好的帮助程序扩展(@IBInspectable
vars ,为方便起见,在一个文件中),用于我要本地化的所有类型的控件,包括UITextField
占位符。然后,我可以将每种语言的所有本地化集中到单个.strings
文件中,并通过IB进行连接。唯一的缺点是记得在创建控件时添加键。本地化调试(通过编辑“运行”方案进行设置;默认情况下,我以非基本语言运行该应用程序)有助于尽早发现这些问题。
我有一个Excel电子表格,其中包含传递给本地翻译人员以进行更新的键和翻译,以及一个在发布前从.strings
(重新)生成.csv
文件的脚本。
参考链接的教程,我的UITextField
扩展名看起来像这样:
extension UITextField: XIBLocalizable {
@IBInspectable var xibLocKey: String? {
get { return nil }
set(key) {
text = key?.localized
}
}
@IBInspectable var xibPlaceholder: String? {
get { return nil }
set(key) {
placeholder = key?.localized
}
}
}
(链接的GitHub具有我刚刚发现的几乎相同的版本)。值得注意的是,在添加新的本地化时,我必须手动删除XCode自动生成的.strings
文件的内容,同时将该文件保留在原处,以确保扩展名被调用。