From 91b9bec9264221b1fe07c65a2f9d053b35d5ae5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 23 Aug 2026 05:18:14 +0000 Subject: [PATCH] localization: a label quoted from another product's UI is an identifier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sonnet stopped phase 2 on GoogleOAuthConfig.tsx, where 55 of 67 strings are quoted from Google's own console — 'Click Enable', 'set App name'. It called it an editorial choice and asked. It is not a choice; it is already covered by the principle the never-translate list is built on, and the list just did not say so. Those labels read like prose and behave like identifiers: their whole job is to match what the reader sees on Google's screen, and Google localises by the reader's Google account language rather than ours. Translating them sends somebody hunting for 'Ativar' in a console that says 'Enable'. So: translate the prose around them, leave the label in English, and do not key it with identical values on both sides — a key whose two halves can never legitimately differ is a maintenance cost bought for nothing. Co-Authored-By: Claude Opus 5 --- docs/localization.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/localization.md b/docs/localization.md index 1d9c7622..57a5af9b 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -262,6 +262,18 @@ Getting this wrong is worse than missing a string, because it corrupts data or b - **Agent and chat output.** Whatever Claude or opencode wrote. It is content. - **User content** — file names, paths, terminal output, code, commit messages, note bodies. +- **A label quoted from ANOTHER product's interface.** "Click **Enable**", "set **App name**", "choose + **Internal**" in a setup guide. These read like prose and are identifiers: their whole job is to match + what the reader will actually see on Google's screen, and Google localises by the reader's _Google_ + account language, not by ours. Translating them sends somebody hunting for "Ativar" in a console that + says "Enable". + + So translate the connective prose around them and leave the quoted label in English. Do not key it with + identical values in both catalogs either — that is a key whose two sides can never legitimately differ, + which is a maintenance cost bought for nothing. + + Decided 2026-08-23 on `GoogleOAuthConfig.tsx`, where 55 of the file's 67 strings are of this kind. + - **Identifiers that cross a boundary** — route paths, permission keys (`registry.ts`), error _codes_ (the code is the key; its message is what gets translated), app ids, sidecar names, PM2 process names, database values.