diff --git a/src/renderer/src/i18n/locales/es.json b/src/renderer/src/i18n/locales/es.json index d84aa89b132..de7bb77346c 100644 --- a/src/renderer/src/i18n/locales/es.json +++ b/src/renderer/src/i18n/locales/es.json @@ -3991,7 +3991,7 @@ "e643b30398": "Proyecto agregado en host SSH" }, "AddRepoCreateStep": { - "0ae45b8238": "mi-proyecto", + "0ae45b8238": "my-project", "a8149a3a5a": "Nombre", "11fd2a7db8": "Repositorio Git", "5e97f0c4b9": "Proyecto creado", @@ -6060,7 +6060,7 @@ "a6c2816115": "y", "b8a7efb3f6": "ORCA_BITBUCKET_EMAIL", "8489c0aa49": "Bitbucket", - "e74de656ce": "inicio de sesión de autenticación glab", + "e74de656ce": "glab auth login", "05e5245af7": "La CLI de GitLab está instalada pero no autenticada. Ejecute este comando en una terminal:", "a83cac5726": "Instalar la CLI de GitLab", "35a3379372": "Instale la CLI de GitLab para habilitar solicitudes de fusión, problemas y canalizaciones.", @@ -6068,7 +6068,7 @@ "a3326f6f1b": "glabro", "027440e1cb": "Fusionar solicitudes, problemas, todos y canalizaciones a través de", "513abfe47d": "GitLab", - "51000487c4": "inicio de sesión de autenticación gh", + "51000487c4": "gh auth login", "09285e9fe6": "La CLI de GitHub está instalada pero no autenticada. Ejecute este comando en una terminal:", "399cf46867": "Instalar la CLI de GitHub", "c0c8575e05": "Instale la CLI de GitHub para habilitar solicitudes de extracción, problemas y comprobaciones.", @@ -6475,12 +6475,12 @@ "07ba35bc68": "Revisa la indentación bajo `scripts:`. Las claves de hooks deben usar dos espacios y las líneas de comandos deben usar cuatro.", "787ca433ef": "Define solo las claves admitidas: `scripts`, `setup`, `archive` e `issueCommand`.", "ecc73d9125": "Compara tu archivo con la plantilla funcional de abajo y copia esa estructura si hace falta.", - "925f9e0dc4": "texto-primer plano", + "925f9e0dc4": "text-foreground", "0cc712b823": "El archivo de configuración principal existe en la raíz del repositorio, pero Orca aún no pudo analizar las definiciones de hooks admitidas.", - "c90b858573": "texto-ámbar-700 oscuro:texto-ámbar-300", + "c90b858573": "text-amber-700 dark:text-amber-300", "aba825233f": "El archivo contiene claves de configuración que esta versión de Orca no reconoce. Es posible que necesites actualizar Orca o revisar el archivo en busca de errores tipográficos.", "ca424ff135": "Los valores predeterminados compartidos de hooks y automatización de Issues están definidos en el repositorio y disponibles para todos los que lo usan.", - "32f417fe17": "texto-esmeralda-700 oscuro:texto-esmeralda-300", + "32f417fe17": "text-emerald-700 dark:text-emerald-300", "8bfe65fc60": "Usar comandos locales", "8d6c56bff8": "Ejecutar ambos", "0fa21e19ec": "Nombre del workspace, normalmente basado en el nombre de la rama.", @@ -6524,7 +6524,7 @@ "2b7d27b93c": "Usar {{value0}} como color del repositorio", "fde066a63b": "Las cargas PNG deben tener un tamaño de 256 KB o menos.", "cc1286e263": "Favicon", - "03ca1a4e9b": "ejemplo.com", + "03ca1a4e9b": "example.com", "381b4844fd": "Subir PNG", "7da623abcc": "Se usa de forma predeterminada: GitHub siempre proporciona uno, incluso cuando el propietario no configuró una imagen personalizada.", "39da8a10bf": "Usar avatar de GitHub", @@ -10951,7 +10951,7 @@ "9fffaf17c1": "Alternar barra lateral derecha ({{value0}})", "b37ff4a89a": "puertos", "9f83375839": "cheques", - "6306b48afd": "control de fuente", + "6306b48afd": "source-control", "ef182dcb12": "buscar", "fc3095d2ed": "explorador", "aiVaultSessionHistory": "Agentes", @@ -12421,7 +12421,7 @@ "9220794f6a": "laboral" }, "ReviewAnimatedVisual": { - "8df4d52b68": "pr-vista", + "8df4d52b68": "pr-view", "8ab622e4d6": "notas" }, "FeatureWallBrowserAction": { @@ -12697,7 +12697,7 @@ "19c45cfdc0": "Expandir todo", "982d14bfa5": "Abrir todos los cambios", "3d909843bb": "Abrir diff de rama", - "8368d256ec": "rama combinada", + "8368d256ec": "combined-branch", "8f68ad9ca9": "Mostrar {{value0}} AI {{value1}}", "724a13568d": "en {{value0}}", "6094135eec": "frente a {{value0}}", @@ -12889,7 +12889,7 @@ "8f4d2c1a9b": "Redimensionar tabla de contenido" }, "MarkdownTemplatePicker": { - "22cd94426f": "sin título.md", + "22cd94426f": "untitled.md", "6e2e6c04ad": "Markdown en blanco", "df667919ca": "No hay plantillas que coincidan.", "22fd4890ad": "Buscar plantillas...", diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json index c86caa3e852..1ee6d8ee0f3 100644 --- a/src/renderer/src/i18n/locales/ko.json +++ b/src/renderer/src/i18n/locales/ko.json @@ -2774,7 +2774,7 @@ "agent": { "row": { "ad991ece5c": "Agent 창을 더 이상 사용할 수 없습니다.", - "090d607412": "오래된 agent 행-{{value0}}" + "090d607412": "stale-agent-row-{{value0}}" } } }, @@ -6053,7 +6053,7 @@ "a3326f6f1b": "glab", "027440e1cb": "MR, 이슈, 할 일, 파이프라인을 다음 도구로 사용합니다.", "513abfe47d": "GitLab", - "51000487c4": "gh 인증 로그인", + "51000487c4": "gh auth login", "09285e9fe6": "GitHub CLI가 설치되어 있지만 인증되지 않았습니다. terminal에서 다음 명령을 실행하세요.", "399cf46867": "GitHub CLI 설치", "c0c8575e05": "PR, 이슈 및 검사를 활성화하려면 GitHub CLI를 설치하세요.", @@ -8275,7 +8275,7 @@ "compareAgainstUpstreamDescription": "소스 제어가 커밋된 변경 사항 비교에 기본으로 사용할 기준을 선택합니다. 브랜치 업스트림은 현재 브랜치를 자동으로 따라가며, 업스트림이 없으면 저장소 기본 브랜치로 돌아갑니다. 비교 기준은 해당 worktree의 Git 패널에서 worktree별로 변경할 수 있습니다. Pull Request 및 리베이스 대상은 변경되지 않습니다.", "compareBase": "비교 기준", "currentBranch": "현재 브랜치", - "upstream": "업스트림", + "upstream": "upstream", "localChanges": "로컬 변경 사항", "originMaster": "origin/master", "committedChanges": "커밋된 변경 사항", @@ -10951,7 +10951,7 @@ "9fffaf17c1": "오른쪽 사이드바 표시/숨기기({{value0}})", "b37ff4a89a": "포트", "9f83375839": "검사", - "6306b48afd": "소스 제어", + "6306b48afd": "source-control", "ef182dcb12": "검색", "fc3095d2ed": "탐색기", "aiVaultSessionHistory": "에이전트", @@ -12198,7 +12198,7 @@ "00078a6134": "설정에서 보기", "14327073cc": "저장", "88469e926b": "설정 스크립트", - "5c5b65044e": "pnpm 설치", + "5c5b65044e": "pnpm install", "a7463915b6": "설정 스크립트를 저장하지 못했습니다.", "6299297dac": "설정 스크립트가 저장되었습니다.", "f0bbf7da77": "사용해 보세요", @@ -12697,7 +12697,7 @@ "19c45cfdc0": "모두 확장", "982d14bfa5": "commit 되지 않은 Diff 열기", "3d909843bb": "브랜치 diff 열기", - "8368d256ec": "결합 브랜치", + "8368d256ec": "combined-branch", "8f68ad9ca9": "{{value0}} AI {{value1}} 표시", "724a13568d": "{{value0}}에서", "6094135eec": "대 {{value0}}", @@ -12889,7 +12889,7 @@ "8f4d2c1a9b": "목차 크기 조절" }, "MarkdownTemplatePicker": { - "22cd94426f": "제목없음.md", + "22cd94426f": "untitled.md", "6e2e6c04ad": "빈 Markdown", "df667919ca": "일치하는 템플릿이 없습니다.", "22fd4890ad": "템플릿 검색...", diff --git a/src/renderer/src/i18n/locales/zh.json b/src/renderer/src/i18n/locales/zh.json index 62090dd10ea..6ce82f72417 100644 --- a/src/renderer/src/i18n/locales/zh.json +++ b/src/renderer/src/i18n/locales/zh.json @@ -547,7 +547,7 @@ "notification": { "b0536028c9": "打开快捷键", "141ad6c004": "处理终端快捷方式", - "0ab0cd001a": "大小 4 文本静音前景" + "0ab0cd001a": "size-4 text-muted-foreground" } } } @@ -2212,7 +2212,7 @@ "IssueSourceSelector": { "d6aeb2012b": "显示议题来自", "787c970baf": "议题来源", - "643d7e9496": "上游", + "643d7e9496": "upstream", "51d1608920": "origin", "cdc9bd64fa": "紧凑", "30b2c9df91": "上游" @@ -3827,7 +3827,7 @@ "c7f9b3f0c1": "关", "8b12c0850a": "保存", "de8fce5854": "取消", - "ddbcaef7be": "src/渲染器包/ui", + "ddbcaef7be": "src/renderer packages/ui", "0e9ad9c798": "目录", "064c1e2d12": "渲染器用户界面", "b3a500c623": "名称", @@ -3984,7 +3984,7 @@ "e643b30398": "添加了远程项目" }, "AddRepoCreateStep": { - "0ae45b8238": "我的项目", + "0ae45b8238": "my-project", "a8149a3a5a": "名称", "11fd2a7db8": "Git 存储库", "5e97f0c4b9": "项目已创建", @@ -5463,7 +5463,7 @@ "0de9fda203": "放弃", "c71770c455": "{basePrompt}", "f19a56498d": ";您的分支前缀设置仍然适用。", - "800edb1e54": "修复登录流程", + "800edb1e54": "fix-login-flow", "5d569f5199": "。 Orca 仅生成最后一段,例如", "570817d126": "和", "56580dcf60": "。您还可以参考", @@ -5487,7 +5487,7 @@ "63121132c0": "放弃", "4416b25d29": "优先使用任务中的领域名词,避免工单 ID,并保持名称便于评审人理解。", "39278f4411": ";您的分支前缀设置仍然适用。", - "ebb942a2ec": "修复登录流程", + "ebb942a2ec": "fix-login-flow", "af2d9a2cc6": "。 Orca 仅生成最后一段,例如", "182d419b97": "内置分支名称提示", "2f5dc661fe": "附加到 Orca 的", @@ -5506,7 +5506,7 @@ "ade9a5bb03": ") 来确定结果范围。", "b468f46726": "upstream/main", "80f7c82303": ")或完整的参考(例如", - "915ad97875": "上游", + "915ad97875": "upstream", "a5c16712c1": "已检测多个遥控器。输入远程名称(例如", "9a14ec7400": "选择下面的一个基础分支", "086ce7f369": "跟随主分支 ({{value0}})", @@ -6057,7 +6057,7 @@ "a6c2816115": "和", "b8a7efb3f6": "ORCA_BITBUCKET_EMAIL", "8489c0aa49": "Bitbucket", - "e74de656ce": "glab 身份验证登录", + "e74de656ce": "glab auth login", "05e5245af7": "GitLab CLI 已安装但未经过身份验证。在终端中运行此命令:", "a83cac5726": "安装 GitLab CLI", "35a3379372": "安装 GitLab CLI 以启用合并请求、议题和管道。", @@ -6065,7 +6065,7 @@ "a3326f6f1b": "光亮的", "027440e1cb": "通过合并请求、议题、待办事项和管道", "513abfe47d": "GitLab", - "51000487c4": "gh 验证登录", + "51000487c4": "gh auth login", "09285e9fe6": "GitHub CLI 已安装但未经过身份验证。在终端中运行此命令:", "399cf46867": "安装 GitHub CLI", "c0c8575e05": "安装 GitHub CLI 以启用PR、议题和检查。", @@ -6431,7 +6431,7 @@ "RepositoryHooksSection": { "af49e2a19e": "该文件存在,但 Orca 找不到有效的“scripts”或“issueCommand”定义。", "3397879bee": "并且本地命令存在,选择哪个运行。", - "39da2ae12f": "Orca.yaml", + "39da2ae12f": "orca.yaml", "ac9038d2cc": "当两者", "32fec28f5b": "命令源", "bbbd6e0bc4": "命令源 & orca.yaml", @@ -6472,12 +6472,12 @@ "07ba35bc68": "检查 `scripts:` 下的缩进。钩子键应使用两个空格,命令行应使用四个空格。", "787ca433ef": "仅定义支持的键:`scripts`、`setup`、`archive` 和 `issueCommand`。", "ecc73d9125": "将你的文件与下面可用的模板进行比较,并在需要时复制该结构。", - "925f9e0dc4": "文本前景", + "925f9e0dc4": "text-foreground", "0cc712b823": "核心配置文件存在于仓库根目录中,但 Orca 尚无法解析支持的钩子定义。", - "c90b858573": "文本-​​Amber-700 深色:文本-Amber-300", + "c90b858573": "text-amber-700 dark:text-amber-300", "aba825233f": "该文件包含此版本的 Orca 无法识别的配置密钥。您可能需要更新 Orca,或检查文件是否有拼写错误。", "ca424ff135": "共享挂钩和议题自动化默认值在仓库中定义,可供所有使用它的人使用。", - "32f417fe17": "文本-​​emerald-700 深色:文本-emerald-300", + "32f417fe17": "text-emerald-700 dark:text-emerald-300", "8bfe65fc60": "使用本地命令", "8d6c56bff8": "运行两者", "0fa21e19ec": "工作区的名称,通常基于分支名称。", @@ -6998,7 +6998,7 @@ "a05bc9183f": "保存预设", "2d7d45e991": "取消", "c240a16f25": "使用仓库相对路径,例如packages/web 或apps/api。", - "fde7ff2cc3": "包/网络共享/ui", + "fde7ff2cc3": "packages/web shared/ui", "caf33029cc": "目录", "3b6f1abd3e": "例如仅限网络", "a6fcdd9e3c": "名称", @@ -8287,7 +8287,7 @@ "compareAgainstUpstreamDescription": "选择源代码管理在比较已提交变更时默认使用的基准。分支上游会自动跟随当前分支;如果没有上游,则回退到仓库默认分支。你仍然可以在对应 worktree 的 Git 面板中按 worktree 更改对比基准。Pull Request 和变基目标不会改变。", "compareBase": "对比基准", "currentBranch": "当前分支", - "upstream": "上游", + "upstream": "upstream", "localChanges": "本地变更", "originMaster": "origin/master", "committedChanges": "已提交的更改", @@ -8413,7 +8413,7 @@ "ac0a985873": "模拟器技能", "9353854ff3": "Orca 模拟器", "d4b7833894": "Orca CLI", - "84e5706975": "服务SIM卡", + "84e5706975": "serve-sim", "7c5a8a2bee": "Xcode", "bec7231663": "平板电脑", "49727355a3": "iPhone", @@ -8613,7 +8613,7 @@ "repository": { "search": { "bc7e504b8e": ".orca/issue-command", - "603c68b68c": "Orca.yaml", + "603c68b68c": "orca.yaml", "9dc60d7f6d": "GitHub", "ec70364df2": "工作流程", "66b584bd6c": "issue 命令", @@ -10971,7 +10971,7 @@ "9fffaf17c1": "切换右侧边栏 ({{value0}})", "b37ff4a89a": "端口", "9f83375839": "检查", - "6306b48afd": "源代码控制", + "6306b48afd": "source-control", "ef182dcb12": "搜索", "fc3095d2ed": "资源管理器", "aiVaultSessionHistory": "智能体", @@ -12106,7 +12106,7 @@ "0f8481e1a7": "发送给 Claude", "3d2352f94b": "描述一下变化……", "d8856b604a": "div.pricing-grid > div.card.starter:nth-of-type(1) > a.cta", - "7da6eed7bf": "本地主机:3000", + "7da6eed7bf": "localhost:3000", "0a2bd01c02": "新浏览器选项卡", "04096318ab": "终端 1", "eb88125c6f": "✓ 已验证 — 免费试用仍然有效。", @@ -12161,19 +12161,19 @@ "ef8b164dd1": "审查 src/auth", "952d3ddd9a": "会话开始", "771d8881c2": "claude", - "6ed43cb0e0": "仪表板规格.ts", - "24fedd5a52": "登录规范", + "6ed43cb0e0": "dashboard.spec.ts", + "24fedd5a52": "login.spec.ts", "8279e9d95b": "运行 12 项测试", - "6218a9014d": "pnpm剧作家测试", - "04d54d50ec": "Orca·zsh", + "6218a9014d": "pnpm playwright test", + "04d54d50ec": "orca · zsh", "1aa8a9a24a": "可拆分终端", "2a7cfc82c8": "链接到 GH #1842", "3822d8d14b": "修复/worktree-picker-截断", - "d54aefe09e": "林-329", + "d54aefe09e": "LIN-329", "40bbd92ef4": "开始", "c1f28c03b2": "工作树选择器截断", "fc0cc0b267": "GH #1842", - "0688842445": "GH#1799", + "0688842445": "GH #1799", "bee6b4088d": "GitHub 和 Linear 任务", "5171768676": "协调3个智能体", "cebc7769cd": "重新设计身份验证流程", @@ -12308,9 +12308,9 @@ "623881d72e": "checkout.spec.ts", "5c5cbd783f": "(1.2秒)", "3261c6853b": "› 可以登录", - "defe550fe2": "登录规范", + "defe550fe2": "login.spec.ts", "0b20782e0f": "使用 4 名工作人员运行 12 项测试", - "4371cc9931": "pnpm剧作家测试", + "4371cc9931": "pnpm playwright test", "16877e038d": "向下拆分", "a2b114dad0": "向右拆分 ·", "0bc9ad0cd1": "同一窗格:", @@ -12441,7 +12441,7 @@ "9220794f6a": "处理中" }, "ReviewAnimatedVisual": { - "8df4d52b68": "PR视图", + "8df4d52b68": "pr-view", "8ab622e4d6": "笔记" }, "FeatureWallBrowserAction": { @@ -12717,7 +12717,7 @@ "19c45cfdc0": "全部展开", "982d14bfa5": "打开未提交的差异", "3d909843bb": "打开分支差异", - "8368d256ec": "组合分支", + "8368d256ec": "combined-branch", "8f68ad9ca9": "显示 {{value0}} AI {{value1}}", "724a13568d": "在 {{value0}}", "6094135eec": "与 {{value0}}", @@ -12852,7 +12852,7 @@ "10ed04a685": "笔记本单元在本机上从笔记本文件夹执行本地 Python。仅运行您信任的文件中的单元。", "9e06ae5d36": "运行笔记本代码?", "d6f37a640b": "空笔记本", - "8c3b21369a": "nb格式", + "8c3b21369a": "nbformat", "329764e9fc": "BETA", "15ec40a735": "保存笔记本", "07e7d96612": "细胞", @@ -12909,7 +12909,7 @@ "8f4d2c1a9b": "调整目录大小" }, "MarkdownTemplatePicker": { - "22cd94426f": "无标题.md", + "22cd94426f": "untitled.md", "6e2e6c04ad": "空白 Markdown", "df667919ca": "没有匹配的模板。", "22fd4890ad": "搜索模板...", diff --git a/src/renderer/src/i18n/technical-literal-catalog-values.test.ts b/src/renderer/src/i18n/technical-literal-catalog-values.test.ts new file mode 100644 index 00000000000..c286d80858e --- /dev/null +++ b/src/renderer/src/i18n/technical-literal-catalog-values.test.ts @@ -0,0 +1,79 @@ +import { describe, expect, it } from 'vitest' + +import en from './locales/en.json' +import es from './locales/es.json' +import ko from './locales/ko.json' +import zh from './locales/zh.json' + +const repairedEntries = [ + ['es', 'auto.components.sidebar.AddRepoCreateStep.0ae45b8238'], + ['es', 'auto.components.settings.IntegrationsPane.e74de656ce'], + ['es', 'auto.components.settings.IntegrationsPane.51000487c4'], + ['es', 'auto.components.settings.RepositoryHooksSection.925f9e0dc4'], + ['es', 'auto.components.settings.RepositoryHooksSection.c90b858573'], + ['es', 'auto.components.settings.RepositoryHooksSection.32f417fe17'], + ['es', 'auto.components.settings.RepositoryIconPicker.03ca1a4e9b'], + ['es', 'auto.components.right.sidebar.index.6306b48afd'], + ['es', 'auto.components.feature.wall.ReviewAnimatedVisual.8df4d52b68'], + ['es', 'auto.components.editor.CombinedDiffViewer.8368d256ec'], + ['es', 'auto.components.editor.MarkdownTemplatePicker.22cd94426f'], + ['ko', 'auto.components.terminal.pane.stale.agent.row.090d607412'], + ['ko', 'auto.components.settings.IntegrationsPane.51000487c4'], + ['ko', 'auto.components.settings.git.search.upstream'], + ['ko', 'auto.components.right.sidebar.index.6306b48afd'], + ['ko', 'auto.components.feature.wall.FeatureWallSetupWorkflowActions.5c5b65044e'], + ['ko', 'auto.components.editor.CombinedDiffViewer.8368d256ec'], + ['ko', 'auto.components.editor.MarkdownTemplatePicker.22cd94426f'], + ['zh', 'auto.lib.terminal.shortcut.capture.notification.0ab0cd001a'], + ['zh', 'auto.components.github.IssueSourceSelector.643d7e9496'], + ['zh', 'auto.components.sparse.SparseCheckoutPresetSelect.ddbcaef7be'], + ['zh', 'auto.components.sidebar.AddRepoCreateStep.0ae45b8238'], + ['zh', 'auto.components.settings.AutoRenameBranchFromWorkSetting.800edb1e54'], + ['zh', 'auto.components.settings.AutoRenameBranchPromptEditor.ebb942a2ec'], + ['zh', 'auto.components.settings.BaseRefPicker.915ad97875'], + ['zh', 'auto.components.settings.IntegrationsPane.e74de656ce'], + ['zh', 'auto.components.settings.IntegrationsPane.51000487c4'], + ['zh', 'auto.components.settings.RepositoryHooksSection.39da2ae12f'], + ['zh', 'auto.components.settings.RepositoryHooksSection.925f9e0dc4'], + ['zh', 'auto.components.settings.RepositoryHooksSection.c90b858573'], + ['zh', 'auto.components.settings.RepositoryHooksSection.32f417fe17'], + ['zh', 'auto.components.settings.SparsePresetSettingsSection.fde7ff2cc3'], + ['zh', 'auto.components.settings.git.search.upstream'], + ['zh', 'auto.components.settings.mobile.emulator.search.84e5706975'], + ['zh', 'auto.components.settings.repository.search.603c68b68c'], + ['zh', 'auto.components.right.sidebar.index.6306b48afd'], + ['zh', 'auto.components.feature.wall.BrowserAnimatedVisual.7da6eed7bf'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.6ed43cb0e0'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.24fedd5a52'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.6218a9014d'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.04d54d50ec'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.d54aefe09e'], + ['zh', 'auto.components.feature.wall.FeatureTourPreview.0688842445'], + ['zh', 'auto.components.feature.wall.WorkbenchAnimatedVisual.defe550fe2'], + ['zh', 'auto.components.feature.wall.WorkbenchAnimatedVisual.4371cc9931'], + ['zh', 'auto.components.feature.wall.ReviewAnimatedVisual.8df4d52b68'], + ['zh', 'auto.components.editor.CombinedDiffViewer.8368d256ec'], + ['zh', 'auto.components.editor.IpynbViewer.8c3b21369a'], + ['zh', 'auto.components.editor.MarkdownTemplatePicker.22cd94426f'] +] as const + +const catalogs = { es, ko, zh } as const + +function readValue(catalog: object, key: string): unknown { + return key.split('.').reduce((value, part) => { + if (typeof value !== 'object' || value === null || Array.isArray(value)) { + return undefined + } + return (value as Record)[part] + }, catalog) +} + +describe('technical literal catalog repairs (#13121)', () => { + it('keeps every repaired value identical to English', () => { + expect(repairedEntries).toHaveLength(49) + + for (const [locale, key] of repairedEntries) { + expect(readValue(catalogs[locale], key), `${locale}:${key}`).toBe(readValue(en, key)) + } + }) +})