我们有一个自定义设置来处理翻译,在构建时我们提取翻译,下载它们并在运行时替换它们。基本上,我们使用 babel 插件提取翻译标签,然后一旦我们拥有所有标签,就会为每种语言生成一个包含它们的文件。
例子
<Trans
tag="tag_name"
variables={{
var1,
var2
}}
/>
生成这样的标签列表
[
{
"tag": "tag_name"
}
]
然后为每种语言获取标签的值。翻译值当前是每个标签的 javascript 函数。目前,我们为整个应用程序的每种语言生成 1 个翻译包。
然而,这个解决方案是不可扩展的,因为这会导致大量的翻译包。因此,我们想按捆绑/块拆分它。
为了解决这个问题,我们希望将翻译数据包含在块/包中。我们检查代码并提取翻译标签并找出哪些标签属于哪个块。为此,我们构建了一个插件,可以optimizeTree
在编译中挂钩到钩子中。
在此之后,我们要将它们添加到相应的块中并将它们包含在代码中。
为此,我们面临几个问题:
有没有办法避免每种语言的构建过程?基本上一旦生成了块/包,我们可以将翻译数据添加到其中吗?我们想为每种语言生成一个块。所以我们必须为每种语言复制一些代码块'n'次。我们如何以优化的方式做到这一点。
如何确保对文件的导入解析为导入翻译的文件?