Skip to content

feat(localizations): add missing vi-VN (Vietnamese) translations#8663

Open
ANIBIT14 wants to merge 10 commits into
clerk:mainfrom
ANIBIT14:feat/vi-vn-translations
Open

feat(localizations): add missing vi-VN (Vietnamese) translations#8663
ANIBIT14 wants to merge 10 commits into
clerk:mainfrom
ANIBIT14:feat/vi-vn-translations

Conversation

@ANIBIT14
Copy link
Copy Markdown
Contributor

@ANIBIT14 ANIBIT14 commented May 27, 2026

Description

Adds missing Vietnamese (Vietnam) vi-VN translations. Previously many keys in packages/localizations/src/vi-VN.ts were set to undefined (untranslated). This PR fills in 94 of them with Vietnamese translations.

Areas covered:

  • Trial & billing badges (badge__*)
  • Billing, checkout & subscription details (billing)
  • Organization profile billing page (actionLabel__manageSubscription)
  • Organization switcher open/close labels
  • Sign-in & sign-up (enterprise connections, compromised/untrusted password states)
  • Reset-password and two-step verification (MFA) setup tasks — SMS code and authenticator app flows
  • Username & email form field hints
  • Frontend API errors (unstable__errors)
  • User button menu open/close labels

Notes

  • All {{interpolation}} tokens are preserved. Date filters use the vi-VN locale (e.g. {{ date | shortDate('vi-VN') }}).
  • 31 keys remain undefined because they are also undefined in the source en-US.ts (intentionally unset upstream), so there is no English string to translate from.
  • Vietnamese (vi-VN) is a community-maintained locale per the package README; this is a community contribution.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 27, 2026

🦋 Changeset detected

Latest commit: 3164a20

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

This PR includes changesets to release 3 packages
Name Type
@clerk/localizations Patch
@clerk/ui Patch
@clerk/chrome-extension Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Copy Markdown

vercel Bot commented May 27, 2026

@ANIBIT14 is attempting to deploy a commit to the Clerk Production Team on Vercel.

A member of the Team first needs to authorize it.

@ANIBIT14 ANIBIT14 force-pushed the feat/vi-vn-translations branch from ce2bf14 to c3f1a76 Compare May 27, 2026 11:07
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 9fbb7d33-a3ea-42e2-a6fc-9cc21ef3b0ab

📥 Commits

Reviewing files that changed from the base of the PR and between bd53be2 and 3164a20.

📒 Files selected for processing (1)
  • packages/localizations/src/vi-VN.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/localizations/src/vi-VN.ts

📝 Walkthrough

Walkthrough

This PR adds a patch changeset and completes Vietnamese (vi-VN) localization coverage by filling previously undefined translation keys across the Clerk product: billing and checkout UI (badges, cancellation, subscription details), organization management UI, authentication forms and enterprise connection flows, password security error messaging, MFA and password reset task flows, and user menu/profile actions.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • clerk/javascript#8645: Localization patch for another locale that fills previously-undefined UI strings across similar areas (billing, checkout, organization switcher, task flows, and user menu).
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding missing Vietnamese (vi-VN) translations to the localizations package, which aligns directly with the changeset contents.
Description check ✅ Passed The description provides relevant context about what was changed, why (94 missing translation keys), which areas were covered, and important implementation details. It is clearly related to the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

63-63: ⚡ Quick win

Add/adjust localization coverage tests for the newly translated keys.

Since this PR modifies many vi-VN strings, please add or update localization snapshot/parity tests to cover these keys and placeholder rendering paths.

As per coding guidelines: "**/*: If there are no tests added or modified as part of the PR, please suggest that tests be added to cover the changes."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/localizations/src/vi-VN.ts` at line 63, Update or add localization
tests to cover the new/changed Vietnamese strings (e.g., the badge__freeTrial
key in vi-VN.ts) by updating the localization snapshot/parity test suite so it
imports the vi-VN translations and asserts snapshots or parity against the
source (or en) bundle; include tests for placeholder rendering paths (strings
with interpolation/formatting) to ensure placeholders are rendered correctly,
and add the new/modified keys to the expected snapshot/fixture files so CI will
detect any future regressions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@packages/localizations/src/vi-VN.ts`:
- Line 63: Update or add localization tests to cover the new/changed Vietnamese
strings (e.g., the badge__freeTrial key in vi-VN.ts) by updating the
localization snapshot/parity test suite so it imports the vi-VN translations and
asserts snapshots or parity against the source (or en) bundle; include tests for
placeholder rendering paths (strings with interpolation/formatting) to ensure
placeholders are rendered correctly, and add the new/modified keys to the
expected snapshot/fixture files so CI will detect any future regressions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: b73df86e-48c5-4b5c-b200-4484fb93bb51

📥 Commits

Reviewing files that changed from the base of the PR and between 4e08924 and ce2bf14.

📒 Files selected for processing (2)
  • .changeset/vi-vn-translations.md
  • packages/localizations/src/vi-VN.ts

Copy link
Copy Markdown
Member

@wobsoriano wobsoriano left a comment

Choose a reason for hiding this comment

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

Thanks for your contribution! I have codex assist me to confirm the translations. Can you check if the review is legit?

organization_domain_common: undefined,
organization_domain_exists_for_enterprise_connection: undefined,
organization_membership_quota_exceeded: undefined,
organization_membership_quota_exceeded:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Hi, the source of this is "You have reached your limit of {maxAllowed} organization memberships, including outstanding invitations.".

Can you confirm the translation have the same meaning?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Confirmed — the meaning is correct, but I dropped the {maxAllowed} interpolation. I worked from packages/localizations/src/en-US.ts, which itself reads "You have reached your limit of organization memberships, including outstanding invitations." with no placeholder, so I missed it. Updating the Vietnamese to:

'Bạn đã đạt đến giới hạn {{maxAllowed}} thành viên tổ chức, bao gồm cả các lời mời đang chờ xử lý.'

'Thiết lập một phương thức đăng nhập mới trong ứng dụng xác thực của bạn và quét mã QR sau đây để liên kết nó với tài khoản của bạn.',
infoText__unableToScan:
'Thiết lập một phương thức đăng nhập mới trong ứng dụng xác thực của bạn và nhập Khóa được cung cấp bên dưới.',
inputLabel__unableToScan1:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This reads quite literally in Vietnamese. “Mật khẩu dựa trên thời gian hoặc Mật khẩu một lần” sounds machine-translated and “mật khẩu” is awkward here; “mã” would be
more natural for TOTP/OTP. Can you rephrase this to something more idiomatic and align it with the wording already used elsewhere in the locale?

Can you confirm this review by Codex if it's legit?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed — in Vietnamese tech UI, TOTP/OTP are conventionally rendered as "mã" (code), not "mật khẩu" (password). Updating to:

'Đảm bảo rằng Mã dựa trên thời gian hoặc Mã một lần đã được bật, sau đó hoàn tất việc liên kết tài khoản của bạn.'

Comment thread packages/localizations/src/vi-VN.ts Outdated
},
organizationSwitcher: {
action__closeOrganizationSwitcher: undefined,
action__closeOrganizationSwitcher: 'Đóng bộ chuyển đổi tổ chức',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

“Bộ chuyển đổi tổ chức” is understandable, but it feels too literal for UI copy. Can you use a more natural Vietnamese label for “organization switcher” here and in
the matching open/close action below?

Can you confirm this review by Codex if it's legit?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed — "bộ chuyển đổi" is too literal. To stay consistent with the userButton.action__{open,close}UserMenu strings later in the file (which use "menu người dùng"), I'll update both to:

action__closeOrganizationSwitcher: 'Đóng menu chuyển đổi tổ chức',
action__openOrganizationSwitcher: 'Mở menu chuyển đổi tổ chức',

@ANIBIT14
Copy link
Copy Markdown
Contributor Author

ANIBIT14 commented Jun 4, 2026

Did a self-review pass on the rest of the Vietnamese strings I added, in the same spirit as above review, and pushed a few more refinements:

  • signIn.enterpriseConnections.subtitle / signUp.enterpriseConnections.subtitle - 'Chọn tài khoản doanh nghiệp mà bạn muốn tiếp tục.' was grammatically incomplete (verb missing object). Updated to 'Chọn tài khoản doanh nghiệp bạn muốn dùng để tiếp tục.'
  • taskResetPassword.signOut.actionText / taskSetupMfa.signOut.actionText - 'Đã đăng nhập với tên {{identifier}}' reads awkwardly when the identifier is an email or phone (not a "name"). Updated to 'Đã đăng nhập với tư cách {{identifier}}', which is the natural Vietnamese phrasing for "signed in as X" regardless of identifier type.
  • taskSetupMfa.totpCode.addAuthenticatorApp.buttonAbleToScan__nonPrimary - 'Quét mã QR thay thế' translated "instead" as "thay thế" (replace/substitute), which is wrong. Updated to 'Thay vào đó, quét mã QR'.

Let me know if anything still reads off.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants