在开发多语言前端应用程序时,必须将所有文本转换为可翻译的变量。对于大型项目,这可能会变得非常繁琐。解决这个问题的一种方法是使用 webpack-extract-translation-keys-plugin,它可以自动提取您的应用程序中的所有可翻译文本,并将其转换为易于管理的语言包。
安装和配置
首先,在项目的根目录下安装 webpack-extract-translation-keys-plugin
npm install webpack-extract-translation-keys-plugin --save-dev
然后在你的 webpack 配置文件中,引入该插件并将其添加到 plugins 配置中。
const ExtractTranslationKeysPlugin = require('webpack-extract-translation-keys-plugin'); module.exports = { //... plugins: [ new ExtractTranslationKeysPlugin() ] };
插件使用
使用 webpack-extract-translation-keys-plugin 插件可以将代码中的所有文本提取到一个 JSON 文件中。在 webpack 打包时,插件会读取您的代码,并将可翻译的文本提取到特定的 JSON 文件中,这些文本可以作为语言包加载到应用程序中。
在插件提取文本时,它将使用一些默认选项。可以通过向构造函数添加选项对象来更改这些选项,例如可以为 JSON 文件提供自定义路径和名称。
在前端代码中,我们可以使用 __()
或 gettext()
来包含文本,例如:
const greeting = __('Hello, world!'); console.log(greeting);
在运行 webpack 命令后,会创建一个新文件 i18nkeys.json
,其中将包含所有可翻译文本的对应的键。
{ "Hello, world!": "Hello, world!" }
使用此 JSON 文件即可轻松地将文本翻译成其他语言。
示例代码
下面是一个使用 webpack-extract-translation-keys-plugin 插件的示例代码:
-- -------------------- ---- ------- ----- ---------------------------- - --------------------------------------------------- -------------- - - ------ ----------------- ------- - ----- --------- --------- ----------- -- ------- - ------ - - ----- -------- ---- -------------- - - -- -------- - --- ------------------------------ ------- - --------- ---------------- ----- --------------- -- -------------------- ------ -- - --
在上面的示例中,插件输出的 JSON 文件将存储在 ./src/locale/i18nkeys.json
路径中。每个被 __()
或 gettext()
包装的文本将转换为 JSON 中对应的键,并在 i18n
函数中返回该键。这个函数是默认的函数名称,可以通过添加 functionDefaultName
选项来修改。
结论
使用 webpack-extract-translation-keys-plugin 插件,可以轻松地将应用程序中的所有文本提取到一个语言包中,这使得在开发多语言应用时非常方便。本文已经详细地介绍了如何安装和使用该插件以及如何改变它的默认选项,并提供了相应的示例代码,希望能够提供帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671048dd3466f61ffdca6