如何在界面构建器本身中国际化UITextField占位符属性值字符串?

时间:2012-03-28 05:54:31

标签: ios uitextfield

我们如何在界面构建器属性检查器中将占位符属性的UITextField值国际化?

3 个答案:

答案 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文件的内容,同时将该文件保留在原处,以确保扩展名被调用。

相关问题