翻译
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