ios - NSLocalizedString,参数使用从右到左的语言(例如波斯语)

标签 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”

提前谢谢了

最佳答案

您需要让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%@ برنده کارت ها شد";

关于ios - NSLocalizedString,参数使用从右到左的语言(例如波斯语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005859/

相关文章:

html - 如何添加事件处理程序以跨越变音符号(阿拉伯语)?

ios - 如何在 didSelectRow 之后关闭 UISearchController?

objective-c - 尝试用 CALayers 制作一张可以翻转的卡片

objective-c - NSApplication windows 属性 - windows 未删除?

ios - 如何创建一个包含 2 个 iOS 项目和一个 iOS 动态框架项目的 Xcode 6 工作区?

mysql - 如何使用 RegExp 在 MySQL 中创建阿拉伯字符类?

php - Laravel domPDF阿拉伯字符生成PDF错误

ios - 当我从纵向模式更改为横向模式时,按钮背景图像消失

ios - UIPopoverController 应防止通过状态栏滚动

ios - 使用 Core Data 存储大量对象