vue-autoI18n 插件说明 
⚠️ 当前为测试版,功能持续完善中,欢迎反馈建议!
📬 如发现问题或有建议,欢迎前往 Gitee Issues 反馈。
🚀 功能亮点
- 一键自动国际化:支持 Vue、JavaScript、TypeScript 文件,自动识别并提取中文文本。
- 右键菜单集成:在编辑器中右键即可选择“自动国际化”,无需命令行操作。
- 智能 key 生成:国际化 key 采用
文件夹名.中文内容 规则,结构清晰易维护。
- 属性值自动处理:如
range-separator 等属性,中文值自动加冒号前缀,兼容 Vue 语法。
- JS 代码智能替换:JS/TS 代码中的中文自动转换为
$t('key') 格式,避免语法错误。
- 资源文件自动管理:所有国际化内容统一写入
src/locales/models 目录,按文件名分模块管理,支持增量写入,避免覆盖已有翻译。
- 脚手架集成:插件自动初始化项目结构,生成必要目录和配置文件。
- 配置自动读取:自动读取
.langrc 文件中的 appid、secretkey、localeDir、langs,便于后续扩展翻译 API。
📁 生成目录结构示例
项目根目录/
├── .langrc # 国际化配置文件
├── src/
│ └── locales/
│ ├── index.js # i18n主文件
│ └── models # 存放生成的字典文件的目录
│ └── demo.js # 生成的字典文件示例
│ └── xx.js # 使用自动国际化生成的字典文件
├── package.json
└── ...
🛠️ 使用方法
安装 vue-autoI18n 插件。
打开需要国际化的 Vue/JS/TS 文件。
右键选择“构建初始化目录”,插件自动初始化项目结构。
右键选择“自动国际化”,插件自动扫描并处理文件内容。
国际化 key 会自动写入 src/locales/models/[文件名].js,支持增量更新。
首次使用会自动创建 src/locales 目录及相关依赖。
支持 .langrc 配置,自动读取 appid、secretkey、localeDir、langs。
appid:百度翻译 API 应用 ID
secretkey:百度翻译 API 密钥
localeDir:国际化资源文件目录,默认 src/locales/models
langs:支持的语言列表,默认 ["zh-CN","en-US"]
推荐使用unplugin-auto-import插件自动导入$t函数。
- 安装插件:
npm install unplugin-auto-import --save-dev
- 配置插件:在
vite.config.js 中添加以下代码
import AutoImport from "unplugin-auto-import/vite";
export default defineConfig({
plugins: [
AutoImport({
imports: [
{
"@/locales": ["$t"],
},
],
}),
],
});
⚠️ 注意事项
- 当前仅支持 Vue3 Setup 语法,未来将支持 JS/TS/Vue2 文件国际化。
- 国际化资源文件统一写入
src/locales 目录,自动创建目录并按文件名分模块管理。
- 插件支持增量写入,团队协作更安全。
- 若需自定义目录结构,请修改
localeDir 字段。
- 当前插件为测试版,功能持续完善中,欢迎反馈建议。
🔧 地区语言映射表
"af": "afr", // 通用 - 对应翻译目标:南非荷兰语
"af-ZA": "afr", // 南非 - 对应翻译目标:南非荷兰语
// 阿尔巴尼亚语
"sq": "alb", // 通用 - 对应翻译目标:阿尔巴尼亚语
"sq-AL": "alb", // 阿尔巴尼亚 - 对应翻译目标:阿尔巴尼亚语
// 阿拉伯语
"ar": "ara", // 通用 - 对应翻译目标:阿拉伯语
"ar-DZ": "ara", // 阿尔及利亚 - 对应翻译目标:阿拉伯语(注:阿尔及利亚阿拉伯语arq未启用检测)
"ar-BH": "ara", // 巴林 - 对应翻译目标:阿拉伯语
"ar-EG": "ara", // 埃及 - 对应翻译目标:阿拉伯语
"ar-IQ": "ara", // 伊拉克 - 对应翻译目标:阿拉伯语
"ar-JO": "ara", // 约旦 - 对应翻译目标:阿拉伯语
"ar-KW": "ara", // 科威特 - 对应翻译目标:阿拉伯语
"ar-LB": "ara", // 黎巴嫩 - 对应翻译目标:阿拉伯语
"ar-LY": "ara", // 利比亚 - 对应翻译目标:阿拉伯语
"ar-MA": "ara", // 摩洛哥 - 对应翻译目标:阿拉伯语
"ar-OM": "ara", // 阿曼 - 对应翻译目标:阿拉伯语
"ar-QA": "ara", // 卡塔尔 - 对应翻译目标:阿拉伯语
"ar-SA": "ara", // 沙特阿拉伯 - 对应翻译目标:阿拉伯语
"ar-SY": "ara", // 叙利亚 - 对应翻译目标:阿拉伯语
"ar-TN": "ara", // 突尼斯 - 对应翻译目标:阿拉伯语(注:突尼斯阿拉伯语tua未启用检测)
"ar-AE": "ara", // 阿联酋 - 对应翻译目标:阿拉伯语
"ar-YE": "ara", // 也门 - 对应翻译目标:阿拉伯语
// 亚美尼亚语
"hy": "arm", // 通用 - 对应翻译目标:亚美尼亚语
"hy-AM": "arm", // 亚美尼亚 - 对应翻译目标:亚美尼亚语
// 阿塞拜疆语
"az": "aze", // 通用 - 对应翻译目标:阿塞拜疆语
"az-AZ-Cyrl": "aze", // 阿塞拜疆(西里尔) - 对应翻译目标:阿塞拜疆语
"az-AZ-Latn": "aze", // 阿塞拜疆(拉丁文) - 对应翻译目标:阿塞拜疆语
// 巴斯克语
"eu": "baq", // 通用 - 对应翻译目标:巴斯克语
"eu-ES": "baq", // 巴斯克地区 - 对应翻译目标:巴斯克语
// 白俄罗斯语
"be": "bel", // 通用 - 对应翻译目标:白俄罗斯语
"be-BY": "bel", // 白俄罗斯 - 对应翻译目标:白俄罗斯语
// 保加利亚语
"bg": "bul", // 通用 - 对应翻译目标:保加利亚语
"bg-BG": "bul", // 保加利亚 - 对应翻译目标:保加利亚语
// 加泰罗尼亚语
"ca": "cat", // 通用 - 对应翻译目标:加泰罗尼亚语
"ca-ES": "cat", // 加泰罗尼亚 - 对应翻译目标:加泰罗尼亚语
// 中文
"zh-HK": "cht", // 中国香港 - 对应翻译目标:中文(繁体)
"zh-MO": "cht", // 中国澳门 - 对应翻译目标:中文(繁体)
"zh-CN": "zh", // 中国内地 - 对应翻译目标:中文(简体)
"zh-CHS": "zh", // 通用简体 - 对应翻译目标:中文(简体)
"zh-SG": "zh", // 新加坡 - 对应翻译目标:中文(简体)
"zh-TW": "cht", // 中国台湾 - 对应翻译目标:中文(繁体)
"zh-CHT": "cht", // 通用繁体 - 对应翻译目标:中文(繁体)
// 克罗地亚语
"hr": "hrv", // 通用 - 对应翻译目标:克罗地亚语
"hr-HR": "hrv", // 克罗地亚 - 对应翻译目标:克罗地亚语
// 捷克语
"cs": "cs", // 通用 - 对应翻译目标:捷克语
"cs-CZ": "cs", // 捷克 - 对应翻译目标:捷克语
// 丹麦语
"da": "dan", // 通用 - 对应翻译目标:丹麦语
"da-DK": "dan", // 丹麦 - 对应翻译目标:丹麦语
// 迪维希语
"div": "div", // 通用 - 对应翻译目标:迪维希语(注:语种检测为否,按原始代码映射)
"div-MV": "div", // 马尔代夫 - 对应翻译目标:迪维希语
// 荷兰语
"nl": "nl", // 通用 - 对应翻译目标:荷兰语
"nl-BE": "nl", // 比利时 - 对应翻译目标:荷兰语
"nl-NL": "nl", // 荷兰 - 对应翻译目标:荷兰语
// 英语
"en": "en", // 通用 - 对应翻译目标:英语
"en-AU": "en", // 澳大利亚 - 对应翻译目标:英语
"en-BZ": "en", // 伯利兹 - 对应翻译目标:英语
"en-CA": "en", // 加拿大 - 对应翻译目标:英语
"en-CB": "en", // 加勒比海 - 对应翻译目标:英语
"en-IE": "en", // 爱尔兰 - 对应翻译目标:英语
"en-JM": "en", // 牙买加 - 对应翻译目标:英语
"en-NZ": "en", // 新西兰 - 对应翻译目标:英语
"en-PH": "en", // 菲律宾 - 对应翻译目标:英语
"en-ZA": "en", // 南非 - 对应翻译目标:英语
"en-TT": "en", // 特立尼达和多巴哥 - 对应翻译目标:英语
"en-GB": "en", // 英国 - 对应翻译目标:英语
"en-US": "en", // 美国 - 对应翻译目标:英语
"en-ZW": "en", // 津巴布韦 - 对应翻译目标:英语
// 爱沙尼亚语
"et": "est", // 通用 - 对应翻译目标:爱沙尼亚语
"et-EE": "est", // 爱沙尼亚 - 对应翻译目标:爱沙尼亚语
// 法罗语
"fo": "fao", // 通用 - 对应翻译目标:法罗语(注:语种检测为否,按原始代码映射)
"fo-FO": "fao", // 法罗群岛 - 对应翻译目标:法罗语
// 波斯语
"fa": "per", // 通用 - 对应翻译目标:波斯语
"fa-IR": "per", // 伊朗 - 对应翻译目标:波斯语
// 芬兰语
"fi": "fin", // 通用 - 对应翻译目标:芬兰语
"fi-FI": "fin", // 芬兰 - 对应翻译目标:芬兰语
// 法语
"fr": "fra", // 通用 - 对应翻译目标:法语
"fr-BE": "fra", // 比利时 - 对应翻译目标:法语
"fr-CA": "fra", // 加拿大 - 对应翻译目标:法语(注:加拿大法语frn未启用检测)
"fr-FR": "fra", // 法国 - 对应翻译目标:法语
"fr-LU": "fra", // 卢森堡 - 对应翻译目标:法语
"fr-MC": "fra", // 摩纳哥 - 对应翻译目标:法语
"fr-CH": "fra", // 瑞士 - 对应翻译目标:法语
// 加利西亚语
"gl": "glg", // 通用 - 对应翻译目标:加利西亚语
"gl-ES": "glg", // 加利西亚 - 对应翻译目标:加利西亚语
// 格鲁吉亚语
"ka": "geo", // 通用 - 对应翻译目标:格鲁吉亚语
"ka-GE": "geo", // 格鲁吉亚 - 对应翻译目标:格鲁吉亚语
// 德语
"de": "de", // 通用 - 对应翻译目标:德语
"de-AT": "de", // 奥地利 - 对应翻译目标:德语
"de-DE": "de", // 德国 - 对应翻译目标:德语
"de-LI": "de", // 列支敦士登 - 对应翻译目标:德语
"de-LU": "de", // 卢森堡 - 对应翻译目标:德语
"de-CH": "de", // 瑞士 - 对应翻译目标:德语
// 希腊语
"el": "el", // 通用 - 对应翻译目标:希腊语
"el-GR": "el", // 希腊 - 对应翻译目标:希腊语
// 古吉拉特语
"gu": "guj", // 通用 - 对应翻译目标:古吉拉特语
"gu-IN": "guj", // 印度 - 对应翻译目标:古吉拉特语
// 希伯来语
"he": "heb", // 通用 - 对应翻译目标:希伯来语
"he-IL": "heb", // 以色列 - 对应翻译目标:希伯来语
// 印地语
"hi": "hi", // 通用 - 对应翻译目标:印地语
"hi-IN": "hi", // 印度 - 对应翻译目标:印地语
// 匈牙利语
"hu": "hu", // 通用 - 对应翻译目标:匈牙利语
"hu-HU": "hu", // 匈牙利 - 对应翻译目标:匈牙利语
// 冰岛语
"is": "ice", // 通用 - 对应翻译目标:冰岛语
"is-IS": "ice", // 冰岛 - 对应翻译目标:冰岛语
// 印尼语
"id": "id", // 通用 - 对应翻译目标:印尼语
"id-ID": "id", // 印度尼西亚 - 对应翻译目标:印尼语
// 意大利语
"it": "it", // 通用 - 对应翻译目标:意大利语
"it-IT": "it", // 意大利 - 对应翻译目标:意大利语
"it-CH": "it", // 瑞士 - 对应翻译目标:意大利语
// 日语
"ja": "jp", // 通用 - 对应翻译目标:日语
"ja-JP": "jp", // 日本 - 对应翻译目标:日语
// 卡纳达语
"kn": "kan", // 通用 - 对应翻译目标:卡纳达语
"kn-IN": "kan", // 印度 - 对应翻译目标:卡纳达语
// 哈萨克语(未启用检测,按原始代码映射)
"kk": "kir", // 通用 - 对应翻译目标:吉尔吉斯语(注:哈萨克语无检测,映射至近亲语言)
"kk-KZ": "kir", // 哈萨克斯坦 - 对应翻译目标:吉尔吉斯语
// 孔卡尼语(未启用检测,按原始代码映射)
"kok": "kok", // 通用 - 对应翻译目标:孔卡尼语
"kok-IN": "kok", // 印度 - 对应翻译目标:孔卡尼语
// 韩语
"ko": "kor", // 通用 - 对应翻译目标:韩语
"ko-KR": "kor", // 韩国 - 对应翻译目标:韩语
// 吉尔吉斯语(未启用检测,按原始代码映射)
"ky": "kir", // 通用 - 对应翻译目标:吉尔吉斯语
"ky-KZ": "kir", // 哈萨克斯坦 - 对应翻译目标:吉尔吉斯语
// 拉脱维亚语
"lv": "lav", // 通用 - 对应翻译目标:拉脱维亚语
"lv-LV": "lav", // 拉脱维亚 - 对应翻译目标:拉脱维亚语
// 立陶宛语
"lt": "lit", // 通用 - 对应翻译目标:立陶宛语
"lt-LT": "lit", // 立陶宛 - 对应翻译目标:立陶宛语
// 马其顿语
"mk": "mac", // 通用 - 对应翻译目标:马其顿语
"mk-MK": "mac", // 北马其顿 - 对应翻译目标:马其顿语
// 马来语
"ms": "may", // 通用 - 对应翻译目标:马来语
"ms-BN": "may", // 文莱 - 对应翻译目标:马来语
"ms-MY": "may", // 马来西亚 - 对应翻译目标:马来语
// 马拉地语(未启用检测,按原始代码映射)
"mr": "mar", // 通用 - 对应翻译目标:马拉地语
"mr-IN": "mar", // 印度 - 对应翻译目标:马拉地语
// 蒙古语(未启用检测,按原始代码映射)
"mn": "mn", // 通用 - 对应翻译目标:蒙古语
"mn-MN": "mn", // 蒙古 - 对应翻译目标:蒙古语
// 挪威语
"no": "nor", // 通用 - 对应翻译目标:挪威语
"nb-NO": "nob", // 挪威(博克马尔语) - 对应翻译目标:书面挪威语
"nn-NO": "nno", // 挪威(新挪威语) - 对应翻译目标:新挪威语
// 波兰语
"pl": "pl", // 通用 - 对应翻译目标:波兰语
"pl-PL": "pl", // 波兰 - 对应翻译目标:波兰语
// 葡萄牙语
"pt": "pt", // 通用 - 对应翻译目标:葡萄牙语
"pt-BR": "pt", // 巴西 - 对应翻译目标:葡萄牙语(注:巴西葡萄牙语pot未启用检测)
"pt-PT": "pt", // 葡萄牙 - 对应翻译目标:葡萄牙语
// 旁遮普语
"pa": "pan", // 通用 - 对应翻译目标:旁遮普语
"pa-IN": "pan", // 印度 - 对应翻译目标:旁遮普语
// 罗马尼亚语
"ro": "rom", // 通用 - 对应翻译目标:罗马尼亚语
"ro-RO": "rom", // 罗马尼亚 - 对应翻译目标:罗马尼亚语
// 俄语
"ru": "ru", // 通用 - 对应翻译目标:俄语
"ru-RU": "ru", // 俄罗斯 - 对应翻译目标:俄语
// 梵语(未启用检测,按原始代码映射)
"sa": "san", // 通用 - 对应翻译目标:梵语
"sa-IN": "san", // 印度 - 对应翻译目标:梵语
// 塞尔维亚语
"sr-SP-Cyrl": "srp", // 塞尔维亚(西里尔) - 对应翻译目标:塞尔维亚语
"sr-SP-Latn": "srp", // 塞尔维亚(拉丁文) - 对应翻译目标:塞尔维亚语
// 斯洛伐克语
"sk": "sk", // 通用 - 对应翻译目标:斯洛伐克语
"sk-SK": "sk", // 斯洛伐克 - 对应翻译目标:斯洛伐克语
// 斯洛文尼亚语
"sl": "slo", // 通用 - 对应翻译目标:斯洛文尼亚语
"sl-SI": "slo", // 斯洛文尼亚 - 对应翻译目标:斯洛文尼亚语
// 西班牙语
"es": "spa", // 通用 - 对应翻译目标:西班牙语
"es-AR": "spa", // 阿根廷 - 对应翻译目标:西班牙语
"es-BO": "spa", // 玻利维亚 - 对应翻译目标:西班牙语
"es-CL": "spa", // 智利 - 对应翻译目标:西班牙语
"es-CO": "spa", // 哥伦比亚 - 对应翻译目标:西班牙语
"es-CR": "spa", // 哥斯达黎加 - 对应翻译目标:西班牙语
"es-DO": "spa", // 多米尼加 - 对应翻译目标:西班牙语
"es-EC": "spa", // 厄瓜多尔 - 对应翻译目标:西班牙语
"es-SV": "spa", // 萨尔瓦多 - 对应翻译目标:西班牙语
"es-GT": "spa", // 危地马拉 - 对应翻译目标:西班牙语
"es-HN": "spa", // 洪都拉斯 - 对应翻译目标:西班牙语
"es-MX": "spa", // 墨西哥 - 对应翻译目标:西班牙语
"es-NI": "spa", // 尼加拉瓜 - 对应翻译目标:西班牙语
"es-PA": "spa", // 巴拿马 - 对应翻译目标:西班牙语
"es-PY": "spa", // 巴拉圭 - 对应翻译目标:西班牙语
"es-PE": "spa", // 秘鲁 - 对应翻译目标:西班牙语
"es-PR": "spa", // 波多黎各 - 对应翻译目标:西班牙语
"es-ES": "spa", // 西班牙 - 对应翻译目标:西班牙语
"es-UY": "spa", // 乌拉圭 - 对应翻译目标:西班牙语
"es-VE": "spa", // 委内瑞拉 - 对应翻译目标:西班牙语
// 斯瓦希里语
"sw": "swa", // 通用 - 对应翻译目标:斯瓦希里语
"sw-KE": "swa", // 肯尼亚 - 对应翻译目标:斯瓦希里语
// 瑞典语
"sv": "swe", // 通用 - 对应翻译目标:瑞典语
"sv-FI": "swe", // 芬兰 - 对应翻译目标:瑞典语
"sv-SE": "swe", // 瑞典 - 对应翻译目标:瑞典语
// 叙利亚语
"syr": "syr", // 通用 - 对应翻译目标:叙利亚语(注:语种检测为否,按原始代码映射)
"syr-SY": "syr", // 叙利亚 - 对应翻译目标:叙利亚语
// 泰米尔语
"ta": "tam", // 通用 - 对应翻译目标:泰米尔语
"ta-IN": "tam", // 印度 - 对应翻译目标:泰米尔语
// 鞑靼语
"tt": "tat", // 通用 - 对应翻译目标:鞑靼语
"tt-RU": "tat", // 俄罗斯 - 对应翻译目标:鞑靼语
// 泰卢固语
"te": "tel", // 通用 - 对应翻译目标:泰卢固语
"te-IN": "tel", // 印度 - 对应翻译目标:泰卢固语
// 泰语
"th": "th", // 通用 - 对应翻译目标:泰语
"th-TH": "th", // 泰国 - 对应翻译目标:泰语
// 土耳其语
"tr": "tr", // 通用 - 对应翻译目标:土耳其语
"tr-TR": "tr", // 土耳其 - 对应翻译目标:土耳其语
// 乌克兰语
"uk": "ukr", // 通用 - 对应翻译目标:乌克兰语
"uk-UA": "ukr", // 乌克兰 - 对应翻译目标:乌克兰语
// 乌尔都语
"ur": "urd", // 通用 - 对应翻译目标:乌尔都语
"ur-PK": "urd", // 巴基斯坦 - 对应翻译目标:乌尔都语
// 乌兹别克语(未启用检测,按原始代码映射)
"uz": "uz", // 通用 - 对应翻译目标:乌兹别克语
"uz-UZ-Cyrl": "uz", // 乌兹别克斯坦(西里尔) - 对应翻译目标:乌兹别克语
"uz-UZ-Latn": "uz", // 乌兹别克斯坦(拉丁文) - 对应翻译目标:乌兹别克语
// 越南语
"vi": "vie", // 通用 - 对应翻译目标:越南语
"vi-VN": "vie" // 越南 - 对应翻译目标:越南语
✨ 更新日志
✨ v0.0.1
- 插件发布,支持 Vue/JS/TS 文件一键自动国际化
- 自动生成 src/locales 目录及资源文件
- 支持 .langrc 配置自动读取
- 集成脚手架功能,项目结构一键初始化
- 右键菜单支持“自动国际化”命令
- 右键菜单支持“构建初始化目录”命令
✨ v0.0.2
✨ v0.0.3
- 在.langrc中增加语言配置langs,默认["zh-CN","en-US"]支持多语言生成
📄 License
MIT