From 1643e5b8b37270257bb0b1ec2ade64052415988d Mon Sep 17 00:00:00 2001 From: inchanS Date: Sat, 23 Aug 2025 14:25:29 +0900 Subject: [PATCH 1/2] i18n: Add Korean translation --- cypress/support/cy-utils.ts | 1 + resources/i18n/ko.yaml | 127 ++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 resources/i18n/ko.yaml diff --git a/cypress/support/cy-utils.ts b/cypress/support/cy-utils.ts index ed900ec0..3eada74a 100644 --- a/cypress/support/cy-utils.ts +++ b/cypress/support/cy-utils.ts @@ -10,6 +10,7 @@ export const UI_LANGUAGES = { 'vi': 'Tiếng Việt (Vietnamese)', 'zh-Hans': '简体中文 (Simplified Chinese)', 'zh-Hant': '繁體中文 (Traditional Chinese)', + 'ko': '한국어 (Korean)', }; /** Canned regular expressions. */ diff --git a/resources/i18n/ko.yaml b/resources/i18n/ko.yaml new file mode 100644 index 00000000..99a4b5f6 --- /dev/null +++ b/resources/i18n/ko.yaml @@ -0,0 +1,127 @@ +- {id: accountCreatedConfirmEmail, translation: '계정이 생성되었습니다. 이메일을 확인하고 포함된 확인 링크를 클릭해 주세요.'} +- {id: actionAddComment, translation: '댓글 달기'} +- {id: actionApprove, translation: '승인'} +- {id: actionCancel, translation: '취소'} +- {id: actionClose, translation: '닫기'} +- {id: actionCollapseChildren, translation: '답글 접기'} +- {id: actionCommentUnreg, translation: '비회원으로 댓글 달기'} +- {id: actionConfirmEmail, translation: '이메일 확인'} +- {id: actionConfirmEmailUpdate, translation: '이메일 변경 확인'} +- {id: actionContext, translation: '원문에서 보기'} +- {id: actionDelete, translation: '삭제'} +- {id: actionDownvote, translation: '비추천'} +- {id: actionEdit, translation: '편집'} +- {id: actionEditComentarioProfile, translation: 'Comentario 프로필 편집'} +- {id: actionExpandChildren, translation: '답글 펼치기'} +- {id: actionLogIn, translation: '로그인'} +- {id: actionOk, translation: '확인'} +- {id: actionPreview, translation: '미리보기'} +- {id: actionReject, translation: '거부'} +- {id: actionReply, translation: '답글'} +- {id: actionResetPassword, translation: '비밀번호 재설정'} +- {id: actionRetry, translation: '재시도'} +- {id: actionSave, translation: '저장'} +- {id: actionSignIn, translation: '로그인'} +- {id: actionSignUp, translation: '가입하기'} +- {id: actionSignUpLink, translation: '여기서 가입하기'} +- {id: actionSso, translation: '통합 로그인(SSO)'} +- {id: actionSticky, translation: '고정'} +- {id: actionUnsticky, translation: '고정 해제'} +- {id: actionUnsubscribe, translation: '구독 취소'} +- {id: actionUpvote, translation: '추천'} +- {id: addCommentPlaceholder, translation: '댓글을 입력하세요'} +- {id: btnBold, translation: '굵게'} +- {id: btnBulletList, translation: '글머리 기호 목록'} +- {id: btnCode, translation: '코드'} +- {id: btnEditorHelp, translation: '에디터 도움말'} +- {id: btnImage, translation: '이미지'} +- {id: btnItalic, translation: '기울임꼴'} +- {id: btnLink, translation: '링크'} +- {id: btnLock, translation: '잠금'} +- {id: btnLogout, translation: '로그아웃'} +- {id: btnNumberedList, translation: '번호 매기기 목록'} +- {id: btnQuote, translation: '인용'} +- {id: btnSettings, translation: '설정'} +- {id: btnStrikethrough, translation: '취소선'} +- {id: btnTable, translation: '표'} +- {id: btnUnlock, translation: '잠금 해제'} +- {id: clickButtonBelow, translation: '아래 버튼을 클릭하여 계속 진행해 주세요.'} +- {id: commentCount, translation: '개의 댓글'} +- {id: commentIsApproved, translation: '이 댓글은 관리자에 의해 승인되었습니다.'} +- {id: commentIsPending, translation: '이 댓글은 관리자의 승인을 기다리고 있습니다.'} +- {id: commentIsRejected, translation: '이 댓글은 스팸 또는 부적절한 내용으로 관리자에 의해 거부되었습니다.'} +- {id: commentNotFound, translation: '찾으시는 댓글이 존재하지 않습니다. 삭제되었을 수 있습니다.'} +- {id: commentScore, translation: '댓글 점수'} +- {id: commentStatusChanged, translation: '댓글 상태 변경됨'} +- {id: confirmCommentDeletion, translation: '이 댓글을 정말로 삭제하시겠습니까?'} +- {id: confirmEmailAct, translation: '가입을 완료하려면 아래 버튼을 클릭해 주세요.'} +- {id: confirmEmailExplanation, translation: '본 이메일은 회원님(또는 다른 사람)이 저희 서비스에 가입할 때 이 이메일 주소를 사용했기 때문에 발송되었습니다.'} +- {id: confirmEmailRequest, translation: '최근에 이 이메일 주소로 Comentario 계정을 등록하셨습니다.'} +- {id: confirmEmailUpdateAct, translation: '이메일 변경을 완료하려면 아래 버튼을 클릭해 주세요.'} +- {id: confirmEmailUpdateExpl, translation: '본 이메일은 회원님(또는 다른 사람)이 저희 서비스의 이메일 주소 변경을 요청했기 때문에 발송되었습니다.'} +- {id: confirmEmailUpdateRequest, translation: '최근에 Comentario 계정 이메일을 이 주소로 변경하도록 요청하셨습니다.'} +- {id: confirmYourEmail, translation: '이메일 확인'} +- {id: confirmYourEmailUpdate, translation: '이메일 변경 확인'} +- {id: dlgTitleCommentRssFeed, translation: '댓글 RSS 피드'} +- {id: dlgTitleConfirm, translation: '확인'} +- {id: dlgTitleCreateAccount, translation: '계정 만들기'} +- {id: dlgTitleLogIn, translation: '로그인'} +- {id: dlgTitlePopupBlocked, translation: '팝업 차단됨'} +- {id: dlgTitleUserSettings, translation: '사용자 설정'} +- {id: domainAuthUnconfigured, translation: '이 도메인에서는 사용할 수 있는 인증 방법이 없습니다. 새 댓글을 추가할 수 없습니다.'} +- {id: error, translation: '오류'} +- {id: errorUnknown, translation: '알 수 없는 오류'} +- {id: errorUnknownHost, translation: '이 도메인은 Comentario에 등록되지 않았습니다.'} +- {id: fieldComStatusNotifications, translation: '댓글 상태 알림'} +- {id: fieldModNotifications, translation: '관리자 알림'} +- {id: fieldOnlyThisPage, translation: '이 페이지만'} +- {id: fieldOnlyReplies, translation: '내 댓글에 달린 답글만'} +- {id: fieldPassword, translation: '비밀번호'} +- {id: fieldRealName, translation: '실명'} +- {id: fieldReplyNotifications, translation: '답글 알림'} +- {id: fieldWebsiteOpt, translation: '웹사이트 (선택 사항)'} +- {id: fieldYourNameOptional, translation: '이름 (선택 사항)'} +- {id: forgotPasswordLink, translation: '비밀번호를 잊으셨나요?'} +- {id: helloName, translation: '안녕하세요, {{ index . 0 }}님!'} +- {id: ignoreEmail, translation: '본인이 요청한 것이 아니라면 이 이메일을 무시해 주세요.'} +- {id: labelUseRssLink, translation: 'RSS 리더에서 이 링크를 사용하세요'} +- {id: loginViaLocalAuth, translation: '이메일과 비밀번호로 로그인'} +- {id: loginWith, translation: '다음으로 로그인:'} +- {id: newComment, translation: '새 댓글'} +- {id: newCommentOn, translation: '{{ index . 0 }}에 달린 새 댓글'} +- {id: noAccountYet, translation: '아직 계정이 없으신가요?'} +- {id: notificationCommentStatus, translation: '이 이메일은 댓글 상태 업데이트에 대한 이메일 알림을 받도록 설정하셨기 때문에 발송되었습니다.'} +- {id: notificationModAll, translation: '이 이메일은 도메인 소유자가 모든 새 댓글에 대해 관리자에게 이메일로 알리도록 설정했기 때문에 발송되었습니다.'} +- {id: notificationModPending, translation: '이 이메일은 도메인 소유자가 승인 대기 중인 댓글에 대해 관리자에게 이메일로 알리도록 설정했기 때문에 발송되었습니다.'} +- {id: notificationNewReply, translation: '이 이메일은 댓글 답글에 대한 이메일 알림을 받도록 설정하셨기 때문에 발송되었습니다.'} +- {id: notWillingToSignup, translation: '가입을 원하지 않으시나요? 비회원으로 댓글을 달 수 있습니다.'} +- {id: pageIsReadonly, translation: '이 스레드는 잠겨 있습니다. 새 댓글을 추가할 수 없습니다.'} +- {id: popupWasBlocked, translation: '브라우저에 의해 팝업 창이 차단되었습니다. 이 웹사이트에서 팝업을 허용한 후 아래 재시도 버튼을 클릭해 주세요.'} +- {id: poweredBy, translation: 'Powered by Comentario'} +- {id: previewFailed, translation: '미리보기에 실패했습니다'} +- {id: pwdResetExplanation, translation: '본 이메일은 회원님(또는 다른 사람)이 저희 서비스에서 비밀번호 재설정을 요청했기 때문에 발송되었습니다.'} +- {id: pwdResetRequest, translation: '최근에 Comentario 계정 비밀번호 재설정 절차를 시작하셨습니다.'} +- {id: pwdStrengthExplained, translation: '비밀번호는 8자 이상이어야 하며, 대문자, 소문자, 숫자 또는 기호를 포함해야 합니다.'} +- {id: resetYourPassword, translation: '비밀번호 재설정'} +- {id: sampleText, translation: '텍스트'} +- {id: signUpAgreeAnd, translation: ' 및'} +- {id: signUpAgreePrivacyPolicy, translation: '개인정보 처리방침'} +- {id: signUpAgreeTerms, translation: '서비스 이용약관'} +- {id: signUpAgreeTo, translation: '가입 시 다음 약관에 동의하는 것으로 간주됩니다:'} +- {id: sortNewest, translation: '최신순'} +- {id: sortOldest, translation: '오래된순'} +- {id: sortVotes, translation: '추천순'} +- {id: ssoAuthFailed, translation: '통합 로그인(SSO) 인증에 실패했습니다.'} +- {id: statusDeleted, translation: '삭제됨'} +- {id: statusDeletedByAuthor, translation: '작성자가 삭제함'} +- {id: statusDeletedByModerator, translation: '관리자가 삭제함'} +- {id: statusDeletedUser, translation: '삭제된 사용자'} +- {id: statusEditedByAuthor, translation: '작성자가 수정함'} +- {id: statusEditedByModerator, translation: '관리자가 수정함'} +- {id: statusModerator, translation: '관리자'} +- {id: statusPending, translation: '대기 중'} +- {id: statusUnknownUser, translation: '알 수 없는 사용자'} +- {id: stickyComment, translation: '고정된 댓글'} +- {id: technicalDetails, translation: '기술 정보'} +- {id: timeJustNow, translation: '방금 전'} +- {id: unreadReply, translation: '읽지 않은 답글'} -- GitLab From 46861401eccf924b9c9777b139caa7c63574490a Mon Sep 17 00:00:00 2001 From: inchanS Date: Sat, 23 Aug 2025 23:09:48 +0900 Subject: [PATCH 2/2] i18n: Add Korean translation - Fixed UI_LANGUAGES in alphabetical order --- cypress/support/cy-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/support/cy-utils.ts b/cypress/support/cy-utils.ts index 3eada74a..4775dce0 100644 --- a/cypress/support/cy-utils.ts +++ b/cypress/support/cy-utils.ts @@ -4,13 +4,13 @@ export const UI_LANGUAGES = { 'de': 'Deutsch (German)', 'es': 'español (Spanish)', 'fr': 'français (French)', + 'ko': '한국어 (Korean)', 'nl': 'Nederlands (Dutch)', 'pt-BR': 'português (Brazilian Portuguese)', 'ru': 'русский (Russian)', 'vi': 'Tiếng Việt (Vietnamese)', 'zh-Hans': '简体中文 (Simplified Chinese)', 'zh-Hant': '繁體中文 (Traditional Chinese)', - 'ko': '한국어 (Korean)', }; /** Canned regular expressions. */ -- GitLab