Skip to content

i18n: harmonize terminology and register across all locales - #224

Merged
mahlernim merged 1 commit into
mainfrom
chore/harmonize-translations
Sep 3, 2026
Merged

i18n: harmonize terminology and register across all locales#224
mahlernim merged 1 commit into
mainfrom
chore/harmonize-translations

Conversation

@mahlernim

Copy link
Copy Markdown
Owner

Full review pass over all eight translated string files, fixing content errors and settling the terminology and formality choices that had drifted apart.

Content errors

Locale Problem
zh-rTW export_help_message told users to look for a file named 「時間軸.json」. The literal filename Timeline.json had been translated, so the instructions pointed at a file that does not exist. Same string also gave the wrong iPhone menu path (位置和隱私權 instead of 個人內容).
fr export_help_message had a stray character: OSur iPhone.
fr privacy_summary and map_privacy_message said the file is never téléchargé, which reads as "downloaded". The claim is about upload. Now envoyé.
pt-BR Same bug: "nunca é carregado" (upload) sat next to "Antes de carregar" (load). One word, two opposite meanings, adjacent strings.
de, fr, pt-BR default_title used the wrong gender for Timeline ("Mein Timeline", "Mon Timeline", "Meu Timeline"); de default_title_template still carried the English possessive {name}\'s Timeline.
de Mistranslations: share = Aktie (stock certificate), cancel = Stornieren (cancel an order), plus "Laden Timeline", "Abschlussvideo" and a broken CARTO sentence.

Formality register

German mixed 68 formal Sie strings against 29 informal du strings, the split falling roughly along old UI versus the newer journal and onboarding copy. Now uniformly du, matching Google's own German UI convention and the app's personal tone.

Spanish had the same split in reverse (13 usted against 67 , including timeline_setup_summary which switched register mid-sentence). Now uniformly .

"Timeline" terminology

Every locale mixed the Latin word with a localized equivalent for the same Google Maps feature. Each locale now uses one term, picked by majority:

Locale Before Now
de Timeline 50 / Zeitachse, Zeitleiste, Chronik 19 Timeline
es Timeline 58 / cronología, línea de tiempo 13 Timeline
fr Timeline 60 / chronologie 10 Timeline
ja タイムライン 59 / Timeline 4 タイムライン
ko 타임라인 59 / Timeline 9 타임라인
pt-BR Linha do tempo 39 / Timeline 31 Linha do tempo
zh-rCN 时间轴 40 / 时间线, Timeline 16 时间轴
zh-rTW 時間軸 66 / Timeline 1 時間軸

Timeline.json and Timeline Visualizer stay literal everywhere. pt-BR was the worst case and also flipped Timeline's grammatical gender between strings; feminine a Linha do tempo throughout resolves both problems at once.

Other single-locale splits

Each collapsed to one term: de Rückblick vs Zusammenfassung, de Reise vs Ausflug, ja 要約 vs まとめ, pt Recapitulação vs Resumo vs Retrospectiva, es four renderings of "preset" (now preajuste, which also stops colliding with Ajustes = Settings), ko 프리셋 vs 사전 설정, zh-rTW 預設組合 vs 預設, zh-rCN/rTW 行程 vs 旅行 for "trip".

Typography

es and zh-rCN used ... where every other locale uses . zh-rCN was missing spaces around Latin text and had stray spaces after full-width punctuation. Three leftover "Google Maps" in zh-rCN/rTW became Google 地图 / 地圖.

Verification

  • python -m pytest tests/ -q — 89 passed
  • All eight locale files parse as XML, key parity with the source set is unchanged, and every %n$s placeholder set matches its English original
  • No unescaped apostrophes, literal newlines, or invalid escape sequences introduced

Not addressed

French uses bare carnet as shorthand for carnet de voyage in about 25 strings. It is consistent in kind and reads naturally, so it was treated as style rather than error.

app/src/journalLab/res/values/strings.xml duplicates 13 strings byte-for-byte from main. Because the flavor overrides main, translations drift silently, and the de and es copies had already gone stale during this pass (resynced here by hand). Removing that duplication is worth a separate change.

Fix content errors, unify per-locale terminology, and settle the
formality register in every translated string file.

Content errors:
- zh-rTW export help told users to look for a file named 時間軸.json;
  the literal Timeline.json filename had been translated. The same
  string also gave the wrong iPhone menu path.
- fr export help had a stray character (OSur iPhone).
- fr and pt-BR privacy strings used the verb for "download" where the
  claim is about upload. In pt-BR the same word appeared with both
  meanings in adjacent strings.
- de, fr and pt-BR default video titles used the wrong gender for
  Timeline; de still carried the English possessive in the template.
- de had several mistranslations: cancel rendered as Stornieren, plus
  a few broken machine-translated sentences.

Register: German was split 68 formal against 29 informal, roughly
along old UI versus newer journal and onboarding copy. It is now
uniformly informal. Spanish had the same split in reverse and is now
uniformly informal too.

Terminology: every locale mixed the Latin word Timeline with a
localized equivalent for the same Google Maps feature. Each locale now
uses one term, chosen by majority. Timeline.json and Timeline
Visualizer stay literal everywhere. Also collapsed single-locale
splits for recap, trip and preset, and normalized ellipsis characters,
CJK spacing and the Google Maps brand name.
@mahlernim
mahlernim force-pushed the chore/harmonize-translations branch from 451e549 to 403f04f Compare September 3, 2026 23:36
@mahlernim
mahlernim merged commit 83aed1b into main Sep 3, 2026
5 checks passed
@mahlernim
mahlernim deleted the chore/harmonize-translations branch September 3, 2026 23:47
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.

1 participant