RTL语言:逗号分隔的列表

RTL languages: comma-separated lists

本文关键字:分隔 列表 语言 RTL      更新时间:2023-09-26

我在应用程序中使用i18n的ICU消息格式。

一些字符串包含动态长度的逗号分隔列表。例如,字符串

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

可以通过以下消息生成:

"There are {count} pets: {list}"

其中count是列表的长度,list是单个字符串本身。(顺便说一句,如果这是一个真正的字符串,我将配置"宠物"每"计数",但让我们保持简单)。

在伪代码中,list变量可以这样生成:

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

For JavaScript Closure有一个等价的https://github.com/google/closure-library/blob/master/closure/goog/labs/i18n/listformat.js


2019年7月更新

ECMAScript(终于)支持列表格式了:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ListFormat

它(仍然)没有得到很好的支持,但请给它一些时间