字符串,格式为本地化字符串

时间:2017-12-14 19:20:27

标签: ios swift

我有这个功能来显示带参数的本地化文本:

func displayLocalizedMessage(key: String, args: [CVarArg]) {
    someLabel.text = String.localizedStringWithFormat(NSLocalizedString(key, comment: ""), args)
}

如果我称之为传递两个参数,例如,notificationPostTaggingkey["Joshua"]args,本地化字符串如下:

"notificationPostTagging" = "%@ tagged you in a post.";

我在应用中打印出来:

(
  Joshua
) tagged you in a post.

有没有人知道如何解决这个问题。我无法将第二个参数作为逗号分隔列表传递,因为它来自其他一些对象。

由于

2 个答案:

答案 0 :(得分:2)

localizedStringWithFormat不接受一个参数数组,它接受一个变量参数列表。因此,当您传递args时,它会将该数组视为仅一个参数。然后,%@格式说明符将数组转换为字符串,从而产生括号。

您应该使用将格式参数作为数组的String初始值设定项。

func displayLocalizedMessage(key: String, args: [CVarArg]) {
    someLabel.text = String(format: NSLocalizedString(key, comment: ""), locale: Locale.current, arguments: args)
}

答案 1 :(得分:0)

我也遇到这种问题,花了几个小时后,我用这条线解决了它

textlabel.text = "my_string_key".localized(with: ["store_name"])

和我这样的本地化字符串 阿拉伯语

 "my_string_key" = "إذا كنت قد أجريت عملية شراء بالفعل ، فسيقوم %@ بإعلامنا بذلك.";

法语

"my_string_key"="Si vous avez déjà effectué un achat, %@ nous en informera.";

此答案基于5级或以上