带参数的本地化字符串会在参数周围添加换行符和括号

问题描述 投票:0回答:2

我正在尝试显示包含参数的本地化字符串。结果不是显示一行嵌入了参数的字符串,而是产生了一个损坏的三行字符串:

预期结果:

The price is $9.99/year.

结果:

The price is (
    "$9.99"
)/year.

Localizable.strings:

"price_string" = "The price is %@/year.";

通话:

"price_string".localized(priceString)

其中priceString是字符串变量。

[.localized()的定义如下:

extension String {
    var localized: String {
      return NSLocalizedString(self, comment: "\(self)_comment")
    }

    func localized(_ args: CVarArg...) -> String {
      return String(format: localized, args)
    }
}
ios swift nslocalizedstring
2个回答
0
投票

请查看输出。它清楚地表明price参数是一个数组。实际上,可变参数args被视为一个数组。

所以您使用的是错误的API

func localized(_ args: CVarArg...) -> String {
     return String(format: localized, arguments: args)
}

-1
投票

您可以简单地做到这一点:

NSLocalizedString("price_string", comment: "").replacingOccurrences(of: "%@", with: String(YOUR_FLOAT_VALUE)) 
© www.soinside.com 2019 - 2024. All rights reserved.