String.localizedStringWithFormat返回错误的结果

时间:2016-12-27 16:58:05

标签: swift localization foundation

我尝试本地化包含范围如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参数正确格式化可本地化的字符串?

1 个答案:

答案 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