-
-
Notifications
You must be signed in to change notification settings - Fork 288
fix(i18n): migrate Korean to correct ISO code 'ko' #1306
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
base: main
Are you sure you want to change the base?
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Pull Request Overview
This PR migrates Korean language support from the incorrect ISO code 'kr' to the correct ISO 639-1 code 'ko' while maintaining backward compatibility.
- Adds proper 'ko' language code support with complete Korean translations
- Deprecates 'kr' with a JSDoc comment and keeps it as an alias for backward compatibility
- Updates build scripts, package exports, and documentation to include both codes
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/i18n/src/types.ts | Adds 'ko' to the Language union type |
| packages/i18n/src/kr.ts | Adds deprecation comment for 'kr' code |
| packages/i18n/src/ko.ts | Creates new Korean language file with 'ko' code |
| packages/i18n/scripts/build-npm.ts | Imports and includes 'ko' in build script |
| packages/i18n/scripts/build-jsr.ts | Imports and includes 'ko' in JSR build script |
| packages/i18n/package.json | Adds 'ko' export paths alongside existing 'kr' paths |
| packages/i18n/jsr.json | Adds 'ko' export mappings for JSR |
| packages/i18n/README.md | Updates documentation to show Korean as 'ko' instead of 'kr' |
| packages/i18n/CHANGELOG.md | Documents the migration and deprecation |
| packages/i18n/.gitignore | Adds 'ko' directory to gitignore |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
Thank you so much! I will try to make some time to merge it this or next week and publish a new version. |
commit: |
|
I haven't forgotten this PR and will probably merge it in 1 to 2 weeks. I am currently focused on Formisch a few other things. |
tats-u
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.
You should deduplicate the data.
| @@ -1,81 +1,86 @@ | |||
| import type { Language } from './types'; | |||
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.
| import type { Language } from './types'; | |
| import type { Language } from './types'; | |
| import ko from './ko'; |
| const language: Language = { | ||
| code: 'kr', | ||
| schema: (issue) => `유효하지 않은 타입: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| specific: { | ||
| base64: (issue) => `유효하지 않은 Base64: ${issue.received} 을(를) 받았습니다`, | ||
| bic: (issue) => `유효하지 않은 사업자 식별코드(BIC): ${issue.received} 을(를) 받았습니다`, | ||
| bytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| check: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`, | ||
| checkAsync: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`, | ||
| checkItems: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`, | ||
| checkItemsAsync: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`, | ||
| creditCard: (issue) => `유효하지 않은 신용카드: ${issue.received} 을(를) 받았습니다`, | ||
| cuid2: (issue) => `유효하지 않은 Cuid2: ${issue.received} 을(를) 받았습니다`, | ||
| decimal: (issue) => `유효하지 않은 십진수: ${issue.received} 을(를) 받았습니다`, | ||
| digits: (issue) => `유효하지 않은 숫자: ${issue.received} 을(를) 받았습니다`, | ||
| email: (issue) => `유효하지 않은 이메일: ${issue.received} 을(를) 받았습니다`, | ||
| emoji: (issue) => `유효하지 않은 이모지: ${issue.received} 을(를) 받았습니다`, | ||
| empty: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| endsWith: (issue) => `유효하지 않은 끝: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| everyItem: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`, | ||
| excludes: (issue) => `유효하지 않은 컨텐츠: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| finite: (issue) => `유효하지 않은 유한 숫자: ${issue.received} 을(를) 받았습니다`, | ||
| graphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| hash: (issue) => `유효하지 않은 해쉬: ${issue.received} 을(를) 받았습니다`, | ||
| hexColor: (issue) => `유효하지 않은 hex 색상 코드: ${issue.received} 을(를) 받았습니다`, | ||
| hexadecimal: (issue) => `유효하지 않은 16진수: ${issue.received} 을(를) 받았습니다`, | ||
| imei: (issue) => `유효하지 않은 IMEI: ${issue.received} 을(를) 받았습니다`, | ||
| includes: (issue) => `유효하지 않은 컨텐츠: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| integer: (issue) => `유효하지 않은 정수: ${issue.received} 을(를) 받았습니다`, | ||
| ip: (issue) => `유효하지 않은 IP: ${issue.received} 을(를) 받았습니다`, | ||
| ipv4: (issue) => `유효하지 않은 IPv4: ${issue.received} 을(를) 받았습니다`, | ||
| ipv6: (issue) => `유효하지 않은 IPv6: ${issue.received} 을(를) 받았습니다`, | ||
| isoDate: (issue) => `유효하지 않은 날짜: ${issue.received} 을(를) 받았습니다`, | ||
| isoDateTime: (issue) => `유효하지 않은 날짜-시각: ${issue.received} 을(를) 받았습니다`, | ||
| isoTime: (issue) => `유효하지 않은 시각: ${issue.received} 을(를) 받았습니다`, | ||
| isoTimeSecond: (issue) => `유효하지 않은 시각-초: ${issue.received} 을(를) 받았습니다`, | ||
| isoTimestamp: (issue) => `유효하지 않은 타임스탬프: ${issue.received} 을(를) 받았습니다`, | ||
| isoWeek: (issue) => `유효하지 않은 주: ${issue.received} 을(를) 받았습니다`, | ||
| length: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| mac: (issue) => `유효하지 않은 MAC: ${issue.received} 을(를) 받았습니다`, | ||
| mac48: (issue) => `유효하지 않은 48-bit MAC: ${issue.received} 을(를) 받았습니다`, | ||
| mac64: (issue) => `유효하지 않은 64-bit MAC: ${issue.received} 을(를) 받았습니다`, | ||
| maxBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| maxGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| maxLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| maxSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| maxValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| maxWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| mimeType: (issue) => `유효하지 않은 MIME 타입: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| minWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| multipleOf: (issue) => `유효하지 않은 배수: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| nanoid: (issue) => `유효하지 않은 Nano ID: ${issue.received} 을(를) 받았습니다`, | ||
| nonEmpty: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| notWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| octal: (issue) => `유효하지 않은 8진수: ${issue.received} 을(를) 받았습니다`, | ||
| partialCheck: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`, | ||
| regex: (issue) => `유효하지 않은 형식: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| safeInteger: (issue) => `유효하지 않은 안전한 정수: ${issue.received} 을(를) 받았습니다`, | ||
| size: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| someItem: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`, | ||
| startsWith: (issue) => `유효하지 않은 시작: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| ulid: (issue) => `유효하지 않은 ULID: ${issue.received} 을(를) 받았습니다`, | ||
| url: (issue) => `유효하지 않은 URL: ${issue.received} 을(를) 받았습니다`, | ||
| uuid: (issue) => `유효하지 않은 UUID: ${issue.received} 을(를) 받았습니다`, | ||
| value: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| words: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`, | ||
| }, | ||
| }; |
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.
-const language: Language = {
+const language: Language = { ...ko, code: 'kr' };
- code: 'kr',
- schema: (issue) => `유효하지 않은 타입: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- specific: {
- base64: (issue) => `유효하지 않은 Base64: ${issue.received} 을(를) 받았습니다`,
- bic: (issue) => `유효하지 않은 사업자 식별코드(BIC): ${issue.received} 을(를) 받았습니다`,
- bytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- check: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`,
- checkAsync: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`,
- checkItems: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`,
- checkItemsAsync: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`,
- creditCard: (issue) => `유효하지 않은 신용카드: ${issue.received} 을(를) 받았습니다`,
- cuid2: (issue) => `유효하지 않은 Cuid2: ${issue.received} 을(를) 받았습니다`,
- decimal: (issue) => `유효하지 않은 십진수: ${issue.received} 을(를) 받았습니다`,
- digits: (issue) => `유효하지 않은 숫자: ${issue.received} 을(를) 받았습니다`,
- email: (issue) => `유효하지 않은 이메일: ${issue.received} 을(를) 받았습니다`,
- emoji: (issue) => `유효하지 않은 이모지: ${issue.received} 을(를) 받았습니다`,
- empty: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- endsWith: (issue) => `유효하지 않은 끝: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- everyItem: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`,
- excludes: (issue) => `유효하지 않은 컨텐츠: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- finite: (issue) => `유효하지 않은 유한 숫자: ${issue.received} 을(를) 받았습니다`,
- graphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- hash: (issue) => `유효하지 않은 해쉬: ${issue.received} 을(를) 받았습니다`,
- hexColor: (issue) => `유효하지 않은 hex 색상 코드: ${issue.received} 을(를) 받았습니다`,
- hexadecimal: (issue) => `유효하지 않은 16진수: ${issue.received} 을(를) 받았습니다`,
- imei: (issue) => `유효하지 않은 IMEI: ${issue.received} 을(를) 받았습니다`,
- includes: (issue) => `유효하지 않은 컨텐츠: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- integer: (issue) => `유효하지 않은 정수: ${issue.received} 을(를) 받았습니다`,
- ip: (issue) => `유효하지 않은 IP: ${issue.received} 을(를) 받았습니다`,
- ipv4: (issue) => `유효하지 않은 IPv4: ${issue.received} 을(를) 받았습니다`,
- ipv6: (issue) => `유효하지 않은 IPv6: ${issue.received} 을(를) 받았습니다`,
- isoDate: (issue) => `유효하지 않은 날짜: ${issue.received} 을(를) 받았습니다`,
- isoDateTime: (issue) => `유효하지 않은 날짜-시각: ${issue.received} 을(를) 받았습니다`,
- isoTime: (issue) => `유효하지 않은 시각: ${issue.received} 을(를) 받았습니다`,
- isoTimeSecond: (issue) => `유효하지 않은 시각-초: ${issue.received} 을(를) 받았습니다`,
- isoTimestamp: (issue) => `유효하지 않은 타임스탬프: ${issue.received} 을(를) 받았습니다`,
- isoWeek: (issue) => `유효하지 않은 주: ${issue.received} 을(를) 받았습니다`,
- length: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- mac: (issue) => `유효하지 않은 MAC: ${issue.received} 을(를) 받았습니다`,
- mac48: (issue) => `유효하지 않은 48-bit MAC: ${issue.received} 을(를) 받았습니다`,
- mac64: (issue) => `유효하지 않은 64-bit MAC: ${issue.received} 을(를) 받았습니다`,
- maxBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- maxGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- maxLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- maxSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- maxValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- maxWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- mimeType: (issue) => `유효하지 않은 MIME 타입: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- minWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- multipleOf: (issue) => `유효하지 않은 배수: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- nanoid: (issue) => `유효하지 않은 Nano ID: ${issue.received} 을(를) 받았습니다`,
- nonEmpty: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notBytes: (issue) => `유효하지 않은 바이트: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notGraphemes: (issue) => `유효하지 않은 그래프: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notLength: (issue) => `유효하지 않은 길이: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notSize: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notValue: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- notWords: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- octal: (issue) => `유효하지 않은 8진수: ${issue.received} 을(를) 받았습니다`,
- partialCheck: (issue) => `유효하지 않은 입력: ${issue.received} 을(를) 받았습니다`,
- regex: (issue) => `유효하지 않은 형식: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- safeInteger: (issue) => `유효하지 않은 안전한 정수: ${issue.received} 을(를) 받았습니다`,
- size: (issue) => `유효하지 않은 크기: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- someItem: (issue) => `유효하지 않은 항목: ${issue.received} 을(를) 받았습니다`,
- startsWith: (issue) => `유효하지 않은 시작: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- ulid: (issue) => `유효하지 않은 ULID: ${issue.received} 을(를) 받았습니다`,
- url: (issue) => `유효하지 않은 URL: ${issue.received} 을(를) 받았습니다`,
- uuid: (issue) => `유효하지 않은 UUID: ${issue.received} 을(를) 받았습니다`,
- value: (issue) => `유효하지 않은 값: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- words: (issue) => `유효하지 않은 단어: ${issue.expected} 을(를) 예상했으나 ${issue.received} 을(를) 받았습니다`,
- },
-};↓GitHub probably has a bug:
| const language: Language = { ...ko, code: 'kr' }; |
i18n: Migrate Korean to
ko, deprecatekrkokras a deprecated alias for backward compatibilitykoto build scripts (npm & JSR); preservekroutputskrwill be removed in a future majorMigration: prefer
@valibot/i18n/koinstead of@valibot/i18n/kr.Closes #1285