使用 ICU Message 语法时,是否应将复数“offset”参数替换为代码?

Should the plural `offset` parameter be replaced by code when using ICU Message syntax?

ICU Message syntax 非常强大,它的复数选项之一是 offset 一个用于确定复数形式的变量。

我可以想象这将如何使用,但似乎这个功能很容易被代码替换(伪代码作为示例 - try it here):

icuFormat('You worked for {count, plural, offset:1 one {{count} hour} other {{count} hours}} today.', {count: workedHours});
icuFormat('You worked for {count, plural, one {{count} hour} other {{count} hours}} today.', {count: workedHours+1});

简而言之,与其在 ICU 语法中添加更多标记来进行简单的变量偏移,不如偏移变量本身并使 ICU 标记更精简?

是否有某种我遗漏的用例会使 offset 有用,或者如果目标是为翻译人员保持标记简单,最好避免使用 [= 是否公平? =12=]?

鉴于过去一周缺乏答案和我提供的赏金,我认为可以公平地假设在使用 ICU 时避免使用 offset 语法可能是个好主意。如果您有反对此答案的证据,请 post 您的答案!

2019 年 11 月 14 日编辑: 在尝试按照@Luckylooke 的回答找到一个示例之后,某些库中可能会有时髦的实现,但总的来说,除非实现 offset 以避免某些语言中的某些 "ugly code",否则我们还没有证据表明它是需要解决实际用例。

这里有一个例子:http://userguide.icu-project.org/formatparse/messages

如果您在程序中进行偏移,它将不适用于负数..在上述示例中为-1。

您将获得:Error in render: "SyntaxError: Expected integer but "-" found."

你可以证明我是错的:)

编辑: 转载示例:https://codesandbox.io/s/vue-template-tlteb