带有@IBinspectable的UIButton,用于Swift/Xcode中的本地化

带有@IBinspectable的UIButton,用于Swift/Xcode中的本地化,swift,xcode,localization,uibutton,extension-methods,Swift,Xcode,Localization,Uibutton,Extension Methods,我试图为所有UIButton子类做一个扩展,允许我在Xcode UIBuilder中键入一个键,并让它在实时构建时自动将该键更改为适当的语言 当我运行应用程序时,它工作得很好,但是我在构建器中键入的关键字在UI中没有本地化 我尝试使用#if builder语句和prepareforPrinterFaceBuilder()。 到目前为止,我得到的是: extension UIButton { @IBInspectable var localizedText: String { set

我试图为所有UIButton子类做一个扩展,允许我在Xcode UIBuilder中键入一个键,并让它在实时构建时自动将该键更改为适当的语言

当我运行应用程序时,它工作得很好,但是我在构建器中键入的关键字在UI中没有本地化

我尝试使用#if builder语句和prepareforPrinterFaceBuilder()。 到目前为止,我得到的是:

extension UIButton {
 @IBInspectable var localizedText: String {
     set (key) {
         self.setTitle(key.localized, for: .normal)
     }
     get {
         return (self.titleLabel?.text)!
     }
   }
 }

任何帮助都将不胜感激

使用此扩展名

extension UIButton {
    @IBInspectable var localizedTitle: String {
        get { return "" }
        set {
            self.setTitle(newValue.localized, for: .normal)
        }
    }
}

extension String {
    var localized: String {
        get { return NSLocalizedString(self, comment: "") }
    }
}

我忘了说。localized是一个字符串扩展,它本身调用NSLocalizedString并返回结果。我们的代码之间唯一的区别是返回“”并使用newValue作为变量。我正在尝试使用生成器中设置的值作为新值。所以您的字符串扩展名在这里不起作用???因为我一直在使用这个,所以到目前为止它对我有效..我已经用字符串扩展名更新了答案。。。我在发布之前也测试过…是的,它和我的版本一样。当你说work时,你能把UI视图中的@IB值改为“hello”并用图形显示为“holla”(如果翻译成spaninsh)。对我来说,在运行应用程序之前,我只能看到“你好”。是的,兄弟,这正是我测试的。。。如果对你不起作用,我肯定你的本地化翻译有问题。。。。。。。尝试此
打印(NSLocalizedString(“hello”,comment:)
只是为了再次检查您的本地化字符串是否正常。
extension UIButton {
    @IBInspectable var localizedTitle: String {
        get { return "" }
        set {
            self.setTitle(newValue.localized, for: .normal)
        }
    }
}

extension String {
    var localized: String {
        get { return NSLocalizedString(self, comment: "") }
    }
}