Skip to content

πŸ€– i18n: add Korean (ko) translation#1264

Open
moduvoice wants to merge 2 commits into
HiEventsDev:developfrom
moduvoice:i18n-add-korean
Open

πŸ€– i18n: add Korean (ko) translation#1264
moduvoice wants to merge 2 commits into
HiEventsDev:developfrom
moduvoice:i18n-add-korean

Conversation

@moduvoice

Copy link
Copy Markdown

Motivation

This adds Korean (ko) translation support β€” to help Korean-speaking users use this
open-source project more comfortably in their own language.

ν•œκ΅­ μ‚¬λžŒλ“€μ˜ μ˜€ν”ˆμ†ŒμŠ€ μ΄μš©μ— 도움이 되게 ν•˜κΈ° μœ„ν•΄μ„œ ν•œκΈ€ν™” μž‘μ—…μ„ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Changes

  • frontend/src/locales/ko.po β€” new Korean catalog, 2293 translated strings (0 missing against the extraction baseline current at the time of writing, aside from ~50 long-obsolete entries left over from a pre-refactor component that no longer exists in the codebase β€” these are equally stale in several other established locale catalogs, so this is not specific to ko)
  • frontend/src/locales/ko.js β€” compiled Lingui catalog, verified to be an exact, reproducible compile of ko.po (re-compiled and diffed during review)
  • frontend/lingui.config.ts β€” uncomment "ko" in the locales list
  • frontend/src/locales.ts β€” add ko to SupportedLocales, availableLocales, the flag map (πŸ‡°πŸ‡·), and the name map
  • frontend/src/utilites/dateLocales.ts β€” add dayjs/locale/ko import and Korean date-format conventions (YYYYλ…„ Mμ›” D일 style)
  • frontend/src/components/common/LanguageSwitcher/index.tsx β€” add the "ko" case so the switcher shows the translated label "Korean" instead of falling back to the raw locale code
  • backend/app/Locale.php β€” register case KO = 'ko' so the backend Locale enum accepts ko (without this, PATCH /api/users/me with locale: "ko" would 422)
  • backend/lang/ko.json β€” new Korean backend catalog, 709/709 keys, structurally matching es.json

Testing

  • yarn messages:extract run locally: ko shows 0 missing against the current baseline (matching the same "1 missing" state as every other established locale, caused by one brand-new string this PR itself introduces via the LanguageSwitcher fix)
  • yarn messages:compile run locally and diffed: ko.js reproduces byte-for-byte except for the one new key, confirming it isn't stale
  • Diffed every other locale's .po/.js file against upstream develop: all 18 show zero net changes β€” no incidental reformatting bled into other locales
  • backend/lang/ko.json checked key-for-key against es.json: 709/709, identical structure
  • npx tsc --noEmit: identical error set (94 pre-existing errors, unrelated to this change β€” confirmed via a clean upstream/develop worktree) before and after this branch; zero new errors
  • Spot-checked 150+ strings across both catalogs (ticketing/e-commerce terms: ν‹°μΌ“, 이벀트, μ°Έκ°€μž, 주졜자, ν”„λ‘œλͺ¨μ…˜ μ½”λ“œ, λŒ€κΈ°μž λͺ…단, 체크인, 인보이슀, λΆ€κ°€κ°€μΉ˜μ„Έ/VAT, GDPR-adjacent notices, refund and payment flows) for terminology consistency and natural phrasing

Note for reviewers

Given the size of this catalog (2293 + 709 strings), a native Korean speaker's review would be valuable, especially for:

  • VAT/GDPR and other legal/compliance-adjacent strings (data-processing disclosures, tax terminology)
  • Email template strings (order confirmations, refund notices, waitlist offers)

I translated with care and cross-checked terminology for consistency, but a native-speaker pass on the legal language in particular is recommended before this is considered final.

πŸ€– AI disclosure

This translation was prepared with AI assistance. Per CONTRIBUTING.md's AI/Bot Contributors section:

  • The translation strings, catalog wiring, and this PR were produced/reviewed by an AI agent under human supervision.
  • All commits in this PR end with the πŸ€– marker.
  • The extraction/compilation/typecheck verification steps above were independently re-run as part of review (not just trusting the original generation) before opening this PR.

Adds a complete Korean translation for the frontend (Lingui, 2293
strings across the whole app) and the backend Laravel lang catalog
(709 strings), and registers the new locale in the language switcher,
lingui config, and dayjs date formatting.

πŸ€–
Register `ko` in the backend Locale enum so PATCH /api/users/me with
locale "ko" validates correctly, and add the missing switch case in
LanguageSwitcher so "Korean" renders as a translated label instead of
falling back to the raw locale code. Also adds the one new extractable
string ("Korean") to ko.po/ko.js introduced by this fix.

πŸ€–
@github-actions

Copy link
Copy Markdown
Contributor


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant