在本文中,我们将通过以下三个步骤,快速为 Vue 项目实现多语言支持:
- 将项目中的硬编码文本替换为可配置的文本
- 使用工具(如 vue-i18n-extract)基于配置生成 locale 文件
- 通过 i18n 使用 locale 配置,验证无误后翻译生成其他语言的配置文件
第一步:将硬编码文本替换为可配置的文本
为了让项目支持多语言,我们需要将页面上的文本内容替换为可配置的文本。我们可以使用 Vue-i18n 插件实现这一功能。首先,将硬编码的文本替换为 Vue-i18n 配置:
这里要按照业务进行层级的定义和命名,以便于维护和理解
例如,将:
<span>你好</span>
替换为:
<span>{{ t('booktree.hello') }}</span>
其中,booktree.hello 是 Vue-i18n 的 key,用于在 locale 配置中查找对应的文本。
工程代码中的部分尽量人工修改较为可靠些,接下来关于配置相关的步骤我们尽量通过自动化脚本处理。
第二步:使用 vue-i18n-extract 生成 locale 配置
在替换了所有硬编码文本后,我们可以使用 vue-i18n-extract 工具自动检测这些文本,并生成相应的 locale 配置。首先,安装 vue-i18n-extract:
npm install -g vue-i18n-extract
接着,运行以下命令生成 report.json 文件:
npx vue-i18n-extract report --vueFiles ./src/**/*.?(js|vue) --languageFiles ./src/local.json --output report.json
这个命令会扫描 ./src 目录下的所有 .js 和 .vue 文件,并将找到的 i18n 文本与 ./src/locales 目录下的 JSON 文件进行对比,生成一个包含缺失 key 的 report.json 文件。
第三步:使用 i18n 和 locale 配置生成其他语言的配置文件
在生成了 report.json 文件后,我们需要将其转换为 Vue-i18n 可用的 messages 配置。运行这个report-to-locale.js脚本:
gist.github.com/yansenlei/b…
node report-to-locale.js ./i18n-report.json ./src/locales/zh-CN.json
接着,使用 i18n 将 messages 配置应用到项目中。记得将具体的文本内容写上。
{
"booktree": {
"hello": "你好"
}
}
确认一切正常后,我们可以使用脚本将其翻译成其他语言的配置文件。我们可以使用 google-translate-api 这个库实现自动翻译功能。首先安装相关依赖:
npm install @vitalets/google-translate-api https-proxy-agent yargs
然后创建一个脚本文件,比如 translate.js,运行这个脚本,生成其他语言的配置文件:
gist.github.com/yansenlei/1…
node translate.js -s zh-CN -t en
详细使用方式可以通过-h查看:
node translate.js -h
这条命令会将 messages.json 中的中文内容翻译成英文,并生成一个名为 messages-en.json 的新文件。
至此,您已经成功地为项目实现了多语言支持。
自动翻译的内容也许不会太准确,可以人工再检查一遍。
现在,项目中的文本已经可以根据用户的语言偏好自动切换。只需将生成的多语言配置文件添加到项目的 locale 配置中,即可实现多语言切换。
希望本教程能帮助您更轻松地为 Vue 项目实现多语言支持。如有任何问题,欢迎留言讨论。
(与GPT4协作完成代码编写,并生成文档内容)