已弃用的 Webpack 的 i18n 插件和加载器的替代品

Alternatives to deprecated Webpack's i18n plugin and loader

我正在开发一个需要从 .json 文件加载翻译的 TypeScript 项目,目的是为每个国家/地区提供一个语言文件。示例:en.jsones.json

然后我应该能够使用 .ts 文件中的翻译,具有一些功能,如 __('red') 或其他扩展提供的功能。

然后最终编译的 .js 文件应包含所有翻译以切换语言 "real-time"。

json 文件的内容可能类似于:

es.json

{
    "colors": {
        "red": "rojo",
        "blue": "blue"
    }
}

似乎当前推荐的(在文档中)用于 Webpack 的 i18n 加载器和插件已被弃用:

我想知道使用这个扩展是否安全,或者我的情况有一些可用的选项,我试过 i18next and i18next-loader 但它似乎不适用于我当前的设置,似乎与模块导入过程的工作方式相关。所以也许另一个支持 Webpack + TypeScipt 的轻量级替代方案可以解决这个问题。

这是我当前的 package.json 依赖项

{
  "dependencies": {
    "animate.css": "^3.7.2",
    "i18next": "^19.1.0",
    "intl-tel-input": "^16.0.8",
    "uniq": "^1.0.1"
  },
  "devDependencies": {
    "@alienfast/i18next-loader": "^1.1.4",
    "@babel/core": "^7.7.5",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "babelify": "^10.0.0",
    "browserify": "^16.5.0",
    "copy-webpack-plugin": "^5.1.1",
    "css-loader": "^3.4.2",
    "file-loader": "^5.0.2",
    "gulp": "^4.0.2",
    "node-sass": "^4.13.0",
    "sass-loader": "^8.0.0",
    "style-loader": "^1.1.3",
    "terser-webpack-plugin": "^2.2.3",
    "ts-loader": "^6.2.1",
    "typescript": "^3.7.3",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.9.0"
  }
}

这个怎么样? @zainulbr/i18n-webpack-plugin

这是从原始 i18n-webpack-plugin 派生出来的,并已修复以支持 webpack5

使用方式与原来未维护的仓库相同

你试过了吗webpack-localize-assets-plugin

它支持 Webpack 5,与已弃用的 i18n-webpack-plugin 相比有一些优势:

  • 首先-class支持多语言环境
  • 能够从 JSON 路径读取语言环境,以便您可以观察并在更改时重建
  • 能够报告未使用的字符串键