带有从右到左语言参数的NSLocalizedString(如波斯语)

时间:2014-01-08 20:30:43

标签: ios objective-c arabic nslocalizedstring farsi


我写这篇文章是因为这个问题让我发疯了 我遇到同样的问题尝试使用带参数的 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”

非常感谢提前

2 个答案:

答案 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等。

更多相关内容:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/Strings/Strings.html#//apple_ref/doc/uid/10000051i-CH6

向下滚动到格式化字符串资源部分。

相关问题