Skip to content

UI: add the Ukrainian translation - #31

Merged
abalakh merged 1 commit into
spruceUI:masterfrom
abalakh:lang_ukrainian
Nov 1, 2026
Merged

abalakh merged 1 commit into
spruceUI:masterfrom
abalakh:lang_ukrainian

Conversation

@abalakh

@abalakh abalakh commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

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.
image image

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
abalakh merged commit ae6d4ef into spruceUI:master Nov 1, 2026
4 checks passed
@abalakh
abalakh deleted the lang_ukrainian branch November 1, 2026 16:59
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.
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