我写这篇文章是因为这个问题让我发疯了
我遇到同样的问题尝试使用带参数的 NSLocalizedString 在 UILabel 中打印相同的文字(从右到左,如波斯 ) 。
我的代码如下所示:
label.text = [NSString stringWithFormat:NSLocalizedString(@"The trick belongs to %@",nil),user];
在波斯语的我的字符串文件中,我尝试使用这个
"The trick belongs to %@" = " %@ میز را ترک کرد";
"The trick belongs to %@" = "%@ برنده کارت ها شد";
"The trick belongs to %@" = "@% برنده کارت ها شد";
"The trick belongs to %@" = "برنده کارت ها شد @%";
"The trick belongs to %@" = "برنده کارت ها شد %@";
所有这类表格总是打印出来:
“Mariaبرندهکارتهاشد” 但必须显示为 “برندهکارتهاشدMaria”
非常感谢提前
答案 0 :(得分:5)
你需要让iOS知道这是一个RTL字符串,即使它在它前面遇到M
(表示它是一个LTR字符串)。您可以使用Unicode隐式方向标记RIGHT-TO-LEFT MARK U + 200F。
例如:
self.label.text = [NSString stringWithFormat:@"\u200f%@ برنده کارت ها شد", @"Maria"];
您可以将\u200f
放入Localized.strings文件中;你不需要任何特殊代码来处理这个问题。
"The trick belongs to %@" = @"\u200f%@ برنده کارت ها شد";
答案 1 :(得分:0)
右侧的变量应为%1 $ @,并确保它是该键的唯一条目。在你的例子中,你有5个字符串,所以它似乎忽略了其他字符串。
我们使用%1 $ @的原因是因为如果我们想要变量的不同顺序,我们可以使用1,2,3等。
更多相关内容:
向下滚动到格式化字符串资源部分。