已弃用的 Webpack 的 i18n 插件和加载器的替代品
Alternatives to deprecated Webpack's i18n plugin and loader
我正在开发一个需要从 .json
文件加载翻译的 TypeScript 项目,目的是为每个国家/地区提供一个语言文件。示例:en.json
、es.json
。
然后我应该能够使用 .ts
文件中的翻译,具有一些功能,如 __('red')
或其他扩展提供的功能。
然后最终编译的 .js
文件应包含所有翻译以切换语言 "real-time"。
json 文件的内容可能类似于:
es.json
{
"colors": {
"red": "rojo",
"blue": "blue"
}
}
似乎当前推荐的(在文档中)用于 Webpack 的 i18n 加载器和插件已被弃用:
- 插件:I18nWebpackPlugin
- 加载程序:I18nLoader
我想知道使用这个扩展是否安全,或者我的情况有一些可用的选项,我试过 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 路径读取语言环境,以便您可以观察并在更改时重建
- 能够报告未使用的字符串键
我正在开发一个需要从 .json
文件加载翻译的 TypeScript 项目,目的是为每个国家/地区提供一个语言文件。示例:en.json
、es.json
。
然后我应该能够使用 .ts
文件中的翻译,具有一些功能,如 __('red')
或其他扩展提供的功能。
然后最终编译的 .js
文件应包含所有翻译以切换语言 "real-time"。
json 文件的内容可能类似于:
es.json
{
"colors": {
"red": "rojo",
"blue": "blue"
}
}
似乎当前推荐的(在文档中)用于 Webpack 的 i18n 加载器和插件已被弃用:
- 插件:I18nWebpackPlugin
- 加载程序:I18nLoader
我想知道使用这个扩展是否安全,或者我的情况有一些可用的选项,我试过 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 路径读取语言环境,以便您可以观察并在更改时重建
- 能够报告未使用的字符串键