Skip to content

Add missing Speak/Type/Swap languages strings to all locales - #148

Merged
2sem merged 1 commit into
mainfrom
fix/missing-localized-strings
Aug 31, 2026
Merged

2sem merged 1 commit into
mainfrom
fix/missing-localized-strings

Conversation

@2sem

@2sem 2sem commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Summary

"Speak", "Type" and "Swap languages" are referenced in the UI but were missing from every Localizable.strings file, so all 13 locales fell back to the English key.

"Type" and "Speak" are visible on-screen text — they label the mode selector at the top of the translation screen, which has been rendering in English for every non-English user. This is the user-facing part of the fix.

"Swap languages" is VoiceOver-only and is never drawn on screen. It is the accessibility label on two glyph-only buttons: the ↑↓ circle centered in DuoTableModeView, and the circle between the YOU / THEM columns in LanguageSelectionScreen. Sighted users see only the arrow; a Korean VoiceOver user currently hears "Swap languages" in English and will hear 언어 바꾸기 after this change.

Adds the three keys to all 13 locales. No code change — the call sites already exist on main.

Locale Speak Type Swap languages
Base Speak Type Swap languages
de Sprechen Tippen Sprachen tauschen
es Hablar Escribir Intercambiar idiomas
fr Parler Saisir Inverser les langues
id Bicara Ketik Tukar bahasa
it Parla Scrivi Scambia lingue
ja 話す 入力 言語を入れ替える
ko 말하기 입력 언어 바꾸기
ru Голос Ввод Поменять языки местами
th พูด พิมพ์ สลับภาษา
vi Nói Nhập Hoán đổi ngôn ngữ
zh-Hans 语音 输入 交换语言
zh-Hant-TW 語音 輸入 交換語言

Provenance

These strings were written while working on #147 (landscape compose-focus layout). That PR is being closed — it caused a rotation hang and a focus/keyboard failure that reproduce on device — but the missing-localization bug it uncovered is real, pre-existing on main, and independent of any layout work. This PR salvages only that part: strings only, no layout or view changes.

Test plan

  • mise x -- tuist build → succeeded
  • mise x -- tuist test --no-selective-testing → 10/10 TalktransTests pass
  • Diff is additions only: 5 lines per file across 13 files, 0 removals. 39 key occurrences = 3 keys × 13 locales.
  • Worth a native-speaker glance at the translations above before merge, particularly ru "Голос" (literally "voice" — chosen over "Говорить" to match the short toggle-label style) and the zh-Hans / zh-Hant-TW pair.

"Speak", "Type" and "Swap languages" were already referenced in the UI
but had no entry in any Localizable.strings file, so every locale fell
back to the English key. The Type/Speak mode selector is visible text,
not just an accessibility label, so non-English users have been seeing
English toggle labels.

Adds all three keys to all 13 locales. No code change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FkRuJrdYaxQVeLiKNhLmgf
@2sem
2sem merged commit c220eb5 into main Aug 31, 2026
@2sem
2sem deleted the fix/missing-localized-strings branch August 31, 2026 14:18
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