Unicode 在使用ICU消息语法时,复数'offset'参数是否应替换为代码?

Unicode 在使用ICU消息语法时,复数'offset'参数是否应替换为代码?,unicode,internationalization,translation,globalization,icu,Unicode,Internationalization,Translation,Globalization,Icu,函数的功能非常强大,它的复数选项之一是偏移用于确定复数形式的变量 我可以想象这将如何使用,但似乎这个特性很容易被代码(伪代码作为示例显示-)取代: icuFormat('您今天为{count,复数,offset:1一个{{count}小时}另一个{{count}小时}工作',{count:workedHours}); icuFormat('你今天工作了{count,复数,一个{{count}小时}另一个{{count}小时},{count:workedHours+1}); 简而言之,与其在I

函数的功能非常强大,它的复数选项之一是偏移用于确定复数形式的变量

我可以想象这将如何使用,但似乎这个特性很容易被代码(伪代码作为示例显示-)取代:

icuFormat('您今天为{count,复数,offset:1一个{{count}小时}另一个{{count}小时}工作',{count:workedHours});
icuFormat('你今天工作了{count,复数,一个{{count}小时}另一个{{count}小时},{count:workedHours+1});
简而言之,与其在ICU语法中添加更多标记以进行简单的变量偏移,为什么不偏移变量本身并保持ICU标记更精简


是否有一些我缺少的用例会使
offset
变得有用,或者如果目标是让标记对翻译人员保持简单,那么最好避免使用
offset

鉴于过去一周缺乏答案和我提供的赏金,我认为在使用ICU时避免使用
offset
语法可能是一个好主意。如果你有证据反对这个答案,请张贴你的答案

2019年11月14日编辑:
在尝试按照@Luckylooke的答案找到一个示例后,有些库中可能会有一些时髦的实现,但总体而言,除非实现了
offset
,以避免某些语言中出现一些“丑陋的代码”,否则我们还没有证据表明需要它来解决实际用例。

这里有一个示例:

如果你在程序中做了偏移,它将不适用于负数-1在上述示例中

您将在呈现中得到:
错误:“SyntaxError:预期的整数,但找到了“-”。

你可以证明我错了:)

编辑:
示例:这是哪个库?我尝试了一些JavaScript库,如果没有偏移量,负值很容易支持。你能提供更多的细节吗?我已经在我的vue项目中使用了这个库。好的,给我几天时间,我会在codepen或其他东西上创建公共示例,非常期待!我认为在负数上设置明确的复数规则是另一个问题,可能应该用
select
来解决,因为根据复数语句中的规范
1
==
-1
。但您的示例让我想到,可能有一些语言(比如C?)使用变量“动态”添加偏移量会更加冗长,并且可能会生成难看的代码。但我仍然相信这不是一个值得翻译人员关注的问题,除非你能想出另一个例子,否则我现在就不回答了。