Skip to content

i18n: complete the Polish translation (pl.yaml) - #1476

Open
masiarek wants to merge 1 commit into
Equal-Vote:mainfrom
masiarek:i18n/polish-translation
Open

i18n: complete the Polish translation (pl.yaml)#1476
masiarek wants to merge 1 commit into
Equal-Vote:mainfrom
masiarek:i18n/polish-translation

Conversation

@masiarek

@masiarek masiarek commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Description

Fills in the Polish translation. pl.yaml was a truncated copy of en.yaml — it stopped partway through the keyword: section, and of the 205 keys it did contain, only 39 held actual Polish text (~5% real coverage). This brings it to all 844 keys.

Register is impersonal/neutral throughout (Głosuj, Wyślij, Wybierz), falling back to Ty only where a personal form is unavoidable. Besides matching Polish web-UI convention, this sidesteps the masculine/feminine past-tense forms a ty register would force on every confirmation string (zagłosowałeś / zagłosowałaś).

Polish-specific handling

  • Plurals. Polish has four i18next plural categories, so winner.winner and results_ext.voter_profile_count gained _few and _many alongside _one / _other.

  • spelled_numbers now holds accusative masculine-personal forms (jednego, dwóch, trzech, …) so that {{spelled_count}} $t(winner.winner) renders as jednego zwycięzcę / dwóch zwycięzców.

  • number.rank_ordinal_* all map to {{count}}. — Polish ordinals don't vary by suffix. Same approach pt-BR.yaml takes.

  • Time zones use Polish exonyms where one is standard (Londyn, Wiedeń, Kijów, Rzym, Stambuł); names with no established Polish form are left as-is.

One thing worth discussing: declension vs. the keyword system

useSubstitutedTranslation injects {{election}}, {{candidate}}, {{ballot}} etc. in the nominative case only, and swaps between election terms (wybory, kandydat) and poll terms (ankieta, opcja). Those two sets differ in both gender and number, so a sentence built around the placeholder cannot agree with both:

Te {{election}} wykorzystują… → "Te wybory wykorzystują" ✅ but "Te ankieta wykorzystują" ❌

Where possible I rephrased so only the nominative is needed, often with an appositive dash:

single_candidate_result: '{{name}} — {{capital_candidate}} bez konkurencji, wygrywa automatycznie'
start_time: '{{capital_election}} — początek: {{datetime, datetime}}'

Where no natural phrasing existed, the placeholder is dropped in favour of correct Polish, losing the election/poll distinction for that string. All such spots are marked with # PL: comments in the file — 60 strings in total.

This isn't a Polish quirk; it will hit Czech, Slovak, Russian, and Ukrainian the same way. If translations for those are wanted later, it may be worth letting a locale supply case forms (e.g. keyword.election.election_loc / _gen) rather than a single nominative. Happy to open a separate issue for that if it's useful.

Drive-by bug in en.yaml

tabulation_logs.star.pairwise_advance_to_runoff has {{runner_up_votes} — a missing closing brace, so it renders literally in English today. The Polish string uses the correct placeholder; en.yaml still needs the same fix. Left out of this PR to keep it translation-only — say the word and I'll add it.

Screenshots / Videos (frontend only)

Not included — this changes translation data only, no components or layout. Happy to add before/after captures of the ballot and results pages in pl if you'd like them for the record.

Related Issues

Fixes #762

The existing pl.yaml was a truncated copy of en.yaml: it stopped at the
keyword: section, and of the 205 keys it did contain only 39 held Polish
text (~5% real coverage).

This fills in all 844 keys from en.yaml.

Polish-specific handling:

- Register is impersonal/neutral ("Głosuj", "Wyślij"), using "Ty" only
  where a personal form is unavoidable. This also sidesteps the
  masculine/feminine past-tense forms that a "ty" register would force.

- Plurals: Polish has four i18next categories, so winner.winner and
  results_ext.voter_profile_count gained _few and _many alongside
  _one/_other.

- spelled_numbers now holds accusative masculine-personal forms
  (jednego, dwóch, trzech, …) so that "{{spelled_count}} $t(winner.winner)"
  renders as "jednego zwycięzcę" / "dwóch zwycięzców".

- number.rank_ordinal_* all map to "{{count}}." — Polish ordinals do not
  vary by suffix (same approach as pt-BR.yaml).

- keyword nouns are injected in the nominative only, but Polish declines.
  Strings are therefore phrased to need the nominative alone, often via an
  appositive dash ("{{name}} — {{capital_candidate}} bez konkurencji").
  Where no nominative phrasing was natural, the placeholder was dropped in
  favour of correct Polish; those spots are marked with "# PL:" comments.

- Time zones use Polish exonyms where one is standard (Londyn, Wiedeń,
  Kijów, Rzym); names without an established Polish form are left as-is.

Also fixes a typo carried over from en.yaml: tabulation_logs.star.
pairwise_advance_to_runoff had "{{runner_up_votes}" with a missing closing
brace. The Polish string uses the correct placeholder; en.yaml still needs
the same fix.

Refs Equal-Vote#762

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

netlify Bot commented Aug 4, 2026

Copy link
Copy Markdown

Deploy Preview for bettervoting ready!

Name Link
🔨 Latest commit f1d9777
🔍 Latest deploy log https://app.netlify.com/projects/bettervoting/deploys/6a71de7935299d00088976ab
😎 Deploy Preview https://deploy-preview-1476--bettervoting.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e30fd8fe-d5fb-42f7-8ed0-0a1eebeb6f39

📥 Commits

Reviewing files that changed from the base of the PR and between 15289d3 and f1d9777.

📒 Files selected for processing (1)
  • packages/frontend/src/i18n/pl.yaml

📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Added comprehensive Polish translations across voter flows, ballots, voting methods, results, navigation, administration, emails, help content, warnings, and time zones.
    • Improved Polish grammar, pluralization, ordinal formatting, terminology, and placeholder phrasing throughout the interface.

Walkthrough

The Polish localization was comprehensively replaced. It now covers voter flows, ballots, voting methods, results, navigation, landing pages, administration, emails, help content, warnings, wizard flows, archive uploads, and time zones. Polish plural and ordinal forms were added. Placeholders and election-versus-poll terminology were updated.

Poem

I’m a rabbit with Polish words in my pack,
Ballots and results now speak back.
Plurals hop neatly,
Time zones sit sweetly,
And every translation stays on track.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: completing the Polish translation in pl.yaml from partial to comprehensive coverage.
Description check ✅ Passed The description provides comprehensive information on changes, Polish-specific handling, declension considerations, and a known typo in en.yaml, matching the template structure.
Linked Issues check ✅ Passed The PR directly addresses issue #762 by completing the Polish translation of pl.yaml with all 844 keys translated, following the translation requirements specified in the linked issue.
Out of Scope Changes check ✅ Passed All changes remain within scope: the PR modifies only pl.yaml to complete the Polish translation as required by issue #762, with no unrelated code alterations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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.

Add Polish translation - BetterVoting website

1 participant