将欧洲数字和单位与波斯文本混合

时间:2016-05-09 16:53:14

标签: javascript string persian

我正在研究我们的应用程序前端的语言变异为伊朗市场,但目前我们遇到了将欧洲数字和单位与波斯文本混合的问题。例如,我们所需的一个文本格式为:

Result: <value>s (e.g. Result: 50s)

但是当我尝试在javascript中编写这个字符串时,数字50在文本之前(在波斯语之后)就像这样

50 :persiantext s

有没有任何解决方案如何将这些东西混合在一起,或者它甚至没有任何意义混合它,它应该都是波斯语?

感谢您提供所有帮助/建议。

2 个答案:

答案 0 :(得分:2)

在文本中使用占位符,然后将其替换为数字。如果你有

Result: {$d}s

表示英语,

{$d}s :نتیجه

对于波斯语,那么你可以用50替换{$ d}并在这两种情况下获得正确的文本。

有一些库可以帮助替换UnderscoreLodash之类的变量(尽管它们对变量使用略有不同的语法),请参阅template函数。

答案 1 :(得分:0)

在连接混合RTL / LTR文本时,您应该使用相应的Right-to-left和从左到右的标记(如此Java问题所示 - String concatenation containing Arabic and Western characters)。

 myArabicString + "\u202A" + englishNumberAndText + "\u202C" + moreArabic

或者,大多数RTL语言都具有流式传输RTL的本机号码。要使用这种方法,您需要编写自己的代码来替换每个数字 - 类似于convert numbers from arabic to english中的代码。

混合拉丁语标点符号,如“:”和“!”需要仔细完成 - 您可能需要将其包装到RTL / LTR标记 - 但请务必与实际知道文本应该如何的人一起查看结果。

附注:如果您需要大量格式化,可能需要查看JavaScript equivalent to printf/string.format