Webpack 从 XLIFF 中提取多租户翻译

问题描述

我有一个带有翻译和多个租户的 PHP 网络应用程序:

translations
  /common
    /messages.en.xlf
    /messages.fr.xlf
    /messages.es.xlf
    /thing.en.xlf
    /thing.fr.xlf
    /thing.es.xlf
  /TenantA
    /messages.fr.xlf
  /TenantB
    /thing.es.xlf

有时,TenantA 或 TenantB 需要专门化 xlf 文件重命名子集。

对于 TenantA,translations/TenantA/messages.fr.xlf 中的每个键都需要覆盖 translations/common/messages.fr.xlf 中的键并从 translations/common/messages.fr.xlf获取所有其他值。

每个文件和每个键都存在于 translations/common 中,并且是每种语言。

我正在寻找一种通过 webpack 在 javascript 中做到这一点的方法

在这个列表中,Symfony 将“消息”和“事物”称为域,所以我将使用域这个词。

为了解决这个问题,我正在寻找一种方法来观察 /translations/ 文件夹中的变化,并为每个租户和每个域编译一个包含该域中所有内容的地图;以便我可以在我的资产中使用:

import translations from 'translations/messages'

翻译看起来像:

{"fr":{...},"en":{...},"es":{...}}

or

{"key":{"en":"value","fr":"valeur","es":"..."}}

来自专用键。

如何插入一些东西来将这些文件编译成 json ?

我的 webpack.config.json 看起来像这样:

const tenants = ['TenantA','TenantB',...];
const modules = []

tenants.foreach(tenant =>
{
   modules.push(/*webpack config accumulation*/)
})


module.exports = modules

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...