使用vscode插件du-i18n处理前端项目国际化翻译多语言

前段时间我写了一篇关于项目国际化使用I18n组件的文章,Vue3 + TS 使用国际化组件I18n,那个时候还没真正在项目中使用,需求排期还没有定,相当于是预研。

当时就看了一下大概怎么用,改了一个简单的页面,最近需求下来了,开始整个项目去做了,才发现工作量有点大,好像也有点傻,一个个地取变量名,翻译,替换。。。换了几个页面之后,发现眼睛都要花了,又累又困,还容易出错,于是跟同事吐槽了一下,没想到有意外收获,好家伙,这种好事不早点分享!
在这里插入图片描述
在这里插入图片描述

于是请教了一下同事,然后自己也琢磨了一会,发现确实真香,所以记录一下。
这个插件是基于百度翻译提供的国际多语言本地开发解决方案,目前使用很流畅,大家也可以从vscode官网 Extensions 模块进去搜索Du I18N 找到该插件,也就是这个地址 Du I18N 传送门

一、安装i18n组件、DU I18N插件
// 使用 npm
npm install vue-i18n@9 
// 使用 yarn
yarn add vue-i18n@9

在VS code 插件库中搜索安装DU I18N插件
在这里插入图片描述

二、生成配置文件

安装完成之后在页面文件点击右键就可以看到国际化选项了,点击设置自动生成配置文件du-i18n.config.json
在这里插入图片描述
配置文件的配置项可以参考文档根据自己的需要进行配置,比如我需要翻译繁体,那我就要增加一个语种的配置,
语种配置的代码可以参考 百度翻译通用翻译API接入文档

在这里插入图片描述

三、一键扫描中文

在这里插入图片描述
在/src/i18n/temp/自动生成随机文件,路径和文件名都可以自主配置,界面中的中文一键替换成了随机变量
在这里插入图片描述

四、在线翻译

插件还提供了在线翻译功能,需要注册自己的baiduAppid和baiduSecrectKey,从百度翻译开放平台注册,注册完成后进入管理控制台申请开通服务, 再到开发者信息查看自己的baiduAppid和baiduSecrectKey,并填写到du-i18n.config.json配置文件中
在这里插入图片描述
即可翻译成已经配置的所需的语种,如下图,无需手动一个个翻译了,菜单中还有漏检功能
在这里插入图片描述

五、在i18n文件夹新建一个JS文件处理引入语言文件,默认语言等
// 引入语言文件
function loadLocaleMessages () {
    const locales = require.context('./locale', true, /[a-z0-9-]+\.json$/i);
    const messages = {};
    locales.keys().forEach(key => {
        const matched = key.match(/([a-z0-9-]+)\./i);
        if (matched && matched.length > 1) {
            const locale = matched[1];
            messages[locale] = locales(key);
        }
    });
    return messages;
}

// i18n.js
import Vue from 'vue';
import VueI18n from 'vue-i18n';

Vue.use(VueI18n);



const i18n = new VueI18n({
    locale: 'zh', // set default locale
    messages: loadLocaleMessages(), // set locale messages
    silentTranslationWarn: true,//隐藏这些报错
});

export default i18n;

然后在main.js里面引用该文件,挂载上去
在这里插入图片描述

六、最后一步拆分语言文件,生成locale文件夹,这样就可以在界面上查看是否有效果了

在这里插入图片描述

### 关于 `du-i18n` 扫描中文失效的解决方案 当遇到 `du-i18n` 工具无法正确扫描中文字符的情况时,通常可能是由于以下几个原因引起的: #### 1. **环境变量未正确设置** 如果系统的区域设置(locale)不支持 UTF-8 或者未正确配置,则可能导致工具无法识别中文字符。可以通过以下方式检查并修改环境变量: ```bash echo $LANG ``` 如果输出不是类似于 `zh_CN.UTF-8` 的值,则需要重新设置环境变量。编辑 `/etc/locale.conf` 文件或在用户的 `.bashrc` 文件中添加如下内容[^3]: ```bash export LANG=zh_CN.UTF-8 ``` 之后执行以下命令使更改生效: ```bash source /etc/locale.conf ``` #### 2. **文件编码问题** 确保被扫描的目标文件是以 UTF-8 编码保存的。可以使用 `file` 命令来检测文件编码: ```bash file -i filename.txt ``` 如果不是 UTF-8 编码,可以使用 `iconv` 将其转换为 UTF-8: ```bash iconv -f GBK -t UTF-8 input_file.txt > output_file.txt ``` #### 3. **工具本身的支持情况** 部分国际化工具可能对特定语言的支持不够完善。建议确认当前使用的 `du-i18n` 版本是否已知存在问题。可通过更新到最新版本解决问题: ```bash yum update gettext ``` 或者手动编译安装最新的 `gettext` 包。 #### 4. **调试与验证** 为了进一步排查问题,可以在运行 `du-i18n` 时增加 `-d` 参数启用调试模式,查看是否有错误提示信息。例如: ```bash du-i18n -d your_input_file.po ``` 此外,还可以尝试创建一个简单的测试用例 PO 文件,仅包含几个中文字符串,观察是否存在相同的问题。 --- ### 示例代码片段 以下是用于验证和修复的一个简单脚本示例: ```bash #!/bin/bash # 设置环境变量 export LANG=zh_CN.UTF-8 # 检查目标文件编码 if file -i "$1" | grep -q 'charset=binary'; then echo "Error: File encoding is not text." exit 1 fi # 如果是非UTF-8编码则转换 if ! file -i "$1" | grep -q 'utf-8'; then iconv -f gbk -t utf-8 "$1" -o "${1}.utf8" mv "${1}.utf8" "$1" fi # 使用 du-i18n 处理文件 du-i18n "$1" ``` ---
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值