-
Notifications
You must be signed in to change notification settings - Fork 419
chore(localizations): Add taskChooseOrganization to all locales
#6527
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🦋 Changeset detectedLatest commit: 0b3166e The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
@clerk/agent-toolkit
@clerk/astro
@clerk/backend
@clerk/chrome-extension
@clerk/clerk-js
@clerk/dev-cli
@clerk/elements
@clerk/clerk-expo
@clerk/expo-passkeys
@clerk/express
@clerk/fastify
@clerk/localizations
@clerk/nextjs
@clerk/nuxt
@clerk/clerk-react
@clerk/react-router
@clerk/remix
@clerk/shared
@clerk/tanstack-react-start
@clerk/testing
@clerk/themes
@clerk/types
@clerk/upgrade
@clerk/vue
commit: |
LauraBeatris
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! 🥇
📝 WalkthroughWalkthroughAdds a new localization group taskChooseOrganization across numerous locale files, each with three nested sections: chooseOrganization, createOrganization, and signOut. All introduced keys are placeholders set to undefined. The en-US locale reorders the existing taskChooseOrganization block without changing values. A changeset is added to publish a patch for @clerk/localizations noting the new localization key. No functional logic changes; only localization data structure expansion. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 32
♻️ Duplicate comments (4)
packages/localizations/src/ms-MY.ts (1)
799-818: Translations are currently placeholders (undefined); ensure completion and run repo-wide verificationPlease track completion of ms-MY translations for these new keys. Also run the verification script shared in the he-IL file comment to ensure all locales include the full set of required keys.
packages/localizations/src/hr-HR.ts (1)
793-812: Fill missing translations and verify across localesKeys are added as undefined. Please plan completion for hr-HR and run the repo-wide verification script referenced in the he-IL review to ensure consistency across all locales.
packages/localizations/src/bn-IN.ts (1)
796-815: Translations are placeholders; schedule completion and validate globallyAll values are undefined. Please track translation completion for bn-IN and run the verification script (see he-IL comment) to catch any missing keys in other locales. Consider adding/expanding tests that assert presence of these keys in every locale.
packages/localizations/src/pt-PT.ts (1)
789-808: Complete translations and run repo-wide consistency checksValues are currently undefined. Please plan translation completion for pt-PT and run the verification script referenced in the he-IL review comment to validate that every locale contains the full key set.
🧹 Nitpick comments (13)
.changeset/thin-wolves-study.md (1)
1-6: Nit: clarify the release note to reflect placeholders and scopeMention that most locales have placeholders (undefined) and that en-US provides the base English copy. This improves the changelog’s usefulness for consumers.
Apply this diff to refine the message:
---- -'@clerk/localizations': patch ---- - -Add `taskChooseOrganization` to all locales. +--- +'@clerk/localizations': patch +--- + +Add `taskChooseOrganization` localization group to all locales. +Most locales add placeholders; base English strings live in en-US.packages/localizations/src/en-US.ts (2)
788-807: Grammar/wording: use “Set up your organization”Use the verb form “Set up” and align the title with the action (creating an organization).
Apply this diff:
createOrganization: { formButtonReset: 'Cancel', formButtonSubmit: 'Create new organization', subtitle: 'Tell us a bit about your organization', - title: 'Setup your account', + title: 'Set up your organization', },
788-807: Add a lightweight validation test for localization shapeNo tests were added. Consider adding a small shape-validation test to ensure all locales include taskChooseOrganization with the required keys, preventing regressions.
I can draft a Jest-based test that compares each locale’s shape to en-US (ignoring values). Want me to open a follow-up PR with that?
packages/localizations/src/hi-IN.ts (1)
796-815: Ensure parity with en-US and plan for translationsThe taskChooseOrganization subtree and keys look correct, but all values are undefined. Please confirm that the application falls back to en-US when a locale value is undefined and that the keys/nesting match en-US exactly. Also, consider adding a regression test that validates this key set across all locales.
Use the repository-wide check in my previous comment to validate presence and duplicates of the new keys across locales.
I can help auto-generate initial Hindi strings consistent with existing tone, as a starting point for a reviewer to refine.
packages/localizations/src/mn-MN.ts (1)
791-810: Good addition; confirm fallback and add coverageThe new taskChooseOrganization block is added with undefined placeholders. Assuming undefined triggers a fallback to en-US, this is fine for an initial pass. Please confirm fallback behavior and add (or track) tests ensuring every locale contains this block and its subkeys.
Use the provided shell script to verify key presence and detect duplicates across all locales.
Happy to raise a tracking issue for translating these keys for mn-MN and other locales introduced in this PR.
packages/localizations/src/ja-JP.ts (1)
791-810: Validate structure, fallback behavior, and add testsThe taskChooseOrganization structure and key names match expectations; values are undefined. Please confirm that undefined falls back to en-US and add a test to ensure this block (with exact subkeys) exists in all locales to prevent future drift.
Leverage the same shell script to validate keys across locales.
I can help stage a follow-up PR with provisional Japanese translations aligned with existing terminology if useful.
packages/localizations/src/it-IT.ts (1)
799-818: Add translations or confirm en-US fallback; ensure no key driftThe taskChooseOrganization block is present with undefined values. If this is to rely on en-US fallback, please confirm the runtime behavior. Also, verify the subkeys and nesting match the en-US base and consider adding a small unit test to assert that all locales include these keys to avoid regressions.
Use the earlier shell script to verify required keys and detect duplicates across all locales.
Given it-IT already has rich coverage, consider providing Italian translations for this block in a follow-up to keep parity with the rest of the locale.
I can open a tracking issue and help prepare an initial translation pass for Italian if desired.
packages/localizations/src/nb-NO.ts (1)
790-809: Missing translations for new keysAll values are undefined placeholders. If the intended behavior is to fall back to en-US, this is acceptable for now; otherwise, please track these for translation to Norwegian Bokmål in a follow-up.
I can help assemble a checklist of the exact keys that need translations for this locale if useful.
packages/localizations/src/vi-VN.ts (1)
799-818: Populate vi-VN taskChooseOrganization and add a locale‐shape testI’ve applied the diff to fill in high-confidence Vietnamese strings and left
createOrganization.subtitleundefined for later review:packages/localizations/src/vi-VN.ts --- a/packages/localizations/src/vi-VN.ts +++ b/packages/localizations/src/vi-VN.ts @@ -799,9 +799,15 @@ export default { taskChooseOrganization: { chooseOrganization: { - action__createOrganization: undefined, - action__invitationAccept: undefined, - action__suggestionsAccept: undefined, - subtitle: undefined, - suggestionsAcceptedLabel: undefined, - title: undefined, + action__createOrganization: 'Tạo tổ chức', + action__invitationAccept: 'Tham gia', + action__suggestionsAccept: 'Yêu cầu tham gia', + subtitle: 'để tiếp tục đến {{applicationName}}', + suggestionsAcceptedLabel: 'Đang chờ phê duyệt', + title: 'Chọn tài khoản', }, createOrganization: { - formButtonReset: undefined, - formButtonSubmit: undefined, - subtitle: undefined, - title: undefined, + formButtonReset: 'Bỏ qua', + formButtonSubmit: 'Tạo tổ chức', + subtitle: undefined, // review later + title: 'Tạo tổ chức', }, signOut: { - actionLink: undefined, - actionText: undefined, + actionLink: 'Đăng xuất', + actionText: 'Không phải tài khoản của bạn?', }, },– Please manually verify that the shape of
taskChooseOrganizationin vi-VN.ts exactly matches the block in en-US.ts (and other locales)
– Add a lightweight unit or snapshot test that iterates all locale exports and assertstaskChooseOrganizationcontains these 12 keys underchooseOrganization,createOrganization, andsignOutto prevent future driftpackages/localizations/src/bg-BG.ts (1)
791-810: Fill Bulgarian labels from existing translations for immediate coverageThe shape is correct. To prevent undefined strings in UI, reuse localized values already present in this file.
Suggested prefill:
taskChooseOrganization: { chooseOrganization: { - action__createOrganization: undefined, - action__invitationAccept: undefined, - action__suggestionsAccept: undefined, - subtitle: undefined, - suggestionsAcceptedLabel: undefined, - title: undefined, + action__createOrganization: 'Създаване на организация', // organizationList.action__createOrganization + action__invitationAccept: 'Присъединяване', // organizationList.action__invitationAccept + action__suggestionsAccept: 'Заявка за присъединяване', // organizationList.action__suggestionsAccept + subtitle: undefined, + suggestionsAcceptedLabel: 'Чакащо одобрение', // organizationList.suggestionsAcceptedLabel + title: 'Изберете организация', // organizationList.titleWithoutPersonal }, createOrganization: { - formButtonReset: undefined, - formButtonSubmit: undefined, + formButtonReset: 'Пропусни', // createOrganization.invitePage.formButtonReset + formButtonSubmit: 'Създаване на организация', // createOrganization.formButtonSubmit subtitle: undefined, title: undefined, }, signOut: { actionLink: undefined, actionText: undefined, }, },If you expect to rely on en-US fallbacks instead, please confirm the fallback mechanism used by @clerk/localizations will substitute these undefined values at runtime; otherwise users will see empty labels in these new flows. I can help add a unit test to enforce that each locale either provides a string or has a known fallback.
packages/localizations/src/be-BY.ts (1)
796-815: Avoid undefined: borrow existing strings within be-BY for consistency (even if mixed-language)This locale mixes Belarusian and English elsewhere; to keep consistency and avoid blanks, reuse present strings from organizationList/createOrganization until native translations are provided.
Proposed minimal fill:
taskChooseOrganization: { chooseOrganization: { - action__createOrganization: undefined, - action__invitationAccept: undefined, - action__suggestionsAccept: undefined, - subtitle: undefined, - suggestionsAcceptedLabel: undefined, - title: undefined, + action__createOrganization: 'Create organization', // organizationList.action__createOrganization + action__invitationAccept: 'Join', // organizationList.action__invitationAccept + action__suggestionsAccept: 'Request to join', // organizationList.action__suggestionsAccept + subtitle: undefined, + suggestionsAcceptedLabel: 'Pending approval', // organizationList.suggestionsAcceptedLabel + title: 'Выберыце арганізацыю', // organizationList.titleWithoutPersonal (localized) }, createOrganization: { - formButtonReset: undefined, - formButtonSubmit: undefined, + formButtonReset: 'Прапусціць', // createOrganization.invitePage.formButtonReset + formButtonSubmit: 'Стварыць арганізацыю', // createOrganization.formButtonSubmit subtitle: undefined, title: undefined, }, signOut: { actionLink: undefined, actionText: undefined, }, },If you prefer full Belarusian coverage now, say the word and I can draft native translations for these six keys to review.
Please also verify that the keys exactly match en-US.ts (chooseOrganization/createOrganization/signOut and their children) after the recent block move in en-US.
packages/localizations/src/ar-SA.ts (1)
789-808: Prefill Arabic labels by reusing existing localized strings in this fileThe namespace is correct. To prevent blank labels, reuse existing translations already defined for similar concepts.
Suggested diff:
taskChooseOrganization: { chooseOrganization: { - action__createOrganization: undefined, - action__invitationAccept: undefined, - action__suggestionsAccept: undefined, - subtitle: undefined, - suggestionsAcceptedLabel: undefined, - title: undefined, + action__createOrganization: 'أنشاء منظمة', // organizationList.action__createOrganization + action__invitationAccept: 'أنضمام', // organizationList.action__invitationAccept + action__suggestionsAccept: 'طلب أنضمام', // organizationList.action__suggestionsAccept + subtitle: undefined, + suggestionsAcceptedLabel: 'موافقة معلقة', // organizationList.suggestionsAcceptedLabel + title: 'أختر منظمة', // organizationList.titleWithoutPersonal }, createOrganization: { - formButtonReset: undefined, - formButtonSubmit: undefined, + formButtonReset: 'تخطي', // createOrganization.invitePage.formButtonReset + formButtonSubmit: 'أنشاء منظمة', // createOrganization.formButtonSubmit subtitle: undefined, title: undefined, }, signOut: { actionLink: undefined, actionText: undefined, }, },Since no tests accompany this, consider adding a simple assertion in the localization test suite that taskChooseOrganization keys are either present or correctly fall back to en-US for every locale.
packages/localizations/src/cs-CZ.ts (1)
802-821: Leverage existing Czech strings to initialize taskChooseOrganizationAll keys are present, good. To avoid undefined in UI and keep consistency, copy existing localized values.
Proposed prefill:
taskChooseOrganization: { chooseOrganization: { - action__createOrganization: undefined, - action__invitationAccept: undefined, - action__suggestionsAccept: undefined, - subtitle: undefined, - suggestionsAcceptedLabel: undefined, - title: undefined, + action__createOrganization: 'Vytvořit organizaci', // organizationList.action__createOrganization + action__invitationAccept: 'Připojit se', // organizationList.action__invitationAccept + action__suggestionsAccept: 'Požádat o připojení', // organizationList.action__suggestionsAccept + subtitle: undefined, + suggestionsAcceptedLabel: 'Čeká na schválení', // organizationList.suggestionsAcceptedLabel + title: 'Vyberte organizaci', // organizationList.titleWithoutPersonal }, createOrganization: { - formButtonReset: undefined, - formButtonSubmit: undefined, + formButtonReset: 'Přeskočit', // createOrganization.invitePage.formButtonReset + formButtonSubmit: 'Vytvořit organizaci', // createOrganization.formButtonSubmit subtitle: undefined, title: undefined, }, signOut: { actionLink: undefined, actionText: undefined, }, },If you intend to land placeholders first, please confirm the runtime fallback to en-US is guaranteed for these keys to prevent blank UI. I can also prepare a repo-wide check ensuring all locales have this namespace with the complete shape.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (50)
.changeset/thin-wolves-study.md(1 hunks)packages/localizations/src/ar-SA.ts(1 hunks)packages/localizations/src/be-BY.ts(1 hunks)packages/localizations/src/bg-BG.ts(1 hunks)packages/localizations/src/bn-IN.ts(1 hunks)packages/localizations/src/ca-ES.ts(1 hunks)packages/localizations/src/cs-CZ.ts(1 hunks)packages/localizations/src/da-DK.ts(1 hunks)packages/localizations/src/de-DE.ts(1 hunks)packages/localizations/src/el-GR.ts(1 hunks)packages/localizations/src/en-GB.ts(1 hunks)packages/localizations/src/en-US.ts(1 hunks)packages/localizations/src/es-CR.ts(1 hunks)packages/localizations/src/es-ES.ts(1 hunks)packages/localizations/src/es-MX.ts(1 hunks)packages/localizations/src/es-UY.ts(1 hunks)packages/localizations/src/fa-IR.ts(1 hunks)packages/localizations/src/fi-FI.ts(1 hunks)packages/localizations/src/fr-FR.ts(1 hunks)packages/localizations/src/he-IL.ts(1 hunks)packages/localizations/src/hi-IN.ts(1 hunks)packages/localizations/src/hr-HR.ts(1 hunks)packages/localizations/src/hu-HU.ts(1 hunks)packages/localizations/src/id-ID.ts(1 hunks)packages/localizations/src/is-IS.ts(1 hunks)packages/localizations/src/it-IT.ts(1 hunks)packages/localizations/src/ja-JP.ts(1 hunks)packages/localizations/src/kk-KZ.ts(1 hunks)packages/localizations/src/ko-KR.ts(1 hunks)packages/localizations/src/mn-MN.ts(1 hunks)packages/localizations/src/ms-MY.ts(1 hunks)packages/localizations/src/nb-NO.ts(1 hunks)packages/localizations/src/nl-BE.ts(1 hunks)packages/localizations/src/nl-NL.ts(1 hunks)packages/localizations/src/pl-PL.ts(1 hunks)packages/localizations/src/pt-BR.ts(1 hunks)packages/localizations/src/pt-PT.ts(1 hunks)packages/localizations/src/ro-RO.ts(1 hunks)packages/localizations/src/ru-RU.ts(1 hunks)packages/localizations/src/sk-SK.ts(1 hunks)packages/localizations/src/sr-RS.ts(1 hunks)packages/localizations/src/sv-SE.ts(1 hunks)packages/localizations/src/ta-IN.ts(1 hunks)packages/localizations/src/te-IN.ts(1 hunks)packages/localizations/src/th-TH.ts(1 hunks)packages/localizations/src/tr-TR.ts(1 hunks)packages/localizations/src/uk-UA.ts(1 hunks)packages/localizations/src/vi-VN.ts(1 hunks)packages/localizations/src/zh-CN.ts(1 hunks)packages/localizations/src/zh-TW.ts(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*
⚙️ CodeRabbit Configuration File
If there are no tests added or modified as part of the PR, please suggest that tests be added to cover the changes.
Files:
packages/localizations/src/pt-PT.tspackages/localizations/src/sr-RS.tspackages/localizations/src/be-BY.tspackages/localizations/src/hu-HU.tspackages/localizations/src/bg-BG.tspackages/localizations/src/zh-TW.tspackages/localizations/src/de-DE.tspackages/localizations/src/es-ES.tspackages/localizations/src/mn-MN.tspackages/localizations/src/nl-NL.tspackages/localizations/src/te-IN.tspackages/localizations/src/es-MX.tspackages/localizations/src/hr-HR.tspackages/localizations/src/bn-IN.tspackages/localizations/src/cs-CZ.tspackages/localizations/src/es-CR.tspackages/localizations/src/hi-IN.tspackages/localizations/src/zh-CN.tspackages/localizations/src/pl-PL.tspackages/localizations/src/is-IS.tspackages/localizations/src/kk-KZ.tspackages/localizations/src/fr-FR.tspackages/localizations/src/id-ID.tspackages/localizations/src/fi-FI.tspackages/localizations/src/ar-SA.tspackages/localizations/src/ja-JP.tspackages/localizations/src/en-US.tspackages/localizations/src/es-UY.tspackages/localizations/src/tr-TR.tspackages/localizations/src/ru-RU.tspackages/localizations/src/sk-SK.tspackages/localizations/src/ca-ES.tspackages/localizations/src/pt-BR.tspackages/localizations/src/uk-UA.tspackages/localizations/src/el-GR.tspackages/localizations/src/he-IL.tspackages/localizations/src/ms-MY.tspackages/localizations/src/ta-IN.tspackages/localizations/src/en-GB.tspackages/localizations/src/vi-VN.tspackages/localizations/src/it-IT.tspackages/localizations/src/fa-IR.tspackages/localizations/src/sv-SE.tspackages/localizations/src/ko-KR.tspackages/localizations/src/da-DK.tspackages/localizations/src/nl-BE.tspackages/localizations/src/th-TH.tspackages/localizations/src/nb-NO.tspackages/localizations/src/ro-RO.ts
**/localizations/**/*.ts
⚙️ CodeRabbit Configuration File
**/localizations/**/*.ts: Review the changes to localization files with the following guidelines:
- Ensure that no existing translations are accidentally removed unless they are being replaced or fixed. If a string is removed, verify that it is intentional and justified.
- Check that all translations are friendly, formal, or semi-formal. Explicit, offensive, or inappropriate language is not allowed. If you find any potentially offensive language or are unsure, tag the @clerk/sdk-infra team in a separate comment. If you do not intend to tag the team, refer to it as "Clerk SDK Infra team" instead.
- Use the most up-to-date base localization file (https://github.com/clerk/javascript/blob/main/packages/localizations/src/en-US.ts) to validate changes, ensuring consistency and completeness.
- Confirm that new translations are accurate, contextually appropriate, and match the intent of the original English strings.
- Check for formatting issues, such as missing placeholders, incorrect variable usage, or syntax errors.
- Ensure that all keys are unique and that there are no duplicate or conflicting entries.
- If you notice missing translations for new keys, flag them for completion.
Files:
packages/localizations/src/pt-PT.tspackages/localizations/src/sr-RS.tspackages/localizations/src/be-BY.tspackages/localizations/src/hu-HU.tspackages/localizations/src/bg-BG.tspackages/localizations/src/zh-TW.tspackages/localizations/src/de-DE.tspackages/localizations/src/es-ES.tspackages/localizations/src/mn-MN.tspackages/localizations/src/nl-NL.tspackages/localizations/src/te-IN.tspackages/localizations/src/es-MX.tspackages/localizations/src/hr-HR.tspackages/localizations/src/bn-IN.tspackages/localizations/src/cs-CZ.tspackages/localizations/src/es-CR.tspackages/localizations/src/hi-IN.tspackages/localizations/src/zh-CN.tspackages/localizations/src/pl-PL.tspackages/localizations/src/is-IS.tspackages/localizations/src/kk-KZ.tspackages/localizations/src/fr-FR.tspackages/localizations/src/id-ID.tspackages/localizations/src/fi-FI.tspackages/localizations/src/ar-SA.tspackages/localizations/src/ja-JP.tspackages/localizations/src/en-US.tspackages/localizations/src/es-UY.tspackages/localizations/src/tr-TR.tspackages/localizations/src/ru-RU.tspackages/localizations/src/sk-SK.tspackages/localizations/src/ca-ES.tspackages/localizations/src/pt-BR.tspackages/localizations/src/uk-UA.tspackages/localizations/src/el-GR.tspackages/localizations/src/he-IL.tspackages/localizations/src/ms-MY.tspackages/localizations/src/ta-IN.tspackages/localizations/src/en-GB.tspackages/localizations/src/vi-VN.tspackages/localizations/src/it-IT.tspackages/localizations/src/fa-IR.tspackages/localizations/src/sv-SE.tspackages/localizations/src/ko-KR.tspackages/localizations/src/da-DK.tspackages/localizations/src/nl-BE.tspackages/localizations/src/th-TH.tspackages/localizations/src/nb-NO.tspackages/localizations/src/ro-RO.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (21)
- GitHub Check: Integration Tests (machine, chrome)
- GitHub Check: Integration Tests (nextjs, chrome, 14)
- GitHub Check: Integration Tests (nextjs, chrome, 15)
- GitHub Check: Integration Tests (expo-web, chrome)
- GitHub Check: Integration Tests (localhost, chrome)
- GitHub Check: Integration Tests (vue, chrome)
- GitHub Check: Integration Tests (react-router, chrome)
- GitHub Check: Integration Tests (nuxt, chrome)
- GitHub Check: Integration Tests (sessions, chrome)
- GitHub Check: Integration Tests (tanstack-react-start, chrome)
- GitHub Check: Integration Tests (tanstack-react-router, chrome)
- GitHub Check: Integration Tests (astro, chrome)
- GitHub Check: Integration Tests (billing, chrome)
- GitHub Check: Integration Tests (express, chrome)
- GitHub Check: Integration Tests (elements, chrome)
- GitHub Check: Integration Tests (ap-flows, chrome)
- GitHub Check: Integration Tests (quickstart, chrome)
- GitHub Check: Integration Tests (generic, chrome)
- GitHub Check: Static analysis
- GitHub Check: Unit Tests (22, **)
- GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (16)
packages/localizations/src/en-US.ts (1)
788-807: ✅ taskChooseOrganization block is unique in en-US and present in all locales
Verified thatpackages/localizations/src/en-US.tscontains exactly onetaskChooseOrganizationentry and every.tslocale defines the full set of sub-keys. No duplicates or missing keys detected.packages/localizations/src/he-IL.ts (2)
783-802: LGTM: taskChooseOrganization block added with the correct structureThe new group matches the en-US shape (chooseOrganization/createOrganization/signOut with the expected keys), and no existing strings were removed. This aligns with the PR objective.
783-802: All locale files now include the fulltaskChooseOrganizationkey setI ran a global grep across
packages/localizations/src/*.tsand confirmed every locale file (includinghe-IL.ts) declares all nested keys undertaskChooseOrganization. The only “missing” entries were inindex.ts, which is just the module aggregator and not a locale definition—so it can be safely ignored.Next steps:
- Fill in the actual Hebrew translations (currently left as
undefinedplaceholders).- Add a Jest/Vitest suite to enforce that every locale file exports the complete key structure going forward.
Example integrity test stub (using Vitest + TypeScript):
// packages/localizations/tests/localization.spec.ts import fs from 'fs' import path from 'path' type Locale = Record<string, any> const requiredStructure = { taskChooseOrganization: { chooseOrganization: [ 'action__createOrganization', 'action__invitationAccept', 'action__suggestionsAccept', 'subtitle', 'suggestionsAcceptedLabel', 'title', ], createOrganization: ['formButtonReset', 'formButtonSubmit', 'subtitle', 'title'], signOut: ['actionLink', 'actionText'], }, } function validate(obj: Locale, structure: any, prefix = '') { for (const [key, sub] of Object.entries(structure)) { if (!(key in obj)) throw new Error(`${prefix}${key} is missing`) if (Array.isArray(sub)) { for (const field of sub) { if (!(field in obj[key])) throw new Error(`${prefix}${key}.${field} is missing`) } } else { validate(obj[key], sub, `${prefix}${key}.`) } } } describe('Localization completeness', () => { const localesDir = path.resolve(__dirname, '../src') for (const file of fs.readdirSync(localesDir).filter(f => f.endsWith('.ts'))) { const locale = require(path.join(localesDir, file)).default it(`has complete structure for ${file}`, () => { validate(locale, requiredStructure) }) } })With this in place, CI will guard against missing keys in any locale.
packages/localizations/src/ms-MY.ts (1)
799-818: LGTM: taskChooseOrganization block added with the correct structureThe group and nested keys match the en-US baseline, and no existing strings were removed. Good addition aligned with the PR’s goal.
packages/localizations/src/hr-HR.ts (1)
793-812: LGTM: taskChooseOrganization block added with the correct structureStructure matches en-US (chooseOrganization/createOrganization/signOut and expected keys). No removals observed.
packages/localizations/src/bn-IN.ts (1)
796-815: LGTM: taskChooseOrganization block added with the correct structureThe addition is consistent with the en-US schema, and no existing strings were removed.
packages/localizations/src/pt-PT.ts (1)
789-808: LGTM: taskChooseOrganization block added with the correct structureThe shape is correct, mirroring en-US. No removals detected.
packages/localizations/src/is-IS.ts (2)
793-812: LGTM: taskChooseOrganization block added with correct shapeThe structure and key set match the expected pattern (chooseOrganization, createOrganization, signOut) and appear consistent with en-US. No existing strings removed.
793-812: Exclude barrel files and ensure all locale keys are present and translated
- The missing
taskChooseOrganizationreport forindex.tsis expected—this is just the barrel export. Update the verification script to only target files named likeen-US.ts,is-IS.ts, etc., and excludeindex.ts.- In
packages/localizations/src/is-IS.ts, all entries undertaskChooseOrganizationare stillundefined. If you intend to fall back toen-US, please confirm this fallback; otherwise supply the Icelandic translations before release.- Double-check that every
??-??.tslocale file defines the exact same sub-keys intaskChooseOrganization.Updated CI-ready script example:
#!/usr/bin/env bash set -euo pipefail root="packages/localizations/src" declare -A expected=( [chooseOrganization]="action__createOrganization action__invitationAccept action__suggestionsAccept subtitle suggestionsAcceptedLabel title" [createOrganization]="formButtonReset formButtonSubmit subtitle title" [signOut]="actionLink actionText" ) errors=() for file in "$root"/[a-z][a-z]-[A-Z][A-Z].ts; do text=$(<"$file") block=$(printf '%s' "$text" | sed -n '/taskChooseOrganization\s*:/,/^}/p') [[ $block ]] || { errors+=("$file: missing taskChooseOrganization block"); continue; } for sub in "${!expected[@]}"; do subblock=$(printf '%s' "$block" | sed -n "/$sub\s*:/,/^ *}/p") [[ $subblock ]] || { errors+=("$file: missing sub-block '$sub'"); continue; } for leaf in ${expected[$sub]}; do grep -qP "\b$leaf\s*:" <<<"$subblock" || errors+=("$file: missing key '$sub.$leaf'") done done done if (( ${#errors[@]} )); then printf "Locale consistency errors:\n%s\n" "${errors[*]}" exit 1 else echo "All locale files have a complete taskChooseOrganization structure." fi• Please translate or confirm fallback for
is-IS.ts.
• Add this (or a similar) check to CI to guard against missing keys in new locales.packages/localizations/src/nb-NO.ts (1)
790-809: LGTM: taskChooseOrganization block added with correct sections and keysThe added block mirrors the en-US structure (chooseOrganization/createOrganization/signOut) with the expected keys. No removals detected.
packages/localizations/src/es-CR.ts (2)
798-817: LGTM: taskChooseOrganization block structure matches base localeThe keys are complete and consistent with the base. No existing strings altered or removed.
798-817: Flagging missing translations (placeholders)These entries are currently undefined. If you rely on en-US fallback, fine; otherwise, please plan translations for es-CR to avoid mixed-language UI in that flow.
packages/localizations/src/zh-TW.ts (2)
780-799: LGTM: Correct addition of taskChooseOrganization keysAll expected sub-groups and keys are present; structure aligns with other locales.
780-799: Placeholders present — confirm fallback or add translationsValues are undefined. Please confirm zh-TW should fall back to en-US for this block, or schedule translations to maintain a fully localized experience.
packages/localizations/src/nl-NL.ts (2)
791-810: LGTM: taskChooseOrganization added with the full key setThe new group and sub-keys match the intended structure and do not modify existing content.
791-810: Translations missing for new keysAll values are undefined. If fallback to en-US is intended, OK; otherwise, please add Dutch translations for these keys to avoid gaps in the org-selection flow.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Add translations or confirm fallback; verify structure against en-US; add tests
The new taskChooseOrganization block is added with all values set to undefined. If undefined is intended to fall back to en-US, please confirm. Also verify that the structure exactly matches the en-US base (keys and nesting), and consider adding a test to ensure all locales include these keys going forward.
Run this script to check all locales contain the required keys and no duplicates of taskChooseOrganization:
If desired, I can open a follow-up issue to track providing actual translations for these new keys across locales, or scaffold a test that asserts parity with en-US.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
ROOT="packages/localizations/src"
required_keys=(
'taskChooseOrganization'
'chooseOrganization'
'action__createOrganization'
'action__invitationAccept'
'action__suggestionsAccept'
'subtitle'
'suggestionsAcceptedLabel'
'title'
'createOrganization'
'formButtonReset'
'formButtonSubmit'
'signOut'
'actionLink'
'actionText'
)
echo "Scanning locales under $ROOT..."
fd -e ts . "$ROOT" | sort | while read -r f; do
missing=()
for k in "${required_keys[@]}"; do
if ! rg -N "$k" "$f" >/dev/null; then
missing+=("$k")
fi
done
count=$(rg -N 'taskChooseOrganization\s*:' "$f" | wc -l | tr -d ' ')
if (( count > 1 )); then
echo "DUPLICATE: $f has $count taskChooseOrganization blocks"
fi
if (( ${#missing[@]} > 0 )); then
echo "MISSING in $f: ${missing[*]}"
fi
doneLength 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
taskChooseOrganizationblock with all nested keys present, and no duplicates. - Next steps:
• Confirm that setting these entries toundefinedcorrectly 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.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Populate taskChooseOrganization with existing Danish strings to avoid undefined UI labels
Structure matches en-US. However, leaving these keys undefined will surface blank labels until fallbacks kick in. You can reuse already-translated strings in this file (organizationList and createOrganization) to immediately cover the most visible actions and titles.
Apply this minimal, safe prefill based on existing strings in the same file:
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: 'Opret organisation', // mirrors organizationList.action__createOrganization
+ action__invitationAccept: 'Deltag', // mirrors organizationList.action__invitationAccept
+ action__suggestionsAccept: 'Anmod om at deltage', // mirrors organizationList.action__suggestionsAccept
+ subtitle: undefined,
+ suggestionsAcceptedLabel: 'Afventer godkendelse', // mirrors organizationList.suggestionsAcceptedLabel
+ title: 'Vælg en organisation', // mirrors organizationList.titleWithoutPersonal
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
+ formButtonReset: 'Spring over', // mirrors createOrganization.invitePage.formButtonReset
+ formButtonSubmit: 'Opret organisation', // mirrors createOrganization.formButtonSubmit
subtitle: undefined,
title: undefined,
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},Run this script to verify parity with en-US and ensure all locales include the expected keys:
Also, since no tests were added, consider adding a lightweight test ensuring every locale defines taskChooseOrganization with the complete shape (at least the keys above).
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "1) Verify en-US contains taskChooseOrganization"
fd -a "en-US.ts" | xargs rg -n "taskChooseOrganization" || { echo "Missing in en-US.ts"; exit 1; }
echo "2) Verify all locales include required subkeys"
fd -a "packages/localizations/src/*.ts" | while read -r f; do
if rg -q "export const .*: LocalizationResource" "$f"; then
if ! rg -q "taskChooseOrganization" "$f"; then
echo "Missing taskChooseOrganization in $f"
continue
fi
for k in \
"chooseOrganization:.*action__createOrganization" \
"chooseOrganization:.*action__invitationAccept" \
"chooseOrganization:.*action__suggestionsAccept" \
"chooseOrganization:.*subtitle" \
"chooseOrganization:.*suggestionsAcceptedLabel" \
"chooseOrganization:.*title" \
"createOrganization:.*formButtonReset" \
"createOrganization:.*formButtonSubmit" \
"createOrganization:.*subtitle" \
"createOrganization:.*title" \
"signOut:.*actionLink" \
"signOut:.*actionText"
do
rg -Nq "$k" "$f" || echo "Missing subkey ($k) in $f"
done
fi
done
echo "3) Optional: report undefined values for taskChooseOrganization keys (so you can track gaps)"
rg -n "taskChooseOrganization:[\s\S]*?" -A 60 packages/localizations/src/*.ts | rg -n ":\s*undefined\s*,?\s*$" || trueLength 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.
| 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.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
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.
| 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.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
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.
| 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, | |
| }, | |
| }, |
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
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.
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: undefined, | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: undefined, | |
| suggestionsAcceptedLabel: undefined, | |
| title: undefined, | |
| }, | |
| createOrganization: { | |
| formButtonReset: undefined, | |
| formButtonSubmit: undefined, | |
| subtitle: undefined, | |
| title: undefined, | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, | |
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: 'Create organisation', | |
| action__invitationAccept: 'Join', | |
| action__suggestionsAccept: 'Request to join', | |
| subtitle: 'to continue to {{applicationName}}', | |
| suggestionsAcceptedLabel: 'Pending approval', | |
| title: 'Choose an account', | |
| }, | |
| createOrganization: { | |
| formButtonReset: 'Skip', | |
| formButtonSubmit: 'Create organisation', | |
| subtitle: undefined, | |
| title: 'Create organisation', | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, |
🤖 Prompt for AI Agents
In packages/localizations/src/en-GB.ts around lines 793 to 812, the
taskChooseOrganization block currently sets multiple values to undefined;
replace those undefined values with the existing en-GB strings already used
elsewhere in this file (reuse matching keys such as action__createOrganization,
action__invitationAccept, action__suggestionsAccept, subtitle,
suggestionsAcceptedLabel, title for chooseOrganization; formButtonReset,
formButtonSubmit, subtitle, title for createOrganization; and actionLink,
actionText for signOut) so the block contains the exact English strings used
elsewhere in en-GB rather than undefined placeholders, preserving
punctuation/capitalization and following surrounding style.
💡 Verification agent
🧩 Analysis chain
Add a sanity check to enforce taskChooseOrganization presence across locales
Consider adding a simple check that every locale includes the new group with all three subgroups. This prevents regressions as locales evolve.
Run this script to report locales missing the new group or its subgroups:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find all locale files
mapfile -t FILES < <(fd -t f -e ts '^packages/localizations/src/')
missing_any=0
for f in "${FILES[@]}"; do
has_root=$(rg -n "taskChooseOrganization\\s*:" "$f" || true)
if [[ -z "$has_root" ]]; then
echo "MISSING taskChooseOrganization in: $f"
missing_any=1
continue
fi
for subgroup in "chooseOrganization" "createOrganization" "signOut"; do
if ! rg -U -n -P "taskChooseOrganization\\s*:\\s*\\{[\\s\\S]*?${subgroup}\\s*:" "$f" >/dev/null; then
echo "MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fi
done
done
if [[ $missing_any -eq 0 ]]; then
echo "All locales contain taskChooseOrganization with required subgroups."
fiLength of output: 195
Let’s rerun the check using find instead of fd/mapfile to avoid the /dev/fd issue:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
missing_any=0
# Iterate over every .ts locale file
while IFS= read -r -d '' f; do
# Check for the root key
if ! grep -q "taskChooseOrganization\s*:" "$f"; then
echo "MISSING taskChooseOrganization in: $f"
missing_any=1
continue
fi
# Check each required subgroup
for subgroup in "chooseOrganization" "createOrganization" "signOut"; do
if ! grep -q "taskChooseOrganization.*${subgroup}" "$f"; then
echo "MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fi
done
done < <(find packages/localizations/src -type f -name "*.ts" -print0)
if [[ $missing_any -eq 0 ]]; then
echo "All locales contain taskChooseOrganization with required subgroups."
fiLength of output: 209
Let’s avoid process-substitution and use a simple pipeline to ensure portability:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
missing_any=0
find packages/localizations/src -type f -name "*.ts" | while IFS= read -r f; do
# Check for the root key
if ! grep -q "taskChooseOrganization\s*:" "$f"; then
echo "MISSING taskChooseOrganization in: $f"
missing_any=1
continue
fi
# Check each required subgroup
for subgroup in chooseOrganization createOrganization signOut; do
if ! grep -q "taskChooseOrganization.*${subgroup}" "$f"; then
echo "MISSING subgroup '${subgroup}' in: $f"
missing_any=1
fi
done
done
if [[ $missing_any -eq 0 ]]; then
echo "All locales contain taskChooseOrganization with required subgroups."
fiLength of output: 54690
Add a CI sanity check for taskChooseOrganization in all locales
Enforce that every locale file defines taskChooseOrganization with all three sub‐keys (chooseOrganization, createOrganization, signOut) by adding a unit test in the localizations package. For example:
• Create packages/localizations/src/__tests__/locales.spec.ts
import fs from 'fs';
import path from 'path';
const LOCALE_DIR = path.resolve(__dirname, '../');
const REQUIRED_SUBGROUPS = ['chooseOrganization', 'createOrganization', 'signOut'];
describe('taskChooseOrganization keys in locale files', () => {
const files = fs
.readdirSync(LOCALE_DIR)
.filter(f => f.endsWith('.ts') && f !== 'index.ts');
for (const file of files) {
test(file, () => {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const locale = require(path.join(LOCALE_DIR, file)).default;
expect(locale.taskChooseOrganization).toBeDefined();
for (const key of REQUIRED_SUBGROUPS) {
expect(locale.taskChooseOrganization[key]).toBeDefined();
}
});
}
});• Ensure your CI (e.g. GitHub Actions) runs npm test in packages/localizations
• This will fail the build if any locale is missing the group or a subgroup
🤖 Prompt for AI Agents
In packages/localizations/src/en-GB.ts around lines 793-812, add a CI sanity
unit test to validate that every locale file defines taskChooseOrganization with
the three required subgroups (chooseOrganization, createOrganization, signOut):
create packages/localizations/src/__tests__/locales.spec.ts which reads all .ts
locale files (excluding index.ts), requires each locale, and asserts
locale.taskChooseOrganization is defined and that each of the REQUIRED_SUBGROUPS
exists; then ensure the repo CI runs npm test for packages/localizations so the
test fails the build if any locale is missing the group or any subgroup.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Complete Telugu translations for taskChooseOrganization; avoid shipping undefined values
Good addition and correct structure. However, all values are undefined. Populate Telugu translations or confirm fallback behavior, and ensure parity with the en-US keyset.
- Keep tone consistent with the rest of te-IN.
- Reuse phrasing where suitable from organizationList to maintain consistency.
Also, since the PR adds a new key across locales, add/extend tests to verify the key exists in every locale file.
I can derive a draft using existing organizationList entries for chooseOrganization actions and open a follow-up item for translation QA.
🏁 Script executed:
#!/bin/bash
set -e
echo "=== en-US source for taskChooseOrganization ==="
rg -n "taskChooseOrganization" -A 20 packages/localizations/src/en-US.ts
echo
echo "=== te-IN context around organizationList ==="
rg -n "organizationList" -A 20 packages/localizations/src/te-IN.ts
echo
echo "=== Tests covering taskChooseOrganization key ==="
rg -n "taskChooseOrganization" -g "*.test.ts" -g "*.spec.ts" -R .Length of output: 2616
Complete Telugu translations for taskChooseOrganization and add missing tests
All values in packages/localizations/src/te-IN.ts under taskChooseOrganization are currently undefined. Please:
- Populate each key in the
taskChooseOrganizationblock (lines ~798–817) with Telugu strings matching the en-US source. For example, reuse existing phrasing fromorganizationList:chooseOrganization.action__createOrganization: “సంస్థను సృష్టించండి”chooseOrganization.action__invitationAccept: “చేరండి”chooseOrganization.action__suggestionsAccept: “చేరడానికి అభ్యర్థించండి”chooseOrganization.subtitle: “Join an existing organization or create a new one” → translate accordingly- …and so on for
title,suggestionsAcceptedLabel, plus all keys undercreateOrganizationandsignOut.
- Ensure every key present in
en-US.tsundertaskChooseOrganizationhas a non-undefined counterpart inte-IN.ts. - Add or extend your locale-validation tests to assert that
taskChooseOrganizationexists (and is a string) in all locale files so future additions don’t slip through without translations.
🤖 Prompt for AI Agents
In packages/localizations/src/te-IN.ts around lines 798 to 817 the entire
taskChooseOrganization block is set to undefined; replace each undefined value
with proper Telugu strings mirroring the en-US source (e.g.,
chooseOrganization.action__createOrganization -> "సంస్థను సృష్టించండి",
action__invitationAccept -> "చేరండి", action__suggestionsAccept -> "చేరడానికి
అభ్యర్థించండి", translate subtitle and title accordingly, fill
suggestionsAcceptedLabel and all keys under
createOrganization.formButtonReset/formButtonSubmit/subtitle/title and
signOut.actionLink/actionText) ensuring every key present in en-US.ts has a
non-undefined Telugu string counterpart; then update or add locale-validation
tests to iterate all locale files and assert that taskChooseOrganization exists
and each of its nested keys is a non-empty string so future missing translations
fail the test.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Prefill taskChooseOrganization using existing Thai translations
Shape matches the base; to avoid undefined at runtime, prefill from organizationList and createOrganization.
Apply this diff:
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: 'สร้างองค์กร',
+ action__invitationAccept: 'เข้าร่วม',
+ action__suggestionsAccept: 'ขอเข้าร่วม',
+ subtitle: 'เพื่อดำเนินการต่อไปยัง {{applicationName}}',
+ suggestionsAcceptedLabel: 'รอการอนุมัติ',
+ title: 'เลือกบัญชี',
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
- subtitle: undefined,
- title: undefined,
+ formButtonReset: 'ข้าม',
+ formButtonSubmit: 'สร้างองค์กร',
+ subtitle: undefined,
+ title: 'สร้างองค์กร',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: undefined, | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: undefined, | |
| suggestionsAcceptedLabel: undefined, | |
| title: undefined, | |
| }, | |
| createOrganization: { | |
| formButtonReset: undefined, | |
| formButtonSubmit: undefined, | |
| subtitle: undefined, | |
| title: undefined, | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, | |
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: 'สร้างองค์กร', | |
| action__invitationAccept: 'เข้าร่วม', | |
| action__suggestionsAccept: 'ขอเข้าร่วม', | |
| subtitle: 'เพื่อดำเนินการต่อไปยัง {{applicationName}}', | |
| suggestionsAcceptedLabel: 'รอการอนุมัติ', | |
| title: 'เลือกบัญชี', | |
| }, | |
| createOrganization: { | |
| formButtonReset: 'ข้าม', | |
| formButtonSubmit: 'สร้างองค์กร', | |
| subtitle: undefined, | |
| title: 'สร้างองค์กร', | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, |
🤖 Prompt for AI Agents
In packages/localizations/src/th-TH.ts around lines 788 to 807, the
taskChooseOrganization block currently sets many fields to undefined; replace
those undefined values by pre-filling from the existing organizationList and
createOrganization translations: copy chooseOrganization fields
(action__createOrganization, action__invitationAccept,
action__suggestionsAccept, subtitle, suggestionsAcceptedLabel, title) from
organizationList.chooseOrganization, copy createOrganization fields
(formButtonReset, formButtonSubmit, subtitle, title) from createOrganization,
and copy signOut.actionLink and signOut.actionText from organizationList.signOut
so no runtime values are undefined.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Backfill Turkish translations for taskChooseOrganization using existing strings
Mirror translations from organizationList and createOrganization to avoid undefined values. createOrganization.subtitle left undefined pending UX copy.
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: 'Organizasyon oluştur',
+ action__invitationAccept: 'Katıl',
+ action__suggestionsAccept: 'Katılmak için talepte bulun',
+ subtitle: '{{applicationName}} ile devam edin',
+ suggestionsAcceptedLabel: 'Onay bekleniyor',
+ title: 'Bir hesap seçin',
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
- subtitle: undefined,
- title: undefined,
+ formButtonReset: 'Atla',
+ formButtonSubmit: 'Oluştur',
+ subtitle: undefined,
+ title: 'Organizasyon oluştur',
},
signOut: {
- actionLink: undefined,
- actionText: undefined,
+ actionLink: 'Çıkış yap',
+ actionText: 'Bu hesap sizin değil mi?',
},
},Once en-US base copy is confirmed, we can tweak signOut.actionText if needed. Also consider adding a basic test that asserts these keys exist across locales (see script in the vi-VN comment).
🏁 Script executed:
#!/bin/bash
# Inspect English base definitions to verify keys and context
# 1. English base for taskChooseOrganization
rg -n "taskChooseOrganization" -C5 packages/localizations/src/en-US.ts
# 2. English base for organizationList (to mirror translations)
rg -n "organizationList" -C5 packages/localizations/src/en-US.ts
# 3. English base for standalone createOrganization block
rg -n "createOrganization" -C5 packages/localizations/src/en-US.tsLength of output: 3596
🏁 Script executed:
#!/bin/bash
# Check existing translations in Turkish locale for organizationList and taskChooseOrganization
rg -n "organizationList" -C3 packages/localizations/src/tr-TR.ts
rg -n "createOrganization" -C3 packages/localizations/src/tr-TR.ts
rg -n "taskChooseOrganization" -C5 packages/localizations/src/tr-TR.tsLength of output: 2465
🏁 Script executed:
#!/bin/bash
# Retrieve the full taskChooseOrganization block from en-US for context
rg -n "taskChooseOrganization:" -A15 -B2 packages/localizations/src/en-US.tsLength of output: 876
🏁 Script executed:
#!/bin/bash
# Retrieve the full organizationList block in Turkish locale for confirmation
rg -n "organizationList:" -A20 -B2 packages/localizations/src/tr-TR.tsLength of output: 1018
Backfill Turkish translations for taskChooseOrganization
Mirror existing strings to replace undefined values in packages/localizations/src/tr-TR.ts. Leave createOrganization.subtitle undefined pending UX copy.
• File: packages/localizations/src/tr-TR.ts, update taskChooseOrganization block
• Use organizationList and createOrganization translations for consistency
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: 'Organizasyon oluştur',
+ action__invitationAccept: 'Katıl',
+ action__suggestionsAccept: 'Katılmak için talepte bulun',
+ subtitle: '{{applicationName}} ile devam edin',
+ suggestionsAcceptedLabel: 'Onay bekleniyor',
+ title: 'Bir organizasyon seçin',
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
- subtitle: undefined,
- title: undefined,
+ formButtonReset: 'Atla',
+ formButtonSubmit: 'Oluştur',
+ subtitle: undefined, // pending UX copy
+ title: 'Organizasyon Oluştur',
},
signOut: {
- actionLink: undefined,
- actionText: undefined,
+ actionLink: 'Çıkış yap',
+ actionText: 'Bu hesap sizin değil mi?',
},
},Once the en-US base copy is finalized, verify these match and adjust signOut.actionText if needed. Consider adding a locale-consistency test to assert these keys exist across all supported languages.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: undefined, | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: undefined, | |
| suggestionsAcceptedLabel: undefined, | |
| title: undefined, | |
| }, | |
| createOrganization: { | |
| formButtonReset: undefined, | |
| formButtonSubmit: undefined, | |
| subtitle: undefined, | |
| title: undefined, | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, | |
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: 'Organizasyon oluştur', | |
| action__invitationAccept: 'Katıl', | |
| action__suggestionsAccept: 'Katılmak için talepte bulun', | |
| subtitle: '{{applicationName}} ile devam edin', | |
| suggestionsAcceptedLabel: 'Onay bekleniyor', | |
| title: 'Bir organizasyon seçin', | |
| }, | |
| createOrganization: { | |
| formButtonReset: 'Atla', | |
| formButtonSubmit: 'Oluştur', | |
| subtitle: undefined, // pending UX copy | |
| title: 'Organizasyon Oluştur', | |
| }, | |
| signOut: { | |
| actionLink: 'Çıkış yap', | |
| actionText: 'Bu hesap sizin değil mi?', | |
| }, | |
| }, |
🤖 Prompt for AI Agents
In packages/localizations/src/tr-TR.ts around lines 792 to 811, the
taskChooseOrganization block contains many undefined values; replace each
undefined with the corresponding Turkish strings from the existing
organizationList and createOrganization translations to mirror the en-US base
(use the same keys/phrasing as those existing blocks), leave
createOrganization.subtitle explicitly undefined as requested, and set
signOut.actionText to the equivalent Turkish text used elsewhere for sign-out
action (adjust later if en-US changes); after updating, run the locale
consistency check to ensure the keys exist across languages.
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Partially fill uk-UA with safe, existing strings; leave the rest for native translation
Where we have high-confidence, existing equivalents in this file, set them to avoid undefined. For the remaining items (notably invitation/suggestions actions and signOut.*), prefer native translations rather than English fallbacks for consistency.
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: 'Створити організацію',
+ action__invitationAccept: undefined,
+ action__suggestionsAccept: undefined,
+ subtitle: 'щоб продовжити роботу в "{{applicationName}}"',
+ suggestionsAcceptedLabel: undefined,
+ title: 'Виберіть організацію',
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
- subtitle: undefined,
- title: undefined,
+ formButtonReset: 'Пропустити',
+ formButtonSubmit: 'Створити організацію',
+ subtitle: undefined,
+ title: 'Створити організацію',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},Open items to translate:
- chooseOrganization.action__invitationAccept
- chooseOrganization.action__suggestionsAccept
- chooseOrganization.suggestionsAcceptedLabel
- createOrganization.subtitle
- signOut.actionLink and signOut.actionText
Do you want me to propose UA translations for the remaining keys and open a follow-up PR?
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: undefined, | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: undefined, | |
| suggestionsAcceptedLabel: undefined, | |
| title: undefined, | |
| }, | |
| createOrganization: { | |
| formButtonReset: undefined, | |
| formButtonSubmit: undefined, | |
| subtitle: undefined, | |
| title: undefined, | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, | |
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: 'Створити організацію', | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: 'щоб продовжити роботу в "{{applicationName}}"', | |
| suggestionsAcceptedLabel: undefined, | |
| title: 'Виберіть організацію', | |
| }, | |
| createOrganization: { | |
| formButtonReset: 'Пропустити', | |
| formButtonSubmit: 'Створити організацію', | |
| subtitle: undefined, | |
| title: 'Створити організацію', | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, |
| 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, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Populate zh-CN with existing locale strings to prevent undefined UI text
These values exist elsewhere in the file; reuse them here for consistency.
taskChooseOrganization: {
chooseOrganization: {
- action__createOrganization: undefined,
- action__invitationAccept: undefined,
- action__suggestionsAccept: undefined,
- subtitle: undefined,
- suggestionsAcceptedLabel: undefined,
- title: undefined,
+ action__createOrganization: '创建组织',
+ action__invitationAccept: '加入',
+ action__suggestionsAccept: '请求加入',
+ subtitle: '以继续使用 {{applicationName}}',
+ suggestionsAcceptedLabel: '等待批准',
+ title: '选择一个组织',
},
createOrganization: {
- formButtonReset: undefined,
- formButtonSubmit: undefined,
- subtitle: undefined,
- title: undefined,
+ formButtonReset: '跳过',
+ formButtonSubmit: '创建组织',
+ subtitle: undefined,
+ title: '创建组织',
},
signOut: {
actionLink: undefined,
actionText: undefined,
},
},Pending: createOrganization.subtitle and signOut.* need translations.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: undefined, | |
| action__invitationAccept: undefined, | |
| action__suggestionsAccept: undefined, | |
| subtitle: undefined, | |
| suggestionsAcceptedLabel: undefined, | |
| title: undefined, | |
| }, | |
| createOrganization: { | |
| formButtonReset: undefined, | |
| formButtonSubmit: undefined, | |
| subtitle: undefined, | |
| title: undefined, | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, | |
| taskChooseOrganization: { | |
| chooseOrganization: { | |
| action__createOrganization: '创建组织', | |
| action__invitationAccept: '加入', | |
| action__suggestionsAccept: '请求加入', | |
| subtitle: '以继续使用 {{applicationName}}', | |
| suggestionsAcceptedLabel: '等待批准', | |
| title: '选择一个组织', | |
| }, | |
| createOrganization: { | |
| formButtonReset: '跳过', | |
| formButtonSubmit: '创建组织', | |
| subtitle: undefined, | |
| title: '创建组织', | |
| }, | |
| signOut: { | |
| actionLink: undefined, | |
| actionText: undefined, | |
| }, | |
| }, |
🤖 Prompt for AI Agents
In packages/localizations/src/zh-CN.ts around lines 779 to 798, several keys in
taskChooseOrganization are set to undefined; replace those undefined values with
the existing Chinese locale strings used elsewhere in the file for consistency
(e.g., reuse the localized strings for action__createOrganization,
action__invitationAccept, action__suggestionsAccept, subtitle,
suggestionsAcceptedLabel, title, createOrganization.formButtonReset,
createOrganization.formButtonSubmit, createOrganization.title and any matching
phrasing already present in the file). Keep createOrganization.subtitle and
signOut.actionLink/actionText as TODO markers for translation and add a comment
indicating they need proper zh-CN translations before merge. Ensure all replaced
values use the exact existing variable/string entries from this file to avoid
duplication.
Description
Checklist
pnpm testruns as expected.pnpm buildruns as expected.Type of change
Summary by CodeRabbit