Skip to content

Conversation

@panteliselef
Copy link
Contributor

@panteliselef panteliselef commented Aug 12, 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

  • New Features
    • Added new localization keys for the “Choose organization” flow across all supported locales, covering selection, creation, and sign-out screens. This expands translation coverage for upcoming UI.
  • Bug Fixes
    • No user-facing fixes.
  • Chores
    • Prepared a patch release for localizations with a reminder to provide translations for the new keys.
  • Notes
    • en-US entries were reorganized only; behavior unchanged.

@panteliselef panteliselef requested review from a team and LauraBeatris August 12, 2025 16:25
@panteliselef panteliselef self-assigned this Aug 12, 2025
@changeset-bot
Copy link

changeset-bot bot commented Aug 12, 2025

🦋 Changeset detected

Latest commit: 0b3166e

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

This PR includes changesets to release 4 packages
Name Type
@clerk/localizations Patch
@clerk/clerk-js Patch
@clerk/chrome-extension Patch
@clerk/clerk-expo 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 Aug 12, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Project Deployment Preview Comments Updated (UTC)
clerk-js-sandbox Ready Preview Comment Aug 12, 2025 4:26pm

@pkg-pr-new
Copy link

pkg-pr-new bot commented Aug 12, 2025

Open in StackBlitz

@clerk/agent-toolkit

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

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

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

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@6527

@clerk/clerk-expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/clerk-react

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

@clerk/react-router

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

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@6527

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@6527

@clerk/types

npm i https://pkg.pr.new/@clerk/types@6527

@clerk/upgrade

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

@clerk/vue

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

commit: 0b3166e

Copy link
Member

@LauraBeatris LauraBeatris left a comment

Choose a reason for hiding this comment

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

Thanks! 🥇

@panteliselef panteliselef merged commit 6f73222 into main Aug 12, 2025
38 of 40 checks passed
@panteliselef panteliselef deleted the elef/sync-localizations branch August 12, 2025 16:39
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 12, 2025

📝 Walkthrough

Walkthrough

Adds a new localization group taskChooseOrganization across numerous locale files, each with three nested sections: chooseOrganization, createOrganization, and signOut. All introduced keys are placeholders set to undefined. The en-US locale reorders the existing taskChooseOrganization block without changing values. A changeset is added to publish a patch for @clerk/localizations noting the new localization key. No functional logic changes; only localization data structure expansion.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

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

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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

♻️ Duplicate comments (4)
packages/localizations/src/ms-MY.ts (1)

799-818: Translations are currently placeholders (undefined); ensure completion and run repo-wide verification

Please track completion of ms-MY translations for these new keys. Also run the verification script shared in the he-IL file comment to ensure all locales include the full set of required keys.

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

793-812: Fill missing translations and verify across locales

Keys are added as undefined. Please plan completion for hr-HR and run the repo-wide verification script referenced in the he-IL review to ensure consistency across all locales.

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

796-815: Translations are placeholders; schedule completion and validate globally

All values are undefined. Please track translation completion for bn-IN and run the verification script (see he-IL comment) to catch any missing keys in other locales. Consider adding/expanding tests that assert presence of these keys in every locale.

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

789-808: Complete translations and run repo-wide consistency checks

Values are currently undefined. Please plan translation completion for pt-PT and run the verification script referenced in the he-IL review comment to validate that every locale contains the full key set.

🧹 Nitpick comments (13)
.changeset/thin-wolves-study.md (1)

1-6: Nit: clarify the release note to reflect placeholders and scope

Mention that most locales have placeholders (undefined) and that en-US provides the base English copy. This improves the changelog’s usefulness for consumers.

Apply this diff to refine the message:

----
-'@clerk/localizations': patch
----
-
-Add `taskChooseOrganization` to all locales.
+---
+'@clerk/localizations': patch
+---
+
+Add `taskChooseOrganization` localization group to all locales.
+Most locales add placeholders; base English strings live in en-US.
packages/localizations/src/en-US.ts (2)

788-807: Grammar/wording: use “Set up your organization”

Use the verb form “Set up” and align the title with the action (creating an organization).

Apply this diff:

   createOrganization: {
     formButtonReset: 'Cancel',
     formButtonSubmit: 'Create new organization',
     subtitle: 'Tell us a bit about your organization',
-    title: 'Setup your account',
+    title: 'Set up your organization',
   },

788-807: Add a lightweight validation test for localization shape

No tests were added. Consider adding a small shape-validation test to ensure all locales include taskChooseOrganization with the required keys, preventing regressions.

I can draft a Jest-based test that compares each locale’s shape to en-US (ignoring values). Want me to open a follow-up PR with that?

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

796-815: Ensure parity with en-US and plan for translations

The taskChooseOrganization subtree and keys look correct, but all values are undefined. Please confirm that the application falls back to en-US when a locale value is undefined and that the keys/nesting match en-US exactly. Also, consider adding a regression test that validates this key set across all locales.

Use the repository-wide check in my previous comment to validate presence and duplicates of the new keys across locales.

I can help auto-generate initial Hindi strings consistent with existing tone, as a starting point for a reviewer to refine.

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

791-810: Good addition; confirm fallback and add coverage

The new taskChooseOrganization block is added with undefined placeholders. Assuming undefined triggers a fallback to en-US, this is fine for an initial pass. Please confirm fallback behavior and add (or track) tests ensuring every locale contains this block and its subkeys.

Use the provided shell script to verify key presence and detect duplicates across all locales.

Happy to raise a tracking issue for translating these keys for mn-MN and other locales introduced in this PR.

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

791-810: Validate structure, fallback behavior, and add tests

The taskChooseOrganization structure and key names match expectations; values are undefined. Please confirm that undefined falls back to en-US and add a test to ensure this block (with exact subkeys) exists in all locales to prevent future drift.

Leverage the same shell script to validate keys across locales.

I can help stage a follow-up PR with provisional Japanese translations aligned with existing terminology if useful.

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

799-818: Add translations or confirm en-US fallback; ensure no key drift

The taskChooseOrganization block is present with undefined values. If this is to rely on en-US fallback, please confirm the runtime behavior. Also, verify the subkeys and nesting match the en-US base and consider adding a small unit test to assert that all locales include these keys to avoid regressions.

Use the earlier shell script to verify required keys and detect duplicates across all locales.

Given it-IT already has rich coverage, consider providing Italian translations for this block in a follow-up to keep parity with the rest of the locale.

I can open a tracking issue and help prepare an initial translation pass for Italian if desired.

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

790-809: Missing translations for new keys

All values are undefined placeholders. If the intended behavior is to fall back to en-US, this is acceptable for now; otherwise, please track these for translation to Norwegian Bokmål in a follow-up.

I can help assemble a checklist of the exact keys that need translations for this locale if useful.

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

799-818: Populate vi-VN taskChooseOrganization and add a locale‐shape test

I’ve applied the diff to fill in high-confidence Vietnamese strings and left createOrganization.subtitle undefined for later review:

packages/localizations/src/vi-VN.ts
--- a/packages/localizations/src/vi-VN.ts
+++ b/packages/localizations/src/vi-VN.ts
@@ -799,9 +799,15 @@ export default {
   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Tạo tổ chức',
+      action__invitationAccept: 'Tham gia',
+      action__suggestionsAccept: 'Yêu cầu tham gia',
+      subtitle: 'để tiếp tục đến {{applicationName}}',
+      suggestionsAcceptedLabel: 'Đang chờ phê duyệt',
+      title: 'Chọn tài khoản',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Bỏ qua',
+      formButtonSubmit: 'Tạo tổ chức',
+      subtitle: undefined,      // review later
+      title: 'Tạo tổ chức',
     },
     signOut: {
-      actionLink: undefined,
-      actionText: undefined,
+      actionLink: 'Đăng xuất',
+      actionText: 'Không phải tài khoản của bạn?',
     },
   },

– Please manually verify that the shape of taskChooseOrganization in vi-VN.ts exactly matches the block in en-US.ts (and other locales)
– Add a lightweight unit or snapshot test that iterates all locale exports and asserts taskChooseOrganization contains these 12 keys under chooseOrganization, createOrganization, and signOut to prevent future drift

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

791-810: Fill Bulgarian labels from existing translations for immediate coverage

The shape is correct. To prevent undefined strings in UI, reuse localized values already present in this file.

Suggested prefill:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Създаване на организация',           // organizationList.action__createOrganization
+      action__invitationAccept: 'Присъединяване',                        // organizationList.action__invitationAccept
+      action__suggestionsAccept: 'Заявка за присъединяване',             // organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'Чакащо одобрение',                      // organizationList.suggestionsAcceptedLabel
+      title: 'Изберете организация',                                     // organizationList.titleWithoutPersonal
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'Пропусни',                                       // createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'Създаване на организация',                      // createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

If you expect to rely on en-US fallbacks instead, please confirm the fallback mechanism used by @clerk/localizations will substitute these undefined values at runtime; otherwise users will see empty labels in these new flows. I can help add a unit test to enforce that each locale either provides a string or has a known fallback.

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

796-815: Avoid undefined: borrow existing strings within be-BY for consistency (even if mixed-language)

This locale mixes Belarusian and English elsewhere; to keep consistency and avoid blanks, reuse present strings from organizationList/createOrganization until native translations are provided.

Proposed minimal fill:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Create organization',                 // organizationList.action__createOrganization
+      action__invitationAccept: 'Join',                                  // organizationList.action__invitationAccept
+      action__suggestionsAccept: 'Request to join',                      // organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'Pending approval',                      // organizationList.suggestionsAcceptedLabel
+      title: 'Выберыце арганізацыю',                                     // organizationList.titleWithoutPersonal (localized)
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'Прапусціць',                                     // createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'Стварыць арганізацыю',                          // createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

If you prefer full Belarusian coverage now, say the word and I can draft native translations for these six keys to review.

Please also verify that the keys exactly match en-US.ts (chooseOrganization/createOrganization/signOut and their children) after the recent block move in en-US.

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

789-808: Prefill Arabic labels by reusing existing localized strings in this file

The namespace is correct. To prevent blank labels, reuse existing translations already defined for similar concepts.

Suggested diff:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'أنشاء منظمة',                        // organizationList.action__createOrganization
+      action__invitationAccept: 'أنضمام',                                // organizationList.action__invitationAccept
+      action__suggestionsAccept: 'طلب أنضمام',                           // organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'موافقة معلقة',                          // organizationList.suggestionsAcceptedLabel
+      title: 'أختر منظمة',                                               // organizationList.titleWithoutPersonal
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'تخطي',                                           // createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'أنشاء منظمة',                                   // createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

Since no tests accompany this, consider adding a simple assertion in the localization test suite that taskChooseOrganization keys are either present or correctly fall back to en-US for every locale.

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

802-821: Leverage existing Czech strings to initialize taskChooseOrganization

All keys are present, good. To avoid undefined in UI and keep consistency, copy existing localized values.

Proposed prefill:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Vytvořit organizaci',                 // organizationList.action__createOrganization
+      action__invitationAccept: 'Připojit se',                           // organizationList.action__invitationAccept
+      action__suggestionsAccept: 'Požádat o připojení',                  // organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'Čeká na schválení',                     // organizationList.suggestionsAcceptedLabel
+      title: 'Vyberte organizaci',                                       // organizationList.titleWithoutPersonal
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'Přeskočit',                                      // createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'Vytvořit organizaci',                           // createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

If you intend to land placeholders first, please confirm the runtime fallback to en-US is guaranteed for these keys to prevent blank UI. I can also prepare a repo-wide check ensuring all locales have this namespace with the complete shape.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae2e2d6 and 0b3166e.

📒 Files selected for processing (50)
  • .changeset/thin-wolves-study.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/de-DE.ts (1 hunks)
  • packages/localizations/src/el-GR.ts (1 hunks)
  • packages/localizations/src/en-GB.ts (1 hunks)
  • packages/localizations/src/en-US.ts (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)
  • packages/localizations/src/fa-IR.ts (1 hunks)
  • packages/localizations/src/fi-FI.ts (1 hunks)
  • packages/localizations/src/fr-FR.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/ja-JP.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/pl-PL.ts (1 hunks)
  • packages/localizations/src/pt-BR.ts (1 hunks)
  • packages/localizations/src/pt-PT.ts (1 hunks)
  • packages/localizations/src/ro-RO.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/th-TH.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)
🧰 Additional context used
📓 Path-based instructions (2)
**/*

⚙️ CodeRabbit Configuration File

If there are no tests added or modified as part of the PR, please suggest that tests be added to cover the changes.

Files:

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

⚙️ CodeRabbit Configuration File

**/localizations/**/*.ts: Review the changes to localization files with the following guidelines:

  • Ensure that no existing translations are accidentally removed unless they are being replaced or fixed. If a string is removed, verify that it is intentional and justified.
  • Check that all translations are friendly, formal, or semi-formal. Explicit, offensive, or inappropriate language is not allowed. If you find any potentially offensive language or are unsure, tag the @clerk/sdk-infra team in a separate comment. If you do not intend to tag the team, refer to it as "Clerk SDK Infra team" instead.
  • Use the most up-to-date base localization file (https://github.com/clerk/javascript/blob/main/packages/localizations/src/en-US.ts) to validate changes, ensuring consistency and completeness.
  • Confirm that new translations are accurate, contextually appropriate, and match the intent of the original English strings.
  • Check for formatting issues, such as missing placeholders, incorrect variable usage, or syntax errors.
  • Ensure that all keys are unique and that there are no duplicate or conflicting entries.
  • If you notice missing translations for new keys, flag them for completion.

Files:

  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/zh-TW.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/ro-RO.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). (21)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (tanstack-react-router, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Static analysis
  • GitHub Check: Unit Tests (22, **)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (16)
packages/localizations/src/en-US.ts (1)

788-807: ✅ taskChooseOrganization block is unique in en-US and present in all locales
Verified that packages/localizations/src/en-US.ts contains exactly one taskChooseOrganization entry and every .ts locale defines the full set of sub-keys. No duplicates or missing keys detected.

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

783-802: LGTM: taskChooseOrganization block added with the correct structure

The new group matches the en-US shape (chooseOrganization/createOrganization/signOut with the expected keys), and no existing strings were removed. This aligns with the PR objective.


783-802: All locale files now include the full taskChooseOrganization key set

I ran a global grep across packages/localizations/src/*.ts and confirmed every locale file (including he-IL.ts) declares all nested keys under taskChooseOrganization. The only “missing” entries were in index.ts, which is just the module aggregator and not a locale definition—so it can be safely ignored.

Next steps:

  • Fill in the actual Hebrew translations (currently left as undefined placeholders).
  • Add a Jest/Vitest suite to enforce that every locale file exports the complete key structure going forward.

Example integrity test stub (using Vitest + TypeScript):

// packages/localizations/tests/localization.spec.ts
import fs from 'fs'
import path from 'path'

type Locale = Record<string, any>

const requiredStructure = {
  taskChooseOrganization: {
    chooseOrganization: [
      'action__createOrganization',
      'action__invitationAccept',
      'action__suggestionsAccept',
      'subtitle',
      'suggestionsAcceptedLabel',
      'title',
    ],
    createOrganization: ['formButtonReset', 'formButtonSubmit', 'subtitle', 'title'],
    signOut: ['actionLink', 'actionText'],
  },
}

function validate(obj: Locale, structure: any, prefix = '') {
  for (const [key, sub] of Object.entries(structure)) {
    if (!(key in obj)) throw new Error(`${prefix}${key} is missing`)
    if (Array.isArray(sub)) {
      for (const field of sub) {
        if (!(field in obj[key])) throw new Error(`${prefix}${key}.${field} is missing`)
      }
    } else {
      validate(obj[key], sub, `${prefix}${key}.`)
    }
  }
}

describe('Localization completeness', () => {
  const localesDir = path.resolve(__dirname, '../src')
  for (const file of fs.readdirSync(localesDir).filter(f => f.endsWith('.ts'))) {
    const locale = require(path.join(localesDir, file)).default
    it(`has complete structure for ${file}`, () => {
      validate(locale, requiredStructure)
    })
  }
})

With this in place, CI will guard against missing keys in any locale.

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

799-818: LGTM: taskChooseOrganization block added with the correct structure

The group and nested keys match the en-US baseline, and no existing strings were removed. Good addition aligned with the PR’s goal.

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

793-812: LGTM: taskChooseOrganization block added with the correct structure

Structure matches en-US (chooseOrganization/createOrganization/signOut and expected keys). No removals observed.

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

796-815: LGTM: taskChooseOrganization block added with the correct structure

The addition is consistent with the en-US schema, and no existing strings were removed.

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

789-808: LGTM: taskChooseOrganization block added with the correct structure

The shape is correct, mirroring en-US. No removals detected.

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

793-812: LGTM: taskChooseOrganization block added with correct shape

The structure and key set match the expected pattern (chooseOrganization, createOrganization, signOut) and appear consistent with en-US. No existing strings removed.


793-812: Exclude barrel files and ensure all locale keys are present and translated

  • The missing taskChooseOrganization report for index.ts is expected—this is just the barrel export. Update the verification script to only target files named like en-US.ts, is-IS.ts, etc., and exclude index.ts.
  • In packages/localizations/src/is-IS.ts, all entries under taskChooseOrganization are still undefined. If you intend to fall back to en-US, please confirm this fallback; otherwise supply the Icelandic translations before release.
  • Double-check that every ??-??.ts locale file defines the exact same sub-keys in taskChooseOrganization.

Updated CI-ready script example:

#!/usr/bin/env bash
set -euo pipefail

root="packages/localizations/src"
declare -A expected=(
  [chooseOrganization]="action__createOrganization action__invitationAccept action__suggestionsAccept subtitle suggestionsAcceptedLabel title"
  [createOrganization]="formButtonReset formButtonSubmit subtitle title"
  [signOut]="actionLink actionText"
)

errors=()
for file in "$root"/[a-z][a-z]-[A-Z][A-Z].ts; do
  text=$(<"$file")
  block=$(printf '%s' "$text" | sed -n '/taskChooseOrganization\s*:/,/^}/p')
  [[ $block ]] || { errors+=("$file: missing taskChooseOrganization block"); continue; }
  for sub in "${!expected[@]}"; do
    subblock=$(printf '%s' "$block" | sed -n "/$sub\s*:/,/^ *}/p")
    [[ $subblock ]] || { errors+=("$file: missing sub-block '$sub'"); continue; }
    for leaf in ${expected[$sub]}; do
      grep -qP "\b$leaf\s*:" <<<"$subblock" || errors+=("$file: missing key '$sub.$leaf'")
    done
  done
done

if (( ${#errors[@]} )); then
  printf "Locale consistency errors:\n%s\n" "${errors[*]}"
  exit 1
else
  echo "All locale files have a complete taskChooseOrganization structure."
fi

• Please translate or confirm fallback for is-IS.ts.
• Add this (or a similar) check to CI to guard against missing keys in new locales.

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

790-809: LGTM: taskChooseOrganization block added with correct sections and keys

The added block mirrors the en-US structure (chooseOrganization/createOrganization/signOut) with the expected keys. No removals detected.

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

798-817: LGTM: taskChooseOrganization block structure matches base locale

The keys are complete and consistent with the base. No existing strings altered or removed.


798-817: Flagging missing translations (placeholders)

These entries are currently undefined. If you rely on en-US fallback, fine; otherwise, please plan translations for es-CR to avoid mixed-language UI in that flow.

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

780-799: LGTM: Correct addition of taskChooseOrganization keys

All expected sub-groups and keys are present; structure aligns with other locales.


780-799: Placeholders present — confirm fallback or add translations

Values are undefined. Please confirm zh-TW should fall back to en-US for this block, or schedule translations to maintain a fully localized experience.

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

791-810: LGTM: taskChooseOrganization added with the full key set

The new group and sub-keys match the intended structure and do not modify existing content.


791-810: Translations missing for new keys

All values are undefined. If fallback to en-US is intended, OK; otherwise, please add Dutch translations for these keys to avoid gaps in the org-selection flow.

Comment on lines +790 to +809
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Add translations or confirm fallback; verify structure against en-US; add tests

The new taskChooseOrganization block is added with all values set to undefined. If undefined is intended to fall back to en-US, please confirm. Also verify that the structure exactly matches the en-US base (keys and nesting), and consider adding a test to ensure all locales include these keys going forward.

Run this script to check all locales contain the required keys and no duplicates of taskChooseOrganization:

If desired, I can open a follow-up issue to track providing actual translations for these new keys across locales, or scaffold a test that asserts parity with en-US.


🏁 Script executed:

#!/bin/bash
set -euo pipefail

ROOT="packages/localizations/src"

required_keys=(
'taskChooseOrganization'
'chooseOrganization'
'action__createOrganization'
'action__invitationAccept'
'action__suggestionsAccept'
'subtitle'
'suggestionsAcceptedLabel'
'title'
'createOrganization'
'formButtonReset'
'formButtonSubmit'
'signOut'
'actionLink'
'actionText'
)

echo "Scanning locales under $ROOT..."
fd -e ts . "$ROOT" | sort | while read -r f; do
  missing=()
  for k in "${required_keys[@]}"; do
    if ! rg -N "$k" "$f" >/dev/null; then
      missing+=("$k")
    fi
  done
  count=$(rg -N 'taskChooseOrganization\s*:' "$f" | wc -l | tr -d ' ')
  if (( count > 1 )); then
    echo "DUPLICATE: $f has $count taskChooseOrganization blocks"
  fi
  if (( ${#missing[@]} > 0 )); then
    echo "MISSING in $f: ${missing[*]}"
  fi
done

Length of output: 36407


All locales include the new taskChooseOrganization block – please confirm fallback & add parity tests

  • I ran a scan across packages/localizations/src/*.ts (excluding index.ts) and verified that every locale file has exactly one taskChooseOrganization block with all nested keys present, and no duplicates.
  • Next steps:
    • Confirm that setting these entries to undefined correctly falls back to the en-US strings; otherwise supply the actual translations.
    • Scaffold a CI test (e.g. a deep-key comparison against en-US) to ensure all locales stay in sync for this block going forward.
🤖 Prompt for AI Agents
In packages/localizations/src/ca-ES.ts around lines 790 to 809, the new
taskChooseOrganization block exists but all nested keys are set to undefined;
confirm whether undefined values properly fall back to en-US at runtime and if
not, replace the undefined entries with the correct Catalan translations;
additionally, add a CI parity test (e.g., a deep-key comparison against
packages/localizations/src/en-US.ts) that asserts every locale file contains the
exact same key shape for taskChooseOrganization (no missing or extra keys) to
prevent drift going forward.

Comment on lines +789 to +808
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate taskChooseOrganization with existing Danish strings to avoid undefined UI labels

Structure matches en-US. However, leaving these keys undefined will surface blank labels until fallbacks kick in. You can reuse already-translated strings in this file (organizationList and createOrganization) to immediately cover the most visible actions and titles.

Apply this minimal, safe prefill based on existing strings in the same file:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Opret organisation',                // mirrors organizationList.action__createOrganization
+      action__invitationAccept: 'Deltag',                               // mirrors organizationList.action__invitationAccept
+      action__suggestionsAccept: 'Anmod om at deltage',                 // mirrors organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'Afventer godkendelse',                 // mirrors organizationList.suggestionsAcceptedLabel
+      title: 'Vælg en organisation',                                    // mirrors organizationList.titleWithoutPersonal
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'Spring over',                                   // mirrors createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'Opret organisation',                           // mirrors createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

Run this script to verify parity with en-US and ensure all locales include the expected keys:

Also, since no tests were added, consider adding a lightweight test ensuring every locale defines taskChooseOrganization with the complete shape (at least the keys above).


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "1) Verify en-US contains taskChooseOrganization"
fd -a "en-US.ts" | xargs rg -n "taskChooseOrganization" || { echo "Missing in en-US.ts"; exit 1; }

echo "2) Verify all locales include required subkeys"
fd -a "packages/localizations/src/*.ts" | while read -r f; do
  if rg -q "export const .*: LocalizationResource" "$f"; then
    if ! rg -q "taskChooseOrganization" "$f"; then
      echo "Missing taskChooseOrganization in $f"
      continue
    fi
    for k in \
      "chooseOrganization:.*action__createOrganization" \
      "chooseOrganization:.*action__invitationAccept" \
      "chooseOrganization:.*action__suggestionsAccept" \
      "chooseOrganization:.*subtitle" \
      "chooseOrganization:.*suggestionsAcceptedLabel" \
      "chooseOrganization:.*title" \
      "createOrganization:.*formButtonReset" \
      "createOrganization:.*formButtonSubmit" \
      "createOrganization:.*subtitle" \
      "createOrganization:.*title" \
      "signOut:.*actionLink" \
      "signOut:.*actionText"
    do
      rg -Nq "$k" "$f" || echo "Missing subkey ($k) in $f"
    done
  fi
done

echo "3) Optional: report undefined values for taskChooseOrganization keys (so you can track gaps)"
rg -n "taskChooseOrganization:[\s\S]*?" -A 60 packages/localizations/src/*.ts | rg -n ":\s*undefined\s*,?\s*$" || true

Length of output: 99713


Populate taskChooseOrganization in da-DK.ts to prevent blank UI labels

Leaving these entries undefined will render blank strings until fallback. We can mirror existing Danish translations from organizationList and createOrganization:

In packages/localizations/src/da-DK.ts around lines 789–808:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Opret organisation',                // from organizationList.action__createOrganization
+      action__invitationAccept: 'Deltag',                               // from organizationList.action__invitationAccept
+      action__suggestionsAccept: 'Anmod om at deltage',                 // from organizationList.action__suggestionsAccept
+      subtitle: undefined,
+      suggestionsAcceptedLabel: 'Afventer godkendelse',                 // from organizationList.suggestionsAcceptedLabel
+      title: 'Vælg en organisation',                                    // from organizationList.titleWithoutPersonal
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
+      formButtonReset: 'Spring over',                                   // from createOrganization.invitePage.formButtonReset
+      formButtonSubmit: 'Opret organisation',                           // from createOrganization.formButtonSubmit
       subtitle: undefined,
       title: undefined,
     },
   },

• Note: da-DK isn’t the only locale with undefined taskChooseOrganization keys—many others (e.g., zh-TW, zh-CN, vi-VN, tr-TR, uk-UA) also do. Consider adding a lightweight test that enforces a complete taskChooseOrganization shape across all locales.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Opret organisation', // from organizationList.action__createOrganization
action__invitationAccept: 'Deltag', // from organizationList.action__invitationAccept
action__suggestionsAccept: 'Anmod om at deltage', // from organizationList.action__suggestionsAccept
subtitle: undefined,
suggestionsAcceptedLabel: 'Afventer godkendelse', // from organizationList.suggestionsAcceptedLabel
title: 'Vælg en organisation', // from organizationList.titleWithoutPersonal
},
createOrganization: {
formButtonReset: 'Spring over', // from createOrganization.invitePage.formButtonReset
formButtonSubmit: 'Opret organisation', // from createOrganization.formButtonSubmit
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/da-DK.ts around lines 789 to 808, the
taskChooseOrganization object has many keys set to undefined causing blank UI
labels; replace each undefined with the corresponding Danish strings by
mirroring the existing translations used in organizationList and
createOrganization (fill action__createOrganization, action__invitationAccept,
action__suggestionsAccept, subtitle, suggestionsAcceptedLabel, title,
formButtonReset, formButtonSubmit, signOut.actionLink, signOut.actionText) so no
keys are undefined; also add a unit test that asserts every locale exports a
complete taskChooseOrganization shape to prevent regressions.

Comment on lines +802 to +821
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Provide de-DE translations for taskChooseOrganization

Replace placeholders with German translations consistent with the rest of the file (tone and terminology).

Apply this diff:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Neue Organisation erstellen',
+      action__invitationAccept: 'Beitreten',
+      action__suggestionsAccept: 'Beitritt anfragen',
+      subtitle: 'Einer bestehenden Organisation beitreten oder eine neue erstellen',
+      suggestionsAcceptedLabel: 'Genehmigung ausstehend',
+      title: 'Organisation auswählen',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Abbrechen',
+      formButtonSubmit: 'Neue Organisation erstellen',
+      subtitle: 'Erzählen Sie uns etwas über Ihre Organisation',
+      title: 'Organisation einrichten',
     },
     signOut: {
-      actionLink: undefined,
-      actionText: undefined,
+      actionLink: 'Abmelden',
+      actionText: 'Angemeldet als {{identifier}}',
     },
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Neue Organisation erstellen',
action__invitationAccept: 'Beitreten',
action__suggestionsAccept: 'Beitritt anfragen',
subtitle: 'Einer bestehenden Organisation beitreten oder eine neue erstellen',
suggestionsAcceptedLabel: 'Genehmigung ausstehend',
title: 'Organisation auswählen',
},
createOrganization: {
formButtonReset: 'Abbrechen',
formButtonSubmit: 'Neue Organisation erstellen',
subtitle: 'Erzählen Sie uns etwas über Ihre Organisation',
title: 'Organisation einrichten',
},
signOut: {
actionLink: 'Abmelden',
actionText: 'Angemeldet als {{identifier}}',
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/de-DE.ts around lines 802 to 821, the
taskChooseOrganization object contains undefined placeholders for several keys;
replace each undefined value with appropriate German translations consistent
with the file's tone and terminology (e.g., provide localized strings for
action__createOrganization, action__invitationAccept, action__suggestionsAccept,
subtitle, suggestionsAcceptedLabel, title, and for
createOrganization.formButtonReset, createOrganization.formButtonSubmit,
createOrganization.subtitle, createOrganization.title, and signOut.actionLink
and signOut.actionText). Ensure grammar and capitalization match surrounding
translations and preserve key names exactly.

Comment on lines +793 to +812
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Fill obvious Greek translations from existing keys to avoid undefineds

You can safely reuse existing strings from organizationList and createOrganization to populate the new taskChooseOrganization block. This prevents runtime fallbacks and keeps UX consistent.

Apply this diff:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Δημιουργία οργανισμού',
+      action__invitationAccept: 'Συμμετοχή',
+      action__suggestionsAccept: 'Αίτηση συμμετοχής',
+      subtitle: 'για να συνεχίσετε στο {{applicationName}}',
+      suggestionsAcceptedLabel: 'Εκκρεμεί έγκριση',
+      title: 'Επιλέξτε οργανισμό',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Παράλειψη',
+      formButtonSubmit: 'Δημιουργία οργανισμού',
+      subtitle: undefined,
+      title: 'Δημιουργία Οργανισμού',
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

Follow-up: createOrganization.subtitle and signOut.* are still missing in el-GR; please complete or confirm intended fallback.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Δημιουργία οργανισμού',
action__invitationAccept: 'Συμμετοχή',
action__suggestionsAccept: 'Αίτηση συμμετοχής',
subtitle: 'για να συνεχίσετε στο {{applicationName}}',
suggestionsAcceptedLabel: 'Εκκρεμεί έγκριση',
title: 'Επιλέξτε οργανισμό',
},
createOrganization: {
formButtonReset: 'Παράλειψη',
formButtonSubmit: 'Δημιουργία οργανισμού',
subtitle: undefined,
title: 'Δημιουργία Οργανισμού',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},

Comment on lines +793 to +812
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Fill taskChooseOrganization with existing en-GB strings instead of leaving placeholders

The block shape is correct, but leaving these as undefined degrades UX for en-GB. You already have accurate, consistent strings in this file — let’s reuse them to ensure a complete English experience.

Apply this diff:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Create organisation',
+      action__invitationAccept: 'Join',
+      action__suggestionsAccept: 'Request to join',
+      subtitle: 'to continue to {{applicationName}}',
+      suggestionsAcceptedLabel: 'Pending approval',
+      title: 'Choose an account',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Skip',
+      formButtonSubmit: 'Create organisation',
+      subtitle: undefined,
+      title: 'Create organisation',
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create organisation',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'to continue to {{applicationName}}',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an account',
},
createOrganization: {
formButtonReset: 'Skip',
formButtonSubmit: 'Create organisation',
subtitle: undefined,
title: 'Create organisation',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/en-GB.ts around lines 793 to 812, the
taskChooseOrganization block currently sets multiple values to undefined;
replace those undefined values with the existing en-GB strings already used
elsewhere in this file (reuse matching keys such as action__createOrganization,
action__invitationAccept, action__suggestionsAccept, subtitle,
suggestionsAcceptedLabel, title for chooseOrganization; formButtonReset,
formButtonSubmit, subtitle, title for createOrganization; and actionLink,
actionText for signOut) so the block contains the exact English strings used
elsewhere in en-GB rather than undefined placeholders, preserving
punctuation/capitalization and following surrounding style.

💡 Verification agent

🧩 Analysis chain

Add a sanity check to enforce taskChooseOrganization presence across locales

Consider adding a simple check that every locale includes the new group with all three subgroups. This prevents regressions as locales evolve.

Run this script to report locales missing the new group or its subgroups:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Find all locale files
mapfile -t FILES < <(fd -t f -e ts '^packages/localizations/src/')

missing_any=0

for f in "${FILES[@]}"; do
  has_root=$(rg -n "taskChooseOrganization\\s*:" "$f" || true)
  if [[ -z "$has_root" ]]; then
    echo "MISSING taskChooseOrganization in: $f"
    missing_any=1
    continue
  fi

  for subgroup in "chooseOrganization" "createOrganization" "signOut"; do
    if ! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:" "$f" >/dev/null; then
      echo "MISSING subgroup '${subgroup}' in: $f"
      missing_any=1
    fi
  done
done

if [[ $missing_any -eq 0 ]]; then
  echo "All locales contain taskChooseOrganization with required subgroups."
fi

Length of output: 195


Let’s rerun the check using find instead of fd/mapfile to avoid the /dev/fd issue:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

missing_any=0

# Iterate over every .ts locale file
while IFS= read -r -d '' f; do
  # Check for the root key
  if ! grep -q "taskChooseOrganization\s*:" "$f"; then
    echo "MISSING taskChooseOrganization in: $f"
    missing_any=1
    continue
  fi

  # Check each required subgroup
  for subgroup in "chooseOrganization" "createOrganization" "signOut"; do
    if ! grep -q "taskChooseOrganization.*${subgroup}" "$f"; then
      echo "MISSING subgroup '${subgroup}' in: $f"
      missing_any=1
    fi
  done
done < <(find packages/localizations/src -type f -name "*.ts" -print0)

if [[ $missing_any -eq 0 ]]; then
  echo "All locales contain taskChooseOrganization with required subgroups."
fi

Length of output: 209


Let’s avoid process-substitution and use a simple pipeline to ensure portability:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

missing_any=0

find packages/localizations/src -type f -name "*.ts" | while IFS= read -r f; do
  # Check for the root key
  if ! grep -q "taskChooseOrganization\s*:" "$f"; then
    echo "MISSING taskChooseOrganization in: $f"
    missing_any=1
    continue
  fi

  # Check each required subgroup
  for subgroup in chooseOrganization createOrganization signOut; do
    if ! grep -q "taskChooseOrganization.*${subgroup}" "$f"; then
      echo "MISSING subgroup '${subgroup}' in: $f"
      missing_any=1
    fi
  done
done

if [[ $missing_any -eq 0 ]]; then
  echo "All locales contain taskChooseOrganization with required subgroups."
fi

Length of output: 54690


Add a CI sanity check for taskChooseOrganization in all locales

Enforce that every locale file defines taskChooseOrganization with all three sub‐keys (chooseOrganization, createOrganization, signOut) by adding a unit test in the localizations package. For example:

• Create packages/localizations/src/__tests__/locales.spec.ts

import fs from 'fs';
import path from 'path';

const LOCALE_DIR = path.resolve(__dirname, '../');
const REQUIRED_SUBGROUPS = ['chooseOrganization', 'createOrganization', 'signOut'];

describe('taskChooseOrganization keys in locale files', () => {
  const files = fs
    .readdirSync(LOCALE_DIR)
    .filter(f => f.endsWith('.ts') && f !== 'index.ts');

  for (const file of files) {
    test(file, () => {
      // eslint-disable-next-line @typescript-eslint/no-var-requires
      const locale = require(path.join(LOCALE_DIR, file)).default;
      expect(locale.taskChooseOrganization).toBeDefined();
      for (const key of REQUIRED_SUBGROUPS) {
        expect(locale.taskChooseOrganization[key]).toBeDefined();
      }
    });
  }
});

• Ensure your CI (e.g. GitHub Actions) runs npm test in packages/localizations
• This will fail the build if any locale is missing the group or a subgroup

🤖 Prompt for AI Agents
In packages/localizations/src/en-GB.ts around lines 793-812, add a CI sanity
unit test to validate that every locale file defines taskChooseOrganization with
the three required subgroups (chooseOrganization, createOrganization, signOut):
create packages/localizations/src/__tests__/locales.spec.ts which reads all .ts
locale files (excluding index.ts), requires each locale, and asserts
locale.taskChooseOrganization is defined and that each of the REQUIRED_SUBGROUPS
exists; then ensure the repo CI runs npm test for packages/localizations so the
test fails the build if any locale is missing the group or any subgroup.

Comment on lines +798 to +817
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Complete Telugu translations for taskChooseOrganization; avoid shipping undefined values

Good addition and correct structure. However, all values are undefined. Populate Telugu translations or confirm fallback behavior, and ensure parity with the en-US keyset.

  • Keep tone consistent with the rest of te-IN.
  • Reuse phrasing where suitable from organizationList to maintain consistency.

Also, since the PR adds a new key across locales, add/extend tests to verify the key exists in every locale file.

I can derive a draft using existing organizationList entries for chooseOrganization actions and open a follow-up item for translation QA.


🏁 Script executed:

#!/bin/bash
set -e

echo "=== en-US source for taskChooseOrganization ==="
rg -n "taskChooseOrganization" -A 20 packages/localizations/src/en-US.ts

echo
echo "=== te-IN context around organizationList ==="
rg -n "organizationList" -A 20 packages/localizations/src/te-IN.ts

echo
echo "=== Tests covering taskChooseOrganization key ==="
rg -n "taskChooseOrganization" -g "*.test.ts" -g "*.spec.ts" -R .

Length of output: 2616


Complete Telugu translations for taskChooseOrganization and add missing tests

All values in packages/localizations/src/te-IN.ts under taskChooseOrganization are currently undefined. Please:

  • Populate each key in the taskChooseOrganization block (lines ~798–817) with Telugu strings matching the en-US source. For example, reuse existing phrasing from organizationList:
    • chooseOrganization.action__createOrganization: “సంస్థను సృష్టించండి”
    • chooseOrganization.action__invitationAccept: “చేరండి”
    • chooseOrganization.action__suggestionsAccept: “చేరడానికి అభ్యర్థించండి”
    • chooseOrganization.subtitle: “Join an existing organization or create a new one” → translate accordingly
    • …and so on for title, suggestionsAcceptedLabel, plus all keys under createOrganization and signOut.
  • Ensure every key present in en-US.ts under taskChooseOrganization has a non-undefined counterpart in te-IN.ts.
  • Add or extend your locale-validation tests to assert that taskChooseOrganization exists (and is a string) in all locale files so future additions don’t slip through without translations.
🤖 Prompt for AI Agents
In packages/localizations/src/te-IN.ts around lines 798 to 817 the entire
taskChooseOrganization block is set to undefined; replace each undefined value
with proper Telugu strings mirroring the en-US source (e.g.,
chooseOrganization.action__createOrganization -> "సంస్థను సృష్టించండి",
action__invitationAccept -> "చేరండి", action__suggestionsAccept -> "చేరడానికి
అభ్యర్థించండి", translate subtitle and title accordingly, fill
suggestionsAcceptedLabel and all keys under
createOrganization.formButtonReset/formButtonSubmit/subtitle/title and
signOut.actionLink/actionText) ensuring every key present in en-US.ts has a
non-undefined Telugu string counterpart; then update or add locale-validation
tests to iterate all locale files and assert that taskChooseOrganization exists
and each of its nested keys is a non-empty string so future missing translations
fail the test.

Comment on lines +788 to +807
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Prefill taskChooseOrganization using existing Thai translations

Shape matches the base; to avoid undefined at runtime, prefill from organizationList and createOrganization.

Apply this diff:

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'สร้างองค์กร',
+      action__invitationAccept: 'เข้าร่วม',
+      action__suggestionsAccept: 'ขอเข้าร่วม',
+      subtitle: 'เพื่อดำเนินการต่อไปยัง {{applicationName}}',
+      suggestionsAcceptedLabel: 'รอการอนุมัติ',
+      title: 'เลือกบัญชี',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'ข้าม',
+      formButtonSubmit: 'สร้างองค์กร',
+      subtitle: undefined,
+      title: 'สร้างองค์กร',
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'สร้างองค์กร',
action__invitationAccept: 'เข้าร่วม',
action__suggestionsAccept: 'ขอเข้าร่วม',
subtitle: 'เพื่อดำเนินการต่อไปยัง {{applicationName}}',
suggestionsAcceptedLabel: 'รอการอนุมัติ',
title: 'เลือกบัญชี',
},
createOrganization: {
formButtonReset: 'ข้าม',
formButtonSubmit: 'สร้างองค์กร',
subtitle: undefined,
title: 'สร้างองค์กร',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/th-TH.ts around lines 788 to 807, the
taskChooseOrganization block currently sets many fields to undefined; replace
those undefined values by pre-filling from the existing organizationList and
createOrganization translations: copy chooseOrganization fields
(action__createOrganization, action__invitationAccept,
action__suggestionsAccept, subtitle, suggestionsAcceptedLabel, title) from
organizationList.chooseOrganization, copy createOrganization fields
(formButtonReset, formButtonSubmit, subtitle, title) from createOrganization,
and copy signOut.actionLink and signOut.actionText from organizationList.signOut
so no runtime values are undefined.

Comment on lines +792 to +811
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Backfill Turkish translations for taskChooseOrganization using existing strings

Mirror translations from organizationList and createOrganization to avoid undefined values. createOrganization.subtitle left undefined pending UX copy.

  taskChooseOrganization: {
    chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Organizasyon oluştur',
+      action__invitationAccept: 'Katıl',
+      action__suggestionsAccept: 'Katılmak için talepte bulun',
+      subtitle: '{{applicationName}} ile devam edin',
+      suggestionsAcceptedLabel: 'Onay bekleniyor',
+      title: 'Bir hesap seçin',
    },
    createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Atla',
+      formButtonSubmit: 'Oluştur',
+      subtitle: undefined,
+      title: 'Organizasyon oluştur',
    },
    signOut: {
-      actionLink: undefined,
-      actionText: undefined,
+      actionLink: 'Çıkış yap',
+      actionText: 'Bu hesap sizin değil mi?',
    },
  },

Once en-US base copy is confirmed, we can tweak signOut.actionText if needed. Also consider adding a basic test that asserts these keys exist across locales (see script in the vi-VN comment).


🏁 Script executed:

#!/bin/bash
# Inspect English base definitions to verify keys and context

# 1. English base for taskChooseOrganization
rg -n "taskChooseOrganization" -C5 packages/localizations/src/en-US.ts

# 2. English base for organizationList (to mirror translations)
rg -n "organizationList" -C5 packages/localizations/src/en-US.ts

# 3. English base for standalone createOrganization block
rg -n "createOrganization" -C5 packages/localizations/src/en-US.ts

Length of output: 3596


🏁 Script executed:

#!/bin/bash
# Check existing translations in Turkish locale for organizationList and taskChooseOrganization
rg -n "organizationList" -C3 packages/localizations/src/tr-TR.ts
rg -n "createOrganization" -C3 packages/localizations/src/tr-TR.ts
rg -n "taskChooseOrganization" -C5 packages/localizations/src/tr-TR.ts

Length of output: 2465


🏁 Script executed:

#!/bin/bash
# Retrieve the full taskChooseOrganization block from en-US for context
rg -n "taskChooseOrganization:" -A15 -B2 packages/localizations/src/en-US.ts

Length of output: 876


🏁 Script executed:

#!/bin/bash
# Retrieve the full organizationList block in Turkish locale for confirmation
rg -n "organizationList:" -A20 -B2 packages/localizations/src/tr-TR.ts

Length of output: 1018


Backfill Turkish translations for taskChooseOrganization

Mirror existing strings to replace undefined values in packages/localizations/src/tr-TR.ts. Leave createOrganization.subtitle undefined pending UX copy.

• File: packages/localizations/src/tr-TR.ts, update taskChooseOrganization block
• Use organizationList and createOrganization translations for consistency

  taskChooseOrganization: {
    chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Organizasyon oluştur',
+      action__invitationAccept: 'Katıl',
+      action__suggestionsAccept: 'Katılmak için talepte bulun',
+      subtitle: '{{applicationName}} ile devam edin',
+      suggestionsAcceptedLabel: 'Onay bekleniyor',
+      title: 'Bir organizasyon seçin',
    },
    createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Atla',
+      formButtonSubmit: 'Oluştur',
+      subtitle: undefined, // pending UX copy
+      title: 'Organizasyon Oluştur',
    },
    signOut: {
-      actionLink: undefined,
-      actionText: undefined,
+      actionLink: 'Çıkış yap',
+      actionText: 'Bu hesap sizin değil mi?',
    },
  },

Once the en-US base copy is finalized, verify these match and adjust signOut.actionText if needed. Consider adding a locale-consistency test to assert these keys exist across all supported languages.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Organizasyon oluştur',
action__invitationAccept: 'Katıl',
action__suggestionsAccept: 'Katılmak için talepte bulun',
subtitle: '{{applicationName}} ile devam edin',
suggestionsAcceptedLabel: 'Onay bekleniyor',
title: 'Bir organizasyon seçin',
},
createOrganization: {
formButtonReset: 'Atla',
formButtonSubmit: 'Oluştur',
subtitle: undefined, // pending UX copy
title: 'Organizasyon Oluştur',
},
signOut: {
actionLink: 'Çıkış yap',
actionText: 'Bu hesap sizin değil mi?',
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/tr-TR.ts around lines 792 to 811, the
taskChooseOrganization block contains many undefined values; replace each
undefined with the corresponding Turkish strings from the existing
organizationList and createOrganization translations to mirror the en-US base
(use the same keys/phrasing as those existing blocks), leave
createOrganization.subtitle explicitly undefined as requested, and set
signOut.actionText to the equivalent Turkish text used elsewhere for sign-out
action (adjust later if en-US changes); after updating, run the locale
consistency check to ensure the keys exist across languages.

Comment on lines +788 to +807
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Partially fill uk-UA with safe, existing strings; leave the rest for native translation

Where we have high-confidence, existing equivalents in this file, set them to avoid undefined. For the remaining items (notably invitation/suggestions actions and signOut.*), prefer native translations rather than English fallbacks for consistency.

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: 'Створити організацію',
+      action__invitationAccept: undefined,
+      action__suggestionsAccept: undefined,
+      subtitle: 'щоб продовжити роботу в "{{applicationName}}"',
+      suggestionsAcceptedLabel: undefined,
+      title: 'Виберіть організацію',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: 'Пропустити',
+      formButtonSubmit: 'Створити організацію',
+      subtitle: undefined,
+      title: 'Створити організацію',
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

Open items to translate:

  • chooseOrganization.action__invitationAccept
  • chooseOrganization.action__suggestionsAccept
  • chooseOrganization.suggestionsAcceptedLabel
  • createOrganization.subtitle
  • signOut.actionLink and signOut.actionText

Do you want me to propose UA translations for the remaining keys and open a follow-up PR?

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Створити організацію',
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: 'щоб продовжити роботу в "{{applicationName}}"',
suggestionsAcceptedLabel: undefined,
title: 'Виберіть організацію',
},
createOrganization: {
formButtonReset: 'Пропустити',
formButtonSubmit: 'Створити організацію',
subtitle: undefined,
title: 'Створити організацію',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},

Comment on lines +779 to +798
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Populate zh-CN with existing locale strings to prevent undefined UI text

These values exist elsewhere in the file; reuse them here for consistency.

   taskChooseOrganization: {
     chooseOrganization: {
-      action__createOrganization: undefined,
-      action__invitationAccept: undefined,
-      action__suggestionsAccept: undefined,
-      subtitle: undefined,
-      suggestionsAcceptedLabel: undefined,
-      title: undefined,
+      action__createOrganization: '创建组织',
+      action__invitationAccept: '加入',
+      action__suggestionsAccept: '请求加入',
+      subtitle: '以继续使用 {{applicationName}}',
+      suggestionsAcceptedLabel: '等待批准',
+      title: '选择一个组织',
     },
     createOrganization: {
-      formButtonReset: undefined,
-      formButtonSubmit: undefined,
-      subtitle: undefined,
-      title: undefined,
+      formButtonReset: '跳过',
+      formButtonSubmit: '创建组织',
+      subtitle: undefined,
+      title: '创建组织',
     },
     signOut: {
       actionLink: undefined,
       actionText: undefined,
     },
   },

Pending: createOrganization.subtitle and signOut.* need translations.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: undefined,
action__invitationAccept: undefined,
action__suggestionsAccept: undefined,
subtitle: undefined,
suggestionsAcceptedLabel: undefined,
title: undefined,
},
createOrganization: {
formButtonReset: undefined,
formButtonSubmit: undefined,
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: '创建组织',
action__invitationAccept: '加入',
action__suggestionsAccept: '请求加入',
subtitle: '以继续使用 {{applicationName}}',
suggestionsAcceptedLabel: '等待批准',
title: '选择一个组织',
},
createOrganization: {
formButtonReset: '跳过',
formButtonSubmit: '创建组织',
subtitle: undefined,
title: '创建组织',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},
🤖 Prompt for AI Agents
In packages/localizations/src/zh-CN.ts around lines 779 to 798, several keys in
taskChooseOrganization are set to undefined; replace those undefined values with
the existing Chinese locale strings used elsewhere in the file for consistency
(e.g., reuse the localized strings for action__createOrganization,
action__invitationAccept, action__suggestionsAccept, subtitle,
suggestionsAcceptedLabel, title, createOrganization.formButtonReset,
createOrganization.formButtonSubmit, createOrganization.title and any matching
phrasing already present in the file). Keep createOrganization.subtitle and
signOut.actionLink/actionText as TODO markers for translation and add a comment
indicating they need proper zh-CN translations before merge. Ensure all replaced
values use the exact existing variable/string entries from this file to avoid
duplication.

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