1. 项目概述与核心价值最近在折腾一个多语言项目需要把几百条中文文案翻译成英文、日文、法文等十几种语言。手动翻译不现实成本高、周期长、一致性还难保证。用传统的翻译API虽然方便但面对专业术语、产品特有名词和上下文语境翻译结果常常差强人意后期人工校对的工作量依然巨大。就在我为此头疼的时候一个名为taahamahdi/i18n-ai-translate的开源项目进入了我的视野。这个项目直击了国际化i18n流程中的翻译痛点它利用现代大语言模型LLM的上下文理解能力来智能、批量地处理JSON格式的本地化文件翻译旨在提升翻译质量、保持术语一致性并显著降低人工成本。简单来说i18n-ai-translate是一个命令行工具CLI它读取你的JSON格式的国际化资源文件例如zh-CN.json调用配置好的AI模型如OpenAI的GPT系列、Anthropic的Claude或开源的Ollama本地模型将源语言的内容翻译成多种目标语言并生成对应的翻译文件如en-US.json,ja-JP.json。它的核心价值在于“智能化”和“批量化”。不同于传统翻译API的字对字转换AI模型能够理解整个键值对的结构甚至能根据你的少量提示prompt来保持品牌语调、处理专业词汇让机器翻译的结果更接近人工翻译的语境通顺度。这个工具非常适合前端开发者、全栈工程师或任何需要处理应用国际化的团队。无论你是在开发一个Vue/React单页应用还是一个Node.js后端服务只要你的多语言文案是以JSON格式管理的i18n-ai-translate就能无缝集成到你的构建流程或CI/CD管道中实现翻译工作的自动化。接下来我将深度拆解这个项目的使用逻辑、关键技术点并分享从零开始集成到实际项目中的完整实操经验以及我踩过的一些坑和总结的优化技巧。2. 核心设计思路与方案选型2.1 为何选择AI而非传统翻译API在决定使用i18n-ai-translate之前我们需要理解其背后的设计哲学。传统的机器翻译服务如Google Translate API、DeepL API已经非常成熟它们速度快、价格相对低廉那为什么还要转向AI模型呢关键在于“可控的上下文”和“指令跟随能力”。传统翻译API通常将文本视为独立的片段进行处理。当你把home.header.title: 欢迎来到控制面板这个键值对丢给它时它只看到“欢迎来到控制面板”这个字符串。它不知道这个字符串出现在应用的哪个位置是首页标题也不知道“控制面板”在你的产品中是一个特定的功能模块名称可能应该翻译为“Dashboard”而非字面的“Control Panel”。这会导致翻译生硬、术语不一致。而像GPT-4、Claude 3这样的LLM其强大之处在于可以接收一段包含上下文和指令的提示词Prompt。i18n-ai-translate正是利用了这一点。它可以将整个JSON文件的结构、特定的键名有时键名本身就包含语义信息、甚至是开发者提供的自定义翻译说明例如“请将‘控制面板’统一翻译为‘Dashboard’这是一个产品术语”一起打包发送给AI模型。模型在理解了这些整体信息后再执行翻译任务其输出在一致性和语境贴合度上往往有质的飞跃。虽然单次调用的成本和耗时可能略高于传统API但对于追求高质量、品牌化文案的项目尤其是需要一次性处理大量文案的初期阶段这种投入是值得的。2.2 项目架构与工作流解析i18n-ai-translate作为一个CLI工具其架构清晰且专注。它的核心工作流可以概括为读取配置 - 加载源文件 - 构建提示 - 调用AI - 解析输出 - 写入目标文件。配置驱动项目通过一个配置文件如.i18n-ai-translate.json来集中管理所有参数。这包括AI模型提供商和API密钥指定使用OpenAI、Anthropic还是本地Ollama并配置相应的认证信息。源语言和目标语言定义从哪种语言翻译到哪些语言。文件路径指定源JSON文件的路径和输出目录。提示词模板这是核心你可以自定义发送给AI的指令告诉它如何翻译比如保持风格、处理占位符如{name}、忽略某些键等。并发与速率限制为了高效处理大量键值对工具支持并发请求同时也允许你设置速率限制以避免触发API的调用限制。智能分块与批处理一个大型的zh-CN.json文件可能包含上千个键值对。直接将其全部塞进一个AI请求是不现实的有Token长度限制且不经济。i18n-ai-translate内部会智能地将这些键值对分组成多个批次batch每个批次包含一组合理数量的翻译任务然后并发或顺序地发送给AI。这既提高了效率又符合AI服务的最佳实践。结果验证与格式化收到AI的回复后工具会尝试将回复文本解析回JSON格式。这里有一个关键点AI的回复必须是纯JSON不能包含任何额外的解释性文字。工具会进行校验确保生成的JSON结构与源文件匹配然后将结果写入到对应的目标语言文件中如en-US.json。这种设计使得工具既灵活又强大。开发者可以通过精细调整提示词和配置来“训练”AI产出符合特定要求的翻译从而将一次性的翻译任务从“体力劳动”转变为“设计和管理提示词的智力劳动”。3. 从零开始的完整实操指南3.1 环境准备与工具安装首先你需要一个Node.js环境建议版本16或以上。i18am-ai-translate是一个npm包因此安装非常简单。# 全局安装方便在任何项目中使用 npm install -g i18n-ai-translate # 或者在项目内作为开发依赖安装 npm install --save-dev i18n-ai-translate安装完成后可以通过i18n-ai-translate --help验证安装并查看所有可用命令和选项。接下来你需要准备AI服务的访问权限。这里以最常用的OpenAI为例获取API密钥访问OpenAI平台注册并创建一个API Key。妥善保管这个Key它就像你的密码。设置环境变量推荐为了避免将密钥硬编码在配置文件中最佳实践是将其设置为环境变量。# 在Linux/macOS的终端中 export OPENAI_API_KEY你的-sk-...密钥 # 在Windows的PowerShell中 $env:OPENAI_API_KEY你的-sk-...密钥你也可以在项目根目录创建.env文件使用dotenv等包来加载但要注意不要将此文件提交到版本控制系统。如果你想使用本地模型以节省成本或保证数据隐私Ollama是一个绝佳选择。首先安装并运行Ollama然后拉取一个合适的模型如llama3:8b或qwen2:7b# 安装并启动Ollama服务 ollama pull llama3:8b ollama serve # 然后在 i18n-ai-translate 的配置中将provider设置为 ollama并指定baseUrl为 http://localhost:11434。3.2 配置文件详解与定制在项目根目录创建一个名为.i18n-ai-translate.json的配置文件。这是控制翻译行为的核心。{ provider: openai, model: gpt-4o-mini, // 根据需求和预算选择模型gpt-3.5-turbo性价比高gpt-4/4o质量更好 apiKey: ${OPENAI_API_KEY}, // 引用环境变量 sourceLocale: zh-CN, targetLocales: [en-US, ja-JP, fr-FR, de-DE], sourceFile: ./locales/zh-CN.json, targetPath: ./locales, prompt: 你是一名专业的本地化翻译专家。请将以下JSON对象中的值从简体中文翻译成{localeName}。请保持翻译准确、自然符合产品界面用语习惯。对于类似 {variable} 的占位符请原样保留不要翻译。如果某些值看起来是专有名词或品牌词无需翻译请直接保留。请只返回一个完整的JSON对象不要有任何额外的解释。, concurrency: 5, // 并发请求数太高可能触发速率限制 delayBetweenRequests: 200, // 请求间延迟毫秒用于限流 ignoreKeys: [internal.key, debug.*] // 忽略不需要翻译的键支持通配符 }关键配置项解析prompt这是灵魂所在。一个清晰的提示词能极大提升翻译质量。注意{localeName}是一个占位符工具会自动将其替换为目标语言名称如“美式英语”。我强烈建议在提示词中明确角色让AI扮演什么角色如“专业本地化翻译”。任务要做什么翻译JSON值。规则如何处理占位符、专有名词、格式如换行符\n。输出格式严格要求“只返回JSON”这是正确解析的关键。model对于翻译任务gpt-3.5-turbo通常已经足够好且成本低。如果文案非常关键或涉及复杂创意可以考虑gpt-4或gpt-4o。使用Ollama时则填写你拉取的模型名。concurrency和delayBetweenRequests这两个参数需要根据你使用的AI服务商限制来调整。OpenAI对免费或低层级账户有每分钟请求数RPM限制。一开始可以设置较低的并发数如3和一定的延迟如300ms稳定后再逐步调高。ignoreKeys非常实用的功能。有些键可能对应的是代码标识符、内部状态不需要翻译。使用此配置可以过滤掉它们节省token和费用。3.3 准备源语言文件与执行翻译假设你的源语言文件./locales/zh-CN.json内容如下{ common: { save: 保存, cancel: 取消, loading: 加载中..., welcome: 欢迎{userName} }, dashboard: { title: 数据概览, chartHint: 点击图表区域查看详情。\n数据每5分钟更新一次。 }, error: { network: 网络连接失败请检查后重试。, notFound: 请求的资源不存在。 } }现在打开终端在项目根目录下运行命令i18n-ai-translate translate工具会自动读取配置文件开始工作。你会在终端看到实时的日志输出显示正在翻译哪个批次、进度如何。整个过程是全自动的。翻译完成后你会在./locales目录下找到新生成的en-US.json、ja-JP.json等文件。生成的en-US.json可能如下{ common: { save: Save, cancel: Cancel, loading: Loading..., welcome: Welcome, {userName}! }, dashboard: { title: Data Overview, chartHint: Click on the chart area for details.\nData is updated every 5 minutes. }, error: { network: Network connection failed. Please check and try again., notFound: The requested resource does not exist. } }可以看到占位符{userName}和换行符\n都被正确地保留了下来翻译也符合界面用语的习惯。3.4 高级技巧上下文文件与术语表对于更复杂的项目你可能希望AI在翻译时能参考一些背景信息比如产品介绍、UI截图描述或者一个固定的术语对照表。i18n-ai-translate支持通过上下文文件Context File来实现。创建上下文文件例如创建一个./locales/context.md文件。# 产品本地化上下文 ## 产品名称 - 本产品名称为“智析”翻译时请保留为“ZhiXi”或根据目标语言文化适当音译。 ## 核心术语表 - 控制面板 请统一翻译为 **Dashboard**。 - 数据概览 请统一翻译为 **Data Overview**。 - 用户画像 请统一翻译为 **User Profile**。 ## 品牌语调 - 本产品面向专业用户翻译语气应保持专业、清晰、简洁避免过于口语化或随意。修改配置文件引入上下文{ ... // 其他配置 prompt: 你是一名专业的本地化翻译专家。请参考以下上下文信息\n\n{context}\n\n现在请将以下JSON对象中的值从简体中文翻译成{localeName}。规则同上..., contextFile: ./locales/context.md }在提示词中使用{context}占位符工具会自动将上下文文件的内容读取并注入到每次请求的提示词中。这能显著提升专业术语的一致性和翻译的整体风格。4. 实战避坑与优化经验在实际使用中我遇到了不少问题也总结出一些让流程更顺畅的技巧。4.1 费用控制与Token优化使用云AI服务成本是必须考虑的因素。费用 Token数量 × 单价。Token可以粗略理解为单词和标点。精简提示词你的提示词包括系统指令、上下文会在每个请求中重复发送。确保提示词简洁、无赘余。避免在提示词中写长篇大论的介绍。合理分批次工具默认的分批策略是平衡的。但如果你的JSON中有个别值非常长如一整段文章可以考虑手动拆分源文件将长文本单独处理避免一个批次因一个超长值而消耗过多Token。使用更经济的模型对于大多数界面文案gpt-3.5-turbo的质量已经足够其成本远低于gpt-4。可以先用小批量数据测试不同模型的效果。设置预算监控在OpenAI后台设置使用量预算和提醒防止意外超支。4.2 处理AI输出的不稳定问题AI并非百分之百可靠有时会出现不按格式输出、翻译遗漏或胡言乱语的情况。强化输出格式指令在提示词中反复、明确地强调输出格式。例如“你必须且只能返回一个有效的JSON对象其键与输入完全一致仅值被翻译。不要包含任何其他文本、注释或Markdown格式。”启用重试机制i18n-ai-translate通常内置了简单的重试逻辑如网络错误时。但对于因内容导致解析失败的情况你可能需要手动处理。一个实用的方法是先用小部分数据比如10个键跑一遍验证流程和输出格式完全正确后再处理全部数据。人工审核与后处理永远不要完全信任自动化翻译的结果。尤其是对于核心页面、营销文案或法律条款必须安排懂目标语言的人员进行最终审核。可以将AI翻译作为高质量的初稿大幅减少人工翻译的工作量而非完全替代。4.3 集成到开发工作流为了让翻译流程可持续最好将其集成到你的开发流程中。版本控制将源语言文件如zh-CN.json和上下文文件context.md纳入Git管理。生成的翻译文件en-US.json等是否纳入版本控制取决于团队习惯。一种常见做法是在CI/CD中生成翻译文件并将其作为构建产物不直接提交到代码库以避免合并冲突和历史记录混乱。CI/CD 自动化在GitHub Actions、GitLab CI等工具中配置一个自动化任务。例如当zh-CN.json或context.md文件发生变更并合并到主分支时自动触发i18n-ai-translate任务生成新的翻译文件然后可以自动提交到仓库或发布到CDN。# 一个简化的 GitHub Actions 示例片段 - name: AI Translate run: | npm install -g i18n-ai-translate i18n-ai-translate translate env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}增量翻译项目后期可能只是新增或修改了少数文案。i18n-ai-translate本身可能不支持智能增量识别。一个变通方案是每次全量翻译但将结果与旧的翻译文件进行diff人工只审核发生变化的部分。或者可以编写脚本对比源语言文件的哈希值只有发生变化时才触发翻译任务。4.4 常见错误与排查清单问题现象可能原因解决方案运行命令后无任何输出或立即退出。1. 配置文件路径错误或格式不正确。2. 必要的环境变量未设置。1. 使用--config参数显式指定配置文件路径。2. 运行echo $OPENAI_API_KEY检查环境变量是否生效。报错Invalid API Key或Authentication failed。API密钥错误、过期或对于所选provider无效。1. 检查密钥是否复制完整前后有无空格。2. 在AI服务商后台验证密钥状态和余额。3. 确认配置中的provider和model与密钥匹配。工具运行后输出文件为空或内容不全。1. AI响应格式错误无法解析。2. 源文件路径错误未读取到内容。3. 并发过高导致部分请求失败。1.检查提示词确保严格要求返回纯JSON。2. 查看工具运行的详细日志尝试增加CLI的verbose输出。3. 降低concurrency增加delayBetweenRequests。翻译结果中占位符如{name}被翻译或破坏。提示词中未明确说明占位符的处理规则。在提示词中明确加入“对于形如{variableName}的占位符请原样保留不要翻译或修改其内容。”翻译风格不一致有些很正式有些很口语。提示词中对“语调”的指令不够明确或者上下文信息不足。1. 在提示词中定义清晰的品牌语调如“专业、友好、简洁”。2. 创建并使用context.md文件提供更详细的风格指南。费用远超预期。1. 源文件过大Token总数多。2. 提示词或上下文过于冗长。3. 使用了昂贵模型如GPT-4处理大量文本。1. 拆分大型源文件分多次处理。2. 精简提示词和上下文。3. 先用gpt-3.5-turbo测试效果必要时再局部使用高级模型。5. 效果评估与后续迭代使用i18n-ai-translate完成第一轮批量翻译后最重要的一步是评估效果。我通常会从以下几个维度进行准确性随机抽样检查看是否有明显的误译、错译。重点关注专业术语和带有文化背景的短语。一致性检查同一个词如“提交”、“设置”在不同上下文中是否被翻译成了同一个词。流畅性与本土化将翻译结果交给目标语言的母语者或资深用户阅读评估其是否自然、地道是否符合当地用户的习惯。格式完整性检查所有占位符、HTML标签、换行符等是否都得以正确保留。根据评估结果你需要迭代优化两个核心资产提示词Prompt和上下文文件Context。这可能是一个循环的过程发现“控制面板”有时被译成“Control Panel”有时被译成“Dashboard”。 - 将“Dashboard”加入上下文术语表并强调“统一使用”。发现翻译语气过于机械。 - 在提示词中调整角色设定例如从“专业翻译”改为“擅长撰写友好用户界面的文案专家”。发现AI总是翻译某个不应翻译的品牌名。 - 在提示词和上下文中明确列出“这些词不翻译智析, ZXTool”。经过2-3轮的调整你的提示词和上下文会变得越来越精准AI翻译的输出质量也会越来越稳定可靠最终形成一个高度自动化、高质量的多语言内容生产管线。这个工具的价值正是在于它将翻译工作中最耗时、最需要创造力的“初翻”环节变成了一个可配置、可优化、可批量执行的工程问题。
AI驱动i18n翻译:基于LLM的JSON本地化文件批量处理实践
发布时间:2026/5/17 11:07:33
1. 项目概述与核心价值最近在折腾一个多语言项目需要把几百条中文文案翻译成英文、日文、法文等十几种语言。手动翻译不现实成本高、周期长、一致性还难保证。用传统的翻译API虽然方便但面对专业术语、产品特有名词和上下文语境翻译结果常常差强人意后期人工校对的工作量依然巨大。就在我为此头疼的时候一个名为taahamahdi/i18n-ai-translate的开源项目进入了我的视野。这个项目直击了国际化i18n流程中的翻译痛点它利用现代大语言模型LLM的上下文理解能力来智能、批量地处理JSON格式的本地化文件翻译旨在提升翻译质量、保持术语一致性并显著降低人工成本。简单来说i18n-ai-translate是一个命令行工具CLI它读取你的JSON格式的国际化资源文件例如zh-CN.json调用配置好的AI模型如OpenAI的GPT系列、Anthropic的Claude或开源的Ollama本地模型将源语言的内容翻译成多种目标语言并生成对应的翻译文件如en-US.json,ja-JP.json。它的核心价值在于“智能化”和“批量化”。不同于传统翻译API的字对字转换AI模型能够理解整个键值对的结构甚至能根据你的少量提示prompt来保持品牌语调、处理专业词汇让机器翻译的结果更接近人工翻译的语境通顺度。这个工具非常适合前端开发者、全栈工程师或任何需要处理应用国际化的团队。无论你是在开发一个Vue/React单页应用还是一个Node.js后端服务只要你的多语言文案是以JSON格式管理的i18n-ai-translate就能无缝集成到你的构建流程或CI/CD管道中实现翻译工作的自动化。接下来我将深度拆解这个项目的使用逻辑、关键技术点并分享从零开始集成到实际项目中的完整实操经验以及我踩过的一些坑和总结的优化技巧。2. 核心设计思路与方案选型2.1 为何选择AI而非传统翻译API在决定使用i18n-ai-translate之前我们需要理解其背后的设计哲学。传统的机器翻译服务如Google Translate API、DeepL API已经非常成熟它们速度快、价格相对低廉那为什么还要转向AI模型呢关键在于“可控的上下文”和“指令跟随能力”。传统翻译API通常将文本视为独立的片段进行处理。当你把home.header.title: 欢迎来到控制面板这个键值对丢给它时它只看到“欢迎来到控制面板”这个字符串。它不知道这个字符串出现在应用的哪个位置是首页标题也不知道“控制面板”在你的产品中是一个特定的功能模块名称可能应该翻译为“Dashboard”而非字面的“Control Panel”。这会导致翻译生硬、术语不一致。而像GPT-4、Claude 3这样的LLM其强大之处在于可以接收一段包含上下文和指令的提示词Prompt。i18n-ai-translate正是利用了这一点。它可以将整个JSON文件的结构、特定的键名有时键名本身就包含语义信息、甚至是开发者提供的自定义翻译说明例如“请将‘控制面板’统一翻译为‘Dashboard’这是一个产品术语”一起打包发送给AI模型。模型在理解了这些整体信息后再执行翻译任务其输出在一致性和语境贴合度上往往有质的飞跃。虽然单次调用的成本和耗时可能略高于传统API但对于追求高质量、品牌化文案的项目尤其是需要一次性处理大量文案的初期阶段这种投入是值得的。2.2 项目架构与工作流解析i18n-ai-translate作为一个CLI工具其架构清晰且专注。它的核心工作流可以概括为读取配置 - 加载源文件 - 构建提示 - 调用AI - 解析输出 - 写入目标文件。配置驱动项目通过一个配置文件如.i18n-ai-translate.json来集中管理所有参数。这包括AI模型提供商和API密钥指定使用OpenAI、Anthropic还是本地Ollama并配置相应的认证信息。源语言和目标语言定义从哪种语言翻译到哪些语言。文件路径指定源JSON文件的路径和输出目录。提示词模板这是核心你可以自定义发送给AI的指令告诉它如何翻译比如保持风格、处理占位符如{name}、忽略某些键等。并发与速率限制为了高效处理大量键值对工具支持并发请求同时也允许你设置速率限制以避免触发API的调用限制。智能分块与批处理一个大型的zh-CN.json文件可能包含上千个键值对。直接将其全部塞进一个AI请求是不现实的有Token长度限制且不经济。i18n-ai-translate内部会智能地将这些键值对分组成多个批次batch每个批次包含一组合理数量的翻译任务然后并发或顺序地发送给AI。这既提高了效率又符合AI服务的最佳实践。结果验证与格式化收到AI的回复后工具会尝试将回复文本解析回JSON格式。这里有一个关键点AI的回复必须是纯JSON不能包含任何额外的解释性文字。工具会进行校验确保生成的JSON结构与源文件匹配然后将结果写入到对应的目标语言文件中如en-US.json。这种设计使得工具既灵活又强大。开发者可以通过精细调整提示词和配置来“训练”AI产出符合特定要求的翻译从而将一次性的翻译任务从“体力劳动”转变为“设计和管理提示词的智力劳动”。3. 从零开始的完整实操指南3.1 环境准备与工具安装首先你需要一个Node.js环境建议版本16或以上。i18am-ai-translate是一个npm包因此安装非常简单。# 全局安装方便在任何项目中使用 npm install -g i18n-ai-translate # 或者在项目内作为开发依赖安装 npm install --save-dev i18n-ai-translate安装完成后可以通过i18n-ai-translate --help验证安装并查看所有可用命令和选项。接下来你需要准备AI服务的访问权限。这里以最常用的OpenAI为例获取API密钥访问OpenAI平台注册并创建一个API Key。妥善保管这个Key它就像你的密码。设置环境变量推荐为了避免将密钥硬编码在配置文件中最佳实践是将其设置为环境变量。# 在Linux/macOS的终端中 export OPENAI_API_KEY你的-sk-...密钥 # 在Windows的PowerShell中 $env:OPENAI_API_KEY你的-sk-...密钥你也可以在项目根目录创建.env文件使用dotenv等包来加载但要注意不要将此文件提交到版本控制系统。如果你想使用本地模型以节省成本或保证数据隐私Ollama是一个绝佳选择。首先安装并运行Ollama然后拉取一个合适的模型如llama3:8b或qwen2:7b# 安装并启动Ollama服务 ollama pull llama3:8b ollama serve # 然后在 i18n-ai-translate 的配置中将provider设置为 ollama并指定baseUrl为 http://localhost:11434。3.2 配置文件详解与定制在项目根目录创建一个名为.i18n-ai-translate.json的配置文件。这是控制翻译行为的核心。{ provider: openai, model: gpt-4o-mini, // 根据需求和预算选择模型gpt-3.5-turbo性价比高gpt-4/4o质量更好 apiKey: ${OPENAI_API_KEY}, // 引用环境变量 sourceLocale: zh-CN, targetLocales: [en-US, ja-JP, fr-FR, de-DE], sourceFile: ./locales/zh-CN.json, targetPath: ./locales, prompt: 你是一名专业的本地化翻译专家。请将以下JSON对象中的值从简体中文翻译成{localeName}。请保持翻译准确、自然符合产品界面用语习惯。对于类似 {variable} 的占位符请原样保留不要翻译。如果某些值看起来是专有名词或品牌词无需翻译请直接保留。请只返回一个完整的JSON对象不要有任何额外的解释。, concurrency: 5, // 并发请求数太高可能触发速率限制 delayBetweenRequests: 200, // 请求间延迟毫秒用于限流 ignoreKeys: [internal.key, debug.*] // 忽略不需要翻译的键支持通配符 }关键配置项解析prompt这是灵魂所在。一个清晰的提示词能极大提升翻译质量。注意{localeName}是一个占位符工具会自动将其替换为目标语言名称如“美式英语”。我强烈建议在提示词中明确角色让AI扮演什么角色如“专业本地化翻译”。任务要做什么翻译JSON值。规则如何处理占位符、专有名词、格式如换行符\n。输出格式严格要求“只返回JSON”这是正确解析的关键。model对于翻译任务gpt-3.5-turbo通常已经足够好且成本低。如果文案非常关键或涉及复杂创意可以考虑gpt-4或gpt-4o。使用Ollama时则填写你拉取的模型名。concurrency和delayBetweenRequests这两个参数需要根据你使用的AI服务商限制来调整。OpenAI对免费或低层级账户有每分钟请求数RPM限制。一开始可以设置较低的并发数如3和一定的延迟如300ms稳定后再逐步调高。ignoreKeys非常实用的功能。有些键可能对应的是代码标识符、内部状态不需要翻译。使用此配置可以过滤掉它们节省token和费用。3.3 准备源语言文件与执行翻译假设你的源语言文件./locales/zh-CN.json内容如下{ common: { save: 保存, cancel: 取消, loading: 加载中..., welcome: 欢迎{userName} }, dashboard: { title: 数据概览, chartHint: 点击图表区域查看详情。\n数据每5分钟更新一次。 }, error: { network: 网络连接失败请检查后重试。, notFound: 请求的资源不存在。 } }现在打开终端在项目根目录下运行命令i18n-ai-translate translate工具会自动读取配置文件开始工作。你会在终端看到实时的日志输出显示正在翻译哪个批次、进度如何。整个过程是全自动的。翻译完成后你会在./locales目录下找到新生成的en-US.json、ja-JP.json等文件。生成的en-US.json可能如下{ common: { save: Save, cancel: Cancel, loading: Loading..., welcome: Welcome, {userName}! }, dashboard: { title: Data Overview, chartHint: Click on the chart area for details.\nData is updated every 5 minutes. }, error: { network: Network connection failed. Please check and try again., notFound: The requested resource does not exist. } }可以看到占位符{userName}和换行符\n都被正确地保留了下来翻译也符合界面用语的习惯。3.4 高级技巧上下文文件与术语表对于更复杂的项目你可能希望AI在翻译时能参考一些背景信息比如产品介绍、UI截图描述或者一个固定的术语对照表。i18n-ai-translate支持通过上下文文件Context File来实现。创建上下文文件例如创建一个./locales/context.md文件。# 产品本地化上下文 ## 产品名称 - 本产品名称为“智析”翻译时请保留为“ZhiXi”或根据目标语言文化适当音译。 ## 核心术语表 - 控制面板 请统一翻译为 **Dashboard**。 - 数据概览 请统一翻译为 **Data Overview**。 - 用户画像 请统一翻译为 **User Profile**。 ## 品牌语调 - 本产品面向专业用户翻译语气应保持专业、清晰、简洁避免过于口语化或随意。修改配置文件引入上下文{ ... // 其他配置 prompt: 你是一名专业的本地化翻译专家。请参考以下上下文信息\n\n{context}\n\n现在请将以下JSON对象中的值从简体中文翻译成{localeName}。规则同上..., contextFile: ./locales/context.md }在提示词中使用{context}占位符工具会自动将上下文文件的内容读取并注入到每次请求的提示词中。这能显著提升专业术语的一致性和翻译的整体风格。4. 实战避坑与优化经验在实际使用中我遇到了不少问题也总结出一些让流程更顺畅的技巧。4.1 费用控制与Token优化使用云AI服务成本是必须考虑的因素。费用 Token数量 × 单价。Token可以粗略理解为单词和标点。精简提示词你的提示词包括系统指令、上下文会在每个请求中重复发送。确保提示词简洁、无赘余。避免在提示词中写长篇大论的介绍。合理分批次工具默认的分批策略是平衡的。但如果你的JSON中有个别值非常长如一整段文章可以考虑手动拆分源文件将长文本单独处理避免一个批次因一个超长值而消耗过多Token。使用更经济的模型对于大多数界面文案gpt-3.5-turbo的质量已经足够其成本远低于gpt-4。可以先用小批量数据测试不同模型的效果。设置预算监控在OpenAI后台设置使用量预算和提醒防止意外超支。4.2 处理AI输出的不稳定问题AI并非百分之百可靠有时会出现不按格式输出、翻译遗漏或胡言乱语的情况。强化输出格式指令在提示词中反复、明确地强调输出格式。例如“你必须且只能返回一个有效的JSON对象其键与输入完全一致仅值被翻译。不要包含任何其他文本、注释或Markdown格式。”启用重试机制i18n-ai-translate通常内置了简单的重试逻辑如网络错误时。但对于因内容导致解析失败的情况你可能需要手动处理。一个实用的方法是先用小部分数据比如10个键跑一遍验证流程和输出格式完全正确后再处理全部数据。人工审核与后处理永远不要完全信任自动化翻译的结果。尤其是对于核心页面、营销文案或法律条款必须安排懂目标语言的人员进行最终审核。可以将AI翻译作为高质量的初稿大幅减少人工翻译的工作量而非完全替代。4.3 集成到开发工作流为了让翻译流程可持续最好将其集成到你的开发流程中。版本控制将源语言文件如zh-CN.json和上下文文件context.md纳入Git管理。生成的翻译文件en-US.json等是否纳入版本控制取决于团队习惯。一种常见做法是在CI/CD中生成翻译文件并将其作为构建产物不直接提交到代码库以避免合并冲突和历史记录混乱。CI/CD 自动化在GitHub Actions、GitLab CI等工具中配置一个自动化任务。例如当zh-CN.json或context.md文件发生变更并合并到主分支时自动触发i18n-ai-translate任务生成新的翻译文件然后可以自动提交到仓库或发布到CDN。# 一个简化的 GitHub Actions 示例片段 - name: AI Translate run: | npm install -g i18n-ai-translate i18n-ai-translate translate env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}增量翻译项目后期可能只是新增或修改了少数文案。i18n-ai-translate本身可能不支持智能增量识别。一个变通方案是每次全量翻译但将结果与旧的翻译文件进行diff人工只审核发生变化的部分。或者可以编写脚本对比源语言文件的哈希值只有发生变化时才触发翻译任务。4.4 常见错误与排查清单问题现象可能原因解决方案运行命令后无任何输出或立即退出。1. 配置文件路径错误或格式不正确。2. 必要的环境变量未设置。1. 使用--config参数显式指定配置文件路径。2. 运行echo $OPENAI_API_KEY检查环境变量是否生效。报错Invalid API Key或Authentication failed。API密钥错误、过期或对于所选provider无效。1. 检查密钥是否复制完整前后有无空格。2. 在AI服务商后台验证密钥状态和余额。3. 确认配置中的provider和model与密钥匹配。工具运行后输出文件为空或内容不全。1. AI响应格式错误无法解析。2. 源文件路径错误未读取到内容。3. 并发过高导致部分请求失败。1.检查提示词确保严格要求返回纯JSON。2. 查看工具运行的详细日志尝试增加CLI的verbose输出。3. 降低concurrency增加delayBetweenRequests。翻译结果中占位符如{name}被翻译或破坏。提示词中未明确说明占位符的处理规则。在提示词中明确加入“对于形如{variableName}的占位符请原样保留不要翻译或修改其内容。”翻译风格不一致有些很正式有些很口语。提示词中对“语调”的指令不够明确或者上下文信息不足。1. 在提示词中定义清晰的品牌语调如“专业、友好、简洁”。2. 创建并使用context.md文件提供更详细的风格指南。费用远超预期。1. 源文件过大Token总数多。2. 提示词或上下文过于冗长。3. 使用了昂贵模型如GPT-4处理大量文本。1. 拆分大型源文件分多次处理。2. 精简提示词和上下文。3. 先用gpt-3.5-turbo测试效果必要时再局部使用高级模型。5. 效果评估与后续迭代使用i18n-ai-translate完成第一轮批量翻译后最重要的一步是评估效果。我通常会从以下几个维度进行准确性随机抽样检查看是否有明显的误译、错译。重点关注专业术语和带有文化背景的短语。一致性检查同一个词如“提交”、“设置”在不同上下文中是否被翻译成了同一个词。流畅性与本土化将翻译结果交给目标语言的母语者或资深用户阅读评估其是否自然、地道是否符合当地用户的习惯。格式完整性检查所有占位符、HTML标签、换行符等是否都得以正确保留。根据评估结果你需要迭代优化两个核心资产提示词Prompt和上下文文件Context。这可能是一个循环的过程发现“控制面板”有时被译成“Control Panel”有时被译成“Dashboard”。 - 将“Dashboard”加入上下文术语表并强调“统一使用”。发现翻译语气过于机械。 - 在提示词中调整角色设定例如从“专业翻译”改为“擅长撰写友好用户界面的文案专家”。发现AI总是翻译某个不应翻译的品牌名。 - 在提示词和上下文中明确列出“这些词不翻译智析, ZXTool”。经过2-3轮的调整你的提示词和上下文会变得越来越精准AI翻译的输出质量也会越来越稳定可靠最终形成一个高度自动化、高质量的多语言内容生产管线。这个工具的价值正是在于它将翻译工作中最耗时、最需要创造力的“初翻”环节变成了一个可配置、可优化、可批量执行的工程问题。