提取 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,以获取正确格式的翻译。