ICU 消息语法
Crowdin Enterprise 支持 ICU 消息语法,用于帮助表达特定语言拼写、语法和翻译格式的细微差别。
以 ICU 消息语法格式化的字符串可以有不同类型的替换,称为参数。
每个参数都放在单大括号内(例如,{variable}),并指定输入数据中的一个值。 请注意,使用双大括号(例如,{{variable}})不受支持,并且会导致语法错误。 Crowdin Enterprise 支持以下类型的参数:number、date、time、select 和 plural。
ICU 语法参数始终在编辑器中高亮显示,以便您了解字符串的哪一部分不应被翻译。 更改翻译中参数的位置以遵循目标语言中的自然词序。 还有预览模式,这将使您能看到翻译将如何在界面中显示,以确保所有可翻译元素都被翻译。
Plural 类型用于处理复数类别变化,因为每种语言都有其自己的复数类别集(例如,英语有 “one” 和 “other”,而乌克兰语有 “one”、“few”、“many” 和 “other”)。
You {itemCount, plural, =0 {have no projects} other {have # projects}}。下面的短标签用于确定复数类别:
- zero
- one(单数)
- two(双数)
- few(数个)
- many(如果他们有一个单独的类,也用作分数)
- other(要求一般复数形式,如果语言只有单一形式也使用)
在编辑器中,您无需手动添加或删除翻译中的复数类别。 只需单击复制源文,源字符串将以适合当前目标语言的复数类别数量复制到翻译字段中。
了解更多关于语言复数规则的信息。
在某些情况下,您可能有一个包含多个名词的字符串,每个名词都需要独立进行复数化,例如,“You have X book(s) and Y pen(s).”。
ICU 通过允许您将复数参数相互嵌套来处理此问题。
{bookCount, plural, other {You have # books and {penCount, plural, other {# pens} }}}select ordinal 类型的目的是根据序数复数规则(第 1、第 2、第 3 等)选择输出。 基于当前目标语言。 它与 plural 类型非常相似,不同之处在于值被映射到序数复数类别。
恭喜!这是您订阅的第 {year, selectordinal, other {#}} 周年纪念!select 类型用于根据字符串变量选择输出。 它最常用于在消息中表示基于性别的正确变形。
{gender, select, male {He uses} female {She uses} other {They use}} Crowdin。此类型适用于任何翻译根据特定关键字发生变化的情况。 无论使用场景如何,ICU 标准要求您始终包含 other 子句。 此子句在变量与任何指定选项都不匹配的情况下提供必要的回退。
number 类型的目的是根据各地区的惯例独立显示不同的数值,例如百分比、货币和小数。 这使得消息输出能够适应不同区域设置中使用的数字格式。 ICU 数字骨架也受支持。
该应用的价格为 {price, number, ::currency/USD},享有 {discount, number, percent} 折扣。date 和 time 类型根据指定区域设置中首选的格式显示日期和时间值。 这些类型还可以有样式 – 关于值如何格式化的额外信息。 可以使用以下四种样式:short、medium、long 和 full。
您的会议已安排在 {dateValue, date, long} 上午 {timeValue, time, short}。语法错误检测大大减少了翻译 ICU 消息语法字符串时的困惑,因为平台会自动检测潜在的翻译错误。 如果发现语法错误,您将会看到一个包含需要修复内容的通知。
您还可以使用外部工具验证您的 ICU 语法,例如 Online ICU Message Editor。