A tool for automatically extracting Chinese text from Vue files and generating i18n translations.
这是一个名为 i18n-extractor 的工具,主要用于从 Vue 项目中自动提取中文文本并转换为国际化(i18n)格式。具体功能包括:
- 扫描 Vue 文件中的模板和脚本部分,自动提取中文文本
- 为提取到的中文文本生成合适的 i18n 键名(key)
- 将提取的中文文本替换为国际化函数调用(如
$t('key')) - 生成或更新国际化资源文件(如 zh-CN.json)
- 支持文件备份、日志记录等辅助功能
项目采用模块化设计,主要实现思路如下:
- 配置驱动:通过配置文件定义扫描范围、输出路径等参数
- 文本提取:使用正则表达式匹配中文文本,并排除注释
- 键名生成:支持两种方式生成 i18n 键名
- AI 辅助生成:调用大语言模型接口生成语义化的键名
- 备选方案:基于文本内容自动生成简单键名
- 文本替换:在原文件中将中文文本替换为 i18n 函数调用
- 资源管理:生成或更新国际化资源文件,保留已有的翻译
- 开发语言:JavaScript (Node.js)
- 模块系统:ES Modules (使用
import/export) - 核心依赖:
@vue/compiler-sfc:Vue 单文件组件解析器glob:文件匹配工具chalk:命令行输出美化工具
- 运行环境:Node.js
项目采用简洁的类-模块架构:
-
入口文件:
index.js- 初始化提取器实例并运行主流程
-
核心模块:
src/extractor.jsI18nExtractor类:实现主要的提取和转换逻辑- 核心方法包括:文件处理、文本提取、AI 键名生成、文本替换等
-
配置模块:
src/config.js- 定义各项配置参数:扫描目录、输出路径、过滤规则等
-
工具模块:
src/utils.js- 提供日志、文件备份、内容过滤等辅助功能
-
测试文件:
src/test/test-component.vue- 包含各种中文文本场景的测试用例
-
输出目录:
i18n/- 存放生成的国际化资源文件
- 初始化提取器,加载配置
- 扫描指定目录下的所有 Vue 文件
- 解析 Vue 单文件组件,提取模板和脚本中的中文文本
- 为提取的文本生成 i18n 键名(可选择 AI 辅助或自动生成)
- 替换原文件中的中文文本为 i18n 函数调用
- 更新或创建国际化资源文件
- 输出处理结果统计