javascript - RTL 语言 : comma-separated lists

标签 javascript internationalization

我正在使用ICU Message Format用于应用程序中的 i18n。

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

"There are three pets: a dog, a fish, a cat."

可以通过此消息生成:

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

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

在伪代码中,列表变量可能会像这样生成:

pets.join(', ');

最后一点是我不喜欢的。它似乎只对 LTR 语言有意义,并且可能只是 LTR 语言的一个子集。

我有两个问题:

  1. 在其他语言(例如 RTL 语言)中应如何设置逗号分隔列表的格式?
  2. ICU 消息格式是否以任何方式支持这一点,或者是否需要除 ICU 之外的系统来生成列表?

就其值(value)而言,这是一个 JavaScript Web 应用程序,尽管这些问题的答案可能与语言无关。

最佳答案

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

对于 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

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

关于javascript - RTL 语言 : comma-separated lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237769/

相关文章:

Javascript:将数组转换为 CSV 格式并复制到剪贴板

javascript - Node.JS - Select Max() 结果未定义

javascript - 显示一组 <li>,然后隐藏它们以显示另一组 <li>

javascript - 当我只知道部分 url 时如何删除样式表?

php - Symfony2 access_control 与 i18n 路由

Grails:如何收集所有消息

ruby-on-rails - 本地化时间单位

internationalization - 使用 ActiveAdmin 翻译自定义页面

javascript - 将 json 数据从 Controller 传递到指令并在 View 中显示

internationalization - 如何在运行时加载jasperreports resourcebundle?