Skip to content

Conversation

@wobsoriano
Copy link
Member

@wobsoriano wobsoriano commented Dec 12, 2025

Cherry-picked from PR #7436 and PR #7437 (branched off release/core-2).

This PR adds two new localization keys:

Summary by CodeRabbit

  • New Features
    • Added localized error messages across 40+ languages for temporary email address blocking and for incorrect password/email, providing clearer, language-specific feedback during sign-in and account creation flows.

✏️ Tip: You can customize this high-level summary in your review settings.

…er error localization keys

Cherry-picked from PR #7436 and PR #7437:
- Adds form_email_address_blocked localization key
- Adds form_password_or_identifier_incorrect localization key
@changeset-bot
Copy link

changeset-bot bot commented Dec 12, 2025

🦋 Changeset detected

Latest commit: 2dc01d7

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

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

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
Copy link

vercel bot commented Dec 12, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
clerk-js-sandbox Ready Ready Preview Comment Dec 12, 2025 7:55pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 12, 2025

Walkthrough

Adds two new localization error keys — form_email_address_blocked and form_password_or_identifier_incorrect — across the localization package for 44+ locales and updates the shared UnstableErrors TypeScript type. Also adds a changeset file.

Changes

Cohort / File(s) Summary
Localization - many locales
packages/localizations/src/*-*.ts (ar-SA, be-BY, bg-BG, bn-IN, ca-ES, cs-CZ, da-DK, de-DE, el-GR, en-GB, en-US, es-CR, es-ES, es-MX, es-UY, fa-IR, fi-FI, fr-FR, he-IL, hi-IN, hr-HR, hu-HU, id-ID, is-IS, it-IT, ja-JP, kk-KZ, ko-KR, mn-MN, ms-MY, nb-NO, nl-BE, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, ta-IN, te-IN, th-TH, tr-TR, uk-UA, vi-VN, zh-CN, zh-TW)
Added two new keys under unstable__errors: form_email_address_blocked and form_password_or_identifier_incorrect with locale-specific translations. No control-flow or logic changes.
Type Definition
packages/shared/src/types/localization.ts
Extended UnstableErrors type to include form_email_address_blocked: LocalizationValue and form_password_or_identifier_incorrect: LocalizationValue.
Changeset
.changeset/chilled-olives-cheer.md
Added changeset file (front-matter delimiters present).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10–20 minutes

  • Repetitive, consistent additions across many files reduce per-file scrutiny.
  • Check the updated UnstableErrors type and a handful of locale files for encoding/typo issues (e.g., non-Latin scripts).
  • Spot-check pl-PL for the noted property order change in taskResetPassword (cosmetic).

Possibly related PRs

Suggested reviewers

  • anagstef
  • chanioxaris
  • LauraBeatris

Poem

🐰 Across keyboards I hop and cheer,

Two new messages now appear.
Blocked emails and passwords amiss,
Translated wide for every bliss.
Types updated, carrots all near! 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: adding two new localization keys across multiple localization files and a shared type definition.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/port-localizations

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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 12, 2025

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7447

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7447

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7447

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7447

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7447

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7447

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@7447

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7447

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7447

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7447

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7447

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7447

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7447

@clerk/react

npm i https://pkg.pr.new/@clerk/react@7447

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7447

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7447

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7447

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7447

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@7447

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7447

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7447

commit: 2dc01d7

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 14

🧹 Nitpick comments (10)
packages/localizations/src/ca-ES.ts (1)

889-890: Keep tone consistent (informal “tu”) for form_email_address_blocked.
Current copy uses “utilitzeu / vostra”, while most of this locale uses “tu/teu”.

-    form_email_address_blocked:
-      'Els serveis de correu electrònic temporal no estan suportats. Si us plau, utilitzeu la vostra adreça de correu electrònic habitual per crear un compte.',
+    form_email_address_blocked:
+      'Els serveis de correu electrònic temporal no estan suportats. Si us plau, utilitza la teva adreça de correu electrònic habitual per crear un compte.',
packages/localizations/src/te-IN.ts (1)

895-896: Consider aligning “identifier” wording in form_password_or_identifier_incorrect with actual supported identifiers (email/username/phone).
Current Telugu copy only mentions email; if “identifier” can be username/phone in this flow, consider broadening the translation to avoid misleading users.

Also applies to: 914-915

packages/localizations/src/fa-IR.ts (1)

898-899: Consider broadening “email” to “email/identifier” wording for form_password_or_identifier_incorrect.
If users can sign in with non-email identifiers, the current Persian message may be overly specific.

Also applies to: 917-918

packages/localizations/src/he-IL.ts (1)

877-878: Consider aligning wording with “identifier” (not only email) if this error can trigger for non-email identifiers.
Current text is fine if the backend only emits this for email-based sign-in, but if “identifier” includes username/phone, the message may mislead.

packages/localizations/src/kk-KZ.ts (1)

897-898: Consider whether “identifier” can be phone/username; message currently says only email.
If this error is reused broadly, consider a more generic “электрондық пошта/пайдаланушы аты/телефон” equivalent.

packages/localizations/src/pt-PT.ts (1)

887-888: Consider making form_password_or_identifier_incorrect cover non-email identifiers too.

Current text says “endereço de e-mail”, but the key name suggests “identifier” (could be username/phone).

Also applies to: 906-907

packages/localizations/src/sk-SK.ts (1)

894-895: Consider whether “identifier” should be translated broader than “e-mailová adresa”.

If the product uses “identifier” for username/phone too, this message might be better aligned to that.

Also applies to: 913-914

packages/localizations/src/nl-BE.ts (1)

888-889: Consider aligning form_password_or_identifier_incorrect wording with “identifier” (not only email).

If users can sign in with username/phone, “identificatie/gebruikersnaam/e-mailadres” (or similar) may be more accurate than email-only.

Also applies to: 907-908

packages/localizations/src/ta-IN.ts (1)

895-896: Consider broadening form_password_or_identifier_incorrect beyond “email address”.

If “identifier” can be username/phone, the Tamil text may be more accurate if it doesn’t name email specifically.

Also applies to: 914-915

packages/localizations/src/de-DE.ts (1)

905-906: Optional: add German articles for a more natural error sentence.

-    form_password_or_identifier_incorrect:
-      'Passwort oder E-Mail-Adresse ist falsch. Versuchen Sie es erneut oder verwenden Sie eine andere Methode.',
+    form_password_or_identifier_incorrect:
+      'Das Passwort oder die E-Mail-Adresse ist falsch. Versuchen Sie es erneut oder verwenden Sie eine andere Methode.',

Also applies to: 924-925

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8c8873d and f5f191a.

📒 Files selected for processing (51)
  • .changeset/chilled-olives-cheer.md (1 hunks)
  • packages/localizations/src/ar-SA.ts (2 hunks)
  • packages/localizations/src/be-BY.ts (2 hunks)
  • packages/localizations/src/bg-BG.ts (2 hunks)
  • packages/localizations/src/bn-IN.ts (2 hunks)
  • packages/localizations/src/ca-ES.ts (2 hunks)
  • packages/localizations/src/cs-CZ.ts (2 hunks)
  • packages/localizations/src/da-DK.ts (2 hunks)
  • packages/localizations/src/de-DE.ts (2 hunks)
  • packages/localizations/src/el-GR.ts (2 hunks)
  • packages/localizations/src/en-GB.ts (2 hunks)
  • packages/localizations/src/en-US.ts (2 hunks)
  • packages/localizations/src/es-CR.ts (2 hunks)
  • packages/localizations/src/es-ES.ts (2 hunks)
  • packages/localizations/src/es-MX.ts (2 hunks)
  • packages/localizations/src/es-UY.ts (2 hunks)
  • packages/localizations/src/fa-IR.ts (2 hunks)
  • packages/localizations/src/fi-FI.ts (2 hunks)
  • packages/localizations/src/fr-FR.ts (2 hunks)
  • packages/localizations/src/he-IL.ts (2 hunks)
  • packages/localizations/src/hi-IN.ts (2 hunks)
  • packages/localizations/src/hr-HR.ts (2 hunks)
  • packages/localizations/src/hu-HU.ts (2 hunks)
  • packages/localizations/src/id-ID.ts (2 hunks)
  • packages/localizations/src/is-IS.ts (2 hunks)
  • packages/localizations/src/it-IT.ts (2 hunks)
  • packages/localizations/src/ja-JP.ts (2 hunks)
  • packages/localizations/src/kk-KZ.ts (2 hunks)
  • packages/localizations/src/ko-KR.ts (2 hunks)
  • packages/localizations/src/mn-MN.ts (2 hunks)
  • packages/localizations/src/ms-MY.ts (2 hunks)
  • packages/localizations/src/nb-NO.ts (2 hunks)
  • packages/localizations/src/nl-BE.ts (2 hunks)
  • packages/localizations/src/nl-NL.ts (2 hunks)
  • packages/localizations/src/pl-PL.ts (3 hunks)
  • packages/localizations/src/pt-BR.ts (2 hunks)
  • packages/localizations/src/pt-PT.ts (2 hunks)
  • packages/localizations/src/ro-RO.ts (2 hunks)
  • packages/localizations/src/ru-RU.ts (2 hunks)
  • packages/localizations/src/sk-SK.ts (2 hunks)
  • packages/localizations/src/sr-RS.ts (2 hunks)
  • packages/localizations/src/sv-SE.ts (2 hunks)
  • packages/localizations/src/ta-IN.ts (2 hunks)
  • packages/localizations/src/te-IN.ts (2 hunks)
  • packages/localizations/src/th-TH.ts (2 hunks)
  • packages/localizations/src/tr-TR.ts (2 hunks)
  • packages/localizations/src/uk-UA.ts (2 hunks)
  • packages/localizations/src/vi-VN.ts (2 hunks)
  • packages/localizations/src/zh-CN.ts (2 hunks)
  • packages/localizations/src/zh-TW.ts (2 hunks)
  • packages/shared/src/types/localization.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (10)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

All code must pass ESLint checks with the project's configuration

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.{js,jsx,ts,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Use Prettier for consistent code formatting

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
packages/**/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

TypeScript is required for all packages

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Follow established naming conventions (PascalCase for components, camelCase for variables)

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
packages/**/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

packages/**/src/**/*.{ts,tsx,js,jsx}: Maintain comprehensive JSDoc comments for public APIs
Use tree-shaking friendly exports
Validate all inputs and sanitize outputs
All public APIs must be documented with JSDoc
Use dynamic imports for optional features
Provide meaningful error messages to developers
Include error recovery suggestions where applicable
Log errors appropriately for debugging
Lazy load components and features when possible
Implement proper caching strategies
Use efficient data structures and algorithms
Implement proper logging with different levels

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.ts?(x)

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Use proper TypeScript error types

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/typescript.mdc)

**/*.{ts,tsx}: Always define explicit return types for functions, especially public APIs
Use proper type annotations for variables and parameters where inference isn't clear
Avoid any type - prefer unknown when type is uncertain, then narrow with type guards
Implement type guards for unknown types using the pattern function isType(value: unknown): value is Type
Use interface for object shapes that might be extended
Use type for unions, primitives, and computed types
Prefer readonly properties for immutable data structures
Use private for internal implementation details in classes
Use protected for inheritance hierarchies
Use public explicitly for clarity in public APIs
Use mixins for shared behavior across unrelated classes in TypeScript
Use generic constraints with bounded type parameters like <T extends { id: string }>
Use utility types like Omit, Partial, and Pick for data transformation instead of manual type construction
Use discriminated unions instead of boolean flags for state management and API responses
Use mapped types for transforming object types
Use conditional types for type-level logic
Leverage template literal types for string manipulation at the type level
Use ES6 imports/exports consistently
Use default exports sparingly, prefer named exports
Document functions with JSDoc comments including @param, @returns, @throws, and @example tags
Create custom error classes that extend Error for specific error types
Use the Result pattern for error handling instead of throwing exceptions
Use optional chaining (?.) and nullish coalescing (??) operators for safe property access
Let TypeScript infer obvious types to reduce verbosity
Use const assertions with as const for literal types
Use satisfies operator for type checking without widening types
Declare readonly arrays and objects for immutable data structures
Use spread operator and array spread for immutable updates instead of mutations
Use lazy loading for large types...

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use ESLint with custom configurations tailored for different package types

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
**/*.{js,ts,jsx,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use Prettier for code formatting across all packages

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/shared/src/types/localization.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
packages/localizations/**/*

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Organize localization translations in packages/localizations/ with support for 30+ languages and RTL language support

Files:

  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pl-PL.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (28)
  • GitHub Check: Unit Tests (**)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: Unit Tests (shared, clerk-js, RQ)
  • GitHub Check: Static analysis
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (48)
packages/shared/src/types/localization.ts (1)

1337-1343: LGTM: type surface updated consistently.

These additions to UnstableErrors match the new unstable__errors keys and should keep localization resources type-safe.

packages/localizations/src/mn-MN.ts (1)

888-889: The translation is correct. The English source copy in en-GB.ts explicitly states "Password or email address is incorrect," which the Mongolian translation faithfully reproduces. All 40+ locales consistently translate this message as "email address" rather than a generic "identifier," indicating this is the intentional product copy. The key name form_password_or_identifier_incorrect is generic, but the actual user-facing message is specifically email-focused, which may reflect the authentication context where this error is displayed.

packages/localizations/src/uk-UA.ts (1)

886-887: The Ukrainian translation at lines 905-906 is correct and consistent with all other locales in the codebase. No changes needed.

packages/localizations/src/be-BY.ts (1)

894-895: No changes needed — Belarusian translation correctly mirrors the canonical English implementation.

The translation accurately reflects the email-specific wording used across all other locales (en-GB, French, German, Spanish, Chinese, etc.). The "identifier" in the key name refers to code organization; the actual message is intentionally email-specific for this password authentication flow.

.changeset/chilled-olives-cheer.md (1)

1-2: No action needed. Empty changesets are valid in Changesets and this repo intentionally uses them for snapshot/pre-release workflows (as configured in .changeset/config.json). The commit message confirms this was created deliberately.

packages/localizations/src/da-DK.ts (1)

886-887: The Danish translation correctly matches the pattern established across all supported languages. The form_password_or_identifier_incorrect key is translated to "Adgangskoden eller e-mailadressen er forkert" in Danish, which directly mirrors equivalent translations in English (en-GB), German, French, Dutch, Portuguese, and 25+ other languages—all using "email" rather than a generic "identifier."

While the concern about identifier specificity is valid (documentation confirms identifiers can be username, phone, or email), this is a product-level design decision reflected consistently across all language translations, not a Danish translation issue. The existence of separate keys (form_identifier_exists__email_address, form_identifier_exists__phone_number, form_identifier_exists__username) confirms the system supports multiple identifier types, but the form_password_or_identifier_incorrect message intentionally uses email-specific language across all translations.

packages/localizations/src/th-TH.ts (1)

888-889: LGTM: additions are well-placed under unstable__errors and read naturally in Thai.

Also applies to: 906-906

packages/localizations/src/ms-MY.ts (1)

896-897: LGTM: messages are clear and consistent with surrounding Malay error copy.

Also applies to: 916-917

packages/localizations/src/he-IL.ts (1)

896-896: Message is clear; verify it matches the surfaces where “identifier” can be non-email.
If this is used for username/phone sign-in too, consider mentioning “email/username/phone” (or a more generic “פרטי התחברות”).

packages/localizations/src/ro-RO.ts (2)

902-903: LGTM: clear and consistent translation for temporary email restriction.


921-922: LGTM: good generic phrasing and recovery suggestion (“folosește o altă metodă”).

packages/localizations/src/kk-KZ.ts (1)

878-879: LGTM: clear message; no i18n token hazards.

packages/localizations/src/es-UY.ts (1)

915-916: LGTM: phrasing matches es-UY tone (“Intentá… usá…”).

packages/localizations/src/el-GR.ts (2)

891-892: LGTM: clear and natural Greek; no placeholder risks.


910-911: LGTM: good error + recovery suggestion.

packages/localizations/src/vi-VN.ts (1)

895-896: Semantic mismatch: form_password_or_identifier_incorrect key name includes "identifier" but all translations specify "email address" only.

The key name suggests it handles password/identifier validation errors where "identifier" can be email, phone, or username (per getSignUpAttributeFromIdentifier in SignIn utilities). However, across all 30+ language translations, the message specifically mentions "email address," not a generic identifier. This is inconsistent with the key naming and creates potential developer confusion about what error scenario this key addresses. Either rename the key to form_password_or_email_incorrect for clarity, or update translations to use generic identifier language (e.g., "password or login credentials").

Also applies to: 895-896 (form_email_address_blocked)

packages/localizations/src/es-CR.ts (2)

896-897: New form_email_address_blocked key is correctly added under unstable__errors.


915-916: New form_password_or_identifier_incorrect key is correctly added under unstable__errors.

packages/localizations/src/es-MX.ts (2)

897-898: New form_email_address_blocked key is correctly added under unstable__errors.


916-917: New form_password_or_identifier_incorrect key is correctly added under unstable__errors.

packages/localizations/src/id-ID.ts (2)

894-896: New form_email_address_blocked key is correctly added under unstable__errors.


913-913: New form_password_or_identifier_incorrect key is correctly added under unstable__errors.

packages/localizations/src/nl-NL.ts (2)

888-890: New form_email_address_blocked key is correctly added under unstable__errors.


907-908: New form_password_or_identifier_incorrect key is correctly added under unstable__errors.

packages/localizations/src/hu-HU.ts (2)

887-889: New form_email_address_blocked key is correctly added under unstable__errors.


906-908: New form_password_or_identifier_incorrect key is correctly added under unstable__errors.

packages/localizations/src/fi-FI.ts (1)

889-890: New unstable__errors.form_email_address_blocked entry looks good.

packages/localizations/src/tr-TR.ts (1)

890-891: New unstable__errors.form_email_address_blocked entry looks good.

packages/localizations/src/is-IS.ts (1)

890-891: New unstable__errors.form_email_address_blocked entry looks good.

packages/localizations/src/nb-NO.ts (1)

887-888: New unstable__errors.form_email_address_blocked entry looks good.

packages/localizations/src/zh-CN.ts (1)

873-873: Consider tightening punctuation for consistency in the new error string.
Line 873 reads well and matches the intent. No issues spotted.

packages/localizations/src/zh-TW.ts (1)

874-874: LGTM for the new temporary email error copy.
Line 874 reads natural and consistent with the locale.

packages/localizations/src/ko-KR.ts (2)

881-883: LGTM: clear and natural Korean copy for blocked temporary emails.
No placeholder issues; line wrapping is fine.


900-901: LGTM: clear and consistent error message.

packages/localizations/src/bg-BG.ts (1)

888-890: LGTM: temporary email message looks good.

packages/localizations/src/en-GB.ts (2)

890-892: LGTM: message is clear and consistent with existing copy style.


909-909: LGTM: concise and matches intent.

packages/localizations/src/hr-HR.ts (1)

891-893: LGTM: temporary email message reads naturally.

packages/localizations/src/ru-RU.ts (1)

902-903: New unstable__errors keys look correctly added and translated.

Also applies to: 921-922

packages/localizations/src/es-ES.ts (1)

890-891: New unstable__errors keys look good for es-ES.

Also applies to: 910-911

packages/localizations/src/ja-JP.ts (1)

900-902: Wording may be too specific for an “identifier” error (email-only).

These additions look good structurally, but form_password_or_identifier_incorrect mentions “メールアドレス” specifically; if the identifier can also be username/phone, consider a more generic term (e.g., “識別子”) to match the key semantics.

Also applies to: 919-921

packages/localizations/src/ar-SA.ts (1)

885-887: Consider using a generic “identifier” term instead of “email address” (if applicable).

Additions are consistent, but form_password_or_identifier_incorrect currently reads as password-or-email only; if “identifier” includes username/phone in this flow, consider adjusting Arabic wording to avoid narrowing it to email.

Also applies to: 904-906

packages/localizations/src/hi-IN.ts (1)

893-895: form_password_or_identifier_incorrect reads email-specific; verify matches actual “identifier” usage.

Looks good mechanically; please confirm whether the Hindi copy should remain email-specific or be generalized to “identifier” (username/phone/email) based on where this error is raised.

Also applies to: 912-914

packages/localizations/src/cs-CZ.ts (1)

900-902: Potential mismatch: “identifier” error translated as “email address”.

Changes look correct, but consider whether form_password_or_identifier_incorrect should avoid “e-mailová adresa” specifically if the identifier can be something else in this context.

Also applies to: 919-921

packages/localizations/src/bn-IN.ts (1)

893-895: Verify whether “ইমেইল ঠিকানা” should be generalized to “identifier”.

Structurally all good; just confirm form_password_or_identifier_incorrect wording matches the actual identifier surface (email/phone/username) for the error that maps to this key.

Also applies to: 913-915

packages/localizations/src/fr-FR.ts (1)

906-907: LGTM! New error localization keys added correctly.

The two new error message keys have been properly added to the unstable__errors object with French translations. The additions follow the established pattern and are consistent with the PR objectives.

Also applies to: 925-926

packages/localizations/src/sv-SE.ts (1)

891-892: LGTM! New error localization keys added correctly.

The two new error message keys have been properly added to the unstable__errors object with Swedish translations. The additions are consistent with the other locale files in this PR.

Also applies to: 910-911

packages/localizations/src/pl-PL.ts (1)

893-894: LGTM! New error localization keys added correctly.

The two new error message keys have been properly added to the unstable__errors object with Polish translations. The additions are consistent with the other locale files in this PR.

Also applies to: 912-913

Comment on lines +908 to +909
form_password_or_identifier_incorrect:
'Salasana tai sähköpostiosoite on väärä. Yritä uudelleen tai käytä toista menetelmää.',
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Consider making the “identifier” wording locale-accurate (not always an email). The string currently says “email address”; if this error can occur for username/phone sign-in too, prefer a more generic term.

🤖 Prompt for AI Agents
In packages/localizations/src/fi-FI.ts around lines 908 to 909, the message uses
"sähköpostiosoite" (email address) but the error can occur for other sign-in
identifiers; update the translation to use a locale-appropriate generic term
such as "tunnus" or "tunniste" (e.g., "Salasana tai tunnus on väärä. Yritä
uudelleen tai käytä toista menetelmää.") so it no longer assumes an email and
ensure the sentence grammar and punctuation remain correct.

Comment on lines +901 to +902
form_email_address_blocked:
'Serviços de e-mail temporários não são suportados. Por favor, use seu endereço de e-mail regular para criar uma conta.',
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix PT-BR agreement in form_password_or_identifier_incorrect.

-    form_password_or_identifier_incorrect:
-      'A senha ou o endereço de e-mail está incorreto. Tente novamente ou use outro método.',
+    form_password_or_identifier_incorrect:
+      'A senha ou o endereço de e-mail estão incorretos. Tente novamente ou use outro método.',

Also applies to: 920-921

🤖 Prompt for AI Agents
In packages/localizations/src/pt-BR.ts around lines 901-902 and 920-921, the
Portuguese message for form_password_or_identifier_incorrect has incorrect
gender/number agreement; update the translation to use plural agreement or a
neutral rephrasing (e.g., make the verb/adjective agree with the plural subject
or reword to avoid mismatched gender) so the sentence reads correctly in PT-BR
(apply the same fix to the similar string at 920-921).

Comment on lines +886 to +887
form_email_address_blocked:
'Привремене е-поште услуге нису подржане. Молимо користите своју редовну адресу е-поште за креирање налога.',
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Potential script inconsistency in unstable__errors (Latin vs Cyrillic) for sr-RS.
If sr-RS is intended to be Latin-script in this repo, these two new Cyrillic strings will stand out. If the file is intentionally mixed, please ignore—otherwise consider converting these to match the predominant script used in unstable__errors.

Also applies to: 905-906

🤖 Prompt for AI Agents
In packages/localizations/src/sr-RS.ts around lines 886-887 (and also check
905-906), the added strings are in Cyrillic while the rest of unstable__errors
appears to use the Latin script; convert these new entries to the predominant
script used in this file (likely Latin) so the file’s script is consistent, and
run a quick scan of unstable__errors to fix any other mixed-script entries to
the same script.

Comment on lines +909 to +910
form_password_or_identifier_incorrect:
'Şifre veya e-posta adresi yanlış. Tekrar deneyin veya başka bir yöntem kullanın.',
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Consider aligning “identifier” phrasing (may not be email). If this error covers username/phone too, avoid hardcoding “e-posta adresi” here.

🤖 Prompt for AI Agents
In packages/localizations/src/tr-TR.ts around lines 909 to 910, the message
hardcodes “e-posta adresi” which mislabels the identifier if it can be
username/phone/etc.; change the Turkish copy to a generic term (e.g., use "giriş
bilgileri" or "kimlik bilgisi") so it reads something like "Şifre veya giriş
bilgileri yanlış. Tekrar deneyin veya başka bir yöntem kullanın." and update the
string in that file accordingly.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
packages/localizations/src/zh-CN.ts (1)

891-891: form_password_or_identifier_incorrect translation is smooth; keep as-is.
This addresses the earlier “请重试,或…” punctuation nit already.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f5f191a and 2dc01d7.

📒 Files selected for processing (6)
  • packages/localizations/src/bg-BG.ts (2 hunks)
  • packages/localizations/src/ca-ES.ts (2 hunks)
  • packages/localizations/src/es-UY.ts (2 hunks)
  • packages/localizations/src/hr-HR.ts (2 hunks)
  • packages/localizations/src/zh-CN.ts (2 hunks)
  • packages/localizations/src/zh-TW.ts (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/es-UY.ts
🧰 Additional context used
📓 Path-based instructions (10)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

All code must pass ESLint checks with the project's configuration

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.{js,jsx,ts,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Use Prettier for consistent code formatting

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
packages/**/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

TypeScript is required for all packages

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Follow established naming conventions (PascalCase for components, camelCase for variables)

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
packages/**/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

packages/**/src/**/*.{ts,tsx,js,jsx}: Maintain comprehensive JSDoc comments for public APIs
Use tree-shaking friendly exports
Validate all inputs and sanitize outputs
All public APIs must be documented with JSDoc
Use dynamic imports for optional features
Provide meaningful error messages to developers
Include error recovery suggestions where applicable
Log errors appropriately for debugging
Lazy load components and features when possible
Implement proper caching strategies
Use efficient data structures and algorithms
Implement proper logging with different levels

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.ts?(x)

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Use proper TypeScript error types

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/typescript.mdc)

**/*.{ts,tsx}: Always define explicit return types for functions, especially public APIs
Use proper type annotations for variables and parameters where inference isn't clear
Avoid any type - prefer unknown when type is uncertain, then narrow with type guards
Implement type guards for unknown types using the pattern function isType(value: unknown): value is Type
Use interface for object shapes that might be extended
Use type for unions, primitives, and computed types
Prefer readonly properties for immutable data structures
Use private for internal implementation details in classes
Use protected for inheritance hierarchies
Use public explicitly for clarity in public APIs
Use mixins for shared behavior across unrelated classes in TypeScript
Use generic constraints with bounded type parameters like <T extends { id: string }>
Use utility types like Omit, Partial, and Pick for data transformation instead of manual type construction
Use discriminated unions instead of boolean flags for state management and API responses
Use mapped types for transforming object types
Use conditional types for type-level logic
Leverage template literal types for string manipulation at the type level
Use ES6 imports/exports consistently
Use default exports sparingly, prefer named exports
Document functions with JSDoc comments including @param, @returns, @throws, and @example tags
Create custom error classes that extend Error for specific error types
Use the Result pattern for error handling instead of throwing exceptions
Use optional chaining (?.) and nullish coalescing (??) operators for safe property access
Let TypeScript infer obvious types to reduce verbosity
Use const assertions with as const for literal types
Use satisfies operator for type checking without widening types
Declare readonly arrays and objects for immutable data structures
Use spread operator and array spread for immutable updates instead of mutations
Use lazy loading for large types...

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use ESLint with custom configurations tailored for different package types

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
**/*.{js,ts,jsx,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use Prettier for code formatting across all packages

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
packages/localizations/**/*

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Organize localization translations in packages/localizations/ with support for 30+ languages and RTL language support

Files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
🧠 Learnings (1)
📚 Learning: 2025-12-12T19:54:17.554Z
Learnt from: wobsoriano
Repo: clerk/javascript PR: 7447
File: packages/localizations/src/en-US.ts:904-905
Timestamp: 2025-12-12T19:54:17.554Z
Learning: In Clerk's JavaScript localization files (packages/localizations/src/*.ts), undefined values for localization keys are intentional and should not be flagged as issues. When a key is undefined, the system uses the default message from the API response as a fallback. Do not flag these as errors; preserve this expected behavior.

Applied to files:

  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/ca-ES.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (25)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (5)
packages/localizations/src/zh-CN.ts (2)

866-906: New unstable__errors keys look consistent and copy reads naturally (comma issue already resolved).
No further changes needed here. (Not flagging undefined keys per project convention—fallback is intentional, per learnings.)


873-873: form_email_address_blocked translation is clear and appropriate.

packages/localizations/src/ca-ES.ts (1)

908-909: form_password_or_identifier_incorrect wording looks correct and neutral (“identificador”).
No concerns with semantics here.

packages/localizations/src/hr-HR.ts (2)

891-892: LGTM! Grammatically correct Croatian translation.

The translation for the temporary email blocking error is natural and grammatically accurate. The feminine plural agreement ("Privremene e-mail usluge nisu podržane") is correct, and the message clearly conveys the intended meaning.


910-911: LGTM! Grammar issue from past review resolved with optimal solution.

The translation correctly uses the feminine plural form "nisu točne," which properly agrees with both feminine nouns ("lozinka" and "e-mail adresa"). This is grammatically more accurate than the masculine plural "nisu točni" suggested in the previous review, as both nouns are feminine in Croatian.

Comment on lines +889 to +890
form_email_address_blocked:
'Els serveis de correu electrònic temporal no estan suportats. Si us plau, utilitzeu la vostra adreça de correu electrònic habitual per crear un compte.',
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Align register (“vós/vostè” vs “tu”) in form_email_address_blocked.
Current string (“utilitzeu la vostra…”) reads more formal than nearby copy (“la teva…”, “Torna-ho…”). Consider switching to the existing informal register for consistency.

     form_email_address_blocked:
-      'Els serveis de correu electrònic temporal no estan suportats. Si us plau, utilitzeu la vostra adreça de correu electrònic habitual per crear un compte.',
+      'Els serveis de correu electrònic temporal no estan suportats. Si us plau, utilitza la teva adreça de correu electrònic habitual per crear un compte.',
🤖 Prompt for AI Agents
In packages/localizations/src/ca-ES.ts around lines 889-890, the message uses a
formal register ("utilitzeu la vostra…") while nearby copy uses informal ("la
teva…"); update the string to the informal second-person singular to match the
rest of the UI, e.g. replace the formal phrasing with something like "utilitza
la teva adreça de correu electrònic habitual per crear un compte."

@wobsoriano wobsoriano merged commit 1eaef8e into main Dec 12, 2025
43 checks passed
@wobsoriano wobsoriano deleted the rob/port-localizations branch December 12, 2025 20:07
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.

4 participants