我在我的Localizable.strings文件中写了很多本地化的文本,我正在寻找一种方法来使用这些文本并将它们显示在接口构建器中。也就是说,我不想为我的所有视图创建出口并在代码中设置文本,而是创建一个IB_DESIGNABLE UILabel子类,它必须访问我的Localizable.strings文件,然后直接在接口生成器上显示本地化的文本。
问题是,NSLocalizedString没有在接口构建器中给出任何结果,而是只在我实际运行代码时才给出任何结果。是否有方法告诉接口生成器要使用哪个文件进行本地化(例如在prepareForInterfaceBuilder中)?
发布于 2014-10-22 06:41:27
我终于自己想出来了。答案是:使用[[NSBundle bundleForClass:self.class] localizedStringForKey:key value:@"" table:nil]从接口构建器中的Localizable.strings文件获得翻译。这种实现使我能够重新定义NSLocalizedString宏(仅用于接口生成器):
#if TARGET_INTERFACE_BUILDER
#undef NSLocalizedString
#define NSLocalizedString(key, comment) [[NSBundle bundleForClass:self.class] localizedStringForKey:key value:@"" table:nil]
#endif发布于 2014-12-11 08:22:17
多亏JRV的回答,我终于修正了这门课:
@IBDesignable class ALLocalizableLabel: UILabel {
@IBInspectable var localizeString:String = "" {
didSet {
#if TARGET_INTERFACE_BUILDER
var bundle = NSBundle(forClass: self.dynamicType)
self.text = bundle.localizedStringForKey(self.localizeString, value:"", table: nil)
#else
self.text = NSLocalizedString(self.localizeString, comment:"");
#endif
}
}
}这就创建了在接口构建器中设置键的可能性:

这将直接更新界面构建器中的标签,非常酷,而且在默认情况下xcode应该支持!
你也可以在Github上找到这个:https://github.com/AvdLee/ALLocalizableLabel
发布于 2017-02-02 06:29:33
这对我有用,
import Foundation
import UIKit
@IBDesignable
class YourLabel: UILabel {
@IBInspectable var stringLocalizationKey: String = ""{
didSet{
text = stringLocalizationKey.localized
setup()
}
}
override func awakeFromNib() {
super.awakeFromNib()
setup()
}
func setup(){
textAlignment = NSTextAlignment.center
}
override open func layoutSubviews() {
super.layoutSubviews()
self.preferredMaxLayoutWidth = self.frame.size.width
self.layoutIfNeeded()
}
override func prepareForInterfaceBuilder() {
let bundle = Bundle(for: type(of: self))
self.text = bundle.localizedString(forKey: self.stringLocalizationKey, value:"", table: nil)
}
}并添加这个String扩展:
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
}https://stackoverflow.com/questions/26486123
复制相似问题