Skip to content

🌐 Cover chrome.i18n messages.json and Monaco editor langs for pt-BR / tr-TR#1605

Merged
CodFrm merged 3 commits into
mainfrom
i18n/pt-br-tr-l10n-coverage
Jul 18, 2026
Merged

🌐 Cover chrome.i18n messages.json and Monaco editor langs for pt-BR / tr-TR#1605
CodFrm merged 3 commits into
mainfrom
i18n/pt-br-tr-l10n-coverage

Conversation

@CodFrm

@CodFrm CodFrm commented Jul 17, 2026

Copy link
Copy Markdown
Member

Checklist / 检查清单

  • Fixes mentioned issues / 修复已提及的问题
  • Code reviewed by human / 代码通过人工检查
  • Changes tested / 已完成测试

背景

PR #1587 的 pt-BR 翻译遗漏了两处本地化面(见 评论反馈):

  • src/assets/_locales/ 下没有 pt_BR/messages.json(chrome.i18n 的扩展名称/商店描述),其余 8 个语言都有;
  • Monaco 编辑器语言包 editorLangs 没有 pt-BR 条目(编辑器 metadata 悬浮提示、@grant 权限说明、快速修复文案),缺失时静默回退英文。

排查中发现 tr-TR 存在同类缺口_locales/tr 已有,但 editorLangs 同样缺失土耳其语条目,一并补齐。

本次改动

  • 新增 src/assets/_locales/pt_BR/messages.json,商店描述沿用 pt-BR 语言包既有措辞(gerenciador de scripts de usuário)。
  • editorLangs 新增 pt-BRtr-TR 完整条目(各约 90 条),分别遵循 docs/references/terminology-pt-BR.mdterminology-tr-TR.md 的术语规范(如 pt-BR 用 entre origens 而非 origem cruzadaAbalink de afiliado;tr-TR 用 betikSekme、保留 GM API@ 标识符)。
  • 重构:原 langs.ts 单文件已含 9 种语言约 1300 行,按语言拆分为 src/pkg/utils/monaco-editor/langs/<locale>.ts + index.ts,导入路径 ./langs 不变。拆分为纯机械搬移,已用临时深度对比测试验证拆分前后 editorLangs 内容完全一致。
  • 新增两个守卫测试,防止后续新增语言再漏配:
    • src/pkg/utils/monaco-editor/langs.test.tseditorLangssrc/locales/ 注册的 UI 语言一一对应,且各条目键结构与 en-US 一致;
    • src/locales/chrome-locales.test.ts:每个 UI 语言都有对应的 _locales 目录,且各 messages.json 键与 en 一致。

已知限制

对其余翻译面做了完整盘点,运行时侧无其他缺口(各 locale 的 *.json 键与 en-US 完全对齐、语言下拉框与相对时间格式化均为动态派生、chrome.i18n.getMessage 无代码调用)。唯一剩余缺口在文档层:本地化 README 仅有 zh-CN / zh-TW / ja / RU 四种,de / vi / tr / pt-BR 尚无,留待后续单独处理。

建议审查重点

  • pt-BR / tr-TR 译文的自然度与术语选择(母语者视角),尤其 crontabantifeatureunwrap 等长文案。

关联

验证

  • 按 TDD 先写守卫测试并确认失败(pt-BR / tr-TR 缺失时各自命中),补齐后通过。
  • 拆分等价性:临时测试将拆分后的 editorLangs 与拆分前(git show HEAD 版本)深度对比,完全一致后移除。
  • pnpm lint:prettier / tsc / eslint 全部通过。
  • npx vitest run(与 lint 顺序执行):306 文件 / 3370 用例全部通过。此前并行跑 lint 与测试时曾出现偶发超时失败,失败集在多次运行间完全不同且单独重跑全过,确认为满载并发下 340ms 超时抖动,与本次改动无关。

CodFrm added 3 commits July 18, 2026 01:52
PR #1587 的 pt-BR 翻译遗漏了 src/assets/_locales/(商店/清单文案)与
src/pkg/utils/monaco-editor/langs.ts(编辑器 metadata 提示与快速修复文案,
缺失时回退英文)。补齐两处,并新增语言覆盖守卫测试。
土耳其语翻译当时同样遗漏了 editorLangs(_locales/tr 已存在)。补齐后
将守卫测试收紧为 editorLangs 与注册的 UI 语言一一对应。
langs.ts 已含 9 种语言约 1300 行,拆为 langs/<locale>.ts + index.ts,
导入路径 ./langs 不变。拆分为纯机械搬移,已用临时深度对比测试验证
拆分前后 editorLangs 内容完全一致。
@cyfung1031

This comment was marked as outdated.

@CodFrm
CodFrm marked this pull request as draft July 17, 2026 18:16
@CodFrm

This comment was marked as outdated.

cyfung1031 added a commit to cyfung1031/scriptcat that referenced this pull request Jul 17, 2026
用 PR scriptscat#1605 实测时发现:check-i18n.mjs 硬编码了单文件 src/pkg/utils/monaco-editor/langs.ts
路径,一旦该文件被拆分为 langs/<locale>.ts + langs/index.ts(如 scriptscat#1605 所做),检查会误报
"文件缺失"。改为先探测 langs/index.ts 是否存在,再退回单文件路径;并将 key 展开逻辑改为
按模块解析(parseModule/flattenNode),支持跨文件解析 import 绑定(如 index.ts 里
"pt-BR": ptBR 指向 ./pt-BR.ts 的 default export)与同文件 shorthand 属性
(如 pt-BR.ts 内的 grantValuePrompts,)。

已用 scriptscat#1605 的实际分支验证:新结构下 0 误报,人为在拆分后的 pt-BR.ts 中删除顶层 key 与
grantValuePrompts 子 key 均能正确报出具体路径。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@cyfung1031

Copy link
Copy Markdown
Collaborator

#1606 里新增的机械检查脚本(scripts/check-i18n.mjs / pnpm run check:i18n)对本 PR 的 head commit(1f15ac7)做了实测,结果:全部通过,0 error / 0 warning

✅ i18n check passed: all locales match the en-US / en reference key sets.

具体覆盖到的点:

  • src/assets/_locales/pt_BR/messages.jsonen/messages.json key 完全一致(目录名是脚本扫描 _locales/ 实际内容解析出来的,不依赖写死的映射表)。
  • src/pkg/utils/monaco-editor/langs/index.ts 里的 editorLangs["pt-BR"]editorLangs["tr-TR"]en-US key 结构完全一致,包括嵌套的 prompt.* 和引用自 grantValuePrompts 常量的键。
  • src/locales/pt-BR/*.jsonsrc/locales/tr-TR/*.json 各命名空间与 index.ts 导出均无缺失/多余。
  • docs/references/terminology-pt-BR.mdterminology-tr-TR.md 均存在。

一个说明:本 PR 把 langs.ts 单文件拆分成了 langs/<locale>.ts + langs/index.ts。我原本的检查脚本硬编码了旧的单文件路径,第一次跑在这个 PR 上会误报"文件缺失"——这是脚本自身的问题,不是本 PR 的问题。已经修好(改为自动探测 langs/index.ts 是否存在,并支持跨文件解析 import 绑定),上面贴的是修好之后的结果,已经在 #1606 里更新。

另外发现本 PR 新增的 src/pkg/utils/monaco-editor/langs.test.tssrc/locales/chrome-locales.test.ts 这两个 vitest 守卫测试,和 #1606 的机械检查在设计目的上是重叠的(都是防止后续新增语言时再漏配)。两者可以并存,不算冲突,仅供参考。

@cyfung1031

Copy link
Copy Markdown
Collaborator

#1606 里新增的机械检查脚本(scripts/check-i18n.mjs / pnpm run check:i18n)对本 PR 的 head commit(1f15ac7)做了实测,结果:全部通过,0 error / 0 warning

@CodFrm ok了

@cyfung1031
cyfung1031 marked this pull request as ready for review July 17, 2026 18:39
@cyfung1031 cyfung1031 added the P0 🚑 需要紧急处理的内容 label Jul 18, 2026
@cyfung1031 cyfung1031 added this to the 2026七月 Milestone milestone Jul 18, 2026
@CodFrm
CodFrm merged commit 82546b1 into main Jul 18, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P0 🚑 需要紧急处理的内容

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants