Skip to content

feat(localizations): complete uk-UA (Ukrainian) translations - #9344

Open
ex-vi wants to merge 4 commits into
clerk:mainfrom
ex-vi:feat/localizations-uk-ua-complete
Open

feat(localizations): complete uk-UA (Ukrainian) translations#9344
ex-vi wants to merge 4 commits into
clerk:mainfrom
ex-vi:feat/localizations-uk-ua-complete

Conversation

@ex-vi

@ex-vi ex-vi commented Aug 5, 2026

Copy link
Copy Markdown

Description

Completes the Ukrainian (uk-UA) localization: fills all 837 keys that were undefined in uk-UA.ts, bringing it to full parity with en-US.ts (1445/1445 keys). The only values left undefined are those that are undefined in en-US itself (server-fallback unstable__errors entries and signIn.start.subtitleCombined), so Clerk's fallback behavior is preserved.

Covered areas: configureSSO (full wizard, incl. Okta / Entra / Google / custom OIDC+SAML steps), billing (checkout, promo codes and discounts, subscription details, pricing table, payment methods), organizationProfile (billing + security pages), userProfile (billing page), oauthConsent, unstable__errors, reverification, taskSetupMfa, taskResetPassword, apiKeys, signIn / signUp, and the remaining top-level keys.

Conventions used:

  • Terminology and tone follow the pre-existing uk-UA translations (formal «ви»), 2019 Ukrainian orthography («автентифікація»).
  • All {{placeholders}} and markup are preserved verbatim, verified per key against en-US.
  • Third-party admin-console labels (Okta/Entra/Google UI steps) and technical IdP field names (Entity ID, SSO URL, Audience URI…) stay in English, matching what users see in those dashboards.
  • Date-filter locale arguments use 'uk-UA', following the cs-CZ / pl-PL precedent.
  • No previously-translated values are changed; key order is untouched.
  • Ukrainian inflects a noun differently after 2–4 and after 5+, and a single key cannot serve both. Where a key renders directly after a variable count, it uses a form that is valid for every count: the seat-breakdown strings drop the noun, and billing.months / billing.years use the invariant abbreviations «міс.» / «р.».

pnpm --filter @clerk/localizations generate is idempotent on this branch, and the community-contribution disclaimer comment is intact.

Rebased on latest main

Synced with main and translated the keys added since the last sync:

billing.months / billing.years are only ever rendered after a numeric count, through getBillingPeriodLabel, which is why they take the abbreviated form described above.

Both review comments from the earlier pass (seat-count pluralization and the dropped “instead” sense in footerActionLink__alternativePhoneCodeProvider) are addressed and unchanged by the sync.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments — n/a
  • (If applicable) Documentation — n/a

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation

@changeset-bot

changeset-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a3203ef

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
@clerk/localizations Patch
@clerk/ui Patch
@clerk/chrome-extension Patch
@clerk/swingset Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

@ex-vi is attempting to deploy a commit to the Clerk Production Team on Vercel.

A member of the Team first needs to authorize it.

@ex-vi
ex-vi marked this pull request as ready for review August 5, 2026 21:47
@coderabbitai

coderabbitai Bot commented Aug 5, 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: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 534f7ac6-752d-4dd5-bafc-3453e2d824d1

📥 Commits

Reviewing files that changed from the base of the PR and between dc7fab3 and a3203ef.

📒 Files selected for processing (2)
  • .changeset/uk-ua-complete-translations.md
  • packages/localizations/src/uk-UA.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • clerk/clerk_go (manual)
  • clerk/dashboard (manual)
  • clerk/accounts (manual)
  • clerk/backoffice (manual)
  • clerk/clerk (manual)
  • clerk/clerk-docs (manual)
  • clerk/cloudflare-workers (manual)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/uk-ua-complete-translations.md

Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review.


📝 Walkthrough

Walkthrough

Completes Ukrainian translations in packages/localizations/src/uk-UA.ts across administrative, authentication, billing, organization, profile, security, passkey, Web3-wallet, and error-message areas. Existing English strings remain unchanged. Adds a patch Changeset for @clerk/localizations.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to a3203

This PR completes the Ukrainian localization without any supplied actionable merge-blocking risk; it is merge-ready after normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely identifies the main change: completing Ukrainian localization translations.
Description check ✅ Passed The description directly explains the Ukrainian localization updates, affected areas, parity with en-US, and validation steps.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/localizations/src/uk-UA.ts`:
- Line 896: Update the footerActionLink__alternativePhoneCodeProvider
translation to explicitly convey “instead” by using the specified Ukrainian
wording, and validate it against the current en-US base localization entry.
- Around line 184-187: Update the Ukrainian seatBreakdownIncludedPlural and
seatBreakdownPlural translations to avoid inflecting “місце” based on the
variable chargeable count, using wording that is grammatically valid for both
2–4 and 5+ seats while preserving the existing rate and total/included context.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: e5a8041c-f37a-4f25-ac42-1ab55ee60ce5

📥 Commits

Reviewing files that changed from the base of the PR and between f38cf02 and 892d3c0.

📒 Files selected for processing (2)
  • .changeset/uk-ua-complete-translations.md
  • packages/localizations/src/uk-UA.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • clerk/clerk_go (manual)
  • clerk/dashboard (manual)
  • clerk/accounts (manual)
  • clerk/backoffice (manual)
  • clerk/clerk (manual)
  • clerk/clerk-docs (manual)
  • clerk/cloudflare-workers (manual)

Comment thread packages/localizations/src/uk-UA.ts Outdated
Comment thread packages/localizations/src/uk-UA.ts Outdated
ex-vi and others added 2 commits August 6, 2026 16:50
…instead sense

Ukrainian inflects the noun after a number: 2-4 takes one form and 5+
takes another. One plural key cannot serve both, so the seat breakdown
now uses a count and a rate without the noun.

Five action links dropped the word instead from the base string. They
now keep that sense.
Resolve the conflicts in packages/localizations/src/uk-UA.ts and translate
the keys main added since the last sync:

- billing.checkout: addPromoCode, applyPromoCode, discount,
  promoCodePlaceholder, removePromoCode (clerk#9316)
- billing: discountAmount, discountCyclesRemaining, discountDuration,
  months, years (clerk#9316)
- unstable__errors.form_password_matches_identifier (clerk#9453)
- oauthConsent.scopeList.privateMetadata (clerk#9226)

billing.months and billing.years render only after a numeric count, via
getBillingPeriodLabel. Ukrainian takes one noun form after 2-4 and another
after 5+, so a single key cannot serve both. They use the invariant
abbreviations «міс.» and «р.», which are correct after any count. This
follows the convention already used for the seat-breakdown strings.
@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants