提取 FBTs

我们提供

collectFbt.js 作为一个用于收集字符串的实用程序。 它需要以下 JSON 输入

{
<enumManifestPath>: [
<path1>, <path2>, ..., <pathN>
]
}

collectFbt.js 也作为名为 fbt-collect 的二进制文件从 babel-plugin-fbt 中公开

enumManifestPath 不需要指向有效的枚举清单,但如果您使用共享枚举,则需要它。

枚举清单应该是从应用程序中所有已知枚举到它们各自表示的键/值对的 "JSON.parseable" 映射

{
"EnumA": {
"keyA1": "valA1",
...,
"keyAN": "valAN"
},
...,
"EnumX": {
"keyX1": "valX1",
...,
"keyXM": "valXM"
},
}

我们提供了 manifest.js 作为从给定的源树生成此清单的简单方法。 manifest.js 也作为名为 fbt-manifest 的二进制文件从 babel-plugin-fbt 中公开

collectFbt.js 将以以下格式输出 JSON 对象

{
"phrases": [
{
"hashToLeaf": {
<hash>: {
"text": <text>,
"desc": <description>,
},
...
},
"line_beg": <beginning_line>,
"col_beg": <beginning_col>,
"line_end": <end_line>,
"col_end": <col_end>,
"type": "text"|"table",
"project": <project>,
"jsfbt": string|{t: <table>, m: <metadata>},
}
],
childParentMapping: {
<childIdx>: <parentIdx>
}
}

这里的 phrases 表示我们需要处理并生成 fbt._(...) 调用站点最终有效负载的所有信息。 当与每个 hashToLeaf 条目的相应翻译结合使用时,我们可以生成 fbt._() 期望的已翻译有效负载。

当从源文本移动到翻译时,最相关的是 hashToLeaf 有效负载,其中包含所有相关文本及其标识哈希。 如果您愿意,您可以为 collectFbts 提供自定义哈希模块。 它默认为 md5。

关于哈希的说明

在 FBT 框架中,我们主要在 2 个地方使用哈希进行识别:文本fbt 调用站点。 上面的 hashToLeaf 映射表示文本及其描述的哈希(使用在 collectFbt 中选择的任何算法)。 这在构建翻译后的有效负载时使用。

调用站点的哈希(默认为 jenkins 哈希)用于在FbtTranslations中查找有效负载。 这基本上是您在 jsfbt 中看到的对象的哈希。

请参阅翻译 FBTs,以获取正确格式的翻译。

上次更新时间:,作者:David