所以我正在使用我在 SO 上找到的 NSString 扩展来本地化一个项目。该扩展看起来像这样:
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
}
}
但是,我在 Localized.strings 列表中遇到了包含参数的字符串。例如:
"explore_item_desc1" = "Welcome to rent my %1$s!";
在我能够做到这一点之前:
uiLabel.text = "localizedString".localized
如何对那些保存参数的字符串执行类似的操作?
最佳答案
您的本地化 key 应如下所示:
"localized_key_name1" = "foo";
"localized_key_name2" = "%@ foo %@";
将您的本地化
变量改为函数
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
}
func localized(args : CVarArgType...) -> String {
return withVaList(args, { (f:CVaListPointer) -> String in
(NSString.init(format:NSLocalizedString(self, comment:""), arguments: f) as String)
})
}
}
不带参数的用法
uiLabel.text = "localized_key_name1".localized // "foo"
与参数一起使用
uiLabel.text = "localized_key_name2".localized("param1", "param2") // "param1 foo param2"
关于ios - 本地化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128557/