From 8a15e755c39e2f039473bce7dd64d8f2edad7963 Mon Sep 17 00:00:00 2001
From: Soul Lee
Date: Thu, 23 Jul 2026 19:48:30 +0900
Subject: [PATCH 1/3] Add missing Korean (ko) translations for account, email,
and admin themes
Add messages_ko.properties for the base account, email, and admin themes,
and register the ko locale in each theme.properties. Korean previously
existed only for the login theme; these were the remaining base-theme gaps.
Co-authored-by: gayeonwon
Signed-off-by: gayeonwon
Signed-off-by: Soul Lee
---
.../account/messages/messages_ko.properties | 240 ++++++++++++++++++
.../theme/base/account/theme.properties | 2 +-
.../admin/messages/messages_ko.properties | 130 ++++++++++
.../theme/base/admin/theme.properties | 2 +-
.../email/messages/messages_ko.properties | 79 ++++++
.../theme/base/email/theme.properties | 2 +-
6 files changed, 452 insertions(+), 3 deletions(-)
create mode 100644 js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
create mode 100644 themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
create mode 100644 themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
diff --git a/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties b/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
new file mode 100644
index 000000000000..c2e998f1e02f
--- /dev/null
+++ b/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
@@ -0,0 +1,240 @@
+cancel=취소
+applicationType=애플리케이션 유형
+backTo={{app}}(으)로 돌아가기
+removeConsentSuccess=동의를 제거했습니다
+noGroupsText=어떤 그룹에도 가입되어 있지 않습니다
+required=필수
+path=경로
+password=내 비밀번호
+setUpNew={{name}} 설정
+lastAccessedOn=마지막 접근
+deviceActivity=기기 활동
+permissions=권한
+credentialCreatedAt=<0>생성되었습니다.0> {{date}}.
+error-username-invalid-character='{{0}}'에 잘못된 문자가 포함되어 있습니다.
+usernamePlaceholder=사용자 이름 또는 이메일
+infoMessage=액세스 제거를 클릭하면 이 애플리케이션에 부여된 권한이 제거됩니다. 이 애플리케이션은 더 이상 사용자의 정보를 사용하지 않습니다.
+scopesHelp=이 리소스와 연결된 스코프입니다.
+unknownOperatingSystem=알 수 없는 운영 체제
+deny=거부
+edit=편집
+otp-display-name=인증모듈 애플리케이션
+selectALocale=언어 선택
+signOut=로그아웃
+linkedEmpty=연결된 공급자(IdP)가 없습니다
+directMembership=직접 멤버십
+accept=수락
+error-invalid-length-too-short='{{0}}'의 최소 길이는 {{1}}이어야 합니다.
+resourceSharedWith_one=리소스가 <0>{{username}}0>님과 공유되었습니다
+error-number-out-of-range-too-big='{{0}}'의 최대값은 {{2}}이어야 합니다.
+updateEmail=이메일 업데이트
+two-factor=2단계 인증
+resourceSharedWith_zero=이 리소스는 공유되지 않았습니다.
+signedInDevicesExplanation=익숙하지 않은 기기에서는 로그아웃하세요.
+addMultivaluedLabel={{fieldLabel}} 추가
+status=상태
+error-number-out-of-range-too-small='{{0}}'의 최소값은 {{1}}이어야 합니다.
+invalidEmailMessage='{{0}}'\: 잘못된 이메일 주소입니다.
+lastName=성
+removeModalMessage=이렇게 하면 {{name}}에 현재 부여된 액세스 권한이 제거됩니다. 이 앱을 다시 사용하려면 액세스를 다시 부여해야 합니다.
+clients=클라이언트
+filterByName=이름으로 필터...
+refreshPage=페이지 새로 고침
+save=저장
+error-user-attribute-required='{{0}}'을(를) 지정하세요.
+currentSession=현재 세션
+clientDescriptionHelp=클라이언트에 대한 설명을 지정합니다. 예\: 'My Client for TimeSheets'. 지역화된 값을 위한 키도 지원합니다. 예\: ${my_client_description}
+scopeTypeHelp=생성되는 각 클라이언트에 기본 스코프로 추가될 클라이언트 스코프입니다
+error-empty='{{0}}'의 값을 지정하세요.
+error-invalid-uri-fragment='{{0}}'은(는) 잘못된 URL 조각입니다.
+error-invalid-blank='{{0}}'의 값을 지정하세요.
+missingFirstNameMessage='{{0}}'\: 이름을 지정하세요.
+signedOutSession={{browser}}/{{os}}에서 로그아웃됨
+share=공유
+close=닫기
+email=이메일
+signOutWarning=세션에서 로그아웃하시겠습니까?
+removeConsentError={{error}}(으)로 인해 동의를 제거할 수 없습니다
+signOutAllDevicesWarning=이 작업을 수행하면 현재 사용 중인 기기를 포함하여 계정에 로그인한 모든 기기에서 로그아웃됩니다.
+unShareSuccess=리소스 공유가 성공적으로 해제되었습니다.
+signingIn=로그인
+stopUsingCred={{name}} 사용을 중지하시겠습니까?
+groupsListHeader=그룹 목록 헤더
+error-number-out-of-range='{{0}}'은(는) {{1}}에서 {{2}} 사이의 숫자여야 합니다.
+privacyPolicy=개인정보 보호 정책
+thirdPartyApp=서드파티
+started=시작됨
+avatar=아바타
+scopeDescriptionHelp=클라이언트 스코프에 대한 설명
+confirm=확인
+updateSuccess=리소스가 성공적으로 업데이트되었습니다.
+selectOne=옵션 선택
+unShare=모두 공유 해제
+linkedAccounts=연결된 계정
+personalInfoDescription=기본 정보를 관리합니다
+removeAccess=액세스 제거
+signingInDescription=로그인 방법을 구성합니다.
+personalInfo=개인 정보
+removeCred={{name}} 제거
+signOutAllDevices=모든 기기에서 로그아웃
+scopeNameHelp=클라이언트 스코프의 이름입니다. 렐름 내에서 고유해야 합니다. scope 매개변수 값으로 사용되므로 이름에 공백 문자가 포함되면 안 됩니다
+flowTypeHelp=어떤 종류의 폼인지
+error-invalid-email=잘못된 이메일 주소입니다.
+myResources=내 리소스
+linkedAccountsIntroMessage=서드파티 계정을 통한 로그인을 관리합니다.
+accountSecurity=계정 보안
+groupDescriptionLabel=연결된 그룹 보기
+manageAccount=계정 관리
+resourceAlreadyShared=이 사용자와 이미 공유된 리소스입니다.
+error-invalid-length-too-long='{{0}}'의 최대 길이는 {{2}}이어야 합니다.
+accountUpdatedMessage=계정이 업데이트되었습니다.
+shareError={{error}}(으)로 인해 리소스를 공유할 수 없습니다
+logo=로고
+password-help-text=비밀번호를 입력하여 로그인하세요.
+deleteAccount=계정 삭제
+permissionRequest=권한 요청 - {{name}}
+add=추가
+error-invalid-value='{{0}}'의 값이 잘못되었습니다.
+pageNotFound=요청한 페이지를 찾을 수 없습니다.
+somethingWentWrong=문제가 발생했습니다
+somethingWentWrongDescription=죄송합니다. 예기치 않은 오류가 발생했습니다.
+tryAgain=다시 시도
+rolesScope=역할 스코프 매핑이 정의되어 있지 않으면 모든 사용자가 이 클라이언트 스코프를 사용할 수 있습니다. 역할 스코프 매핑이 정의되어 있으면 사용자는 해당 역할 중 하나 이상에 속해야 합니다.
+unShareError={{error}}(으)로 인해 리소스 공유를 해제할 수 없습니다
+ipAddress=IP 주소
+resourceName=리소스 이름
+unlinkedEmpty=연결되지 않은 공급자가 없습니다
+done=완료
+basic-authentication=기본 인증
+socialLogin=소셜 로그인
+notInUse=사용 안 함
+unShareAllConfirm=모든 공유를 완전히 제거하시겠습니까?
+firstName=이름
+name=이름
+clientTypeHelp=이 리소스의 유형입니다. 동일한 유형의 서로 다른 리소스 인스턴스를 그룹화하는 데 사용할 수 있습니다.
+unknownUser=익명
+offlineAccess=오프라인 액세스
+password-display-name=비밀번호
+expires=만료
+noGroups=그룹 없음
+notSetUp={{name}}이(가) 설정되지 않았습니다.
+error-invalid-number='{{0}}'은(는) 잘못된 숫자입니다.
+link=계정 연결
+shareTheResource=리소스 공유 - {{name}}
+description=설명
+update=업데이트
+choose=선택...
+signedInDevices=로그인된 기기
+delete=삭제
+missingPasswordMessage='{{0}}'\: 비밀번호를 지정하세요.
+otp-help-text=인증모듈 애플리케이션에서 확인 코드를 입력하세요.
+groupsListColumnsNames=그룹 목록 열 이름
+error-invalid-uri-scheme='{{0}}'의 URL 스킴이 잘못되었습니다.
+error-user-attribute-read-only={{0}} 필드는 읽기 전용입니다.
+general=일반
+error-invalid-date='{{0}}'은(는) 잘못된 날짜입니다.
+missingEmailMessage='{{0}}'\: 이메일을 지정하세요.
+accountUpdatedError=유효성 검사 오류로 인해 계정을 업데이트할 수 없습니다
+unLinkError={{error}}(으)로 인해 연결을 해제할 수 없습니다
+applicationsIntroMessage=계정이 액세스할 수 있는 애플리케이션 보기
+error-invalid-length='{{0}}'의 길이는 {{1}}에서 {{2}} 사이여야 합니다.
+missingLastNameMessage='{{0}}'\: 성을 지정하세요.
+errorSignOutMessage=로그아웃할 수 없습니다\: {{error}}
+linkedLoginProviders=연결된 로그인 공급자
+inUse=사용 중
+client=클라이언트
+error-invalid-uri='{{0}}'은(는) 잘못된 URL입니다.
+systemDefined=시스템 정의
+hasAccessTo=액세스 대상
+internalApp=내부
+updateError={{error}}(으)로 인해 리소스를 업데이트할 수 없습니다
+accessGrantedOn=액세스 부여일\:
+editTheResource=리소스 편집 - {{name}}
+permissionRequests=권한 요청
+shareSuccess=리소스가 성공적으로 공유되었습니다.
+missingUsernameMessage='{{0}}'\: 사용자 이름을 지정하세요.
+aliasHelp=구성의 이름
+fullName={{familyName}}{{givenName}}
+groups=그룹
+resources=리소스
+resourceIntroMessage=팀 구성원과 리소스를 공유합니다
+unLink=계정 연결 해제
+errorRemovedMessage={{error}}(으)로 인해 {{userLabel}}을(를) 제거할 수 없습니다
+termsOfService=서비스 약관
+jumpToSection=섹션으로 이동
+linkError={{error}}(으)로 인해 연결할 수 없습니다
+requestor=요청자
+shareWith=공유 대상
+updateCredAriaLabel=자격 증명 업데이트
+error-pattern-no-match='{{0}}'이(가) 필요한 형식과 일치하지 않습니다.
+application=애플리케이션
+unlinkedLoginProviders=연결되지 않은 로그인 공급자
+applicationDetails={{clientId}}의 애플리케이션 세부 정보
+successRemovedMessage={{userLabel}}이(가) 제거되었습니다.
+deleteAccountWarning=이 작업은 되돌릴 수 없습니다. 모든 데이터가 영구적으로 파기되어 복구할 수 없습니다.
+resourceSharedWith_other=리소스가 <0>{{username}}0>님 및 다른 <1>{{other}}1>명의 사용자와 공유되었습니다
+error-person-name-invalid-character='{{0}}'에 잘못된 문자가 포함되어 있습니다.
+user=사용자
+shareUser=리소스를 공유할 사용자를 추가하세요
+unLinkSuccess=계정 연결이 성공적으로 해제되었습니다
+applications=애플리케이션
+sharedWithMe=나와 공유됨
+username=사용자 이름
+webauthn-display-name=패스키
+webauthn-help-text=패스키를 사용하여 로그인하세요.
+webauthn-authenticator-provider=인증모듈 공급자
+webauthn-transports=전송 매체
+webauthn-passwordless-display-name=패스키
+webauthn-passwordless-help-text=패스키를 사용하여 비밀번호 없이 로그인하세요.
+passwordless=비밀번호 없음
+error-invalid-multivalued-size={{0}} 속성은 최소 {{1}}개에서 최대 {{2}}개의 값을 가져야 합니다.
+error-non-ascii-local-part-email=주소의 로컬 부분에는 ASCII 문자만 포함되어야 합니다.
+recovery-authn-code=내 복구 인증 코드
+recovery-authn-codes-display-name=복구 인증 코드
+recovery-authn-codes-help-text=이 코드는 다른 2FA 수단을 사용할 수 없을 때 액세스를 되찾는 데 사용할 수 있습니다.
+recovery-codes-number-used={{0}}개의 복구 코드 사용됨
+recovery-codes-number-remaining={{0}}개의 복구 코드 남음
+recovery-codes-generate-new-codes=계정에 대한 액세스를 유지하려면 새 코드를 생성하세요
+oid4vci=검증 가능한 자격 증명 (Verifiable Credentials)
+verifiableCredentialsTitle=검증 가능한 자격 증명 (Verifiable Credentials)
+verifiableCredentialsDescription=지갑으로 가져올 자격 증명을 선택하세요.
+verifiableCredentialsIssuerAlert=발급자 정보를 가져올 수 없습니다.
+verifiableCredentialsConfigAlert=자격 증명 구성을 가져올 수 없습니다.
+verifiableCredentialsOfferAlert=제안을 가져올 수 없습니다.
+verifiableCredentialsSelectionDefault=자격 증명 구성을 선택하세요.
+profileScopeConsentText=사용자 프로필
+emailScopeConsentText=이메일 주소
+addressScopeConsentText=주소
+phoneScopeConsentText=전화번호
+offlineAccessScopeConsentText=오프라인 액세스
+samlRoleListScopeConsentText=내 역할
+rolesScopeConsentText=사용자 역할
+organizations=조직
+organizationDescription=가입한 조직 보기
+emptyUserOrganizations=조직 없음
+emptyUserOrganizationsInstructions=아직 어떤 조직에도 가입하지 않았습니다.
+searchOrganization=조직 검색
+organizationList=조직 목록
+domains=도메인
+refresh=새로 고침
+termsAndConditionsDeclined=계속하려면 이용 약관에 동의해야 합니다
+defaultLocale=선택...
+# standard error responses OAuth
+invalid_request=잘못된 요청
+unauthorized_client=권한이 없는 클라이언트
+access_denied=액세스 거부됨
+unsupported_response_type=지원되지 않는 응답 유형
+invalid_scope=잘못된 스코프
+server_error=서버 오류
+temporarily_unavailable=일시적으로 사용할 수 없음
+# standard error responses OIDC
+interaction_required=상호작용 필요
+login_required=로그인 필요
+account_selection_required=계정 선택 필요
+consent_required=동의 필요
+invalid_request_uri=잘못된 요청 URI
+invalid_request_object=잘못된 요청 객체
+request_not_supported=지원되지 않는 요청
+request_uri_not_supported=지원되지 않는 요청 URI
+registration_not_supported=지원되지 않는 등록
+theme.keycloak.v3.account.description=더 세련되고, v3는 더 일관되며 동적입니다. (계정 기본값)
diff --git a/themes/src/main/resources-community/theme/base/account/theme.properties b/themes/src/main/resources-community/theme/base/account/theme.properties
index 6693f92b62de..ef4e4ec30909 100644
--- a/themes/src/main/resources-community/theme/base/account/theme.properties
+++ b/themes/src/main/resources-community/theme/base/account/theme.properties
@@ -1,2 +1,2 @@
-locales=ar,az,ca,cs,da,de,el,en,es,eu,fa,fr,fi,hr,hu,hy,id,it,ja,kk,ky,lt,lv,nl,no,pl,pt,pt-BR,ro,ru,sk,sl,sv,th,tr,uk,vi,zh-CN,zh-TW
+locales=ar,az,ca,cs,da,de,el,en,es,eu,fa,fr,fi,hr,hu,hy,id,it,ja,kk,ko,ky,lt,lv,nl,no,pl,pt,pt-BR,ro,ru,sk,sl,sv,th,tr,uk,vi,zh-CN,zh-TW
abstract=true
diff --git a/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties b/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
new file mode 100644
index 000000000000..ea627d20a14a
--- /dev/null
+++ b/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
@@ -0,0 +1,130 @@
+invalidPasswordMinLengthMessage=잘못된 비밀번호: 최소 길이는 {0}입니다.
+invalidPasswordMaxLengthMessage=잘못된 비밀번호: 최대 길이는 {0}입니다.
+invalidPasswordMinLowerCaseCharsMessage=잘못된 비밀번호: 소문자를 최소 {0}자 이상 포함해야 합니다.
+invalidPasswordMinDigitsMessage=잘못된 비밀번호: 숫자를 최소 {0}자 이상 포함해야 합니다.
+invalidPasswordMinUpperCaseCharsMessage=잘못된 비밀번호: 대문자를 최소 {0}자 이상 포함해야 합니다.
+invalidPasswordMinSpecialCharsMessage=잘못된 비밀번호: 특수문자를 최소 {0}자 이상 포함해야 합니다.
+invalidPasswordNotUsernameMessage=잘못된 비밀번호: 사용자 이름과 동일할 수 없습니다.
+invalidPasswordNotContainsUsernameMessage=잘못된 비밀번호: 사용자 이름을 포함할 수 없습니다.
+invalidPasswordNotEmailMessage=잘못된 비밀번호: 이메일과 동일할수 없습니다.
+invalidPasswordRegexPatternMessage=잘못된 비밀번호: 정규식 패턴과 일치하지 않습니다.
+invalidPasswordHistoryMessage=잘못된 비밀번호: 최근 {0}개의 비밀번호와 동일할 수 없습니다.
+invalidPasswordBlacklistedMessage=잘못된 비밀번호: 허용되지 않는 비밀번호입니다.
+invalidPasswordGenericMessage=잘못된 비밀번호: 새 비밀번호가 비밀번호 정책에 맞지 않습니다.
+
+ldapErrorEditModeMandatory=편집 모드는 필수 항목입니다
+ldapErrorInvalidCustomFilter=사용자 정의된 LDAP 필터가 "("로 시작하지 않거나 ")"로 끝나지 않습니다.
+ldapErrorConnectionTimeoutNotNumber=연결 제한 시간은 숫자여야 합니다
+ldapErrorReadTimeoutNotNumber=읽기 제한 시간은 숫자여야 합니다
+ldapErrorMissingClientId=렐름 역할 매핑을 사용하지 않는 경우 설정에 클라이언트 ID를 제공해야 합니다.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=그룹 상속을 유지하면서 UID 멤버십 유형을 함께 사용할 수 없습니다.
+ldapErrorCantWriteOnlyForReadOnlyLdap=LDAP 공급자 모드가 WRITABLE이 아닌 경우 쓰기 전용으로 설정할 수 없습니다
+ldapErrorCantWriteOnlyAndReadOnly=쓰기 전용과 읽기 전용을 함께 설정할 수 없습니다
+ldapErrorCantEnableStartTlsAndConnectionPooling=StartTLS와 연결 풀링을 동시에 활성화할 수 없습니다.
+ldapErrorCantEnableUnsyncedAndImportOff=LDAP 공급자 모드가 UNSYNCED인 경우 사용자 가져오기를 비활성화할 수 없습니다
+ldapErrorMissingGroupsPathGroup=그룹 경로 그룹이 존재하지 않습니다 - 먼저 지정된 경로에 그룹을 생성하십시오
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=비밀번호 정책 검증은 WRITABLE 편집 모드에서만 적용할 수 있습니다
+ldapErrorConnectionUrlContainsComma=연결 URL에는 쉼표가 포함될 수 없습니다. 여러 LDAP URL을 구분하려면 공백을 사용하십시오(예: "ldap://host1:389 ldap://host2:389").
+ldapErrorInvalidConnectionUrl=연결 URL에 잘못된 LDAP URL이 포함되어 있습니다.
+ldapErrorInvalidConnectionUrlScheme=연결 URL에 지원되지 않는 스킴의 URL이 포함되어 있습니다. 각 URL은 ldap:// 또는 ldaps:// 스킴을 사용해야 합니다.
+
+clientRedirectURIsFragmentError=리다이렉트 URI에는 URL 프래그먼트가 포함될 수 없습니다
+clientPostLogoutRedirectURIsFragmentError=로그아웃 후 리다이렉트 URI에는 URL 프래그먼트가 포함될 수 없습니다
+clientRootURLFragmentError=루트 URL에는 URL 프래그먼트가 포함될 수 없습니다
+clientRootURLIllegalSchemeError=루트 URL이 잘못된 스킴을 사용합니다
+clientBaseURLIllegalSchemeError=기본 URL이 잘못된 스킴을 사용합니다
+backchannelLogoutUrlIllegalSchemeError=백채널 로그아웃 URL이 잘못된 스킴을 사용합니다
+clientRedirectURIsIllegalSchemeError=리다이렉트 URI가 잘못된 스킴을 사용합니다
+clientPostLogoutRedirectURIsIllegalSchemeError=로그아웃 후 리다이렉트 URI가 잘못된 스킴을 사용합니다
+clientBaseURLInvalid=기본 URL이 유효한 URL이 아닙니다
+clientRootURLInvalid=루트 URL이 유효한 URL이 아닙니다
+clientRedirectURIsInvalid=리다이렉트 URI가 유효한 URI가 아닙니다
+clientPostLogoutRedirectURIsInvalid=로그아웃 후 리다이렉트 URI가 유효한 URI가 아닙니다
+backchannelLogoutUrlIsInvalid=백채널 로그아웃 URL이 유효한 URL이 아닙니다
+
+
+pairwiseMalformedClientRedirectURI=클라이언트에 잘못된 리다이렉트 URI가 포함되어 있습니다.
+pairwiseClientRedirectURIsMissingHost=클라이언트 리다이렉트 URI에는 유효한 호스트 구성 요소가 포함되어야 합니다.
+pairwiseClientRedirectURIsMultipleHosts=Sector Identifier URI가 설정되지 않은 경우 클라이언트 리다이렉트 URI에는 여러 호스트 구성 요소가 포함될 수 없습니다.
+pairwiseMalformedSectorIdentifierURI=잘못된 형식의 Sector Identifier URI입니다.
+pairwiseFailedToGetRedirectURIs=Sector Identifier URI에서 리다이렉트 URI를 가져오지 못했습니다.
+pairwiseRedirectURIsMismatch=클라이언트 리다이렉트 URI가 Sector Identifier URI에서 가져온 리다이렉트 URI와 일치하지 않습니다.
+
+duplicatedJwksSettings="Use JWKS" 스위치와 "Use JWKS URL" 스위치를 동시에 켤 수 없습니다.
+
+# Shown to an admin when they enter a client specific SSO idle timeout that fails validation
+clientIdleExceedsRealmRememberMeIdle=클라이언트 세션 유휴 제한 시간은 Realm의 SSO 세션 유휴 제한 시간 및 Remember Me 유휴 제한 시간을 초과할 수 없습니다.
+# Shown to an admin when they enter a client specific SSO idle timeout that fails validation
+clientSessionIdleTimeoutExceedsRealm=클라이언트 세션 유휴 제한 시간은 Realm의 SSO 세션 유휴 제한 시간을 초과할 수 없습니다.
+# Shown to an admin when they enter a client specific SSO max lifetime that fails validation
+clientSessionMaxLifespanExceedsRealm=클라이언트 세션 최대 유지 시간은 Realm의 SSO 세션 최대 유지 시간을 초과할 수 없습니다.
+# Shown to an admin when they enter a client specific SSO max lifetime that fails validation
+clientSessionMaxLifespanExceedsRealmRememberMeMaxSpan=클라이언트 세션 최대 유지 시간은 Realm의 SSO 세션 최대 유지 시간 및 Remember Me 최대 유지 시간을 초과할 수 없습니다.
+
+error-invalid-value=잘못된 값입니다.
+error-invalid-blank=값을 지정하십시오.
+error-empty=값을 지정하십시오.
+error-invalid-length=속성 {0}은(는) 길이가 {1}에서 {2} 사이여야 합니다.
+error-invalid-length-too-short=속성 {0}은(는) 최소 길이가 {1}이어야 합니다.
+error-invalid-length-too-long=속성 {0}은(는) 최대 길이가 {2}여야 합니다.
+error-invalid-email=잘못된 이메일 주소입니다.
+error-invalid-number=잘못된 숫자입니다.
+error-number-out-of-range=속성 {0}은(는) {1}에서 {2} 사이의 숫자여야 합니다.
+error-number-out-of-range-too-small=속성 {0}은(는) {1} 이상이어야 합니다.
+error-number-out-of-range-too-big=속성 {0}은(는) {2} 이하여야 합니다.
+error-pattern-no-match=잘못된 값입니다.
+error-invalid-uri=잘못된 URL입니다.
+error-invalid-uri-scheme=잘못된 URL 스킴입니다.
+error-invalid-uri-fragment=잘못된 URL 프래그먼트입니다.
+error-user-attribute-required=속성 {0}을(를) 지정하십시오.
+error-invalid-date=속성 {0}의 날짜 형식이 잘못되었습니다.
+error-user-attribute-read-only=속성 {0}은(는) 읽기 전용입니다.
+error-username-invalid-character={0}에 잘못된 문자가 포함되어 있습니다.
+error-person-name-invalid-character={0}에 잘못된 문자가 포함되어 있습니다.
+error-invalid-multivalued-size=속성 {0}은(는) 최소 {1}개, 최대 {2}개의 값을 가져야 합니다.
+error-non-ascii-local-part-email=이메일 주소의 로컬 부분에는 ASCII 문자만 사용할 수 있습니다.
+
+workflowSingleRestartStepOnly=워크플로에는 재시작 단계를 하나만 설정할 수 있습니다.
+workflowRestartStepMustBeLast=워크플로 재시작 단계는 마지막 단계여야 합니다.
+workflowRestartStepInvalidPosition=워크플로 재시작 단계의 위치가 잘못되었습니다: {0}.
+workflowNoScheduledStepAtPosition=위치 {0}에서 재시작할 경우 예약된 단계를 찾을 수 없습니다.
+workflowInvalidType=잘못된 워크플로 유형입니다: {0}.
+workflowConditionTypesIncompatible=제공된 조건 유형({0})이 워크플로 유형({1})과 호환되지 않습니다.
+workflowStepUsesRequired=단계 ''uses''는 null이거나 비어 있을 수 없습니다.
+workflowStepAfterNegative=단계 ''after'' 설정은 음수일 수 없습니다.
+workflowStepAfterInvalid=단계 ''after'' 설정이 유효하지 않습니다: {0}.
+workflowStepProviderNotFound=단계 공급자를 찾을 수 없습니다: {0}.
+workflowNameEmpty=워크플로 이름은 null이거나 비어 있을 수 없습니다.
+workflowNameDuplicate=워크플로 이름은 고유해야 합니다. 이름이 ''{0}''인 워크플로가 이미 존재합니다.
+workflowCannotUpdateOnWithScheduled=워크플로에 예약된 리소스가 있는 경우 ''on'' 설정을 업데이트할 수 없습니다.
+workflowCannotUpdateSupports=''supports'' 설정을 업데이트할 수 없습니다.
+workflowCannotChangeStepsWithScheduled=워크플로에 예약된 리소스가 있는 경우 단계의 수나 순서를 변경할 수 없습니다.
+workflowMigrateDifferentTypes=서로 다른 리소스 유형을 지원하는 워크플로 간에는 예약된 리소스를 마이그레이션할 수 없습니다.
+workflowMigrateConditionsNotMet=리소스 {0}이(가) 워크플로 {1}의 활성화 조건을 충족하지 않아 마이그레이션할 수 없습니다.
+workflowResourceTypeNotSupported=리소스 유형 ''{0}''은(는) 이 워크플로에서 지원되지 않습니다 (지원 유형: {1}).
+workflowInvalidResource={0}은(는) 유효한 워크플로 리소스가 아닙니다.
+workflowStepsIncompatible=제공된 단계가 서로 호환되지 않습니다.
+workflowStepsSingleTypeRequired=제공된 단계는 단일 유형을 지원해야 합니다. 실제: {0}.
+workflowNotFoundById=id가 ''{0}''인 워크플로를 찾을 수 없습니다.
+workflowResourceNotFound=id가 {0}인 리소스를 찾을 수 없습니다.
+workflowMigrateStepIdsRequired=마이그레이션을 위해 ''from''과 ''to'' 단계 id를 모두 제공해야 합니다.
+workflowProviderFactoryNotFound=id가 {0}인 공급자 팩토리를 찾을 수 없습니다.
+workflowConditionRoleNotSet=예상 역할 이름이 설정되지 않았습니다.
+workflowConditionRoleNotFound=이름이 {0}인 역할이 존재하지 않습니다.
+workflowConditionGroupNotSet=예상 그룹 경로가 설정되지 않았습니다.
+workflowConditionGroupNotFound=이름이 {0}인 그룹이 존재하지 않습니다.
+workflowConditionIdpNotSet=예상 인증 제공자(IdP) 별칭이 설정되지 않았습니다.
+workflowConditionIdpNotFound=인증 제공자(IdP) {0}이(가) 존재하지 않습니다.
+workflowConditionAttributeNotSet=예상 ''key:value'' 쌍이 설정되지 않았습니다.
+workflowConditionAttributeInvalid=키-값 쌍 {0}을(를) 읽는 중 오류가 발생했습니다. 예상 형식은 ''key:value''입니다.
+workflowExpressionEmpty=표현식은 null이거나 비어 있을 수 없습니다.
+workflowExpressionMaxLength=표현식이 최대 허용 길이 {0}자를 초과합니다.
+workflowExpressionMaxDepth=표현식이 최대 허용 중첩 깊이 {0}을(를) 초과합니다.
+workflowExpressionInvalid=잘못된 표현식입니다: {0}\n오류 세부 정보:\n{1}
+
+client_account=계정
+client_account-console=계정 콘솔
+client_security-admin-console=보안 관리자 콘솔
+client_admin-cli=관리자 CLI
+client_realm-management=렐름 관리
+client_broker=브로커
diff --git a/themes/src/main/resources-community/theme/base/admin/theme.properties b/themes/src/main/resources-community/theme/base/admin/theme.properties
index cd123eb79af6..60751bf24668 100644
--- a/themes/src/main/resources-community/theme/base/admin/theme.properties
+++ b/themes/src/main/resources-community/theme/base/admin/theme.properties
@@ -1,2 +1,2 @@
-locales=ar,ca,de,el,en,es,eu,fa,fr,fi,hr,hy,id,it,ja,kk,ky,lt,lv,nl,no,pl,pt,pt-BR,ro,ru,sl,sv,uk,vi,zh-CN,zh-TW
+locales=ar,ca,de,el,en,es,eu,fa,fr,fi,hr,hy,id,it,ja,kk,ko,ky,lt,lv,nl,no,pl,pt,pt-BR,ro,ru,sl,sv,uk,vi,zh-CN,zh-TW
abstract=true
diff --git a/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties b/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
new file mode 100644
index 000000000000..14baf13c224c
--- /dev/null
+++ b/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
@@ -0,0 +1,79 @@
+emailVerificationSubject=이메일 확인
+emailVerificationBody=이 이메일 주소로 {2} 계정이 생성되었습니다. 본인이 맞다면 아래 링크를 클릭하여 이메일 주소를 확인하세요\n\n{0}\n\n이 링크는 {3} 이내에 만료됩니다.\n\n본인이 이 계정을 생성하지 않았다면 이 메시지를 무시하세요.
+emailVerificationBodyHtml=이 이메일 주소로 {2} 계정이 생성되었습니다. 본인이 맞다면 아래 링크를 클릭하여 이메일 주소를 확인하세요
이메일 주소 확인 링크
이 링크는 {3} 이내에 만료됩니다.
본인이 이 계정을 생성하지 않았다면 이 메시지를 무시하세요.
+orgInviteSubject={0} 조직 참여 초대
+orgInviteBody="{3}" 조직에 참여하도록 초대되었습니다. 아래 링크를 클릭하여 참여하세요.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n조직에 참여하고 싶지 않다면 이 메시지를 무시하세요.
+orgInviteBodyHtml="{3}" 조직에 참여하도록 초대되었습니다. 아래 링크를 클릭하여 참여하세요.
조직 참여 링크
이 링크는 {4} 이내에 만료됩니다.
조직에 참여하고 싶지 않다면 이 메시지를 무시하세요.
+orgInviteBodyPersonalized=안녕하세요, "{5}" "{6}"님.\n\n "{3}" 조직에 참여하도록 초대되었습니다. 아래 링크를 클릭하여 참여하세요.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n조직에 참여하고 싶지 않다면 이 메시지를 무시하세요.
+orgInviteBodyPersonalizedHtml=안녕하세요, {5} {6}님.
"{3}" 조직에 참여하도록 초대되었습니다. 아래 링크를 클릭하여 참여하세요.
조직 참여 링크
이 링크는 {4} 이내에 만료됩니다.
조직에 참여하고 싶지 않다면 이 메시지를 무시하세요.
+emailUpdateConfirmationSubject=새 이메일 확인
+emailUpdateConfirmationBody={2} 계정을 이메일 주소 {1}(으)로 업데이트하려면 아래 링크를 클릭하세요\n\n{0}\n\n이 링크는 {3} 이내에 만료됩니다.\n\n이 변경을 진행하고 싶지 않다면 이 메시지를 무시하세요.
+emailUpdateConfirmationBodyHtml={2} 계정을 이메일 주소 {1}(으)로 업데이트하려면 아래 링크를 클릭하세요
{0}
이 링크는 {3} 이내에 만료됩니다.
이 변경을 진행하고 싶지 않다면 이 메시지를 무시하세요.
+emailTestSubject=[KEYCLOAK] - SMTP 테스트 메시지
+emailTestBody=테스트 메시지입니다
+emailTestBodyHtml=테스트 메시지입니다
+identityProviderLinkSubject={0} 연결
+identityProviderLinkBody=귀하의 "{1}" 계정을 사용자 {2}의 "{0}" 계정과 연결하려고 합니다. 본인이 맞다면 아래 링크를 클릭하여 계정을 연결하세요\n\n{3}\n\n이 링크는 {5} 이내에 만료됩니다.\n\n이 절차를 시작하지 않았거나 계정을 연결하고 싶지 않다면 이 메시지를 무시하세요. 계정을 연결하면 {0}을(를) 통해 {1}에 로그인할 수 있습니다.
+identityProviderLinkBodyHtml=귀하의 {1} 계정을 사용자 {2}의 {0} 계정과 연결하려고 합니다. 본인이 맞다면 아래 링크를 클릭하여 계정을 연결하세요
계정 연결 확인 링크
이 링크는 {5} 이내에 만료됩니다.
이 절차를 시작하지 않았거나 계정을 연결하고 싶지 않다면 이 메시지를 무시하세요. 계정을 연결하면 {0}을(를) 통해 {1}에 로그인할 수 있습니다.
+passwordResetSubject=비밀번호 재설정
+passwordResetBody=귀하의 {2} 계정 자격 증명 변경을 요청했습니다. 본인이 맞다면 아래 링크를 클릭하여 재설정하세요.\n\n{0}\n\n이 링크와 코드는 {3} 이내에 만료됩니다.\n\n자격 증명을 재설정하고 싶지 않다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
+passwordResetBodyHtml=누군가 귀하의 {2} 계정 자격 증명 변경을 요청했습니다. 본인이 맞다면 아래 링크를 클릭하여 재설정하세요.
자격 증명 재설정 링크
이 링크는 {3} 이내에 만료됩니다.
자격 증명을 재설정하고 싶지 않다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
+executeActionsSubject=계정 업데이트
+executeActionsBody=관리자가 방금 다음 작업을 수행하여 {2} 계정을 업데이트하도록 요청했습니다: {3}. 아래 링크를 클릭하여 이 절차를 시작하세요.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n관리자가 이를 요청한 사실을 알지 못한다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
+executeActionsBodyHtml=관리자가 방금 다음 작업을 수행하여 {2} 계정을 업데이트하도록 요청했습니다: {3}. 아래 링크를 클릭하여 이 절차를 시작하세요.
계정 업데이트 링크
이 링크는 {4} 이내에 만료됩니다.
관리자가 이를 요청한 사실을 알지 못한다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
+verifiableCredentialOfferSubject=검증 가능한 자격 증명 제공
+verifiableCredentialOfferBody=관리자가 회원님의 {2} 계정에서 검증 가능한 자격증명 "{3}"을(를) 디지털 지갑으로 발급받을 수 있도록 설정했습니다.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
+verifiableCredentialOfferBodyHtml=관리자가 회원님의 {2} 계정에서 {3} 검증 가능한 자격 증명을 디지털 지갑으로 발급받을 수 있도록 설정했습니다.
아래 링크를 클릭하여 이 절차를 시작하세요.
{3} 청구 링크
이 링크는 {4} 이내에 만료됩니다.
링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
+eventLoginErrorSubject=로그인 오류
+eventLoginErrorBody={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventLoginErrorBodyHtml={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventRemoveTotpSubject=OTP 제거
+eventRemoveTotpBody={0}에 {1}에서 귀하의 계정에서 OTP가 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventRemoveTotpBodyHtml={0}에 {1}에서 귀하의 계정에서 OTP가 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdatePasswordSubject=비밀번호 업데이트
+
+# Resource Policy Notifications
+accountNotificationSubject=계정 알림
+accountNotificationBody=계정에 주의가 필요합니다. 문의 사항이 있으면 관리자에게 문의하세요.
+
+accountDisableNotificationSubject=계정 비활성화 경고
+accountDisableNotificationBody={1}(으)로 인해 귀하의 계정이 {0}일 후에 비활성화됩니다. 이를 방지하려면 로그인하세요.
+
+accountDeleteNotificationSubject=계정 삭제 안내
+accountDeleteNotificationBody={1}(으)로 인해 귀하의 계정이 {0}일 후에 영구적으로 삭제됩니다. 모든 데이터가 손실됩니다. 예상하지 못한 일이라면 즉시 관리자에게 문의하세요.
+eventUpdatePasswordBody={0}에 {1}에서 비밀번호가 변경되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdatePasswordBodyHtml={0}에 {1}에서 비밀번호가 변경되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdateTotpSubject=OTP 업데이트
+eventUpdateTotpBody={0}에 {1}에서 귀하의 계정에 대해 OTP가 업데이트되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdateTotpBodyHtml={0}에 {1}에서 귀하의 계정에 대해 OTP가 업데이트되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdateCredentialSubject=자격 증명 업데이트
+eventUpdateCredentialBody={1}에 {2}에서 귀하의 {0} 자격 증명이 변경되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUpdateCredentialBodyHtml={1}에 {2}에서 귀하의 {0} 자격 증명이 변경되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventRemoveCredentialSubject=자격 증명 제거
+eventRemoveCredentialBody={1}에 {2}에서 귀하의 계정에서 자격 증명 {0}이(가) 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventRemoveCredentialBodyHtml={1}에 {2}에서 귀하의 계정에서 자격 증명 {0}이(가) 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventUserDisabledByTemporaryLockoutSubject=임시 잠금으로 인한 사용자 비활성화
+eventUserDisabledByTemporaryLockoutBody={0}에서 여러 번 실패하여 귀하의 계정이 일시적으로 비활성화되었습니다. 필요한 경우 관리자에게 문의하세요.
+eventUserDisabledByTemporaryLockoutHtml={0}에서 여러 번 실패하여 귀하의 계정이 일시적으로 비활성화되었습니다. 필요한 경우 관리자에게 문의하세요.
+eventUserDisabledByPermanentLockoutSubject=영구 잠금으로 인한 사용자 비활성화
+eventUserDisabledByPermanentLockoutBody={0}에서 여러 번 실패하여 귀하의 계정이 영구적으로 비활성화되었습니다. 관리자에게 문의하세요.
+eventUserDisabledByPermanentLockoutHtml={0}에서 여러 번 실패하여 귀하의 계정이 영구적으로 비활성화되었습니다. 관리자에게 문의하세요.
+
+requiredAction.CONFIGURE_TOTP=OTP 설정
+requiredAction.TERMS_AND_CONDITIONS=이용 약관
+requiredAction.UPDATE_PASSWORD=비밀번호 업데이트
+requiredAction.UPDATE_PROFILE=프로필 업데이트
+requiredAction.VERIFY_EMAIL=이메일 확인
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=복구 코드 생성
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2다음 코드를 입력하여 이메일 주소를 확인하세요.{0}
diff --git a/themes/src/main/resources-community/theme/base/email/theme.properties b/themes/src/main/resources-community/theme/base/email/theme.properties
index d24db219d719..03d33f1b06bb 100644
--- a/themes/src/main/resources-community/theme/base/email/theme.properties
+++ b/themes/src/main/resources-community/theme/base/email/theme.properties
@@ -1,2 +1,2 @@
-locales=ar,az,ca,cs,da,de,el,en,es,eu,fa,fr,fi,hr,hu,hy,id,it,ja,kk,ky,lt,nl,no,pl,pt,pt-BR,ro,ru,sk,sl,sv,th,tr,uk,vi,zh-CN,zh-TW
+locales=ar,az,ca,cs,da,de,el,en,es,eu,fa,fr,fi,hr,hu,hy,id,it,ja,kk,ko,ky,lt,nl,no,pl,pt,pt-BR,ro,ru,sk,sl,sv,th,tr,uk,vi,zh-CN,zh-TW
abstract=true
From b1b1253db3f2415af3e85912847ab29d5ffdef33 Mon Sep 17 00:00:00 2001
From: Soul Lee
Date: Thu, 23 Jul 2026 20:26:27 +0900
Subject: [PATCH 2/3] Apply review feedback to Korean email and admin
translations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Address review comments on the base email and admin messages_ko.properties:
fix spacing and word choice, correct malformed HTML and add the missing
call-to-action in the verifiable-credential email, refine the identity
provider link wording, and unify the "Provider" term to 제공자.
Co-authored-by: gayeonwon
Signed-off-by: gayeonwon
Signed-off-by: Soul Lee
---
.../admin/messages/messages_ko.properties | 22 +++++++++----------
.../email/messages/messages_ko.properties | 10 ++++-----
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties b/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
index ea627d20a14a..bfc8bff29774 100644
--- a/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
+++ b/themes/src/main/resources-community/theme/base/admin/messages/messages_ko.properties
@@ -6,10 +6,10 @@ invalidPasswordMinUpperCaseCharsMessage=잘못된 비밀번호: 대문자를 최
invalidPasswordMinSpecialCharsMessage=잘못된 비밀번호: 특수문자를 최소 {0}자 이상 포함해야 합니다.
invalidPasswordNotUsernameMessage=잘못된 비밀번호: 사용자 이름과 동일할 수 없습니다.
invalidPasswordNotContainsUsernameMessage=잘못된 비밀번호: 사용자 이름을 포함할 수 없습니다.
-invalidPasswordNotEmailMessage=잘못된 비밀번호: 이메일과 동일할수 없습니다.
+invalidPasswordNotEmailMessage=잘못된 비밀번호: 이메일과 동일할 수 없습니다.
invalidPasswordRegexPatternMessage=잘못된 비밀번호: 정규식 패턴과 일치하지 않습니다.
invalidPasswordHistoryMessage=잘못된 비밀번호: 최근 {0}개의 비밀번호와 동일할 수 없습니다.
-invalidPasswordBlacklistedMessage=잘못된 비밀번호: 허용되지 않는 비밀번호입니다.
+invalidPasswordBlacklistedMessage=잘못된 비밀번호: 허용되지 않은 비밀번호입니다.
invalidPasswordGenericMessage=잘못된 비밀번호: 새 비밀번호가 비밀번호 정책에 맞지 않습니다.
ldapErrorEditModeMandatory=편집 모드는 필수 항목입니다
@@ -18,10 +18,10 @@ ldapErrorConnectionTimeoutNotNumber=연결 제한 시간은 숫자여야 합니
ldapErrorReadTimeoutNotNumber=읽기 제한 시간은 숫자여야 합니다
ldapErrorMissingClientId=렐름 역할 매핑을 사용하지 않는 경우 설정에 클라이언트 ID를 제공해야 합니다.
ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=그룹 상속을 유지하면서 UID 멤버십 유형을 함께 사용할 수 없습니다.
-ldapErrorCantWriteOnlyForReadOnlyLdap=LDAP 공급자 모드가 WRITABLE이 아닌 경우 쓰기 전용으로 설정할 수 없습니다
+ldapErrorCantWriteOnlyForReadOnlyLdap=LDAP 제공자 모드가 쓰기 가능(WRITABLE)이 아닌 경우 쓰기 전용으로 설정할 수 없습니다
ldapErrorCantWriteOnlyAndReadOnly=쓰기 전용과 읽기 전용을 함께 설정할 수 없습니다
ldapErrorCantEnableStartTlsAndConnectionPooling=StartTLS와 연결 풀링을 동시에 활성화할 수 없습니다.
-ldapErrorCantEnableUnsyncedAndImportOff=LDAP 공급자 모드가 UNSYNCED인 경우 사용자 가져오기를 비활성화할 수 없습니다
+ldapErrorCantEnableUnsyncedAndImportOff=LDAP 제공자 모드가 UNSYNCED인 경우 사용자 가져오기를 비활성화할 수 없습니다
ldapErrorMissingGroupsPathGroup=그룹 경로 그룹이 존재하지 않습니다 - 먼저 지정된 경로에 그룹을 생성하십시오
ldapErrorValidatePasswordPolicyAvailableForWritableOnly=비밀번호 정책 검증은 WRITABLE 편집 모드에서만 적용할 수 있습니다
ldapErrorConnectionUrlContainsComma=연결 URL에는 쉼표가 포함될 수 없습니다. 여러 LDAP URL을 구분하려면 공백을 사용하십시오(예: "ldap://host1:389 ldap://host2:389").
@@ -53,16 +53,16 @@ pairwiseRedirectURIsMismatch=클라이언트 리다이렉트 URI가 Sector Ident
duplicatedJwksSettings="Use JWKS" 스위치와 "Use JWKS URL" 스위치를 동시에 켤 수 없습니다.
# Shown to an admin when they enter a client specific SSO idle timeout that fails validation
-clientIdleExceedsRealmRememberMeIdle=클라이언트 세션 유휴 제한 시간은 Realm의 SSO 세션 유휴 제한 시간 및 Remember Me 유휴 제한 시간을 초과할 수 없습니다.
+clientIdleExceedsRealmRememberMeIdle=클라이언트 세션 유휴 제한 시간은 렐름의 SSO 세션 유휴 제한 시간 및 로그인 상태 유지(Remember Me) 유휴 제한 시간을 초과할 수 없습니다.
# Shown to an admin when they enter a client specific SSO idle timeout that fails validation
-clientSessionIdleTimeoutExceedsRealm=클라이언트 세션 유휴 제한 시간은 Realm의 SSO 세션 유휴 제한 시간을 초과할 수 없습니다.
+clientSessionIdleTimeoutExceedsRealm=클라이언트 세션 유휴 제한 시간은 렐름의 SSO 세션 유휴 제한 시간을 초과할 수 없습니다.
# Shown to an admin when they enter a client specific SSO max lifetime that fails validation
-clientSessionMaxLifespanExceedsRealm=클라이언트 세션 최대 유지 시간은 Realm의 SSO 세션 최대 유지 시간을 초과할 수 없습니다.
+clientSessionMaxLifespanExceedsRealm=클라이언트 세션 최대 유지 시간은 렐름의 SSO 세션 최대 유지 시간을 초과할 수 없습니다.
# Shown to an admin when they enter a client specific SSO max lifetime that fails validation
-clientSessionMaxLifespanExceedsRealmRememberMeMaxSpan=클라이언트 세션 최대 유지 시간은 Realm의 SSO 세션 최대 유지 시간 및 Remember Me 최대 유지 시간을 초과할 수 없습니다.
+clientSessionMaxLifespanExceedsRealmRememberMeMaxSpan=클라이언트 세션 최대 유지 시간은 렐름의 SSO 세션 최대 유지 시간 및 Remember Me 최대 유지 시간을 초과할 수 없습니다.
error-invalid-value=잘못된 값입니다.
-error-invalid-blank=값을 지정하십시오.
+error-invalid-blank=값을 지정하세요.
error-empty=값을 지정하십시오.
error-invalid-length=속성 {0}은(는) 길이가 {1}에서 {2} 사이여야 합니다.
error-invalid-length-too-short=속성 {0}은(는) 최소 길이가 {1}이어야 합니다.
@@ -93,7 +93,7 @@ workflowConditionTypesIncompatible=제공된 조건 유형({0})이 워크플로
workflowStepUsesRequired=단계 ''uses''는 null이거나 비어 있을 수 없습니다.
workflowStepAfterNegative=단계 ''after'' 설정은 음수일 수 없습니다.
workflowStepAfterInvalid=단계 ''after'' 설정이 유효하지 않습니다: {0}.
-workflowStepProviderNotFound=단계 공급자를 찾을 수 없습니다: {0}.
+workflowStepProviderNotFound=워크플로 단계 제공자를 찾을 수 없습니다: {0}.
workflowNameEmpty=워크플로 이름은 null이거나 비어 있을 수 없습니다.
workflowNameDuplicate=워크플로 이름은 고유해야 합니다. 이름이 ''{0}''인 워크플로가 이미 존재합니다.
workflowCannotUpdateOnWithScheduled=워크플로에 예약된 리소스가 있는 경우 ''on'' 설정을 업데이트할 수 없습니다.
@@ -108,7 +108,7 @@ workflowStepsSingleTypeRequired=제공된 단계는 단일 유형을 지원해
workflowNotFoundById=id가 ''{0}''인 워크플로를 찾을 수 없습니다.
workflowResourceNotFound=id가 {0}인 리소스를 찾을 수 없습니다.
workflowMigrateStepIdsRequired=마이그레이션을 위해 ''from''과 ''to'' 단계 id를 모두 제공해야 합니다.
-workflowProviderFactoryNotFound=id가 {0}인 공급자 팩토리를 찾을 수 없습니다.
+workflowProviderFactoryNotFound=id가 {0}인 제공자 팩토리를 찾을 수 없습니다.
workflowConditionRoleNotSet=예상 역할 이름이 설정되지 않았습니다.
workflowConditionRoleNotFound=이름이 {0}인 역할이 존재하지 않습니다.
workflowConditionGroupNotSet=예상 그룹 경로가 설정되지 않았습니다.
diff --git a/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties b/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
index 14baf13c224c..b3f26874c274 100644
--- a/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
+++ b/themes/src/main/resources-community/theme/base/email/messages/messages_ko.properties
@@ -14,7 +14,7 @@ emailTestBody=테스트 메시지입니다
emailTestBodyHtml=테스트 메시지입니다
identityProviderLinkSubject={0} 연결
identityProviderLinkBody=귀하의 "{1}" 계정을 사용자 {2}의 "{0}" 계정과 연결하려고 합니다. 본인이 맞다면 아래 링크를 클릭하여 계정을 연결하세요\n\n{3}\n\n이 링크는 {5} 이내에 만료됩니다.\n\n이 절차를 시작하지 않았거나 계정을 연결하고 싶지 않다면 이 메시지를 무시하세요. 계정을 연결하면 {0}을(를) 통해 {1}에 로그인할 수 있습니다.
-identityProviderLinkBodyHtml=귀하의 {1} 계정을 사용자 {2}의 {0} 계정과 연결하려고 합니다. 본인이 맞다면 아래 링크를 클릭하여 계정을 연결하세요
계정 연결 확인 링크
이 링크는 {5} 이내에 만료됩니다.
이 절차를 시작하지 않았거나 계정을 연결하고 싶지 않다면 이 메시지를 무시하세요. 계정을 연결하면 {0}을(를) 통해 {1}에 로그인할 수 있습니다.
+identityProviderLinkBodyHtml=귀하의 {1} 계정을 사용자 {2}의 {0} 계정과 연결하려는 요청이 접수되었습니다.
본인이 요청한 경우 아래 링크를 클릭하여 계정 연결을 완료하세요.
계정 연결 확인 링크
이 링크는 {5} 이내에 만료됩니다.
이 절차를 시작하지 않았거나 계정을 연결하고 싶지 않다면 이 메시지를 무시하세요. 계정을 연결하면 {0}을(를) 통해 {1}에 로그인할 수 있습니다.
passwordResetSubject=비밀번호 재설정
passwordResetBody=귀하의 {2} 계정 자격 증명 변경을 요청했습니다. 본인이 맞다면 아래 링크를 클릭하여 재설정하세요.\n\n{0}\n\n이 링크와 코드는 {3} 이내에 만료됩니다.\n\n자격 증명을 재설정하고 싶지 않다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
passwordResetBodyHtml=누군가 귀하의 {2} 계정 자격 증명 변경을 요청했습니다. 본인이 맞다면 아래 링크를 클릭하여 재설정하세요.
자격 증명 재설정 링크
이 링크는 {3} 이내에 만료됩니다.
자격 증명을 재설정하고 싶지 않다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
@@ -22,11 +22,11 @@ executeActionsSubject=계정 업데이트
executeActionsBody=관리자가 방금 다음 작업을 수행하여 {2} 계정을 업데이트하도록 요청했습니다: {3}. 아래 링크를 클릭하여 이 절차를 시작하세요.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n관리자가 이를 요청한 사실을 알지 못한다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
executeActionsBodyHtml=관리자가 방금 다음 작업을 수행하여 {2} 계정을 업데이트하도록 요청했습니다: {3}. 아래 링크를 클릭하여 이 절차를 시작하세요.
계정 업데이트 링크
이 링크는 {4} 이내에 만료됩니다.
관리자가 이를 요청한 사실을 알지 못한다면 이 메시지를 무시하세요. 아무것도 변경되지 않습니다.
verifiableCredentialOfferSubject=검증 가능한 자격 증명 제공
-verifiableCredentialOfferBody=관리자가 회원님의 {2} 계정에서 검증 가능한 자격증명 "{3}"을(를) 디지털 지갑으로 발급받을 수 있도록 설정했습니다.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
-verifiableCredentialOfferBodyHtml=관리자가 회원님의 {2} 계정에서 {3} 검증 가능한 자격 증명을 디지털 지갑으로 발급받을 수 있도록 설정했습니다.
아래 링크를 클릭하여 이 절차를 시작하세요.{3} 청구 링크
이 링크는 {4} 이내에 만료됩니다.
링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
+verifiableCredentialOfferBody=관리자가 회원님의 {2} 계정에서 검증 가능한 자격 증명 "{3}"을(를) 디지털 지갑으로 발급받을 수 있도록 설정했습니다. 아래 링크를 클릭하여 이 절차를 시작하세요.\n\n{0}\n\n이 링크는 {4} 이내에 만료됩니다.\n\n링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
+verifiableCredentialOfferBodyHtml=관리자가 회원님의 {2} 계정에서 {3} 검증 가능한 자격 증명을 디지털 지갑으로 발급받을 수 있도록 설정했습니다. 아래 링크를 클릭하여 이 절차를 시작하세요.
{3} 청구 링크
이 링크는 {4} 이내에 만료됩니다.
링크가 이미 만료되었더라도 다른 방법으로(예: {2} 계정 콘솔 사용) {3}을(를) 청구할 수 있습니다.
eventLoginErrorSubject=로그인 오류
-eventLoginErrorBody={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 아니라면 관리자에게 문의하세요.
-eventLoginErrorBodyHtml={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 아니라면 관리자에게 문의하세요.
+eventLoginErrorBody={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 요청한 게 아닐 시 관리자에게 문의하세요.
+eventLoginErrorBodyHtml={0}에 {1}에서 귀하의 계정에 대한 로그인 실패가 감지되었습니다. 본인이 요청한 게 아닐 시 관리자에게 문의하세요.
eventRemoveTotpSubject=OTP 제거
eventRemoveTotpBody={0}에 {1}에서 귀하의 계정에서 OTP가 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
eventRemoveTotpBodyHtml={0}에 {1}에서 귀하의 계정에서 OTP가 제거되었습니다. 본인이 아니라면 관리자에게 문의하세요.
From 91d848db23c7dfce638ffb69e3645e0b65b3398d Mon Sep 17 00:00:00 2001
From: gayeonwon
Date: Thu, 23 Jul 2026 20:24:59 +0900
Subject: [PATCH 3/3] Address review feedback on Account Console Korean
translation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Apply reviewer suggestions on messages_ko.properties for the keycloak.v3 account theme: use "OTP 앱" wording for the OTP help text, "인증 제공자(IdP)"/"인증 수단 제공자" for provider strings, "알 수 없는 사용자" for anonymous users, clearer device sign-out and consent-withdrawal phrasing, "삭제" for account deletion, "이차 인증" instead of 2FA, and a reworded theme description.
Signed-off-by: gayeonwon
---
.../account/messages/messages_ko.properties | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties b/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
index c2e998f1e02f..b284f7af2ff2 100644
--- a/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
+++ b/js/apps/account-ui/maven-resources-community/theme/keycloak.v3/account/messages/messages_ko.properties
@@ -21,7 +21,7 @@ edit=편집
otp-display-name=인증모듈 애플리케이션
selectALocale=언어 선택
signOut=로그아웃
-linkedEmpty=연결된 공급자(IdP)가 없습니다
+linkedEmpty=연결된 인증 제공자(IdP)가 없습니다
directMembership=직접 멤버십
accept=수락
error-invalid-length-too-short='{{0}}'의 최소 길이는 {{1}}이어야 합니다.
@@ -30,7 +30,7 @@ error-number-out-of-range-too-big='{{0}}'의 최대값은 {{2}}이어야 합니
updateEmail=이메일 업데이트
two-factor=2단계 인증
resourceSharedWith_zero=이 리소스는 공유되지 않았습니다.
-signedInDevicesExplanation=익숙하지 않은 기기에서는 로그아웃하세요.
+signedInDevicesExplanation=사용한 적 없는 기기는 로그아웃하세요.
addMultivaluedLabel={{fieldLabel}} 추가
status=상태
error-number-out-of-range-too-small='{{0}}'의 최소값은 {{1}}이어야 합니다.
@@ -54,7 +54,7 @@ share=공유
close=닫기
email=이메일
signOutWarning=세션에서 로그아웃하시겠습니까?
-removeConsentError={{error}}(으)로 인해 동의를 제거할 수 없습니다
+removeConsentError=동의를 철회하지 못했습니다\: {{error}}
signOutAllDevicesWarning=이 작업을 수행하면 현재 사용 중인 기기를 포함하여 계정에 로그인한 모든 기기에서 로그아웃됩니다.
unShareSuccess=리소스 공유가 성공적으로 해제되었습니다.
signingIn=로그인
@@ -112,7 +112,7 @@ unShareAllConfirm=모든 공유를 완전히 제거하시겠습니까?
firstName=이름
name=이름
clientTypeHelp=이 리소스의 유형입니다. 동일한 유형의 서로 다른 리소스 인스턴스를 그룹화하는 데 사용할 수 있습니다.
-unknownUser=익명
+unknownUser=알 수 없는 사용자
offlineAccess=오프라인 액세스
password-display-name=비밀번호
expires=만료
@@ -127,7 +127,7 @@ choose=선택...
signedInDevices=로그인된 기기
delete=삭제
missingPasswordMessage='{{0}}'\: 비밀번호를 지정하세요.
-otp-help-text=인증모듈 애플리케이션에서 확인 코드를 입력하세요.
+otp-help-text=OTP 앱에 표시된 인증 코드를 입력하세요.
groupsListColumnsNames=그룹 목록 열 이름
error-invalid-uri-scheme='{{0}}'의 URL 스킴이 잘못되었습니다.
error-user-attribute-read-only={{0}} 필드는 읽기 전용입니다.
@@ -171,7 +171,7 @@ application=애플리케이션
unlinkedLoginProviders=연결되지 않은 로그인 공급자
applicationDetails={{clientId}}의 애플리케이션 세부 정보
successRemovedMessage={{userLabel}}이(가) 제거되었습니다.
-deleteAccountWarning=이 작업은 되돌릴 수 없습니다. 모든 데이터가 영구적으로 파기되어 복구할 수 없습니다.
+deleteAccountWarning=이 작업은 되돌릴 수 없습니다. 모든 데이터가 영구적으로 삭제되며 복구할 수 없습니다.
resourceSharedWith_other=리소스가 <0>{{username}}0>님 및 다른 <1>{{other}}1>명의 사용자와 공유되었습니다
error-person-name-invalid-character='{{0}}'에 잘못된 문자가 포함되어 있습니다.
user=사용자
@@ -182,7 +182,7 @@ sharedWithMe=나와 공유됨
username=사용자 이름
webauthn-display-name=패스키
webauthn-help-text=패스키를 사용하여 로그인하세요.
-webauthn-authenticator-provider=인증모듈 공급자
+webauthn-authenticator-provider=인증 수단 제공자
webauthn-transports=전송 매체
webauthn-passwordless-display-name=패스키
webauthn-passwordless-help-text=패스키를 사용하여 비밀번호 없이 로그인하세요.
@@ -191,7 +191,7 @@ error-invalid-multivalued-size={{0}} 속성은 최소 {{1}}개에서 최대 {{2}
error-non-ascii-local-part-email=주소의 로컬 부분에는 ASCII 문자만 포함되어야 합니다.
recovery-authn-code=내 복구 인증 코드
recovery-authn-codes-display-name=복구 인증 코드
-recovery-authn-codes-help-text=이 코드는 다른 2FA 수단을 사용할 수 없을 때 액세스를 되찾는 데 사용할 수 있습니다.
+recovery-authn-codes-help-text=이 코드는 다른 이차 인증 수단을 사용할 수 없을 때 액세스를 되찾는 데 사용할 수 있습니다.
recovery-codes-number-used={{0}}개의 복구 코드 사용됨
recovery-codes-number-remaining={{0}}개의 복구 코드 남음
recovery-codes-generate-new-codes=계정에 대한 액세스를 유지하려면 새 코드를 생성하세요
@@ -237,4 +237,4 @@ invalid_request_object=잘못된 요청 객체
request_not_supported=지원되지 않는 요청
request_uri_not_supported=지원되지 않는 요청 URI
registration_not_supported=지원되지 않는 등록
-theme.keycloak.v3.account.description=더 세련되고, v3는 더 일관되며 동적입니다. (계정 기본값)
+theme.keycloak.v3.account.description=디자인을 다듬어 더 일관되고 생동감 있게 만든 v3입니다. (계정 콘솔 기본값)