RTL语言:逗号分隔的列表

问题描述:

我在应用程序中使用ICU Message Format作为i18n。RTL语言:逗号分隔的列表

某些字符串涉及动态长度逗号分隔列表。例如,字符串:

“有三种宠物:一只狗,一条鱼,一只猫。”

“有{计数}宠物::{列表}”

当计数是该列表的长度,和列表是

可以与该消息生成个人字符串本身。 (顺便说一下,这是一个真正的字符串,我会为每个“count”配置“pets”,但让我们保持简单)。

伪代码,可能会像这样来产生列表变量:

pets.join(', ');

最后一点就是我不是一个球迷。它似乎只对LTR语言有意义,可能只是LTR语言的一个子集。

我有两个问题:

  1. 应该如何逗号分隔的列表中的其他语言被格式化,如RTL语言?
  2. ICU消息格式是否支持以任何方式或除ICU外还需要系统来生成列表?

这是一个JavaScript web应用程序,虽然这些问题的答案可能与语言无关。

列表格式化是区域设置敏感的。并非所有语言都使用“ASCII逗号”或空格。 ICU有ListFormatter: http://icu-project.org/apiref/icu4j/com/ibm/icu/text/ListFormatter.html

对于JavaScript封盖具有同等 https://github.com/google/closure-library/blob/master/closure/goog/labs/i18n/listformat.js

+0

感谢@MihaiNita!我最终做了一些研究并实现了一个适用于我的用例的东西:https://github.com/jmeas/i18n-list-generator.js我将看看这些其他选项,并参阅如果我可以改进我的代码或以其他方式使用它们的库。再次感谢:) – jmeas

+1

至少看看闭包中的数据,并在硬编码解决方案中复制更多数据。还有其他语言不使用“ASCII逗号”(例如中文)。请参阅https://github.com/google/closure-library/tree/master/closure/goog/labs/i18n –

+0

中的listsymbols.js和listsymbolsext.js再次感谢!我去做。 – jmeas