我有这个功能来显示带参数的本地化文本:
func displayLocalizedMessage(key: String, args: [CVarArg]) {
someLabel.text = String.localizedStringWithFormat(NSLocalizedString(key, comment: ""), args)
}
如果我称之为传递两个参数,例如,notificationPostTagging
为key
,["Joshua"]
为args
,本地化字符串如下:
"notificationPostTagging" = "%@ tagged you in a post.";
我在应用中打印出来:
(
Joshua
) tagged you in a post.
有没有人知道如何解决这个问题。我无法将第二个参数作为逗号分隔列表传递,因为它来自其他一些对象。
由于
答案 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级或以上