格式来自本地化字符串的字符串

Cai*_*uza 4 ios swift

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

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

如果我调用它传递两个参数,例如notificationPostTaggingaskey["Joshua"]for args,本地化字符串如下所示:

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

我在应用程序中打印了这个:

(
  Joshua
) tagged you in a post.
Run Code Online (Sandbox Code Playgroud)

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

谢谢

rma*_*ddy 7

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

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

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