-
Notifications
You must be signed in to change notification settings - Fork 0
Add Korean (ko) language support to frontend translations and language registry
#6
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
Changes from all commits
4045197
26dbd64
6c880ff
945a1eb
ce4aa8f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -80,7 +80,7 @@ export interface CreateGameData { | |
| organizerEmail?: string | ||
| participants: Array<{ name: string; email?: string; desiredGift: string; wish: string }> | ||
| sendEmails?: boolean | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' | ||
| } | ||
|
Comment on lines
+83
to
84
|
||
|
|
||
| export interface CreateGameResponse extends Game { | ||
|
|
@@ -128,7 +128,7 @@ export async function updateGameAPI( | |
| code: string, | ||
| action: 'requestReassignment', | ||
| participantId: string, | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' | ||
| ): Promise<Game> { | ||
| const response = await fetch(`${API_BASE_URL}/games/${code}`, { | ||
| method: 'PATCH', | ||
|
|
@@ -244,7 +244,7 @@ export async function updateWishAPI( | |
| code: string, | ||
| participantId: string, | ||
| wish: string, | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' | ||
| ): Promise<Game> { | ||
| const response = await fetch(`${API_BASE_URL}/games/${code}`, { | ||
| method: 'PATCH', | ||
|
|
@@ -271,7 +271,7 @@ export async function updateParticipantEmailAPI( | |
| code: string, | ||
| participantId: string, | ||
| email: string, | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' | ||
| ): Promise<Game> { | ||
| const response = await fetch(`${API_BASE_URL}/games/${code}`, { | ||
| method: 'PATCH', | ||
|
|
@@ -332,7 +332,7 @@ export async function updateParticipantDetailsAPI( | |
| export async function confirmAssignmentAPI( | ||
| code: string, | ||
| participantId: string, | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' | ||
| language?: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' | ||
| ): Promise<Game> { | ||
| const response = await fetch(`${API_BASE_URL}/games/${code}`, { | ||
| method: 'PATCH', | ||
|
|
@@ -546,7 +546,7 @@ export interface SendEmailResponse { | |
| export async function sendOrganizerEmailAPI( | ||
| code: string, | ||
| organizerToken: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es' | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es' | ||
| ): Promise<SendEmailResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
| method: 'POST', | ||
|
|
@@ -598,7 +598,7 @@ export async function sendParticipantEmailAPI( | |
| export async function sendAllParticipantEmailsAPI( | ||
| code: string, | ||
| organizerToken: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es' | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es' | ||
| ): Promise<SendEmailResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
| method: 'POST', | ||
|
|
@@ -625,7 +625,7 @@ export async function sendReminderEmailAPI( | |
| code: string, | ||
| organizerToken: string, | ||
| participantId: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es', | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es', | ||
| customMessage?: string | ||
| ): Promise<SendEmailResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
|
|
@@ -654,7 +654,7 @@ export async function sendReminderEmailAPI( | |
| export async function sendReminderToAllAPI( | ||
| code: string, | ||
| organizerToken: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es', | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es', | ||
| customMessage?: string | ||
| ): Promise<SendEmailResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
|
|
@@ -716,7 +716,7 @@ export interface RecoverOrganizerLinkResponse { | |
| export async function recoverOrganizerLinkAPI( | ||
| code: string, | ||
| email: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es' | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es' | ||
| ): Promise<RecoverOrganizerLinkResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
| method: 'POST', | ||
|
|
@@ -750,7 +750,7 @@ export async function recoverOrganizerLinkAPI( | |
| export async function recoverParticipantLinkAPI( | ||
| code: string, | ||
| email: string, | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'zh' | 'de' | 'nl' = 'es' | ||
| language: 'en' | 'es' | 'pt' | 'fr' | 'it' | 'ja' | 'ko' | 'zh' | 'de' | 'nl' = 'es' | ||
| ): Promise<RecoverOrganizerLinkResponse> { | ||
| const response = await fetch(`${API_BASE_URL}/email/send`, { | ||
| method: 'POST', | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,26 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import { en } from './en' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export const ko = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ...en, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| appName: 'Zava 선물 교환', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| welcome: '환영합니다!', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| welcomeDesc: '쉽고 재미있게 선물 교환을 준비하세요', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| createGame: '새 게임 만들기', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| joinGame: '게임 참가하기', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+3
to
+9
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| enterCode: '코드를 입력하세요', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| codePlaceholder: '6자리 코드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| continue: '계속', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| back: '뒤로', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| next: '다음', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| finish: '완료', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cancel: '취소', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| confirm: '확인', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| language: '언어', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| darkMode: '다크 모드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| lightMode: '라이트 모드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| privacyLink: '개인정보 처리방침', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| guideOrganizerLink: '주최자 가이드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| guideParticipantLink: '참가자 가이드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| guideOrganizerTitle: '주최자 가이드', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| guideParticipantTitle: '참가자 가이드' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1
to
+25
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import { en } from './en' | |
| export const ko = { | |
| ...en, | |
| appName: 'Zava 선물 교환', | |
| welcome: '환영합니다!', | |
| welcomeDesc: '쉽고 재미있게 선물 교환을 준비하세요', | |
| createGame: '새 게임 만들기', | |
| joinGame: '게임 참가하기', | |
| enterCode: '코드를 입력하세요', | |
| codePlaceholder: '6자리 코드', | |
| continue: '계속', | |
| back: '뒤로', | |
| next: '다음', | |
| finish: '완료', | |
| cancel: '취소', | |
| confirm: '확인', | |
| language: '언어', | |
| darkMode: '다크 모드', | |
| lightMode: '라이트 모드', | |
| privacyLink: '개인정보 처리방침', | |
| guideOrganizerLink: '주최자 가이드', | |
| guideParticipantLink: '참가자 가이드', | |
| guideOrganizerTitle: '주최자 가이드', | |
| guideParticipantTitle: '참가자 가이드' | |
| export const ko = { | |
| appName: "Zava 선물 교환", | |
| welcome: "환영합니다!", | |
| welcomeDesc: "쉽고 재미있게 선물 교환을 준비하세요", | |
| createGame: "새 게임 만들기", | |
| joinGame: "게임 참가하기", | |
| enterCode: "코드를 입력하세요", | |
| codePlaceholder: "6자리 코드", | |
| continue: "계속", | |
| back: "뒤로", | |
| next: "다음", | |
| finish: "완료", | |
| cancel: "취소", | |
| confirm: "확인", | |
| language: "언어", | |
| darkMode: "다크 모드", | |
| lightMode: "라이트 모드", | |
| privacyLink: "개인정보 처리방침", | |
| guideOrganizerLink: "주최자 가이드", | |
| guideParticipantLink: "참가자 가이드", | |
| guideOrganizerTitle: "주최자 가이드", | |
| guideParticipantTitle: "참가자 가이드" |
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.
The
languageunion is duplicated in multiple API payload/signature types in this file, which required updating many call sites just to addko. To reduce future drift/omissions, consider importing and reusing theLanguagetype fromsrc/lib/types.ts(you already importGamefrom there) and referencing it here instead of repeating the union.