翻译
translate
脚本需要从 STDIN
传入一个 JSON payload,其中包含 FBT phrases
(就像从 collectFbt
收集的那些),以及给定语言环境的相关翻译。
除了下面的示例之外,我们的 GitHub 演示应用中提供的 translation_input.json
也是翻译所用“schema”的一个很好的参考。
{
"phrases": [
"hashToLeaf": {
<text_hash>: {
"text": <text>,
"desc": <description>,
},
...
},
"jsfbt": string | {t: <table>, m: <metadata>}
],
...
"translationGroups": [{
"fb-locale": "xx_XX",
"translations": {
<translation_hash>: {
"tokens": [<token1>, ..., <tokenN>],
"types": [<variationType1>, ..., <variationTypeN>]
"translations": [{
"translation": <translation1>,
"variations": [variationValue1,...,variationValueN]
},
...,
]
}
}
}]
}
在上面的例子中,<text_hash>
和 <translation_hash>
是对应的。也就是说,translations[<hash>]
是 phrases.hashToLeaf[<hash>]
的翻译条目。
这里 tokens
、types
和 variations
都是关联数组。也就是说,在上面的示例中,types[i]
表示 tokens[i]
的 variation type (或 mask),并且 variations[i]
是给定翻译条目中 token[i]
的 variation value。
Variation types
Variation types 可以是以下之一
IntlVariations.BITMASK_NUMBER: 28
IntlVariations.BITMASK_GENDER: 3
这表示给定的 token 可以变异的内容。类型为 GENDER
的 token 类型可以是
IntlVariations.GENDER_MALE: 1
IntlVariations.GENDER_FEMALE 2
IntlVariations.GENDER_UNKNOWN 3
而 NUMBER
的 token 类型可以是
IntlVariations.NUMBER_ONE: 4
IntlVariations.NUMBER_TWO: 8
IntlVariations.NUMBER_MANY: 12
IntlVariations.NUMBER_ZERO: 16
IntlVariations.NUMBER_FEW: 20
IntlVariations.NUMBER_OTHER: 24