String.localizedStringWithFormat returns 错误结果
String.localizedStringWithFormat returns wrong result
我正在尝试本地化包含范围如 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 参数正确格式化可本地化的字符串?
中的第二个参数
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
。
我正在尝试本地化包含范围如 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 参数正确格式化可本地化的字符串?
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
。