我尝试本地化包含范围如1..2的字符串。我正在使用String.localizedStringWithFormat
:
func testLocalizableString() -> String {
let lowerBound = 1
let upperBound = 2
return String.localizedStringWithFormat(
NSLocalizedString("Unit.Meters.Range", value:"%d-%dm", comment: ""),
[lowerBound, upperBound]
)
}
然而,我得到了奇怪的结果:" 103,413,600-0m"。
如果我只使用一个参数(只是"%dm",不是"%d-%dm")并且只传递一个数字,一切都很好。
我的代码有什么问题,以及如何使用CVarArg参数正确格式化可本地化的字符串?
答案 0 :(得分:0)
中的第二个参数
String.localizedStringWithFormat(_ format: String, _ arguments: CVarArg...)
是可变参数,这意味着您必须传递零或更多 指定类型的参数,而不是数组:
func testLocalizableString() -> String {
let lowerBound = 1
let upperBound = 2
return String.localizedStringWithFormat(
NSLocalizedString("Unit.Meters.Range", value:"%ld-%ldm", comment: ""),
lowerBound, upperBound
)
}
另请注意,Int
的格式说明符为%ld
,而不是%d
。