Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/thin-wolves-study.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
---
'@clerk/localizations': patch
---

Add `taskChooseOrganization` to all locales.
20 changes: 20 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const arSA: LocalizationResource = {
},
socialButtonsBlockButton: 'للمتابعة مع {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const beBY: LocalizationResource = {
},
socialButtonsBlockButton: 'Працягнуць з дапамогай {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вы ўжо з’яўляецеся членам гэтай арганізацыі.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -788,6 +788,26 @@ export const bgBG: LocalizationResource = {
},
socialButtonsBlockButton: 'Продължи с {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
unstable__errors: {
already_a_member_in_organization: 'Вие вече сте член на тази организация.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -793,6 +793,26 @@ export const bnIN: LocalizationResource = {
},
socialButtonsBlockButton: '{{provider|titleize}} দিয়ে চালিয়ে যান',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ইতিমধ্যে সংগঠনের একজন সদস্য।',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -787,6 +787,26 @@ export const caES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continua amb {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +790 to +809

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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/bashset -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 |whileread -r f;do
missing=()
forkin"${required_keys[@]}";doif! rg -N "$k""$f">/dev/null;then
missing+=("$k")
fidone
count=$(rg -N 'taskChooseOrganization\s*:'"$f"| wc -l | tr -d '')if(( count >1));thenecho"DUPLICATE: $f has $count taskChooseOrganization blocks"fiif((${#missing[@]}>0));thenecho"MISSING in $f: ${missing[*]}"fidone

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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const csCZ: LocalizationResource = {
},
socialButtonsBlockButton: 'Pokračovat s {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} je již členem organizace.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -786,6 +786,26 @@ export const daDK: LocalizationResource = {
},
socialButtonsBlockButton: 'Forsæt med {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +789 to +808

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 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 bashset -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"|whileread -r f;doif rg -q "export const .*: LocalizationResource""$f";thenif! rg -q "taskChooseOrganization""$f";thenecho"Missing taskChooseOrganization in $f"continuefiforkin \
"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"donefidoneecho"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.

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -799,6 +799,26 @@ export const deDE: LocalizationResource = {
},
socialButtonsBlockButton: 'Weiter mit {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +802 to +821

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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.

unstable__errors: {
already_a_member_in_organization: 'Sie sind bereits Mitglied in dieser Organisation.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const elGR: LocalizationResource = {
},
socialButtonsBlockButton: 'Συνέχεια με {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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,
},
},

unstable__errors: {
already_a_member_in_organization: undefined,
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -790,6 +790,26 @@ export const enGB: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
Comment on lines +793 to +812

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ 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/bashset -euo pipefail
# Find all locale files
mapfile -t FILES <<(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
forfin"${FILES[@]}";do
has_root=$(rg -n "taskChooseOrganization\\s*:""$f"|| true)if [[ -z"$has_root" ]];thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefiforsubgroupin"chooseOrganization""createOrganization""signOut";doif! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:""$f">/dev/null;thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
# Iterate over every .ts locale filewhile IFS= read -r -d '' f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin"chooseOrganization""createOrganization""signOut";doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedone<<(find packages/localizations/src -type f -name "*.ts" -print0)if [[ $missing_any-eq 0 ]];thenecho"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 bashset -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts"|while IFS= read -r f;do# Check for the root keyif! grep -q "taskChooseOrganization\s*:""$f";thenecho"MISSING taskChooseOrganization in: $f"
missing_any=1
continuefi# Check each required subgroupforsubgroupin chooseOrganization createOrganization signOut;doif! grep -q "taskChooseOrganization.*${subgroup}""$f";thenecho"MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fidonedoneif [[ $missing_any-eq 0 ]];thenecho"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

importfsfrom'fs';importpathfrom'path';constLOCALE_DIR=path.resolve(__dirname,'../');constREQUIRED_SUBGROUPS=['chooseOrganization','createOrganization','signOut'];describe('taskChooseOrganization keys in locale files',()=>{constfiles=fs.readdirSync(LOCALE_DIR).filter(f=>f.endsWith('.ts')&&f!=='index.ts');for(constfileoffiles){test(file,()=>{// eslint-disable-next-line @typescript-eslint/no-var-requiresconstlocale=require(path.join(LOCALE_DIR,file)).default;expect(locale.taskChooseOrganization).toBeDefined();for(constkeyofREQUIRED_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.

unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organisation.',
captcha_invalid:
Expand Down
40 changes: 20 additions & 20 deletions packages/localizations/src/en-US.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,26 +2,6 @@ import type { LocalizationResource } from '@clerk/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
taskChooseOrganization: {
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
createOrganization: {
title: 'Setup your account',
subtitle: 'Tell us a bit about your organization',
formButtonSubmit: 'Create new organization',
formButtonReset: 'Cancel',
},
chooseOrganization: {
title: 'Choose an organization',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
action__createOrganization: 'Create new organization',
action__suggestionsAccept: 'Request to join',
action__invitationAccept: 'Join',
},
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand DownExpand Up@@ -805,6 +785,26 @@ export const enUS: LocalizationResource = {
},
socialButtonsBlockButton: 'Continue with {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
taskChooseOrganization: {
chooseOrganization: {
action__createOrganization: 'Create new organization',
action__invitationAccept: 'Join',
action__suggestionsAccept: 'Request to join',
subtitle: 'Join an existing organization or create a new one',
suggestionsAcceptedLabel: 'Pending approval',
title: 'Choose an organization',
},
createOrganization: {
formButtonReset: 'Cancel',
formButtonSubmit: 'Create new organization',
subtitle: 'Tell us a bit about your organization',
title: 'Setup your account',
},
signOut: {
actionLink: 'Sign out',
actionText: 'Signed in as {{identifier}}',
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} is already a member of the organization.',
captcha_invalid: undefined,
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -795,6 +795,26 @@ export const esCR: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: '{{provider|titleize}}',
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,
},
},
unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
20 changes: 20 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -789,6 +789,26 @@ export const esES: LocalizationResource = {
},
socialButtonsBlockButton: 'Continuar con {{provider|titleize}}',
socialButtonsBlockButtonManyInView: undefined,
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,
},
},
Comment on lines +792 to +811

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Populate Spanish translations for taskChooseOrganization; currently all keys are undefined

The shape matches the expected subgroups, but every value is undefined. Please add Spanish translations (or confirm a short-term fallback plan) so UI strings don’t render empty or fall back inconsistently.

  • Cross-check keys against en-US to ensure nothing is missing.
  • Align tone with existing locale strings and ensure contextual accuracy.

Given no tests were added, please add a small test/assertion that all locales provide taskChooseOrganization with the expected keys.

I can help prefill using nearby organizationList strings where appropriate and create a test scaffold that validates presence of keys across locales. Want me to proceed?


🏁 Script executed:

#!/bin/bashecho"----- ES-ES taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/es-ES.ts
echoecho"----- EN-US taskChooseOrganization -----"
rg -n "taskChooseOrganization" -A 15 packages/localizations/src/en-US.ts

Length of output: 1516


Populate Spanish Translations for taskChooseOrganization
The es-ES.ts file currently defines every key under taskChooseOrganization as undefined, causing blank UI strings. You should mirror the structure from en-US.ts and supply accurate Spanish text.

• File: packages/localizations/src/es-ES.ts (lines 792–811)
• Compare against en-US.ts (lines 788–803) to ensure all six keys in each subgroup are present:

  • chooseOrganization:
    • action__createOrganization
    • action__invitationAccept
    • action__suggestionsAccept
    • subtitle
    • suggestionsAcceptedLabel
    • title
  • createOrganization:
    • formButtonReset
    • formButtonSubmit
    • subtitle
    • title
  • signOut:
    • actionLink
    • actionText

Action Items:

  • Populate each of the above with proper Spanish translations, matching tone and context of nearby strings in es-ES.ts.
  • Add a unit test (or extend the existing localization test suite) to assert that all locales define the full taskChooseOrganization shape so future omissions are caught automatically.

unstable__errors: {
already_a_member_in_organization: '{{email}} ya es miembro de la organización.',
captcha_invalid:
Expand Down
Loading
Loading