
前端AI 应用本地部署【免费下载链接】FluentReadAn open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。项目地址https://gitcode.com/gh_mirrors/fl/FluentRead点击查看免费下载本文基于 FluentRead 的翻译语言校对记录docs/reports/translation-languages-20260908.md讲解通用翻译语言目录扩至 52 项后Google、Microsoft Edge、DeepL、DeepLX 与小牛文本翻译等供应商对新增语言代码的差异处理、实测验证方法与边界约束。读者可据此理解多供应商语言代码映射的完整思路并掌握如何用协议级测试与生产端点抽查交叉验证语言支持范围而不依赖扩展浏览器 UI。一、背景通用目录扩为 52 项FluentRead 的通用翻译语言目录维护在 src/core/language/catalog.ts 的translationLanguageOptions中统一了源语言、目标语言与排除语言的可选范围。本次校对将通用目录扩充为 52 项并逐一检查新增的 44 项语言代码在 Google、Microsoft、DeepL 与小牛文本翻译中的可用性原有配置与中文简繁处理逻辑保持不变且未借鉴参考仓库的代码。从目录结构可以看到简体中文zh-Hans与繁体中文zh-Hant独立列出52 项中除中英日韩等常见语言外新增部分集中覆盖南亚与东南亚语言hi、bn、ur、fa、ta、te、mr、gu、kn、ml、pa、ne、si、th、vi、id、ms、东欧与波罗的海语言uk、cs、sk、bg、hr、sl、et、lv、lt、ro、hu、北欧语言da、sv、nb、fi、西亚与非洲语言ar、he、tr、sw以及fil菲律宾语。目录中的每个语言都带有多语言默认显示名例如nb标注为 norsk bokmål / Norwegian Bokmål / 书面挪威语sr标注为 српски / Serbian / 塞尔维亚语——后者的西里尔名称正是下文 Microsoft 端点处理sr时的关键依据。二、供应商语言代码差异对照新增 44 项代码并非所有服务都能原样接受各供应商对同一条目的处理策略并不一致服务处理Google 网页 RPC 与 gtxnb→nofil→tl其余新增代码原样传递Microsoft Edge 文本翻译sr→sr-Cyrl对应目录原生名称使用的西里尔字母nb、fil保留小牛文本翻译nb→no其余新增代码在官方网页语言目录中均存在。HTTP 200 缺少有效译文时按失败处理不缓存为成功DeepL APIfil→TLkn和si未列入当前官方语言表在源或目标位置均提示切换服务其余新增代码按官方大写代码请求DeepLXfil→TL具体支持范围由部署端点决定不假设与官方 API 同步其中nb书面挪威语在 Google 与小牛中需要映射为no而 Microsoft 端点两者都接受fil在 Google 中需转为tl他加禄语在 DeepL/DeepLX 中则转为TL大写代码sr只有在 Microsoft 端点需要显式指定sr-Cyrl书写系统。DeepL 当前的enable_beta_languages参数已废弃且无效果因此本次不新增该参数官方语言表中上述可用语言均具备标签HTML处理能力现有 HTML 处理参数继续保留。这次校对不引入静态全局白名单来清除旧配置或限制自定义服务同时明确该结果不代表其他所有机器翻译服务、OCR 或语音识别都支持目录中的全部语言。三、源码中的映射实现上述差异在 provider 适配层有直接对应的实现可以作为逐项核对的事实依据。3.1 Google网页 RPC 与 gtx 的统一映射在 src/providers/translation/google.ts 的translateGoogleText中语言码经normalizeChineseLanguageCode规范化后走一张显式映射表return ({zh-Hans: zh-CN, zh-Hant: zh-TW, nb: no, fil: tl} as Recordstring, string)[normalized] ?? normalized;即中文按书写系统映射为zh-CN/zh-TW新增代码中仅nb、fil需要改写其余原样传递。该文件同时实现了两个匿名端点batchexecute网页 RPC含主站与备用域名两个候选地址与旧版 gtx 接口translate_a/single在 15 秒总预算内按顺序故障转移单次尝试超时 8 秒当响应体是 HTML 时会在错误信息中追加 CAPTCHA 提示google.ts。3.2 Microsoft Edge按书写系统显式指定西里尔src/providers/translation/microsoft.ts 将通用sr显式改写为sr-Cyrl避免服务端隐式选择拉丁字母url.searchParams.set(from, fromLang auto ? : fromLang sr ? sr-Cyrl : fromLang); url.searchParams.set(to, toLang sr ? sr-Cyrl : toLang);这也解释了为什么语言目录中sr的原生名称使用西里尔字母书写。该端点同时支持单条与批量文本POST JSON 数组到https://edge.microsoft.com/translate/translatetext发送前对文本做 HTML 转义、解析后解码以避免纯文本中的比较运算符或用户输入被端点自带的 HTML 标签对齐器误解释为标记。3.3 小牛nb → no与空译文失败语义src/providers/translation/xiaoniu.ts 的映射表为return ({zh-Hans: zh, zh-Hant: cht, nb: no} as Recordstring, string)[normalized] ?? normalized;同时当 HTTP 200 但响应缺少tgt_text或译文为空时会抛出供应商业务错误小牛翻译未返回译文请检查语言对、额度或 API Key这类响应不会被翻译缓存当作成功结果保存——这正是HTTP 200 缺少有效译文时按失败处理不缓存为成功的落地点。3.4 DeepL 与 DeepLXfil → TL、不支持语言请求前拒绝src/providers/translation/deepl.ts 的规范化函数在目标语言为kn或si时直接抛错if (normalized kn || normalized si) { throw new Error(DeepL 暂不支持此语言${normalized}请选择其他翻译服务); } return normalized fil ? TL : normalized.toUpperCase();即在发出请求之前就拒绝不支持的代码提示用户切换服务而不是偷偷替换成其他语言或改动用户保存的选择。源语言位置同样经过该校验唯一例外是中文源语言统一按基础ZH提交DeepL 源语言参数只接受基础 ZH目标语言才区分书写系统。请求体中保留了tag_handling: html、preserve_formatting与context参数。src/providers/translation/deeplx.ts 的normalizeLanguage将fil转为TL中文按ZH/ZH-HANT处理其余大写化。但文档明确DeepLX 具体支持范围由用户部署的端点决定不假设与官方 API 同步适配层对多个端点按 20 秒总预算、单次 8 秒超时做有序故障转移。四、中文简繁处理的保留与语言解析链路本次校对的另一条底线是原有配置和中文简繁处理保留。src/core/language/chinese.ts 的normalizeChineseLanguageCode统一了zh_CN、zh-Hant等别名脚本子标签优先于地区zh、zh-cn、zh-chs归入zh-Hanszh-tw、zh-hk、zh-mo、zh-cht归入zh-Hant。各 provider 的映射表都先经过该函数规范化因此用户在界面上选择简体中文或繁体中文后不同服务会收到各自约定格式的代码。语言对的最终解析位于 src/services/translation/languages.ts 的getTranslationLanguages优先采用请求消息携带的sourceLanguage/targetLanguage覆盖缺省时读取配置服务中的from/to从而保证多服务同时翻译时的对比请求彼此隔离。五、验证方法协议测试 生产端点抽查本次校对的验证分两层均不依赖扩展浏览器 UI。5.1 供应商协议测试网络替身供应商协议测试使用网络替身fetch mock覆盖范围包括全部新增语言、源/目标参数Google RPC 失败后的 gtx 参数保留即网页 RPC 请求失败时故障转移请求仍携带正确的语言参数DeepL 不支持语言的请求前拒绝kn、si在请求发出前即抛错小牛业务错误HTTP 200 但无有效译文时按失败处理。仓库中的 tests/chineseTranslationProviders.test.ts 即为典型例子它用it.each遍历de、pt、it、ar、hi、bn、ur、fa、he、tr、vi、th、id、ms、nl、pl、uk、cs、sk、da、sv、nb、fi、el、ro、hu、bg、hr、sl、et、lv、lt、ta、te、mr、gu、kn、ml、pa、ne、si、sw、fil全部新增代码断言源语言与目标语言同时正确转换并验证小牛对nb的no映射以及无译文时抛错。这类测试代表协议正确性不代表真实服务质量。5.2 生产端点抽查公开测试句使用公开测试句子Hello, how are you?单独请求生产端点结果如下端点目标代码HTTP返回译文Google 网页 RPCno200Hei, hvordan har du det?Google 网页 RPCtl200Hello, kumusta ka na?Google 网页 RPCar200مرحبا، كيف حالك؟Microsoft Edgesr-Cyrl200Здраво , како си?Microsoft Edgenb200Hei, hvordan har du det?Microsoft Edgefil200Hello, kumusta ka?抽查结果印证了映射决策Google 网页 RPC 对nb→no、fil→tl均返回 200 与有效译文Microsoft Edge 对sr-Cyrl、nb、fil都返回 200。这些是合成文本的直接 HTTP 请求不是扩展浏览器 UI 测试校对时未使用 DeepL 或小牛付费密钥因此也未验证全部语言方向、长文、文档翻译或译文质量。六、验证边界与全量回归注意点协议测试与抽查只证明请求协议被接受、返回结构正确不代表真实服务质量也不能证明未覆盖的语言方向、长文本与文档翻译可用。校对的结论仅针对列出的五类服务不新增静态全局白名单也不为其他机器翻译服务、OCR、语音识别做支持性承诺。全量回归期间发现主分支提交8f200eb已将图片翻译改为默认关闭而旧测试仍期待开启主分支在校对期间同步修复了该测试。最终保留主分支的显式启用/关闭断言未修改图片翻译实现——这是一个典型的文档所述功能与主分支演进保持一致的处理案例。七、对使用者的实际意义选择目标语言为kn卡纳达语或si僧伽罗语并使用 DeepL 时扩展会提示切换其他翻译服务而不是静默返回错误或替换语言。选择nb书面挪威语时Google 与小牛会按no提交Microsoft 保留nb三端均可正常请求。选择sr塞尔维亚语走 Microsoft Edge 端点时会按sr-Cyrl请求西里尔书写系统DeepL 用户则需注意目录中的sr对应官方大写代码SR。自定义服务如自建 DeepLX 端点的语言支持以该端点实际能力为准扩展不会假设其与 DeepL 官方 API 同步。如需继续深入可对照 语言目录定义 与各 provider 适配文件google.ts、microsoft.ts、xiaoniu.ts、deepl.ts、deeplx.ts逐项核实映射逻辑并以 chineseTranslationProviders.test.ts 为起点扩展新的语言回归用例。赞分享前端AI 应用本地部署【免费下载链接】FluentReadAn open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。项目地址https://gitcode.com/gh_mirrors/fl/FluentRead点击查看免费下载相关推荐Vibe 项目多语言翻译指南i18n 目录结构、语言添加流程与校验机制Vibe 项目多语言翻译指南i18n 目录结构、语言添加流程与校验机制 VibeTranscribe on your own!是一款本地优先的语音转文人工智能语音本地部署桌面应用WinMerge翻译校对确保多语言界面的准确性WinMerge翻译校对确保多语言界面的准确性 引言多语言界面的质量挑战 你是否曾在使用国际化软件时遇到过晦涩难懂的翻译菜单选项不知所云、错误提示词不达意桌面应用开发工具告别设计焦虑Guizang Social Card Skill零基础制作杂志级社交媒体封面图的终极指南告别设计焦虑Guizang Social Card Skill零基础制作杂志级社交媒体封面图的终极指南 你是不是也遇到过这样的困扰精心创作的内容却因为封AI 技能媒体生成上一篇HOL4高级功能详解从自动推理到交互式证明的进阶技巧下一篇electron-builder NSIS 自定义安装模式customInstallMode 宏守卫大小写修正指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考