Skip to content

Conversation

@jigar-clerk
Copy link
Contributor

@jigar-clerk jigar-clerk commented Dec 15, 2025

Description

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

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

Summary by CodeRabbit

  • Localization
    • Filled missing translations for organization selection, creation and sign-out flows across many locales (e.g., English‑UK, Spanish variants, Arabic, Russian, Chinese, Hindi, Korean, Portuguese and dozens more), so UI titles, subtitles, action labels, buttons, placeholders and sign-out text now display proper localized copy.

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

@changeset-bot
Copy link

changeset-bot bot commented Dec 15, 2025

🦋 Changeset detected

Latest commit: c84dae3

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

This PR includes changesets to release 3 packages
Name Type
@clerk/localizations Patch
@clerk/ui Patch
@clerk/chrome-extension 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
Copy link

vercel bot commented Dec 15, 2025

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

Project Deployment Review Updated (UTC)
clerk-js-sandbox Ready Ready Preview, Comment Dec 15, 2025 9:44pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 15, 2025

Walkthrough

Populate previously undefined localization strings for taskChooseOrganization across many locale files and add a changeset recording a patch release; all edits are value updates (translations) only, with no code or control-flow changes.

Changes

Cohort / File(s) Summary
Changeset file
\.changeset/nice-showers-search.md
New changeset documenting a patch release with the user-facing note “Update localizations for taskChooseOrganization.”
Localization files (many locales)
packages/localizations/src/es-CR.ts, packages/localizations/src/es-ES.ts, packages/localizations/src/es-MX.ts, packages/localizations/src/es-UY.ts, packages/localizations/src/ar-SA.ts, packages/localizations/src/be-BY.ts, packages/localizations/src/bg-BG.ts, packages/localizations/src/bn-IN.ts, packages/localizations/src/ca-ES.ts, packages/localizations/src/cs-CZ.ts, packages/localizations/src/da-DK.ts, packages/localizations/src/el-GR.ts, packages/localizations/src/en-GB.ts, packages/localizations/src/fi-FI.ts, packages/localizations/src/he-IL.ts, packages/localizations/src/hi-IN.ts, packages/localizations/src/hr-HR.ts, packages/localizations/src/hu-HU.ts, packages/localizations/src/id-ID.ts, packages/localizations/src/is-IS.ts, packages/localizations/src/it-IT.ts, packages/localizations/src/kk-KZ.ts, packages/localizations/src/ko-KR.ts, packages/localizations/src/mn-MN.ts, packages/localizations/src/ms-MY.ts, packages/localizations/src/nb-NO.ts, packages/localizations/src/nl-BE.ts, packages/localizations/src/nl-NL.ts, packages/localizations/src/pt-PT.ts, packages/localizations/src/ru-RU.ts, packages/localizations/src/sk-SK.ts, packages/localizations/src/sr-RS.ts, packages/localizations/src/sv-SE.ts, packages/localizations/src/ta-IN.ts, packages/localizations/src/te-IN.ts, packages/localizations/src/tr-TR.ts, packages/localizations/src/uk-UA.ts, packages/localizations/src/vi-VN.ts, packages/localizations/src/zh-CN.ts, packages/localizations/src/zh-TW.ts
Replaced previously undefined values with concrete translated strings for taskChooseOrganization.chooseOrganization (action labels, subtitle, title, suggestionsAcceptedLabel), taskChooseOrganization.createOrganization (form labels/placeholders/buttons, subtitle, title), and taskChooseOrganization.signOut (actionLink, actionText). No signature, type, control-flow, or functional changes — only content updates across locales.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • Consistency of keys across locale files (no missing or extra keys).
    • Preservation and correctness of templated placeholders like {{identifier}}.
    • Changeset content and patch level correctness.

Poem

🐰
I hopped through strings both near and far,
Filled silent blanks with words — now every locale's a star.
Choose, create, sign out in tongues all new,
A rabbit's nibble: translations stitched true. 🥕✨

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.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately describes the main change: adding all translations for taskChooseOrganization across multiple localization files.
✨ 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 jigarp/add-spanish-translations-for-task-choose-org

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 and usage tips.

@jigar-clerk jigar-clerk changed the title feat(localizations): Add translations in Spanish for taskChooseOrganization feat(localizations): Add translations in Spanish for taskChooseOrganization Dec 15, 2025
@jigar-clerk jigar-clerk marked this pull request as ready for review December 15, 2025 17:37
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: 0

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

855-875: es-UY taskChooseOrganization translations look correct; optional style tweak

  • Keys for chooseOrganization, createOrganization, and signOut are now fully translated; interpolation ({{identifier}}) is preserved and consistent.
  • Copy matches the rest of the product and other Spanish locales.

Optional: for dialect consistency with existing es-UY strings (e.g., organizationList.title: 'Elegí una cuenta'), you could change title: 'Elegir una organización' to title: 'Elegí una organización', and similarly consider Elegí instead of Elegir elsewhere in this block.

📜 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 694e7f9 and 61fd580.

📒 Files selected for processing (5)
  • .changeset/nice-showers-search.md (1 hunks)
  • packages/localizations/src/es-CR.ts (1 hunks)
  • packages/localizations/src/es-ES.ts (1 hunks)
  • packages/localizations/src/es-MX.ts (1 hunks)
  • packages/localizations/src/es-UY.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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-ES.ts
packages/**/src/**/*.{ts,tsx}

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

TypeScript is required for all packages

Files:

  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-ES.ts
**/*.ts?(x)

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

Use proper TypeScript error types

Files:

  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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/es-MX.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/es-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). (1)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (4)
.changeset/nice-showers-search.md (1)

1-5: Changeset metadata matches the localization update scope

Package name, bump type (patch), and summary line all align with the added Spanish translations for taskChooseOrganization. No changes needed.

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

855-875: es-CR taskChooseOrganization translations and placeholders look good

The new strings for chooseOrganization, createOrganization, and signOut read naturally, match the existing es-CR tone, and keep the {{identifier}} placeholder intact. No changes needed.

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

856-876: es-MX taskChooseOrganization translations are consistent and safe

All added strings for chooseOrganization, createOrganization, and signOut preserve placeholders, match existing es-MX wording patterns, and align semantically with other locales. No further adjustments needed.

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

849-869: es-ES taskChooseOrganization copy aligns with existing locale usage

The added translations for chooseOrganization, createOrganization, and signOut are clear, consistent with the rest of es-ES, and keep the {{identifier}} interpolation intact. Nothing to change here.

Copy link
Member

@tmilewski tmilewski left a comment

Choose a reason for hiding this comment

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

@jigar-clerk 🙃 Can we use Cursor to fill out the other languages such that they don't return English?

@jigar-clerk jigar-clerk changed the title feat(localizations): Add translations in Spanish for taskChooseOrganization feat(localizations): Add translations for taskChooseOrganization Dec 15, 2025
@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 15, 2025

Open in StackBlitz

@clerk/agent-toolkit

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

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

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

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: c84dae3

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: 5

🧹 Nitpick comments (20)
packages/localizations/src/nb-NO.ts (1)

847-866: taskChooseOrganization Norwegian translations look correct; only a tiny optional copy nit

The new strings under taskChooseOrganization.chooseOrganization, .createOrganization, and .signOut read naturally, preserve the {{identifier}} placeholder correctly, and match the likely English intent (join/create org, continue/cancel flows). No type or structural issues.

If you care about micro-copy consistency, you might align signOut.actionText: 'Innlogget som {{identifier}}' with the earlier impersonationFab.title: 'Logget inn som {{identifier}}' so they use the same phrasing across the UI, but this is purely stylistic.

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

846-854: Copy for taskChooseOrganization.chooseOrganization looks good; consider tiny wording alignment

The translations are natural and consistent with the rest of the nl-BE file, and variable usage is correct.

Optionally, for copy consistency with organizationList, you could reuse similar wording:

  • action__invitationAccept: 'Toetreden' instead of 'Deelnemen'
  • action__suggestionsAccept: 'Verzoek om toetreden' instead of 'Verzoek om deel te nemen'

Only change this if you prefer strict UI copy alignment across flows.

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

858-865: Create‑organisation step is well wired; optional copy tweak

The new labels/placeholders and buttons are consistent with the rest of en‑GB (spelling and tone). One optional polish: consider changing "Setup your organisation" to "Set up your organisation" since “set up” is the verb phrase, but this is purely editorial.

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

848-870: Translations are correct; consider minor consistency and tone tweaks

The new taskChooseOrganization Croatian strings look accurate and natural, and they align with the intended flow (choosing / creating an org and signing out). No functional or typing issues.

Two optional nits for consistency and tone:

  • Verb consistency for “create organization”
    Elsewhere in this file the “create organization” actions use „Kreiraj organizaciju“ (e.g. organizationList.action__createOrganization, organizationSwitcher.action__createOrganization, createOrganization.title). Here you use „Stvori novu organizaciju“. Consider unifying on one verb (e.g. Kreiraj novu organizaciju) across the file for a more consistent UX copy.

  • Gender‑neutral sign‑in text
    signOut.actionText: 'Prijavljen kao {{identifier}}' is grammatically masculine. To be gender‑neutral and consistent with impersonationFab.title: 'Prijavljeni ste kao {{identifier}}', you might prefer Prijavljeni kao {{identifier}}.

These are purely stylistic; fine to defer if you’re matching an existing glossary. Based on learnings, undefined keys elsewhere in the file are expected and don’t need changes.

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

844-866: LGTM! Structural implementation is correct.

The Ukrainian translations for taskChooseOrganization are properly structured with correct template literal syntax and TypeScript typing. All three sub-sections (chooseOrganization, createOrganization, signOut) are now populated with Ukrainian strings following the established pattern.

Optional: Consider having a native Ukrainian speaker verify the translation accuracy and natural phrasing, though the technical implementation is sound.

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

852-873: Translations look good; consider aligning wording with existing occurrences of the same actions

The new taskChooseOrganization Slovak strings are clear, preserve interpolation ({{identifier}}), and match the feature semantics.

For consistency with other parts of this locale (e.g. organizationList and organizationSwitcher), you might want to reuse the same verbs for the same actions:

  • Existing:

    • organizationList.action__invitationAccept: 'Pripojiť sa'
    • organizationList.action__suggestionsAccept: 'Požiadať o pripojenie'
    • organizationSwitcher.action__invitationAccept: 'Pripojiť sa'
    • organizationSwitcher.action__suggestionsAccept: 'Požiadať o pripojenie'
  • New here:

    • action__invitationAccept: 'Pridať sa'
    • action__suggestionsAccept: 'Požiadať o pridanie'

If you want everything to read the same across the UI, you could apply:

 taskChooseOrganization: {
   chooseOrganization: {
-    action__createOrganization: 'Vytvoriť novú organizáciu',
-    action__invitationAccept: 'Pridať sa',
-    action__suggestionsAccept: 'Požiadať o pridanie',
+    action__createOrganization: 'Vytvoriť novú organizáciu',
+    action__invitationAccept: 'Pripojiť sa',
+    action__suggestionsAccept: 'Požiadať o pripojenie',
     subtitle: 'Pridajte sa k existujúcej organizácii alebo vytvorte novú',
     suggestionsAcceptedLabel: 'Čaká na schválenie',
     title: 'Vyberte organizáciu',
   },

Purely a consistency/nitpick suggestion; current wording is acceptable as-is.

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

860-879: Translations look good; only a tiny optional copy tweak for title

The new taskChooseOrganization strings are idiomatic Russian and consistent with neighboring keys (organizationList, organizationSwitcher), including reuse of “Присоединиться”, “Запросить присоединение” and “Ожидает одобрения”, plus the Latin slug placeholder.

If you want stricter consistency with other titles like organizationList.titleWithoutPersonal: 'Выбрать организацию' and signIn.accountSwitcher.title: 'Выбрать учетную запись', you could optionally change title: 'Выберите организацию' to title: 'Выбрать организацию', but the current wording is also acceptable.

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

852-873: taskChooseOrganization Belarusian translations look correct; optionally align phrasing with existing keys

The new strings under taskChooseOrganization.chooseOrganization, .createOrganization, and .signOut read well, use the correct {{identifier}} placeholder, and are consistent with the rest of the be-BY locale. From a typing/structure perspective this is a no-op and should be safe to ship.

If you want to polish further, you could optionally:

  • Reuse or closely mirror existing wording from createOrganization.formButtonSubmit and organizationList.action__createOrganization (e.g., decide between “Стварыць арганізацыю” vs “Стварыць новую арганізацыю” for button/CTA text).
  • Ensure the “join” / “request to join” phrases here match whatever phrasing you eventually use for the organizationList block, so users see the same language across both flows.

This is purely a consistency nit; functionally the changes are solid.

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

849-856: Consider refining slug placeholder/label for clarity

The behavior is correct, but two minor UX/i18n nits you may want to adjust:

  • formFieldInputPlaceholder__slug: 'nae-jigug' uses a romanized phrase that doesn’t clearly map to “내 조직” or a typical example slug. Consider a more obvious example like my-organization, nae-jojig, or another simple ASCII-friendly slug that Korean users will immediately recognize as an example.
  • formFieldLabel__slug: 'Slug' is the only English label in this block; depending on your audience, you might want to localize it or add explanatory copy elsewhere so non-technical users understand what a slug is.

These are cosmetic; current strings are acceptable if you prefer them as-is.

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

855-860: Unify Tamil term for “organization” and reuse existing approval label phrasing

In this block you’ve switched to “அமைப்பு” while the rest of the file (e.g., organizationList, organizationProfile) consistently uses “நிறுவனம்`. For clarity and consistency across the UI, consider aligning these to the same term, and reusing the existing “ஒப்புதல் நிலுவையில் உள்ளது” phrasing for the pending-approval label:

-      action__createOrganization: 'புதிய அமைப்பை உருவாக்கவும்',
+      action__createOrganization: 'புதிய நிறுவனத்தை உருவாக்கு',
@@
-      subtitle: 'இருக்கும் அமைப்பில் சேரவும் அல்லது புதியதை உருவாக்கவும்',
+      subtitle: 'இருக்கும் நிறுவனத்தில் சேரவும் அல்லது புதிதை உருவாக்கவும்',
@@
-      suggestionsAcceptedLabel: 'அனுமதிக்காக காத்திருக்கிறது',
+      suggestionsAcceptedLabel: 'ஒப்புதல் நிலுவையில் உள்ளது',
@@
-      title: 'ஒரு அமைப்பைத் தேர்ந்தெடுக்கவும்',
+      title: 'ஒரு நிறுவனத்தைத் தேர்ந்தெடுக்கவும்',

863-870: Align “Cancel” wording and slug translations with existing conventions in this locale

Nice additions here. To keep things consistent with the rest of ta-IN:

  • “Cancel” elsewhere uses 'ரத்து செய்', not 'ரத்துசெய்'.
  • Slug label is already localized as “சிறப்புக்குறி” in other org-related fields.
  • The sample slug placeholder currently mixes Latin script (enathu-amaippu), whereas other examples (e.g., formFieldInputPlaceholder__organizationSlug) use Tamil (எனது-நிறுவனம்).

Consider:

-      formButtonReset: 'ரத்துசெய்',
+      formButtonReset: 'ரத்து செய்',
@@
-      formFieldInputPlaceholder__slug: 'enathu-amaippu',
+      formFieldInputPlaceholder__slug: 'எனது-நிறுவனம்',
@@
-      formFieldLabel__slug: 'Slug',
+      formFieldLabel__slug: 'சிறப்புக்குறி',
packages/localizations/src/ca-ES.ts (1)

846-868: Align taskChooseOrganization Catalan copy with existing ca-ES tone and nearby strings

The new strings are valid Catalan, but they mix infinitive vs imperative (Crear / Unir-se / Sol·licitar) and plural/formal forms (Introduïu, Configureu, Uniu-vos) while the rest of ca-ES mostly uses 2nd person singular imperatives and already-established translations for the same actions just above under organizationList. To keep tone and wording consistent across this locale, consider reusing those existing forms and aligning the new ones:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: 'Crear nova organització',
-      action__invitationAccept: 'Unir-se',
-      action__suggestionsAccept: 'Sol·licitar unir-se',
-      subtitle: 'Uniu-vos a una organització existent o creeu-ne una de nova',
-      suggestionsAcceptedLabel: "Pendent d'aprovació",
-      title: 'Trieu una organització',
+      // Reuse wording from organizationList for consistency
+      action__createOrganization: 'Crea organització',
+      action__invitationAccept: 'Uneix-te',
+      action__suggestionsAccept: 'Sol·licita unir-te',
+      // Keep 2nd person singular like most of the file
+      subtitle: "Uneix-te a una organització existent o crea'n una de nova",
+      suggestionsAcceptedLabel: "Pendent d'aprovació",
+      title: 'Trieu una organització',
     },
     createOrganization: {
-      formButtonReset: 'Cancel·lar',
-      formButtonSubmit: 'Continuar',
+      // Match other buttons like `formButtonReset: 'Cancel·la'` and `...continue: 'Continua'`
+      formButtonReset: 'Cancel·la',
+      formButtonSubmit: 'Continua',
       formFieldInputPlaceholder__name: 'La meva organització',
       formFieldInputPlaceholder__slug: 'la-meva-organitzacio',
       formFieldLabel__name: 'Nom',
       formFieldLabel__slug: 'Slug',
-      subtitle: 'Introduïu els detalls de la vostra organització per continuar',
-      title: 'Configureu la vostra organització',
+      subtitle: 'Introdueix les dades de la teva organització per continuar',
+      title: 'Configura la teva organització',
     },
     signOut: {
-      actionLink: 'Tancar sessió',
-      actionText: 'Sessió iniciada com a {{identifier}}',
+      // Align with `userButton.action__signOut: 'Tanca sessió'`
+      actionLink: 'Tanca sessió',
+      actionText: 'Sessió iniciada com a {{identifier}}',
     },
   },

If you prefer to keep the plural/formal voice, an alternative would be to update the older strings (e.g. Crea organització, Uneix-te) in a follow-up so the entire locale is consistent in one direction.

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

852-858: Minor wording/consistency tweaks for chooseOrganization block

The translations read well, but there are two small consistency nits against the rest of hi-IN:

  • Other keys use “बनाएँ” for “create” (e.g., createOrganization.formButtonSubmit, organizationList.action__createOrganization, organizationSwitcher.action__createOrganization), while this one uses “बनाएं”.
  • suggestionsAcceptedLabel elsewhere in this file uses “अनुमोदन के लिए लंबित” (organization list + switcher), but here it’s “अनुमोदन की प्रतीक्षा”.

If you want everything to feel uniform, consider:

-      action__createOrganization: 'नया संगठन बनाएं',
+      action__createOrganization: 'नया संगठन बनाएँ',
@@
-      suggestionsAcceptedLabel: 'अनुमोदन की प्रतीक्षा',
+      suggestionsAcceptedLabel: 'अनुमोदन के लिए लंबित',

861-868: Align slug label with existing hi-IN terminology

formFieldLabel__slug is currently left as English “Slug”, while the rest of this locale already uses the transliterated Hindi “स्लग” (see formFieldLabel__organizationSlug earlier in the file). For consistency in the same UI, you likely want:

-      formFieldLabel__slug: 'Slug',
+      formFieldLabel__slug: 'स्लग',
packages/localizations/src/he-IL.ts (1)

837-859: LGTM! Hebrew translations look appropriate.

The Hebrew translations for the taskChooseOrganization feature have been properly added. All strings are grammatically correct, contextually appropriate, and follow the expected structure for localization files. The changes align with the pattern established across other locale files in this PR.

Optional: Minor style inconsistency

Line 858 uses 'מחובר כ-{{identifier}}' (with hyphen), while line 258 has 'מחובר כ{{identifier}}' (without hyphen). In Hebrew, the prefix כ (meaning "as") typically doesn't require a hyphen before a variable. Consider standardizing for consistency, though both forms are readable.

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

851-856: Consider harmonizing terminology with organizationList for consistency.

The translations use slightly different phrasing compared to similar strings in organizationList (lines 266-276):

  • Line 853: 'Begär att gå med' vs line 269: 'Be om att gå med'
  • Line 855: 'Väntar på godkännande' vs line 273: 'Väntar godkännande'

While both phrasings are correct Swedish, using consistent terminology across similar UI contexts can improve user familiarity. This may be intentional due to different contexts, but worth verifying.

packages/localizations/src/sr-RS.ts (2)

846-851: Consider aligning formality level and terminology with existing translations.

The translations in this section have two consistency concerns:

  1. Formality level: Lines 849 and 851 use formal "vi" form ("Pridružite se", "napravite", "Izaberite") while the rest of the file consistently uses informal "ti" form (e.g., "prijavi se" at line 742, "Izaberi" at lines 273-274).

  2. Terminology: Line 846 uses "Napravi novu organizaciju" but the same key action__createOrganization is translated as "Kreiraj organizaciju" elsewhere (lines 182, 266, 269, 498).

For a consistent user experience, consider:

  • Using informal forms: "Izaberi organizaciju" (line 851), "Pridruži se ... ili napravi novu" (line 849)
  • Aligning terminology: "Kreiraj novu organizaciju" or just "Kreiraj organizaciju" (line 846) to match existing usage

Apply this diff to align with existing conventions:

-      action__createOrganization: 'Napravi novu organizaciju',
+      action__createOrganization: 'Kreiraj organizaciju',
       action__invitationAccept: 'Pridruži se',
       action__suggestionsAccept: 'Zatraži pridruživanje',
-      subtitle: 'Pridružite se postojećoj organizaciji ili napravite novu',
+      subtitle: 'Pridruži se postojećoj organizaciji ili napravi novu',
       suggestionsAcceptedLabel: 'Čeka odobrenje',
-      title: 'Izaberite organizaciju',
+      title: 'Izaberi organizaciju',

854-861: Align formality level with the rest of the file.

Lines 860-861 use formal "vi" form ("Unesite podatke", "Podesite svoju") while the file consistently uses informal "ti" form elsewhere (e.g., "Unesi verifikacioni kod" at lines 766, 769).

Apply this diff to maintain consistent formality:

-      subtitle: 'Unesite podatke o svojoj organizaciji za nastavak',
-      title: 'Podesite svoju organizaciju',
+      subtitle: 'Unesi podatke o svojoj organizaciji za nastavak',
+      title: 'Podesi svoju organizaciju',
packages/localizations/src/id-ID.ts (1)

853-860: Consider aligning “Bergabung” with existing “Gabung” wording for this action

action__invitationAccept here uses 'Bergabung', while the same key under organizationList uses 'Gabung'. For a consistent user experience, consider reusing 'Gabung' here as well; the rest of this block looks good and idiomatic.

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

836-841: Use consistent Traditional Chinese terminology.

The translations are mostly correct, but Line 840 should use '等待核准' instead of '等待批准' for consistency. The character 准 is Simplified Chinese; Traditional Chinese should use 準. More importantly, Line 271 (organizationList.suggestionsAcceptedLabel) already uses '待核准', so this line should follow the same terminology for consistency.

Apply this diff:

-      suggestionsAcceptedLabel: '等待批准',
+      suggestionsAcceptedLabel: '等待核准',
📜 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 61fd580 and 29ff5b8.

📒 Files selected for processing (37)
  • .changeset/nice-showers-search.md (1 hunks)
  • packages/localizations/src/ar-SA.ts (1 hunks)
  • packages/localizations/src/be-BY.ts (1 hunks)
  • packages/localizations/src/bg-BG.ts (1 hunks)
  • packages/localizations/src/bn-IN.ts (1 hunks)
  • packages/localizations/src/ca-ES.ts (1 hunks)
  • packages/localizations/src/cs-CZ.ts (1 hunks)
  • packages/localizations/src/da-DK.ts (1 hunks)
  • packages/localizations/src/el-GR.ts (1 hunks)
  • packages/localizations/src/en-GB.ts (1 hunks)
  • packages/localizations/src/fi-FI.ts (1 hunks)
  • packages/localizations/src/he-IL.ts (1 hunks)
  • packages/localizations/src/hi-IN.ts (1 hunks)
  • packages/localizations/src/hr-HR.ts (1 hunks)
  • packages/localizations/src/hu-HU.ts (1 hunks)
  • packages/localizations/src/id-ID.ts (1 hunks)
  • packages/localizations/src/is-IS.ts (1 hunks)
  • packages/localizations/src/it-IT.ts (1 hunks)
  • packages/localizations/src/kk-KZ.ts (1 hunks)
  • packages/localizations/src/ko-KR.ts (1 hunks)
  • packages/localizations/src/mn-MN.ts (1 hunks)
  • packages/localizations/src/ms-MY.ts (1 hunks)
  • packages/localizations/src/nb-NO.ts (1 hunks)
  • packages/localizations/src/nl-BE.ts (1 hunks)
  • packages/localizations/src/nl-NL.ts (1 hunks)
  • packages/localizations/src/pt-PT.ts (1 hunks)
  • packages/localizations/src/ru-RU.ts (1 hunks)
  • packages/localizations/src/sk-SK.ts (1 hunks)
  • packages/localizations/src/sr-RS.ts (1 hunks)
  • packages/localizations/src/sv-SE.ts (1 hunks)
  • packages/localizations/src/ta-IN.ts (1 hunks)
  • packages/localizations/src/te-IN.ts (1 hunks)
  • packages/localizations/src/tr-TR.ts (1 hunks)
  • packages/localizations/src/uk-UA.ts (1 hunks)
  • packages/localizations/src/vi-VN.ts (1 hunks)
  • packages/localizations/src/zh-CN.ts (1 hunks)
  • packages/localizations/src/zh-TW.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/nice-showers-search.md
🧰 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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.ts
packages/**/src/**/*.{ts,tsx}

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

TypeScript is required for all packages

Files:

  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.ts
**/*.ts?(x)

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

Use proper TypeScript error types

Files:

  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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/hr-HR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/fi-FI.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). (19)
  • GitHub Check: Unit Tests (**)
  • GitHub Check: Static analysis
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (54)
packages/localizations/src/tr-TR.ts (3)

849-854: taskChooseOrganization.chooseOrganization Turkish copy looks consistent

Action labels, subtitle, and title use natural Turkish and match existing organizationList phrasing (Katıl, Katılım iste, Onay bekleniyor, “Bir organizasyon seçin”). No issues from a localization or placeholder perspective.


857-864: createOrganization labels and placeholders align with existing patterns

İptal / Devam et button texts and the “Organizasyonum/organizasyonum” placeholders are clear and consistent with other organization-related fields (e.g., organization name/slug copy) in this file. No technical or copy concerns.


867-868: signOut strings correctly reuse identifier pattern

Çıkış yap matches other sign‑out actions, and {{identifier}} olarak giriş yapıldı reuses the same pattern as impersonationFab.title, keeping behavior and interpolation consistent while leaving unrelated keys undefined as expected. Based on learnings, this is correct.

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

855-864: taskChooseOrganization.createOrganization translations are consistent and clear

Button labels, placeholders, and title/subtitle read well and match established patterns:

  • formButtonReset: 'Annuleren' and formButtonSubmit: 'Doorgaan' are in line with other forms.
  • Use of Naam / Slug and example values ('Mijn organisatie', 'mijn-organisatie') is clear for users.

No changes needed from a localization or implementation standpoint.


865-868: taskChooseOrganization.signOut aligns with existing sign-out phrasing

  • actionLink: 'Uitloggen' matches other sign-out actions in this locale.
  • actionText: 'Ingelogd als {{identifier}}' is consistent with impersonationFab.title.

Looks correct and ready to merge.

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

847-853: taskChooseOrganization.chooseOrganization translations look correct and consistent

Keys and values match existing organization-related phrasing (Байгууллага үүсгэх, Нэгдэх, etc.), no missing or malformed placeholders, and punctuation/casing are consistent with the rest of the file.


855-863: taskChooseOrganization.createOrganization copy aligns with existing patterns

Button labels, placeholders, and labels reuse established wording from other organization-creation strings in this locale; the slug placeholder and title/subtitle are coherent and idiomatic.


865-867: taskChooseOrganization.signOut strings are accurate and reuse existing sign-out phrasing

actionLink matches other “sign out” translations and actionText correctly preserves the {{identifier}} placeholder with natural Mongolian phrasing.

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

846-865: PR description indicates Spanish translations, but Danish translations were added.

The PR title states "Add translations in Spanish for taskChooseOrganization" and the description mentions "Adds Spanish translations," but this file (da-DK.ts) contains Danish localization strings, and the newly added translations (lines 846-865) are in Danish, not Spanish.

Please verify:

  • Is the PR description incorrect and this change is intentional for Danish?
  • Or should these translations be added to a Spanish localization file instead (e.g., es-ES.ts)?
packages/localizations/src/en-GB.ts (2)

850-855: taskChooseOrganization.chooseOrganization copy looks consistent and correct

Strings are clear, use the expected en‑GB “organisation” spelling, and align with existing patterns like organizationList (e.g., “Pending approval”, “Choose an organisation”). No issues from a localization or structure perspective.


868-869: Sign‑out strings are consistent with existing patterns

actionLink and actionText mirror other usages in this file (e.g., impersonationFab.title) and correctly use the {{identifier}} placeholder. Looks good.

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

848-855: taskChooseOrganization.chooseOrganization translations are consistent and structurally correct

The Finnish strings read naturally, reuse existing phrasing from organizationList (e.g., “Liity”, “Odottaa hyväksyntää”, “Valitse organisaatio”), and preserve the placeholder set without changes. No issues from a localization or typing perspective; other task keys remaining undefined is fine since they fall back to API defaults. Based on learnings, this is the expected behavior.


857-864: taskChooseOrganization.createOrganization copy aligns with existing UI wording

Button labels (Peruuta, Jatka) and field labels/placeholders match the rest of the Finnish locale (e.g., other form sections), and the subtitle/title accurately convey “set up your organization”. Object shape and key names are unchanged; only values are populated, which looks correct.


867-868: taskChooseOrganization.signOut reuses established sign-out phrasing

actionLink and actionText mirror existing Finnish strings (e.g., impersonationFab.title), including the {{identifier}} placeholder, ensuring consistent UX across components with no structural changes.

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

849-856: LGTM! Greek translations properly added.

The Greek translations for the chooseOrganization section are accurate and follow the established patterns in this localization file.


857-866: LGTM! Organization creation form translations are correct.

The Greek translations for the createOrganization section are accurate. Appropriately keeps "Slug" as a technical term while providing a transliterated Greek placeholder.


867-870: LGTM! Sign-out translations are consistent.

The Greek translations for the signOut section correctly preserve the template variable {{identifier}} and are consistent with other sign-out translations throughout the file.

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

845-866: taskChooseOrganization translations are correctly wired and consistent

The new strings for chooseOrganization, createOrganization, and signOut use appropriate European Portuguese, keep the {{identifier}} placeholder intact, and match existing organization-related terminology in this locale (e.g., organizationList, organizationSwitcher, impersonationFab). No structural or typing issues detected.

packages/localizations/src/it-IT.ts (3)

856-861: LGTM! Translations are consistent and well-formatted.

The Italian translations for the chooseOrganization section are consistent with existing translations in organizationList (lines 275-282) and properly formatted with correct Italian grammar.


864-871: LGTM! Form translations follow established patterns.

The translations for the createOrganization form section are consistent with existing form field patterns throughout the file and use appropriate Italian terminology for organizational setup flows.


874-875: LGTM! Sign-out translations with correct interpolation.

The translations are appropriate, and the interpolation syntax {{identifier}} is correctly formatted and consistent with other dynamic strings throughout the file (e.g., line 266).

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

857-880: LGTM! Translations are consistent and well-structured.

The Czech translations for the taskChooseOrganization section follow established patterns within the file and reuse consistent terminology. Key observations:

  • Translations align with similar keys in other sections (e.g., organizationList, organizationSwitcher)
  • Placeholder syntax ({{identifier}}) is used correctly
  • Terminology is consistent throughout (e.g., "Připojit se", "Čeká na schválení", "Zrušit")

Based on learnings, these previously undefined values are being intentionally populated with locale-specific translations.

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

841-846: taskChooseOrganization.chooseOrganization strings look good and consistent

The translations here are natural Korean and align well with the existing organization-related copy in this locale (e.g., wording around 조직 생성/참여). No functional or i18n issues from a structure/placeholder perspective.


859-860: taskChooseOrganization.signOut strings are correct and consistent

actionLink and actionText follow the same pattern as other occurrences using {{identifier}} in this file and read naturally in Korean. No issues detected here. Neighboring keys that remain undefined are fine and will correctly fall back to default API messages (based on learnings).

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

873-874: Sign-out strings look correct and preserve interpolation placeholder

actionLink matches other “வெளியேறு” usages, and actionText correctly preserves {{identifier}} while reading naturally in Tamil. No changes needed here.

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

849-854: LGTM! Bulgarian translations are accurate and contextually appropriate.

The translations correctly use imperative verb forms suitable for action buttons, which appropriately differs from the noun forms used in the organizationList section. The terminology is consistent with existing Bulgarian translations throughout the file.


857-864: LGTM! Form translations are consistent and well-structured.

The translations correctly reuse existing button labels ("Отказ", "Продължи") for consistency, appropriately keep "Slug" in English as a technical term (matching line 250), and provide a proper transliterated example for the slug placeholder.


867-868: LGTM! Sign out labels are consistent with existing patterns.

The translations correctly reuse established terminology from the impersonationFab section (lines 258-259), ensuring consistency across the UI.

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

871-872: LGTM for signOut copy

The sign-out CTA and description are natural Hindi and reuse the same pattern as impersonationFab.title / other sign-in strings. No issues from a localization or placeholder perspective.

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

855-876: taskChooseOrganization vi-VN translations look consistent and safe

The new Vietnamese strings read naturally, reuse existing terminology for organizations, and correctly preserve the {{identifier}} placeholder in signOut.actionText. No typing or structural issues, and leaving unrelated keys (including undefined ones) untouched maintains the current fallback behavior.

Based on learnings, this aligns with the expected use of undefined localization values as API fallbacks.

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

838-861: LGTM! Kazakh translations for taskChooseOrganization properly added.

The structural changes are correct:

  • All previously undefined keys in the taskChooseOrganization section now have Kazakh translations
  • Proper nesting within chooseOrganization, createOrganization, and signOut subsections
  • Correct use of interpolation placeholders (e.g., {{identifier}} on line 859)
  • Consistent formatting with the rest of the localization file

Based on learnings, undefined localization values are intentional fallbacks, so populating these keys improves the user experience for Kazakh speakers.

Note: While the structural implementation is correct, linguistic accuracy of the Kazakh translations should ideally be verified by a native speaker or professional translator if not already done.

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

851-856: LGTM! Swedish translations for organization selection look good.

The translations are grammatically correct and contextually appropriate for the organization selection flow. The terminology is clear and user-friendly.


859-866: LGTM! Organization creation form translations are well-structured.

The form labels, placeholders, and button text follow established Swedish UI conventions and are consistent with similar strings elsewhere in the file. The decision to keep 'Slug' untranslated is appropriate as it's a technical term.


869-870: LGTM! Sign-out translations are consistent.

These translations perfectly match the existing pattern from the impersonationFab section (lines 258-259), ensuring consistency across the application.

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

857-866: LGTM with minor observation.

The translations in the createOrganization section are well-structured. Note that Line 863 uses 'Slug' while Line 250 uses 'Stubbur (e. slug)' for similar slug labels. This difference might be intentional for contextual clarity, but consider whether consistency would improve user experience.

</review_comment_end -->


867-870: LGTM!

The signOut section translations are consistent with other sign-out actions throughout the locale file and correctly use the {{identifier}} template variable.

</review_comment_end -->

packages/localizations/src/te-IN.ts (2)

854-861: LGTM! Telugu translations added for organization selection.

The translations for the chooseOrganization section are well-formed and consistent with the Telugu script used throughout the file.


872-875: LGTM! Sign-out translations properly preserve placeholder.

The translations for the signOut section correctly preserve the {{identifier}} placeholder and use appropriate Telugu script.

packages/localizations/src/sr-RS.ts (1)

864-865: LGTM!

The translations are correct and consistent with existing usage in the file (e.g., "Odjavi se" matches lines 257, 992-993). The placeholder formatting is also correct.

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

861-870: Create-organization translations look consistent and idiomatic

Button labels, placeholders, and field labels read naturally in Indonesian and align with existing patterns (e.g., reuse of organisasi-saya and Slug). No issues from a localization or typing/formatting standpoint.


871-874: Sign-out copy and {{identifier}} placeholder usage are correct

actionLink: 'Keluar' and actionText: 'Masuk sebagai {{identifier}}' match terminology used elsewhere (e.g., impersonationFab) and keep the placeholder name consistent, so this should integrate cleanly.

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

835-840: LGTM! Simplified Chinese translations properly added.

The taskChooseOrganization.chooseOrganization translations are correctly populated with appropriate Simplified Chinese strings.


843-850: LGTM! Form field translations properly added.

The createOrganization subsection translations are correctly populated. The Pinyin slug placeholder ('wo-de-zu-zhi') and English 'Slug' label are appropriate choices.


853-854: LGTM! Sign-out translations with correct template variable.

The signOut subsection translations properly preserve the {{identifier}} template variable and use appropriate Simplified Chinese.

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

844-851: LGTM! Traditional Chinese form field translations properly added.

The createOrganization subsection translations correctly use Traditional Chinese characters throughout. The Pinyin slug placeholder and English 'Slug' label are appropriate.


854-855: LGTM! Sign-out translations with correct template variable.

The signOut subsection translations properly preserve the {{identifier}} template variable and use appropriate Traditional Chinese.

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

856-863: LGTM!

The organization creation form translations are clear and consistent. The button labels, placeholders, and field labels follow standard Dutch conventions and match the patterns used elsewhere in the file.


866-867: LGTM!

The sign-out translations are consistent with existing usage throughout the file (e.g., lines 257, 992, 993) and the interpolation syntax is correct.


848-853: Verify translation consistency with organizationList.

The identified phrasing differences are confirmed:

  • Line 848: 'Nieuwe organisatie aanmaken' vs line 266: 'Creëer organisatie'
  • Line 849: 'Deelnemen' vs line 267: 'Toetreden'
  • Line 850: 'Verzoek om deel te nemen' vs line 268: 'Verzoek om toetreden'

These differences may be intentional due to different UX contexts (organizationList for selecting existing orgs vs taskChooseOrganization for the broader choice/creation task), but please verify the terminology aligns with your translation guidelines for user clarity.

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

855-862: LGTM!

The form field translations follow established patterns from the rest of the file and use consistent terminology for labels, placeholders, and buttons.


865-866: LGTM!

The signOut translations are consistent with other instances in the file (lines 257, 994), and the template interpolation syntax is correctly formatted.

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

853-860: LGTM! Organization creation form translations properly added.

The form labels and placeholders are correctly translated. The slug placeholder 'munazzamati' appropriately uses romanized Arabic for URL-safe identifiers, and keeping 'Slug' in English as a technical term is consistent with localization best practices.


863-864: LGTM! Sign-out section translations correctly implemented.

The placeholder {{identifier}} is properly formatted, and the "sign out" translation is consistent with existing usage throughout the file.


845-850: Address translation consistency across organization-related UI sections.

This adds a new Arabic localization file for ar-SA. However, there are inconsistencies in how similar action keys are translated across different sections:

  • organizationList uses 'أنشاء منظمة' while taskChooseOrganization.chooseOrganization uses 'إنشاء منظمة جديدة' for the same action
  • organizationList uses 'أنضمام' while taskChooseOrganization uses 'انضم' for invitation acceptance
  • organizationList uses 'طلب أنضمام' while taskChooseOrganization uses 'طلب الانضمام' for suggestions

Verify whether these variations are intentional for different UI contexts or if they should be normalized for consistency across the application.

…translations-for-task-choose-org' into jigarp/add-spanish-translations-for-task-choose-org
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: 4

📜 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 29ff5b8 and ef66029.

📒 Files selected for processing (5)
  • packages/localizations/src/bn-IN.ts (1 hunks)
  • packages/localizations/src/hu-HU.ts (1 hunks)
  • packages/localizations/src/is-IS.ts (1 hunks)
  • packages/localizations/src/ms-MY.ts (1 hunks)
  • packages/localizations/src/te-IN.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/is-IS.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.ts
packages/**/src/**/*.{ts,tsx}

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

TypeScript is required for all packages

Files:

  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.ts
**/*.ts?(x)

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

Use proper TypeScript error types

Files:

  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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/bn-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/hu-HU.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 (sessions, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (4)
packages/localizations/src/bn-IN.ts (1)

851-874: LGTM! Translations are consistent and well-implemented.

The Bengali translations for taskChooseOrganization have been properly added with consistent terminology. All instances correctly use 'সংগঠন' (songothon) for "organization", which aligns with the rest of the file and addresses the previous review feedback. The translations are appropriate for their context, and the slug placeholder 'amar-sangstha' is a suitable romanized Bengali representation.

packages/localizations/src/te-IN.ts (2)

862-870: LGTM - Slug translation now consistent!

The translations in this section look good. Notably, line 868 now correctly uses the Telugu transliteration 'స్లగ్' for the slug label, which is consistent with formFieldLabel__organizationSlug at line 249. This addresses the concern raised in the previous review.


872-874: LGTM!

The sign-out section translations are clear and consistent with the existing Telugu localization patterns in the file.

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

865-866: LGTM!

The signOut translations are consistent with other signOut actions in the file (lines 257, 994) and use appropriate neutral forms.

subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
action__createOrganization: 'Új szervezet létrehozása',
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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, check the Hungarian localization file structure around the mentioned lines
wc -l packages/localizations/src/hu-HU.ts

Repository: clerk/javascript

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Check line 847 and surrounding context
sed -n '840,855p' packages/localizations/src/hu-HU.ts | cat -n

Repository: clerk/javascript

Length of output: 801


🏁 Script executed:

#!/bin/bash
# Check line 266 and surrounding context
sed -n '260,275p' packages/localizations/src/hu-HU.ts | cat -n

Repository: clerk/javascript

Length of output: 927


🏁 Script executed:

#!/bin/bash
# Find all occurrences of action__createOrganization in hu-HU.ts
rg -n "action__createOrganization" packages/localizations/src/hu-HU.ts

Repository: clerk/javascript

Length of output: 247


Address inconsistent 'Új szervezet' terminology across action__createOrganization translations.

The same key action__createOrganization has inconsistent translations: line 847 uses 'Új szervezet létrehozása' (Create new organization) while lines 266 and 499 use 'Szervezet létrehozása' (Create organization) without the "Új" prefix. Clarify whether the "Új" addition in the taskChooseOrganization context is intentional for that specific UI flow or if all occurrences should be aligned for consistency.

🤖 Prompt for AI Agents
In packages/localizations/src/hu-HU.ts around line 847, the translation for
action__createOrganization is 'Új szervezet létrehozása' which is inconsistent
with the same key at lines ~266 and ~499 ('Szervezet létrehozása'); pick a
single canonical phrasing and align all occurrences: either remove the 'Új'
prefix at line 847 to match the others, or change lines 266 and 499 to include
'Új' if the "new" qualifier is required for that specific UI flow; update the
three instances to the chosen form so the same key uses identical Hungarian text
throughout.

@jigar-clerk jigar-clerk enabled auto-merge (squash) December 15, 2025 22:13
@jigar-clerk jigar-clerk changed the title feat(localizations): Add translations for taskChooseOrganization feat(localizations): Add all translations for taskChooseOrganization Dec 15, 2025
@jigar-clerk jigar-clerk merged commit a70084c into main Dec 15, 2025
100 of 103 checks passed
@jigar-clerk jigar-clerk deleted the jigarp/add-spanish-translations-for-task-choose-org branch December 15, 2025 22:16
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