Add Turkish interface language - #345
Merged
artcc merged 2 commits intoSep 24, 2026
Merged
Conversation
Add a complete Turkish (tr) message catalog and register tr as a supported interface locale and native language across the frontend and backend: locale lists, browser-language detection, registration, settings and admin selectors, schema validation, voice session titles, lesson feedback, and transactional email templates. Turkish capitalizes language names, so tr is added to the capitalization set in formatLanguageName (lowercasing would also turn "İ" into a dotted "i̇"). The dashboard announcement keeps its existing ten stored locales; Turkish users fall back to the English translation.
Owner
|
Thank you for adding Turkish support and for the thorough work across the UI translations and backend! I’ll take care of merging the PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Turkish (
tr) as a new interface language and native-language option.Changes
messages/tr.json: all 1,542 keys translated, with the same key order and structure asen.json. Placeholders, ICU plurals and HTML/rich-text tags are unchanged.languages.tradded to every existing catalog ("Turkish", "Türkisch", "Турецкий", …) so the selectors can label the new option.tradded toSUPPORTED_LOCALES, the browser-language auto-detection script inlayout.tsx, and the native-language lists in register, Settings and Admin → Users.formatLanguageName:tradded toLOCALES_CAPITALIZE_LANGUAGE. Turkish capitalizes language names, andtoLowerCase()would also turn "İ" into a dotted "i̇".tradded toSUPPORTED_LANGUAGESandSUPPORTED_UI_LOCALES(schemas/auth.py) and to the admin native-language set.tr. New tests cover the Turkish voice session title and the Turkish onboarding goals subtitle.specs/platform.instructions.mdandspecs/api-endpoints.instructions.md. Added an entry toCHANGELOG.md→ Unreleased.Out of scope: the dashboard announcement. Its translations are stored as exactly ten locales (JSONB validated by
DashboardBannerTranslations), and addingtrwould make existing stored banners fail validation without a data migration.DashboardAnnouncementalready falls back to English, so Turkish users see the English announcement. I'm happy to addtrthere in a follow-up if you'd like to handle the migration.Testing
messages/tr.jsonchecked againsten.jsonwith a key/placeholder/ICU consistency script: 1,542 keys, no issuesnpm run lint✅,npx tsc --noEmit✅,npm run test:run✅ (60 files, 612 tests)pytest✅ (1,418 passed, coverage 85.86%)ruff checkandblack --checkon the changed backend files ✅.prettier --checkon the changed frontend files ✅This change was prepared with AI assistance and reviewed and tested by me.