Skip to content

i18n(uk): add Ukrainian translation - #3

Merged
danst0 merged 3 commits into
danst0:mainfrom
Dymkom:main
Aug 16, 2026
Merged

danst0 merged 3 commits into
danst0:mainfrom
Dymkom:main

Conversation

@Dymkom

@Dymkom Dymkom commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Added Ukrainian localization strings for the application.
@Dymkom

Dymkom commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

@danst0,

Daniel and others added 2 commits August 16, 2026 16:10
The branch was written against v0.5.8. Since then `clipboard_log_template`
was dropped (v0.6.0, no longer logging password details) and the strength
tooltip added nine fields (v0.5.9), so `strings_uk` no longer compiled.

Drop the stale field, translate the tooltip strings, and use a decimal
comma as Ukrainian does. Also list Ukrainian in the README and restore
the newline before the closing </description> tag.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
danst0 pushed a commit that referenced this pull request Aug 16, 2026
PR #3 sat mergeable-but-broken for a week because nothing checked it: it
was written against v0.5.8 and `strings_uk` no longer matched the current
`I18nStrings`. A plain `cargo test` would have said so on day one.

Also validate the desktop entry and the AppStream metainfo, since both are
hand-edited for every new translation and only Flathub notices when they
are wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@danst0

danst0 commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Thank you for this, and sorry for the slow reply — the translation itself is good work, and the .desktop / metainfo updates were more thorough than I expected (you even fixed the missing newline at the end of the metainfo file).

The branch was based on v0.5.8, and two things changed in the meantime, so strings_uk no longer compiled against main:

  • clipboard_log_template was removed in v0.6.0 — the app no longer logs anything about the password to stdout.
  • v0.5.9 added the strength tooltip, which brought nine new fields to I18nStrings (chars_unit, entropy_label, bits_unit, crack_time_label, crack_time_note, strength_labels, time_units, time_instant, decimal_separator).

Git merged your branch cleanly, which is why it looked fine here — the breakage only shows up at compile time, and there was no CI to catch it. That's on me: I've added a workflow (cargo build/cargo test plus desktop-file-validate and appstreamcli validate) so the next translation PR gets told immediately.

Since "allow edits by maintainers" was enabled, I pushed the update to your branch rather than making you redo it. Two commits, no history rewritten, so a plain git pull will get them:

  • a merge of current main into your branch,
  • i18n(uk): bring the Ukrainian strings up to the current I18nStrings — drops the stale field, fills in the nine new ones, adds Ukrainian to the feature list in the README.

I would appreciate a second pair of eyes on the strings I added, since I don't speak Ukrainian and these are the ones I filled in rather than you:

chars_unit: "символів",
entropy_label: "Ентропія",
bits_unit: "біт",
crack_time_label: "Офлайнова атака",
crack_time_note: "Припущення: 10¹² спроб/с (швидке гешування, потужний GPU)",
strength_labels: ["Дуже слабкий", "Слабкий", "Прийнятний", "Надійний", "Дуже надійний"],
time_units: ["с", "хв", "год", "днів", "років"],
time_instant: "миттєво",
decimal_separator: ",",

They render as one tooltip on the password field, e.g. 20 символів · Ентропія 103,7 біт · Дуже надійний on the first line, then the expected offline attack time and the assumption behind it. The strength_labels describe a password (пароль), hence the masculine forms. I assumed a decimal comma — please correct me if that's wrong.

One question on your own strings: charset_section_label is "Складові", where the English is "Character sets" and the German "Zeichensätze". Would "Набори символів" be more accurate, or did you go with the shorter word deliberately because of the label width? Happy either way — you know the language, I only know the layout.

Once you've had a look at the wording I'll merge this and it'll go out with the next release.

@danst0
danst0 merged commit e872642 into danst0:main Aug 16, 2026
2 checks passed
danst0 pushed a commit that referenced this pull request Aug 16, 2026
- Merged the Ukrainian translation contributed by Dymkom in #3, brought up
  to the current I18nStrings: the strength tooltip strings were missing and
  the clipboard log string removed in v0.6.0 was still being set
- Added a CI workflow that builds, tests and validates the desktop entry and
  AppStream metadata on every push and pull request
@Dymkom

Dymkom commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

@danst0, hi! Thank you for the detailed explanation and for taking care of the updates. I see the PR is already merged! The new workflow for catching compilation errors sounds like a great addition.
Regarding your questions: yes, a decimal comma (,) is exactly right for Ukrainian. Also, for the charset_section_label, I deliberately used "Складові" instead of the direct translation "Набори символів". The latter sounds a bit too bureaucratic and stands out awkwardly in a modern interface, whereas "Складові" is shorter, cleaner, and fits the UI layout much better.
As for the new strings, chars_unit: "символів" is good. Just a minor note: Ukrainian has complex plural forms (1 символ, 2-4 символи, 5+ символів). Since a generated password will almost certainly be 5+ characters long, hardcoding "символів" is the safest and best fallback if the localization engine doesn't support pluralization logic. All other strings and technical terms (like Entropy) are spot on.
I just have one tiny adjustment for crack_time_note. To make it sound a bit more natural and fully localized, it would be better as:
crack_time_note: "Припущення: 10¹² спроб/с (швидкий алгоритм, потужний ГП)"
Thank you for your projects! I really like them, and it's a pleasure to use and contribute to them.

danst0 pushed a commit that referenced this pull request Aug 16, 2026
- crack_time_note now reads "швидкий алгоритм, потужний ГП" instead of
  "швидке гешування, потужний GPU", per review by Dymkom, who contributed
  the Ukrainian translation in #3
- The remaining strings I filled in were confirmed as correct, including
  the decimal comma and "Складові" for the character-set section
@danst0

danst0 commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Thank you — that's exactly the kind of review I was hoping for.

crack_time_note now reads as you suggested, and v0.6.3 is tagged and on its way to Flathub:

crack_time_note: "Припущення: 10¹² спроб/с (швидкий алгоритм, потужний ГП)",

"Складові" stays as you wrote it — the reasoning is a better argument than my dictionary lookup was, and it's your language.

On the plurals: you're right that there's no pluralization engine, the strings are plain &'static str. It turns out the hardcoded form is not just a safe fallback but always correct here — the length is the group count (1–10) times 5, so it's always a multiple of 5 between 5 and 50. Every one of those ends in 5 or 0, which takes the genitive plural, so символів is right for all ten possible lengths. Good to know it can't drift.

Thanks again for the translation and for coming back to check the strings I filled in.

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.

2 participants