Repository navigation
UI: add the Ukrainian translation - #31
Merged
Merged
Conversation
The first translation, and a worked example for translators:
src/cheevos/res/lang/Ukrainian.json covers all 204 strings, with
one/few/many forms wherever a count needs them.
- Texts with several numbers put a label before each ("Хардкор: 7 ·
Казуал: 24"): one template can't agree with every number.
- Sort orders read as orders on their own ("За назвою"), so the
options popup's lines fit. PyUI's popup is a fixed image half the
screen wide and doesn't clip its text.
- Profile: the "Games by console" columns widen to fit their titles.
Each was a sixth of the width, so Ukrainian's titles touched at
640x480, and English's "Beaten" and "Mastered" ran together at
480x800. Other English screens are unchanged.
- Docs: Ukrainian replaces Catalan in the runnable examples (no
Catalan file exists). "Translating" in CONTRIBUTING.md adds what
this translation ran into: texts with several numbers, the popup's
width, and the showcase drill for screens the walk-through misses.
abalakh
added a commit
that referenced
this pull request
Nov 1, 2026
A line holding several counts was one template, so it couldn't agree with each number: Ukrainian needs "1 хардкорне" but "7 хардкорних", and English showed "1 games cached" and "1 RetroPoints". #31 worked around it in Ukrainian with labels ("Хардкор: 7 · Казуал: 24"). Each count is now its own Plural, and the line only places them, so a translation can reorder them too: - PROFILE_POINTS: HARDCORE_POINTS, CASUAL_POINTS, RETRO_POINTS - GAMES_SUMMARY: GAME_COUNT, FINISHED_COUNT - STAT_UNLOCKS_VALUE: STAT_UNLOCKS_HARDCORE, STAT_UNLOCKS_CASUAL - STAT_BEATEN_VALUE: STAT_BEATEN_RETAIL ({count} became {beaten}) - PROXY_STATUS: PROXY_WAITING, PROXY_CACHED - DETAIL_META: RETRO_POINTS English reads as before, except where a count is 1 ("1 RetroPoint", "1 game cached"). Ukrainian uses the new forms on Home ("4 210 хардкорних · 385 казуальних"), in the RAOfflineProxy row ("2 гри в кеші") and for retail games ("1 офіційна"). The profile's unlocks cell keeps bare numbers: its title names the modes, and adjectives don't fit in half the screen. CONTRIBUTING.md drops the label workaround, .agents/code.md asks for one Plural per count, and .agents/product.md says why.
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.
The first translation, and a worked example for translators: src/cheevos/res/lang/Ukrainian.json covers all 204 strings, with one/few/many forms wherever a count needs them.