翻译

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>] 的翻译条目。

这里 tokenstypesvariations 都是关联数组。也就是说,在上面的示例中,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
上次更新时间 by David