Skip to content

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

Open
CodFrm wants to merge 3 commits into
mainfrom
i18n/pt-br-tr-l10n-coverage
Open

🌐 Cover chrome.i18n messages.json and Monaco editor langs for pt-BR / tr-TR#1605
CodFrm wants to merge 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants