我在应用程序中使用ICU Message Format表示i18n。
某些字符串涉及动态长度的逗号分隔列表。例如,字符串:
可以使用以下消息生成"有三只宠物:一只狗,一只鱼,一只猫。"
:
"有{count}个宠物:{list}"
其中count是列表的长度,list是各个字符串本身。 (顺便说一句,这是一个真正的字符串,我正在配置"宠物" per" count,"但让我们保持简单。)
在伪代码中,list变量可能会像这样生成:
pets.join(', ');
最后一点是我不喜欢的。它似乎只对LTR语言有意义,可能只是LTR语言的一个子集。
我有两个问题:
对于它的价值,这是一个JavaScript webapp,虽然这些问题的答案可能与语言无关。
答案 0 :(得分:2)
列表格式是区域设置敏感的。并非所有语言都使用“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