Crowdin CLI 3.x 实战:5分钟自动化Vue/React项目多语言文件同步

📅 2026/7/13 1:06:20
Crowdin CLI 3.x 实战:5分钟自动化Vue/React项目多语言文件同步
Crowdin CLI 3.x 实战5分钟自动化Vue/React项目多语言文件同步1. 为什么选择Crowdin CLI进行国际化管理在全球化浪潮下前端项目的国际化需求日益增长。传统的手动管理翻译文件方式不仅效率低下还容易出错。Crowdin CLI作为专业的本地化工具链核心组件能够完美解决以下痛点版本控制难题翻译文件与代码版本脱节协作效率低下多语言团队无法并行工作流程断裂翻译更新无法自动同步到代码库质量失控缺乏统一的术语管理和翻译记忆以Vue i18n和React i18next为例典型的多语言项目通常包含以下结构locales/ ├── en/ │ ├── common.json │ └── dashboard.json ├── zh-CN/ │ ├── common.json │ └── dashboard.json └── ja/ ├── common.json └── dashboard.json2. 环境准备与CLI配置2.1 安装与初始化全局安装Crowdin CLI 3.x推荐使用npm或yarnnpm install -g crowdin/cli3在项目根目录执行初始化命令crowdin init初始化过程会生成crowdin.yml配置文件典型配置示例如下project_id: your-project-id api_token: your-personal-token base_path: ./ preserve_hierarchy: true files: [ { source: src/locales/en/**/*.json, translation: src/locales/%locale%/**/%original_file_name% } ]2.2 关键配置解析参数说明示例值project_idCrowdin项目ID123456api_token个人访问令牌abc123xyzpreserve_hierarchy保持目录结构truefiles.source源文件匹配模式locales/en/**/*.jsonfiles.translation翻译文件输出路径locales/%locale%/**/%original_file_name%提示%locale%是Crowdin内置变量会自动替换为目标语言代码如zh-CN3. 核心工作流自动化脚本3.1 上传源文件在package.json中添加npm脚本{ scripts: { i18n:upload: crowdin upload sources } }执行命令将英文源文件上传到Crowdinnpm run i18n:upload3.2 下载翻译文件针对不同语言创建下载脚本{ scripts: { i18n:download:zh: crowdin download -l zh-CN, i18n:download:ja: crowdin download -l ja-JP } }3.3 预览变更Dry Run安全检查机制避免意外覆盖crowdin download --dry-run4. 高级集成方案4.1 Git Hook集成在pre-commit钩子中自动检查翻译更新#!/bin/sh crowdin download git add locales/4.2 CI/CD管道配置GitHub Actions集成示例.github/workflows/i18n.ymlname: i18n Sync on: [push] jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - run: npm install -g crowdin/cli - run: crowdin download - run: | git config --global user.name i18n Bot git add locales/ git commit -m Update translations || echo No changes git push4.3 与构建工具整合Webpack插件示例webpack.config.jsconst CrowdinPlugin { apply: (compiler) { compiler.hooks.beforeRun.tapAsync(CrowdinPlugin, (_, callback) { require(child_process).exec(crowdin download, callback); }); } };5. 疑难问题解决方案5.1 文件同步冲突现象本地修改与Crowdin更新冲突解决方案优先保留Crowdin版本crowdin download --force使用分支策略为翻译更新创建专用分支设置文件锁定机制5.2 特殊格式处理针对不同文件类型的处理建议文件类型处理方案配置示例Vue SFC提取template/text使用crowdin/vue-cli-pluginJSX文本提取文本到JSON配置babel-plugin-react-intlMarkdown保留原始格式设置skip_untranslated_strings: true5.3 性能优化技巧增量同步使用--tree参数仅同步变更文件缓存策略配置.crowdinignore排除无需同步的路径并行处理分语言多进程下载需3.5版本crowdin download -l zh-CN,ja-JP --parallel6. 监控与质量保障6.1 翻译进度追踪通过CLI获取项目状态报告crowdin status输出示例Language | Translated | Approved ---------|------------|--------- zh-CN | 78% | 65% ja-JP | 92% | 80%6.2 术语一致性检查创建术语库并绑定到项目# crowdin.yml glossary: id: 12345 file: ./glossary.csv术语库CSV格式示例Term,Description,Part of Speech Submit,确认提交按钮,verb Dashboard,用户控制面板,noun6.3 自动化QA规则启用自动质量检查qa_checks: enabled: true checks: - empty_translation - trailing_space - glossary_mismatch7. 企业级实践建议7.1 多分支策略为不同版本维护独立的翻译分支branch: v2.3 files: - source: src/v2.3/locales/en/**/*.json translation: src/v2.3/locales/%locale%/**/%original_file_name%7.2 机器翻译集成配置AI翻译引擎需企业版mt_engines: - name: OpenAI type: openai credentials: api_key: ${OPENAI_KEY}7.3 安全合规方案敏感信息过滤配置内容脱敏规则访问控制按角色设置权限审计日志启用操作记录跟踪permissions: - role: developer access: [upload, download] - role: translator access: [translate]