diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/ko.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/ko.json
new file mode 100644
index 0000000000..e004a8cff1
--- /dev/null
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/ko.json
@@ -0,0 +1,13 @@
+{
+ "culture": "ko",
+ "texts": {
+ "GivenTenantIsNotExist": "지정된 테넌트가 존재하지 않습니다: {0}",
+ "GivenTenantIsNotAvailable": "지정된 테넌트를 사용할 수 없습니다: {0}",
+ "Tenant": "테넌트",
+ "Switch": "전환",
+ "Name": "이름",
+ "SwitchTenantHint": "호스트 측으로 전환하려면 이름 필드를 비워 두세요.",
+ "SwitchTenant": "테넌트 전환",
+ "NotSelected": "선택되지 않음"
+ }
+}
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/ko.json b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/ko.json
new file mode 100644
index 0000000000..a41eae4912
--- /dev/null
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/ko.json
@@ -0,0 +1,10 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Volo.Authorization:010001": "권한 부여에 실패했습니다! 지정된 정책에서 권한이 부여되지 않았습니다.",
+ "Volo.Authorization:010002": "권한 부여에 실패했습니다! 지정된 정책에서 권한이 부여되지 않았습니다: {PolicyName}",
+ "Volo.Authorization:010003": "권한 부여에 실패했습니다! 지정된 리소스에 대해 정책에서 권한이 부여되지 않았습니다: {ResourceName}",
+ "Volo.Authorization:010004": "권한 부여에 실패했습니다! 지정된 리소스에 대해 요구 사항이 충족되지 않았습니다: {ResourceName}",
+ "Volo.Authorization:010005": "권한 부여에 실패했습니다! 지정된 리소스에 대해 요구 사항들이 충족되지 않았습니다: {ResourceName}"
+ }
+}
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/ko.json b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/ko.json
new file mode 100644
index 0000000000..23004a404f
--- /dev/null
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/ko.json
@@ -0,0 +1,6 @@
+{
+ "culture": "ko",
+ "texts": {
+ "MaxResultCountExceededExceptionMessage": "{0}은(는) {1}보다 클 수 없습니다! 더 많은 결과를 허용하려면 서버 측에서 {2}.{3}을(를) 늘리십시오."
+ }
+}
diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/ko.json b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/ko.json
new file mode 100644
index 0000000000..1eef424242
--- /dev/null
+++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/ko.json
@@ -0,0 +1,25 @@
+{
+ "culture": "ko",
+ "texts": {
+ "DisplayName:Abp.Mailing.DefaultFromAddress": "기본 발신자 주소",
+ "DisplayName:Abp.Mailing.DefaultFromDisplayName": "기본 발신자 표시 이름",
+ "DisplayName:Abp.Mailing.Smtp.Host": "호스트",
+ "DisplayName:Abp.Mailing.Smtp.Port": "포트",
+ "DisplayName:Abp.Mailing.Smtp.UserName": "사용자 이름",
+ "DisplayName:Abp.Mailing.Smtp.Password": "비밀번호",
+ "DisplayName:Abp.Mailing.Smtp.Domain": "도메인",
+ "DisplayName:Abp.Mailing.Smtp.EnableSsl": "SSL 사용",
+ "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "기본 자격 증명 사용",
+ "Description:Abp.Mailing.DefaultFromAddress": "기본 발신자 주소입니다.",
+ "Description:Abp.Mailing.DefaultFromDisplayName": "기본 발신자 표시 이름입니다.",
+ "Description:Abp.Mailing.Smtp.Host": "SMTP 통신에 사용되는 호스트 이름 또는 IP 주소입니다.",
+ "Description:Abp.Mailing.Smtp.Port": "SMTP 통신에 사용되는 포트입니다.",
+ "Description:Abp.Mailing.Smtp.UserName": "자격 증명에 연결된 사용자 이름입니다.",
+ "Description:Abp.Mailing.Smtp.Password": "자격 증명에 연결된 사용자 이름의 비밀번호입니다.",
+ "Description:Abp.Mailing.Smtp.Domain": "자격 증명을 인증하는 도메인 또는 컴퓨터 이름입니다.",
+ "Description:Abp.Mailing.Smtp.EnableSsl": "SmtpClient가 SSL(Secure Sockets Layer)을 사용하여 연결을 암호화할지 여부입니다.",
+ "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "요청과 함께 DefaultCredentials를 전송할지 여부입니다.",
+ "TextTemplate:StandardEmailTemplates.Layout": "기본 이메일 레이아웃 템플릿",
+ "TextTemplate:StandardEmailTemplates.Message": "이메일용 단순 메시지 템플릿"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ko.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ko.json
new file mode 100644
index 0000000000..5af604d208
--- /dev/null
+++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ko.json
@@ -0,0 +1,31 @@
+{
+ "culture": "ko",
+ "texts": {
+ "InternalServerErrorMessage": "요청을 처리하는 동안 내부 오류가 발생했습니다!",
+ "ValidationErrorMessage": "요청이 유효하지 않습니다!",
+ "ValidationNarrativeErrorMessageTitle": "유효성 검사 중 다음 오류가 발견되었습니다.",
+ "DefaultErrorMessage": "오류가 발생했습니다!",
+ "DefaultErrorMessageDetail": "서버에서 오류 세부 정보를 보내지 않았습니다.",
+ "DefaultErrorMessage401": "인증되지 않았습니다!",
+ "DefaultErrorMessage401Detail": "이 작업을 수행하려면 로그인해야 합니다.",
+ "DefaultErrorMessage403": "권한이 없습니다!",
+ "DefaultErrorMessage403Detail": "이 작업을 수행할 권한이 없습니다!",
+ "DefaultErrorMessage404": "리소스를 찾을 수 없습니다!",
+ "DefaultErrorMessage404Detail": "서버에서 요청한 리소스를 찾을 수 없습니다!",
+ "EntityNotFoundErrorMessage": "{0} 엔터티 중 ID가 {1}인 항목이 없습니다!",
+ "EntityNotFoundErrorMessageWithoutId": "{0} 엔터티가 없습니다!",
+ "AbpDbConcurrencyErrorMessage": "제출한 데이터가 이미 다른 사용자에 의해 변경되었습니다. 변경 사항을 취소하고 다시 시도해 주세요.",
+ "Error": "오류",
+ "UnhandledException": "처리되지 않은 예외가 발생했습니다!",
+ "Authorizing": "권한을 확인하는 중…",
+ "401Message": "인증되지 않음",
+ "403Message": "접근 금지",
+ "404Message": "페이지를 찾을 수 없음",
+ "500Message": "내부 서버 오류",
+ "403MessageDetail": "이 작업을 수행할 권한이 없습니다!",
+ "404MessageDetail": "죄송합니다. 이 주소에 해당하는 페이지가 없습니다.",
+ "Unauthorized": "인증되지 않음",
+ "invalid_token": "유효하지 않은 토큰",
+ "SessionExpired": "세션이 만료되었습니다. 애플리케이션을 계속 사용하려면 다시 로그인해 주세요."
+ }
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/ko.json b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/ko.json
new file mode 100644
index 0000000000..5dd9859e62
--- /dev/null
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/ko.json
@@ -0,0 +1,8 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Volo.Feature:010001": "기능이 활성화되지 않았습니다: {FeatureName}",
+ "Volo.Feature:010002": "필수 기능이 활성화되지 않았습니다. 다음 기능을 모두 활성화해야 합니다: {FeatureNames}",
+ "Volo.Feature:010003": "필수 기능이 활성화되지 않았습니다. 다음 기능 중 하나 이상을 활성화해야 합니다: {FeatureNames}"
+ }
+}
diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/ko.json b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/ko.json
new file mode 100644
index 0000000000..5f4094051d
--- /dev/null
+++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/ko.json
@@ -0,0 +1,6 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Volo.GlobalFeature:010001": "'{ServiceName}' 서비스에서 '{GlobalFeatureName}' 기능을 활성화해야 합니다."
+ }
+}
diff --git a/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/ko.json b/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/ko.json
new file mode 100644
index 0000000000..947eef8900
--- /dev/null
+++ b/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/ko.json
@@ -0,0 +1,19 @@
+{
+ "culture": "ko",
+ "texts": {
+ "DisplayName:Abp.Ldap.Ldaps": "SSL을 통한 LDAP",
+ "Description:Abp.Ldap.Ldaps": "SSL을 통한 LDAP",
+ "DisplayName:Abp.Ldap.ServerHost": "서버 호스트",
+ "Description:Abp.Ldap.ServerHost": "서버 호스트",
+ "DisplayName:Abp.Ldap.ServerPort": "서버 포트",
+ "Description:Abp.Ldap.ServerPort": "서버 포트",
+ "DisplayName:Abp.Ldap.BaseDc": "기본 도메인 구성 요소",
+ "Description:Abp.Ldap.BaseDc": "기본 도메인 구성 요소",
+ "DisplayName:Abp.Ldap.Domain": "도메인",
+ "Description:Abp.Ldap.Domain": "도메인",
+ "DisplayName:Abp.Ldap.UserName": "사용자 이름",
+ "Description:Abp.Ldap.UserName": "사용자 이름",
+ "DisplayName:Abp.Ldap.Password": "비밀번호",
+ "Description:Abp.Ldap.Password": "비밀번호"
+ }
+}
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/ko.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/ko.json
new file mode 100644
index 0000000000..f373dfc4b5
--- /dev/null
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/ko.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ko",
+ "texts": {
+ "DisplayName:Abp.Localization.DefaultLanguage": "기본 언어",
+ "Description:Abp.Localization.DefaultLanguage": "애플리케이션의 기본 언어입니다."
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/ko.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/ko.json
new file mode 100644
index 0000000000..aa003999a1
--- /dev/null
+++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/ko.json
@@ -0,0 +1,9 @@
+{
+ "culture": "ko",
+ "texts": {
+ "TenantNotFoundMessage": "테넌트를 찾을 수 없습니다!",
+ "TenantNotFoundDetails": "다음 테넌트 ID 또는 이름에 해당하는 테넌트가 없습니다: {0}",
+ "TenantNotActiveMessage": "테넌트가 활성 상태가 아닙니다!",
+ "TenantNotActiveDetails": "다음 테넌트 ID 또는 이름에 해당하는 테넌트가 활성 상태가 아닙니다: {0}"
+ }
+}
diff --git a/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/ko.json b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/ko.json
new file mode 100644
index 0000000000..b0bfb72be9
--- /dev/null
+++ b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/ko.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ko",
+ "texts": {
+ "DisplayName:Abp.Timing.Timezone": "시간대",
+ "Description:Abp.Timing.Timezone": "애플리케이션 시간대"
+ }
+}
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/ko.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/ko.json
new file mode 100644
index 0000000000..a3b9b1296e
--- /dev/null
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/ko.json
@@ -0,0 +1,6 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Menu:Administration": "관리"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ko.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ko.json
new file mode 100644
index 0000000000..f8e160ff51
--- /dev/null
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ko.json
@@ -0,0 +1,67 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Languages": "언어",
+ "AreYouSure": "계속하시겠습니까?",
+ "Cancel": "취소",
+ "Clear": "지우기",
+ "Yes": "예",
+ "No": "아니요",
+ "Ok": "확인",
+ "Close": "닫기",
+ "Save": "저장",
+ "SavingWithThreeDot": "저장 중...",
+ "Actions": "작업",
+ "Delete": "삭제",
+ "CreatedSuccessfully": "생성되었습니다.",
+ "SavedSuccessfully": "저장되었습니다.",
+ "DeletedSuccessfully": "삭제되었습니다.",
+ "Edit": "편집",
+ "Refresh": "새로 고침",
+ "Language": "언어",
+ "LoadMore": "더 보기",
+ "ProcessingWithThreeDot": "처리 중...",
+ "LoadingWithThreeDot": "불러오는 중...",
+ "Welcome": "환영합니다.",
+ "Login": "로그인",
+ "Register": "회원가입",
+ "Logout": "로그아웃",
+ "Submit": "제출",
+ "Back": "뒤로",
+ "PagerSearch": "검색",
+ "PagerNext": "다음",
+ "PagerPrevious": "이전",
+ "PagerFirst": "처음",
+ "PagerLast": "마지막",
+ "PagerInfo": "총 _TOTAL_개 항목 중 _START_~_END_개를 표시합니다.",
+ "PagerInfo{0}{1}{2}": "총 {2}개 항목 중 {0}~{1}개를 표시합니다.",
+ "PagerInfoEmpty": "총 0개 항목 중 0~0개를 표시합니다.",
+ "PagerInfoFiltered": "(총 _MAX_개 항목에서 필터링됨)",
+ "NoDataAvailableInDatatable": "사용 가능한 데이터가 없습니다.",
+ "ErrorLoadingDatatable": "요청 중 오류가 발생했습니다. 자세한 내용은 메시지를 확인하십시오.",
+ "Total": "전체",
+ "Selected": "선택됨",
+ "PagerShowMenuEntries": "_MENU_개 항목 표시",
+ "DatatableActionDropdownDefaultText": "작업",
+ "ChangePassword": "비밀번호 변경",
+ "PersonalInfo": "내 프로필",
+ "AreYouSureYouWantToCancelEditingWarningMessage": "저장하지 않은 변경 사항이 있습니다.",
+ "GoHomePage": "홈페이지로 이동",
+ "GoBack": "뒤로 이동",
+ "Search": "검색",
+ "ItemWillBeDeletedMessageWithFormat": "{0}이(가) 삭제됩니다!",
+ "ItemWillBeDeletedMessage": "이 항목이 삭제됩니다!",
+ "ManageYourAccount": "계정 관리",
+ "OthersGroup": "기타",
+ "Today": "오늘",
+ "Apply": "적용",
+ "InternetConnectionInfo": "현재 인터넷에 연결되어 있지 않아 작업을 수행할 수 없습니다.",
+ "CopiedToTheClipboard": "클립보드에 복사되었습니다.",
+ "AddNew": "새로 추가",
+ "ProfilePicture": "프로필 사진",
+ "Theme": "테마",
+ "NotAssigned": "할당되지 않음",
+ "EntityActionsDisabledTooltip": "작업을 수행할 권한이 없습니다.",
+ "ResourcePermissions": "권한"
+ }
+}
diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/ko.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/ko.json
new file mode 100644
index 0000000000..f74050f8d5
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/ko.json
@@ -0,0 +1,75 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Menu:Account": "계정",
+ "UserName": "사용자 이름",
+ "EmailAddress": "이메일 주소",
+ "UserNameOrEmailAddress": "사용자 이름 또는 이메일 주소",
+ "Password": "비밀번호",
+ "RememberMe": "로그인 상태 유지",
+ "UseAnotherServiceToLogin": "다른 서비스를 사용하여 로그인",
+ "UserLockedOutMessage": "잘못된 로그인 시도로 인해 사용자 계정이 잠겼습니다. 잠시 후 다시 시도해 주세요.",
+ "InvalidUserNameOrPassword": "사용자 이름 또는 비밀번호가 올바르지 않습니다!",
+ "LoginIsNotAllowed": "로그인할 수 없습니다! 계정이 비활성 상태이거나 이메일 또는 전화번호 확인이 필요합니다.",
+ "SelfRegistrationDisabledMessage": "이 애플리케이션에서는 자체 회원가입이 비활성화되어 있습니다. 새 사용자를 등록하려면 애플리케이션 관리자에게 문의해 주세요.",
+ "LocalLoginDisabledMessage": "이 애플리케이션에서는 로컬 로그인이 비활성화되어 있습니다.",
+ "Login": "로그인",
+ "Cancel": "취소",
+ "Register": "회원가입",
+ "AreYouANewUser": "신규 사용자이신가요?",
+ "AlreadyRegistered": "이미 가입하셨나요?",
+ "InvalidLoginRequest": "잘못된 로그인 요청",
+ "ThereAreNoLoginSchemesConfiguredForThisClient": "이 클라이언트에 구성된 로그인 스키마가 없습니다.",
+ "LogInUsingYourProviderAccount": "{0} 계정으로 로그인",
+ "DisplayName:CurrentPassword": "현재 비밀번호",
+ "DisplayName:NewPassword": "새 비밀번호",
+ "DisplayName:NewPasswordConfirm": "새 비밀번호 확인",
+ "PasswordChangedMessage": "비밀번호가 변경되었습니다.",
+ "DisplayName:UserName": "사용자 이름",
+ "DisplayName:Email": "이메일",
+ "DisplayName:Name": "이름",
+ "DisplayName:Surname": "성",
+ "DisplayName:Password": "비밀번호",
+ "DisplayName:EmailAddress": "이메일 주소",
+ "DisplayName:PhoneNumber": "전화번호",
+ "PersonalSettings": "개인 설정",
+ "PersonalSettingsSaved": "개인 설정이 저장되었습니다.",
+ "PersonalSettingsChangedConfirmationModalTitle": "개인 정보 변경됨",
+ "PersonalSettingsChangedConfirmationModalDescription": "변경 사항은 다시 로그인한 후 반영됩니다. 지금 로그아웃하시겠습니까?",
+ "PasswordChanged": "비밀번호 변경됨",
+ "NewPasswordConfirmFailed": "새 비밀번호를 확인해 주세요.",
+ "NewPasswordSameAsOld": "새 비밀번호는 기존 비밀번호와 달라야 합니다.",
+ "Manage": "관리",
+ "MyAccount": "내 계정",
+ "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "자체 회원가입 활성화 여부",
+ "Description:Abp.Account.IsSelfRegistrationEnabled": "사용자가 직접 계정을 등록할 수 있는지 여부입니다.",
+ "DisplayName:Abp.Account.EnableLocalLogin": "로컬 계정으로 인증",
+ "Description:Abp.Account.EnableLocalLogin": "서버에서 사용자의 로컬 계정 인증을 허용할지 여부를 나타냅니다.",
+ "LoggedOutTitle": "로그아웃됨",
+ "LoggedOutText": "로그아웃되었습니다. 잠시 후 리디렉션됩니다.",
+ "ReturnToText": "애플리케이션으로 돌아가려면 여기를 클릭하세요.",
+ "OrLoginWith": "또는 다음 계정으로 로그인:",
+ "ForgotPassword": "비밀번호를 잊으셨나요?",
+ "SendPasswordResetLink_Information": "비밀번호 재설정 링크가 이메일로 전송됩니다. 몇 분 이내에 이메일을 받지 못한 경우 다시 시도해 주세요.",
+ "PasswordResetMailSentMessage": "계정 복구 이메일을 이메일 주소로 전송했습니다. 15분 이내에 받은편지함에서 이메일을 찾을 수 없다면 스팸 메일함을 확인해 주세요. 스팸 메일함에서 찾은 경우 스팸이 아닌 것으로 표시해 주세요. ",
+ "ResetPassword": "비밀번호 재설정",
+ "ConfirmPassword": "비밀번호 확인",
+ "ResetPassword_Information": "새 비밀번호를 입력해 주세요.",
+ "YourPasswordIsSuccessfullyReset": "비밀번호가 재설정되었습니다.",
+ "GoToTheApplication": "애플리케이션으로 이동",
+ "BackToLogin": "로그인으로 돌아가기",
+ "ProfileTab:Password": "비밀번호 변경",
+ "ProfileTab:PersonalInfo": "개인 정보",
+ "ReturnToApplication": "애플리케이션으로 돌아가기",
+ "Volo.Account:InvalidEmailAddress": "지정한 이메일 주소를 찾을 수 없습니다: {0}",
+ "PasswordReset": "비밀번호 재설정",
+ "PasswordResetInfoInEmail": "계정 복구 요청이 접수되었습니다! 본인이 요청한 경우 다음 링크를 클릭하여 비밀번호를 재설정하세요.",
+ "ResetMyPassword": "내 비밀번호 재설정",
+ "AccessDenied": "액세스가 거부되었습니다!",
+ "AccessDeniedMessage": "이 리소스에 액세스할 권한이 없습니다.",
+ "OrRegisterWith": "또는 다음 계정으로 회원가입",
+ "RegisterUsingYourProviderAccount": "{0} 계정으로 회원가입",
+ "RequireMigrateSeedTitle": "관리자 사용자를 찾을 수 없습니다.",
+ "RequireMigrateSeedMessage": "데이터베이스 시드가 실행되었는지 확인해 주세요. 해결 방법은 문서를 참조하세요."
+ }
+}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ko.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ko.json
new file mode 100644
index 0000000000..a08ef4a57d
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ko.json
@@ -0,0 +1,118 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Permission:AuditLogging": "감사 로깅",
+ "Permission:AuditLogs": "감사 로그",
+ "Menu:AuditLogging": "감사 로그",
+ "AuditLogs": "감사 로그",
+ "HttpStatus": "HTTP 상태",
+ "HttpMethod": "HTTP 메서드",
+ "HttpMethodFilter": "HTTP 메서드 필터",
+ "HttpRequest": "HTTP 요청",
+ "User": "사용자",
+ "UserNameFilter": "사용자 필터",
+ "HasException": "예외 발생 여부",
+ "IpAddress": "IP 주소",
+ "Time": "시간",
+ "Date": "날짜",
+ "Duration": "소요 시간",
+ "Detail": "세부 정보",
+ "Overall": "전체",
+ "Actions": "작업",
+ "ClientIpAddress": "클라이언트 IP 주소",
+ "ClientName": "클라이언트 이름",
+ "BrowserInfo": "브라우저 정보",
+ "Url": "URL",
+ "UserName": "사용자 이름",
+ "TenantImpersonator": "테넌트 가장 사용자",
+ "UserImpersonator": "사용자 가장 사용자",
+ "UrlFilter": "URL 필터",
+ "Exceptions": "예외",
+ "Comments": "설명",
+ "HttpStatusCode": "HTTP 상태 코드",
+ "HttpStatusCodeFilter": "HTTP 상태 코드 필터",
+ "ServiceName": "서비스",
+ "MethodName": "메서드",
+ "CorrelationId": "상관관계 ID",
+ "ApplicationName": "애플리케이션 이름",
+ "ExecutionDuration": "실행 시간",
+ "ExtraProperties": "추가 속성",
+ "MaxDuration": "최대 소요 시간",
+ "MinDuration": "최소 소요 시간",
+ "MinMaxDuration": "소요 시간(최소~최대)",
+ "{0}Milliseconds": "{0}밀리초",
+ "ExecutionTime": "실행 시간",
+ "Parameters": "매개변수",
+ "EntityTypeFullName": "엔터티 형식 전체 이름",
+ "Entity": "엔터티",
+ "ChangeType": "변경 형식",
+ "ChangeTime": "변경 시간",
+ "NewValue": "새 값",
+ "OriginalValue": "이전 값",
+ "PropertyName": "속성 이름",
+ "PropertyTypeFullName": "속성 형식 전체 이름",
+ "Yes": "예",
+ "No": "아니요",
+ "Changes": "변경 사항",
+ "AverageExecutionDurationInLogsPerDay": "평균 실행 시간",
+ "AverageExecutionDurationInMilliseconds": "평균 실행 시간(밀리초)",
+ "ErrorRateInLogs": "로그 오류율",
+ "Success": "성공",
+ "Fault": "실패",
+ "NoChanges": "변경 사항 없음",
+ "EntityChanges": "엔터티 변경 사항",
+ "EntityId": "엔터티 ID",
+ "EntityChangeStartTime": "최소 변경 날짜",
+ "EntityChangeEndTime": "최대 변경 날짜",
+ "EntityHistory": "엔터티 기록",
+ "DaysAgoTitle": "{0} {1}.",
+ "DaysAgoWithUserTitle": "{0} {1}, {2} 사용자가 수행했습니다.",
+ "MinutesAgo": "{0}분 전",
+ "HoursAgo": "{0}시간 전",
+ "DaysAgo": "{0}일 전",
+ "Created": "생성함",
+ "Updated": "수정함",
+ "Deleted": "삭제함",
+ "ChangeHistory": "변경 기록",
+ "FullChangeHistory": "전체 변경 기록",
+ "ChangeDetails": "변경 세부 정보",
+ "DurationMs": "소요 시간(ms)",
+ "StartDate": "시작 날짜",
+ "EndDate": "종료 날짜",
+ "Feature:AuditLoggingGroup": "감사 로깅",
+ "Feature:AuditLoggingEnable": "감사 로그 페이지 사용",
+ "Feature:AuditLoggingEnableDescription": "애플리케이션에서 감사 로그 페이지를 사용합니다.",
+ "Feature:AuditLoggingSettingManagementEnable": "감사 로그 설정 관리 사용",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "애플리케이션에서 감사 로그 설정 관리를 구성할 수 있습니다.",
+ "InvalidAuditLogDeletionSettings": "감사 로그 삭제 설정이 올바르지 않습니다. 삭제를 사용하는 경우 기간은 0일보다 커야 합니다.",
+ "AuditLogSettingsGeneral": "일반",
+ "AuditLogSettingsGlobal": "전역",
+ "DisplayName:IsPeriodicDeleterEnabled": "시스템 전체에서 정리 서비스 사용",
+ "Description:IsPeriodicDeleterEnabled": "이 옵션을 사용하지 않으면 주기적 삭제 서비스가 작동하지 않으며 감사 로그가 자동으로 삭제되지 않습니다.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "모든 테넌트와 호스트에 정리 서비스 사용",
+ "Description:GlobalIsExpiredDeleterEnabled": "이 옵션을 사용하면 별도 설정이 없는 모든 테넌트와 호스트의 만료된 항목이 자동으로 삭제됩니다.",
+ "DisplayName:IsExpiredDeleterEnabled": "정리 서비스 사용",
+ "Description:IsExpiredDeleterEnabled": "이 옵션을 사용하면 만료된 항목이 자동으로 삭제됩니다.",
+ "DisplayName:ExpiredDeleterPeriod": "만료 항목 삭제 기간",
+ "Description:ExpiredDeleterPeriod": "만료된 항목이 자동으로 삭제될 때까지의 일수를 설정합니다.",
+ "ExpiredDeleterPeriodUnit": "일",
+ "AuditLogsBeforeXWillBeDeleted": "{0} 이전의 감사 로그가 삭제됩니다.",
+ "TenantId": "테넌트 ID",
+ "Permission:Export": "감사 로그 내보내기",
+ "ExportToExcel": "Excel로 내보내기",
+ "Exporting": "내보내는 중",
+ "ExportCompleted": "내보내기가 완료되었습니다.",
+ "ExportFailed": "내보내기에 실패했습니다.",
+ "ThereWereNoRecordsToExport": "내보낼 레코드가 없습니다.",
+ "ExportJobQueued": "{0}개 레코드에 대한 내보내기 작업이 대기열에 추가되었습니다. 내보내기가 완료되면 이메일을 보내드립니다.",
+ "ExportReady": "{0}개 레코드 내보내기가 완료되어 다운로드할 수 있습니다.",
+ "FileName": "파일 이름",
+ "TotalRecords": "전체 레코드 수",
+ "ExcelFileAttachedMessage": "Excel 파일이 이 이메일에 첨부되어 있습니다.",
+ "EntityChangeExportCompletedSubject": "엔터티 변경 사항 내보내기 완료",
+ "AuditLogExportCompletedSubject": "감사 로그 내보내기 완료",
+ "DownloadLinkExplanation": "{0}(UTC)까지 아래 링크를 사용하여 파일을 다운로드할 수 있습니다.",
+ "DownloadNow": "지금 다운로드",
+ "TryAgainMessage": "다시 시도해 주세요. 문제가 계속되면 지원팀에 문의해 주세요."
+ }
+}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/ko.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/ko.json
new file mode 100644
index 0000000000..17fcfd79c4
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/ko.json
@@ -0,0 +1,6 @@
+{
+ "culture": "ko",
+ "texts": {
+ "MyAccount": "내 계정"
+ }
+}
\ No newline at end of file
diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/ko.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/ko.json
new file mode 100644
index 0000000000..0aa35fe93e
--- /dev/null
+++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/ko.json
@@ -0,0 +1,93 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Menu:Blogs": "블로그",
+ "Menu:BlogManagement": "블로그 관리",
+ "Permission:Management": "관리",
+ "Permission:Edit": "편집",
+ "Permission:Create": "생성",
+ "Permission:Delete": "삭제",
+ "Permission:Blogging": "블로그",
+ "Permission:Blogs": "블로그",
+ "Permission:Posts": "게시물",
+ "Permission:Tags": "태그",
+ "Permission:Comments": "댓글",
+ "Permission:ClearCache": "캐시 지우기",
+ "Title": "제목",
+ "Delete": "삭제",
+ "Reply": "답글",
+ "ReplyTo": "{0}에 답글 달기",
+ "ContinueReading": "계속 읽기",
+ "DaysAgo": "{0}일 전",
+ "DayAgo": "{0}일 전",
+ "YearsAgo": "{0}년 전",
+ "YearAgo": "{0}년 전",
+ "MonthsAgo": "{0}개월 전",
+ "MonthAgo": "{0}개월 전",
+ "WeeksAgo": "{0}주 전",
+ "WeekAgo": "{0}주 전",
+ "MinutesAgo": "{0}분 전",
+ "MinuteAgo": "{0}분 전",
+ "SecondsAgo": "{0}초 전",
+ "SecondAgo": "{0}초 전",
+ "HoursAgo": "{0}시간 전",
+ "HourAgo": "{0}시간 전",
+ "Now": "지금",
+ "Content": "내용",
+ "SeeAll": "모두 보기",
+ "PopularTags": "인기 태그",
+ "WiewsWithCount": "조회수 {0}회",
+ "LastPosts": "최신 게시물",
+ "LeaveComment": "댓글 남기기",
+ "TagsInThisArticle": "이 글의 태그",
+ "Posts": "게시물",
+ "Edit": "편집",
+ "BLOG": "블로그",
+ "CommentDeletionWarningMessage": "댓글이 삭제됩니다.",
+ "PostDeletionWarningMessage": "게시물이 삭제됩니다.",
+ "BlogDeletionWarningMessage": "블로그가 삭제됩니다.",
+ "AreYouSure": "계속하시겠습니까?",
+ "CommentWithCount": "댓글 {0}개",
+ "Comment": "댓글",
+ "ShareOnTwitter": "트위터에 공유",
+ "CoverImage": "커버 이미지",
+ "CreateANewPost": "새 게시물 만들기",
+ "CreateANewBlog": "새 블로그 만들기",
+ "WhatIsNew": "새로운 소식",
+ "Name": "이름",
+ "ShortName": "짧은 이름",
+ "CreationTime": "생성 시간",
+ "Description": "설명",
+ "Blogs": "블로그",
+ "Tags": "태그",
+ "ShareOn": "공유",
+ "TitleLengthWarning": "SEO에 적합하도록 제목을 60자 이내로 작성해야 합니다.",
+ "ClearCache": "캐시 지우기",
+ "ClearCacheConfirmationMessage": "캐시를 지우시겠습니까?",
+ "MarkdownSupported": "Markdown을 지원합니다.",
+ "FileUploadInfo": "이미지를 끌어다 놓거나 복사한 이미지를 붙여넣을 수 있습니다.",
+ "PostDescriptionHint": "* 게시물 링크 미리 보기에 표시되며 HTML을 지원합니다.",
+ "ReadMore": "계속 읽기",
+ "MemberNotPublishedPostYet": "아직 게시물이 없습니다!",
+ "UpdateUserWebSiteInfo": "예: https://johndoe.com",
+ "UpdateUserTwitterInfo": "예: johndoe",
+ "UpdateUserGithubInfo": "예: johndoe",
+ "UpdateUserLinkedinInfo": "예: https://www.linkedin.com/...",
+ "UpdateUserCompanyInfo": "예: Volosoft",
+ "UpdateUserJobTitleInfo": "예: 소프트웨어 개발자",
+ "WebSite": "웹사이트",
+ "UserName": "사용자 이름",
+ "FullURL": "전체 URL",
+ "JobTitle": "직책",
+ "PersonalWebsite": "개인 웹사이트",
+ "EditProfile": "프로필 편집",
+ "MoreFromBlog": "블로그의 다른 글",
+ "MoreFromUser": "{0}님의 다른 글",
+ "BlogPosts": "게시물",
+ "Views": "조회수",
+ "Biography": "소개",
+ "Social": "소셜 미디어",
+ "NewBlogPost": "새 블로그 게시물",
+ "BlogMemberMetaDescription": ".NET 개발, 크로스 플랫폼, ASP.NET 애플리케이션 템플릿, ABP 관련 소식 등을 다루는 ABP 블로그입니다."
+ }
+}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ko.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ko.json
new file mode 100644
index 0000000000..f844f1cf7e
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ko.json
@@ -0,0 +1,290 @@
+{
+ "culture": "ko",
+ "texts": {
+ "AddSubMenuItem": "하위 메뉴 항목 추가",
+ "AreYouSure": "계속하시겠습니까?",
+ "AverageRating": "평균 평점",
+ "BlogDeletionConfirmationMessage": "블로그 '{0}'을(를) 삭제합니다. 계속하시겠습니까?",
+ "BlogFeatureNotAvailable": "현재 이 기능을 사용할 수 없습니다. 사용하려면 'GlobalFeatureManager'에서 활성화하세요.",
+ "BlogId": "블로그",
+ "BlogPostDeletionConfirmationMessage": "블로그 게시물 '{0}'을(를) 삭제합니다. 계속하시겠습니까?",
+ "BlogPosts": "블로그 게시물",
+ "Blogs": "블로그",
+ "ChoosePreference": "환경 설정 선택...",
+ "Cms": "CMS",
+ "CmsKit.Comments": "댓글",
+ "CmsKit.Ratings": "평점",
+ "CmsKit.Reactions": "반응",
+ "CmsKit.Tags": "태그",
+ "CmsKit.MarkedItems": "표시된 항목",
+ "CmsKit:0002": "콘텐츠가 이미 존재합니다!",
+ "CmsKit:0003": "엔터티 {0}은(는) 태그를 지정할 수 없습니다.",
+ "CmsKit:Blog:0001": "지정한 슬러그({Slug})가 이미 존재합니다!",
+ "CmsKit:BlogPost:0001": "지정한 슬러그가 이미 존재합니다!",
+ "CmsKit:Comments:0001": "엔터티 {EntityType}에는 댓글을 작성할 수 없습니다.",
+ "CmsKit:Media:0001": "'{Name}'은(는) 유효한 미디어 이름이 아닙니다.",
+ "CmsKit:Media:0002": "이 엔터티에는 미디어를 추가할 수 없습니다.",
+ "CmsKit:Page:0001": "지정한 URL({Slug})이(가) 이미 존재합니다. 다른 URL을 사용하세요.",
+ "CmsKit:Rating:0001": "엔터티 {EntityType}에는 평점을 매길 수 없습니다.",
+ "CmsKit:Reaction:0001": "엔터티 {EntityType}에는 반응을 추가할 수 없습니다.",
+ "CmsKit:Tag:0002": "이 엔터티에는 태그를 지정할 수 없습니다!",
+ "CmsKit:MarkedItem:ToggleConfirmation": "표시된 항목 상태를 전환하시겠습니까?",
+ "ToggleFavorite": "즐겨찾기 추가/제거",
+ "FavoritesFilterMessage": "즐겨찾기를 필터링하려면 로그인하세요.",
+ "FilterOnFavorites": "즐겨찾기로 필터링",
+ "CommentAuthorizationExceptionMessage": "해당 댓글은 공개적으로 표시할 수 없습니다.",
+ "CmsKit:Modals:Login": "로그인",
+ "CmsKit:Modals:LoginModalDefaultMessage": "계속하려면 로그인하세요!",
+ "CmsKit:Modals:YouAreNotAuthenticated": "이 작업을 수행할 권한이 없습니다.",
+ "CommentDeletionConfirmationMessage": "이 댓글과 모든 답글을 삭제합니다!",
+ "CmsKit:MarkedItem:0001": "엔터티 {EntityType}은(는) 표시할 수 없습니다.",
+ "CmsKit:MarkedItem:0002": "엔터티 유형 '{EntityType}'에 대한 정의를 찾을 수 없습니다.",
+ "CmsKit:MarkedItem:0003": "엔터티 유형 '{EntityType}'에 대한 정의가 이미 존재합니다. 각 엔터티 유형에는 하나의 정의만 있어야 합니다.",
+ "CmsKit:MarkedItem:LoginMessage": "이 항목을 표시하려면 로그인하세요.",
+ "Comments": "댓글",
+ "Content": "콘텐츠",
+ "ContentDeletionConfirmationMessage": "이 콘텐츠를 삭제하시겠습니까?",
+ "Contents": "콘텐츠",
+ "CoverImage": "표지 이미지",
+ "CreateBlogPostPage": "새 블로그 게시물",
+ "CreationTime": "생성 시간",
+ "Delete": "삭제",
+ "Detail": "상세 정보",
+ "Details": "상세 정보",
+ "DisplayName": "표시 이름",
+ "DoYouPreferAdditionalEmails": "추가 이메일을 받으시겠습니까?",
+ "Edit": "편집",
+ "EndDate": "종료일",
+ "EntityId": "엔터티 ID",
+ "EntityType": "엔터티 유형",
+ "ExportCSV": "CSV 내보내기",
+ "Features": "기능",
+ "GenericDeletionConfirmationMessage": "'{0}'을(를) 삭제하시겠습니까?",
+ "IsActive": "활성",
+ "LastModification": "마지막 수정",
+ "LastModificationTime": "마지막 수정 시간",
+ "LoginToAddComment": "댓글을 작성하려면 로그인하세요.",
+ "LoginToRate": "평점을 매기려면 로그인하세요.",
+ "LoginToReact": "반응을 남기려면 로그인하세요.",
+ "LoginToReply": "답글을 작성하려면 로그인하세요.",
+ "MainMenu": "주 메뉴",
+ "MakeMainMenu": "주 메뉴로 설정",
+ "Menu:CMS": "CMS",
+ "Menus": "메뉴",
+ "MenuDeletionConfirmationMessage": "메뉴 '{0}'을(를) 삭제합니다. 계속하시겠습니까?",
+ "MenuItemDeletionConfirmationMessage": "이 메뉴 항목을 삭제하시겠습니까?",
+ "MenuItemMoveConfirmMessage": "'{0}'을(를) '{1}' 아래로 이동하시겠습니까?",
+ "MenuItems": "메뉴 항목",
+ "Message": "메시지",
+ "MessageDeletionConfirmationMessage": "이 댓글을 완전히 삭제합니다.",
+ "NewBlog": "새 블로그",
+ "NewBlogPost": "새 블로그 게시물",
+ "NewMenu": "새 메뉴",
+ "NewMenuItem": "새 루트 메뉴 항목",
+ "NewPage": "새 페이지",
+ "NewTag": "새 태그",
+ "NoMenuItems": "아직 메뉴 항목이 없습니다!",
+ "OK": "확인",
+ "PageDeletionConfirmationMessage": "이 페이지를 삭제하시겠습니까?",
+ "PageId": "페이지",
+ "Pages": "페이지",
+ "PageSlugInformation": "슬러그는 URL에 사용됩니다. URL은 '/{{slug}}' 형식입니다.",
+ "BlogSlugInformation": "슬러그는 URL에 사용됩니다. URL은 '/{0}/{{slug}}' 형식입니다.",
+ "Permission:BlogManagement": "블로그 관리",
+ "Permission:BlogManagement.Create": "생성",
+ "Permission:BlogManagement.Delete": "삭제",
+ "Permission:BlogManagement.Features": "기능",
+ "Permission:BlogManagement.Update": "수정",
+ "Permission:BlogPostManagement": "블로그 게시물 관리",
+ "Permission:BlogPostManagement.Create": "생성",
+ "Permission:BlogPostManagement.Delete": "삭제",
+ "Permission:BlogPostManagement.Update": "수정",
+ "Permission:BlogPostManagement.Publish": "게시",
+ "Permission:CmsKit": "CmsKit 관리",
+ "Permission:Comments": "댓글 관리",
+ "Permission:Comments.Delete": "삭제",
+ "Permission:Comments.Update": "수정",
+ "Permission:Comments.SettingManagement": "설정 관리",
+ "Permission:Contents": "콘텐츠 관리",
+ "Permission:Contents.Create": "콘텐츠 생성",
+ "Permission:Contents.Delete": "콘텐츠 삭제",
+ "Permission:Contents.Update": "콘텐츠 수정",
+ "Permission:MediaDescriptorManagement": "미디어 관리",
+ "Permission:MediaDescriptorManagement:Create": "생성",
+ "Permission:MediaDescriptorManagement:Delete": "삭제",
+ "Permission:MenuItemManagement": "메뉴 항목 관리",
+ "Permission:MenuItemManagement.Create": "생성",
+ "Permission:MenuItemManagement.Delete": "삭제",
+ "Permission:MenuItemManagement.Update": "수정",
+ "Permission:MenuManagement": "메뉴 관리",
+ "Permission:MenuManagement.Create": "생성",
+ "Permission:MenuManagement.Delete": "삭제",
+ "Permission:MenuManagement.Update": "수정",
+ "Permission:Menus": "메뉴 관리",
+ "Permission:Menus.Create": "생성",
+ "Permission:Menus.Delete": "삭제",
+ "Permission:Menus.Update": "수정",
+ "Permission:PageManagement": "페이지 관리",
+ "Permission:PageManagement:Create": "생성",
+ "Permission:PageManagement:Delete": "삭제",
+ "Permission:PageManagement:Update": "수정",
+ "Permission:PageManagement:SetAsHomePage": "홈 페이지로 설정",
+ "Permission:TagManagement": "태그 관리",
+ "Permission:TagManagement.Create": "생성",
+ "Permission:TagManagement.Delete": "삭제",
+ "Permission:TagManagement.Update": "수정",
+ "Permission:GlobalResources": "전역 리소스",
+ "Permission:CmsKitPublic": "CmsKit 공개 기능",
+ "Permission:Comments.DeleteAll": "모두 삭제",
+ "PickYourReaction": "반응 선택",
+ "Rating": "평점",
+ "RatingUndoMessage": "평점이 취소됩니다.",
+ "Reactions": "반응",
+ "Read": "읽기",
+ "RepliesToThisComment": "이 댓글의 답글",
+ "Reply": "답글",
+ "ReplyTo": "답글 대상",
+ "SamplePageMessage": "Pro 모듈의 샘플 페이지",
+ "SaveChanges": "변경 사항 저장",
+ "Script": "스크립트",
+ "SelectLayout": "레이아웃 선택",
+ "SelectAll": "모두 선택",
+ "Send": "보내기",
+ "SendMessage": "메시지 보내기",
+ "SelectedAuthor": "작성자",
+ "ShortDescription": "간단한 설명",
+ "Slug": "슬러그",
+ "Source": "소스",
+ "SourceUrl": "소스 URL",
+ "Star": "별점",
+ "StartDate": "시작일",
+ "Style": "스타일",
+ "Subject": "제목",
+ "SubjectPlaceholder": "제목을 입력하세요.",
+ "Submit": "제출",
+ "Subscribe": "구독",
+ "SavedSuccessfully": "저장되었습니다!",
+ "TagDeletionConfirmationMessage": "태그 '{0}'을(를) 삭제하시겠습니까?",
+ "Tags": "태그",
+ "Text": "텍스트",
+ "ThankYou": "감사합니다.",
+ "Title": "제목",
+ "TotalRatings": "총 평점 수",
+ "Undo": "실행 취소",
+ "Update": "수정",
+ "UpdatePreferenceSuccessMessage": "환경 설정이 저장되었습니다.",
+ "UpdateYourEmailPreferences": "이메일 환경 설정 업데이트",
+ "UnMakeMainMenu": "주 메뉴 설정 해제",
+ "UploadFailedMessage": "업로드에 실패했습니다.",
+ "UserId": "사용자 ID",
+ "Username": "사용자 이름",
+ "YourComment": "내 댓글",
+ "YourEmailAddress": "이메일 주소",
+ "YourFullName": "전체 이름",
+ "YourMessage": "내 메시지",
+ "YourReply": "내 답글",
+ "MarkdownSupported": "Markdown을 지원합니다.",
+ "GlobalResources": "전역 리소스",
+ "CmsKit.BlogPost.Status.0": "초안",
+ "CmsKit.BlogPost.Status.1": "게시됨",
+ "CmsKit.BlogPost.Status.2": "검토 대기 중",
+ "BlogPostPublishConfirmationMessage": "블로그 게시물 \"{0}\"을(를) 게시하시겠습니까?",
+ "SuccessfullyPublished": "게시되었습니다!",
+ "Draft": "초안",
+ "Publish": "게시",
+ "BlogPostDraftConfirmationMessage": "블로그 게시물 \"{0}\"을(를) 초안으로 설정하시겠습니까?",
+ "BlogPostSendToReviewConfirmationMessage": "블로그 게시물 \"{0}\"을(를) 게시하기 위해 관리자 검토로 보내시겠습니까?",
+ "SaveAsDraft": "초안으로 저장",
+ "SendToReview": "검토 요청",
+ "SendToReviewToPublish": "게시 검토 요청",
+ "BlogPostSendToReviewSuccessMessage": "블로그 게시물 \"{0}\"이(가) 게시를 위한 관리자 검토로 전송되었습니다.",
+ "HasBlogPostWaitingForReviewMessage": "검토 대기 중인 블로그 게시물이 있습니다. 목록을 보려면 클릭하세요.",
+ "SelectAStatus": "상태 선택",
+ "Status": "상태",
+ "CmsKit.BlogPost.ScrollIndex": "블로그 게시물 빠른 탐색 모음",
+ "CmsKit.BlogPost.PreventXssFeature": "XSS 방지",
+ "Add": "추가",
+ "AddWidget": "위젯 추가",
+ "PleaseConfigureWidgets": "위젯을 구성하세요.",
+ "SelectAnAuthor": "작성자 선택",
+ "InThisDocument": "이 문서에서",
+ "GoToTop": "맨 위로 이동",
+ "SetAsHomePage": "홈 페이지 상태 변경",
+ "CompletedSettingAsHomePage": "홈 페이지로 설정됨",
+ "IsHomePage": "홈 페이지 여부",
+ "RemovedSettingAsHomePage": "홈 페이지 설정이 해제됨",
+ "Feature:CmsKitGroup": "CMS Kit",
+ "Feature:BlogEnable": "블로그 게시물",
+ "Feature:BlogEnableDescription": "애플리케이션에서 블로그와 게시물을 동적으로 생성할 수 있는 CMS Kit 블로그 게시물 시스템입니다.",
+ "Feature:CommentEnable": "댓글",
+ "Feature:CommentEnableDescription": "BlogPost와 같은 엔터티에 댓글을 작성할 수 있는 CMS Kit 댓글 시스템입니다.",
+ "Feature:GlobalResourceEnable": "전역 리소스",
+ "Feature:GlobalResourceEnableDescription": "전역 스타일과 스크립트를 관리할 수 있는 CMS Kit 전역 리소스 기능입니다.",
+ "Feature:MenuEnable": "메뉴",
+ "Feature:MenuEnableDescription": "애플리케이션 메뉴를 동적으로 추가하거나 제거할 수 있는 CMS Kit 동적 메뉴 시스템입니다.",
+ "Feature:PageEnable": "페이지",
+ "Feature:PageEnableDescription": "특정 URL을 사용하는 정적 페이지를 생성할 수 있는 CMS Kit 페이지 시스템입니다.",
+ "Feature:RatingEnable": "평점",
+ "Feature:RatingEnableDescription": "사용자가 BlogPost와 같은 엔터티에 평점을 매길 수 있는 CMS Kit 평점 시스템입니다.",
+ "Feature:ReactionEnable": "반응",
+ "Feature:ReactionEnableDescription": "사용자가 BlogPost, Comment 등의 엔터티에 반응을 남길 수 있는 CMS Kit 반응 시스템입니다.",
+ "Feature:TagEnable": "태그 지정",
+ "Feature:TagEnableDescription": "BlogPost와 같은 엔터티에 태그를 지정할 수 있는 CMS Kit 태그 시스템입니다.",
+ "Feature:MarkedItemEnable": "표시된 항목",
+ "Feature:MarkedItemEnableDescription": "사용자가 엔터티를 즐겨찾기로 표시할 수 있는 CMS Kit 표시 시스템입니다.",
+ "DeleteBlogPostMessage": "블로그를 삭제합니다. 계속하시겠습니까?",
+ "CaptchaCode": "CAPTCHA 코드",
+ "CommentTextRequired": "댓글은 필수입니다.",
+ "CaptchaCodeErrorMessage": "입력한 CAPTCHA 답변이 올바르지 않습니다. 다시 시도하세요.",
+ "CaptchaCodeMissingMessage": "CAPTCHA 코드가 누락되었습니다!",
+ "UnAllowedExternalUrlMessage": "허용되지 않은 외부 URL이 포함되어 있습니다. 외부 URL을 제거하고 다시 시도하세요.",
+ "URL": "URL",
+ "PopularTags": "인기 태그",
+ "RemoveCoverImageConfirmationMessage": "표지 이미지를 제거하시겠습니까?",
+ "RemoveCoverImage": "표지 이미지 제거",
+ "CssClass": "CSS 클래스",
+ "TagsHelpText": "태그는 쉼표로 구분해야 합니다(예: tag1, tag2, tag3).",
+ "ThisPartOfContentCouldntBeLoaded": "콘텐츠의 이 부분을 불러올 수 없습니다.",
+ "DuplicateCommentAttemptMessage": "중복 댓글 작성 시도가 감지되었습니다. 댓글이 이미 제출되었습니다.",
+ "NoBlogPostYet": "아직 블로그 게시물이 없습니다!",
+ "CmsKit:Comment": "댓글",
+ "CmsKitCommentOptions:RequireApprovement": "댓글 승인 필요",
+ "CmsKitCommentOptions:RequireApprovementDescription": "활성화하면 댓글을 게시하기 전에 승인이 필요합니다.",
+ "CommentFilter:ApproveState": "승인 상태",
+ "ApproveState": "승인 상태",
+ "CommentFilter:0": "전체",
+ "CommentFilter:1": "승인됨",
+ "CommentFilter:2": "승인 거부됨",
+ "CommentFilter:4": "대기 중",
+ "ApprovedSuccessfully": "승인되었습니다.",
+ "ApprovalRevokedSuccessfully": "승인이 취소되었습니다.",
+ "Approve": "승인",
+ "Disapproved": "승인 거부됨",
+ "CommentAlertMessage": "승인 대기 중인 댓글이 {0}개 있습니다.",
+ "Settings:Menu:CmsKit": "CMS",
+ "CommentsAwaitingApproval": "승인 대기 중인 댓글",
+ "JustNow": "방금",
+ "MinuteAgo": "1분 전",
+ "MinutesAgo": "{0}분 전",
+ "HourAgo": "1시간 전",
+ "HoursAgo": "{0}시간 전",
+ "YesterdayAt": "어제 {0}",
+ "DayAt": "{0} {1}",
+ "MonthDayAt": "{0} {1} {2}",
+ "FullDate": "{0} {1} {2}",
+ "Minute": "분",
+ "Hour": "시간",
+ "Day": "일",
+ "Week": "주",
+ "CommentSubmittedForApproval": "댓글이 승인 요청으로 제출되었습니다.",
+ "ChooseAnActionForBlog": "블로그 작업 선택",
+ "AssignBlogPostsToOtherBlog": "블로그 게시물을 다른 블로그에 할당",
+ "SelectAnBlogToAssign": "할당할 블로그 선택",
+ "DeleteAllBlogPostsOfThisBlog": "이 블로그의 모든 게시물 삭제",
+ "RequiredPermissionName": "필수 권한 이름",
+ "Enum:PageStatus:0": "초안",
+ "Enum:PageStatus:1": "게시",
+ "AllPosts": "모든 게시물",
+ "IsReadOnly": "읽기 전용"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/ko.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/ko.json
new file mode 100644
index 0000000000..e4ddba2392
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/ko.json
@@ -0,0 +1,10 @@
+{
+ "culture": "ko",
+ "texts": {
+ "DocsTitle": "VoloDocs",
+ "WelcomeVoloDocs": "VoloDocs에 오신 것을 환영합니다!",
+ "NoProjectWarning": "아직 정의된 프로젝트가 없습니다!",
+ "CreateYourFirstProject": "첫 번째 프로젝트를 시작하려면 여기를 클릭하세요.",
+ "NoProject": "프로젝트가 없습니다!"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/ko.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/ko.json
new file mode 100644
index 0000000000..4be5125365
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/ko.json
@@ -0,0 +1,74 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Permission:DocumentManagement": "문서 관리",
+ "Permission:Projects": "프로젝트",
+ "Permission:Edit": "편집",
+ "Permission:Delete": "삭제",
+ "Permission:Create": "생성",
+ "Permission:Documents": "문서",
+ "Menu:Documents": "문서",
+ "Menu:DocumentManagement": "문서",
+ "Menu:ProjectManagement": "프로젝트",
+ "CreateANewProject": "새 프로젝트 생성",
+ "Edit": "편집",
+ "Create": "생성",
+ "Pull": "가져오기",
+ "Projects": "프로젝트",
+ "Name": "이름",
+ "ShortName": "단축 이름",
+ "DocumentStoreType": "문서 저장소 유형",
+ "Format": "형식",
+ "ShortNameInfoText": "고유 URL에 사용됩니다.",
+ "DisplayName:Name": "이름",
+ "DisplayName:ShortName": "단축 이름",
+ "DisplayName:Format": "형식",
+ "DisplayName:DefaultDocumentName": "기본 문서 이름",
+ "DisplayName:NavigationDocumentName": "탐색 문서 이름",
+ "DisplayName:MinimumVersion": "최소 버전",
+ "DisplayName:MainWebsiteUrl": "메인 웹사이트 URL",
+ "DisplayName:LatestVersionBranchName": "최신 버전 브랜치 이름",
+ "DisplayName:GitHubRootUrl": "GitHub 루트 URL",
+ "DisplayName:GitHubAccessToken": "GitHub 액세스 토큰",
+ "DisplayName:GitHubUserAgent": "GitHub 사용자 에이전트",
+ "DisplayName:GithubVersionProviderSource": "GitHub 버전 공급자 소스",
+ "DisplayName:VersionBranchPrefix": "버전 브랜치 접두사",
+ "DisplayName:All": "모두 가져오기",
+ "DisplayName:LanguageCode": "언어 코드",
+ "DisplayName:Version": "버전",
+ "Documents": "문서",
+ "RemoveFromCache": "캐시에서 제거하고 재인덱싱",
+ "Reindex": "재인덱싱",
+ "ReindexCompleted": "재인덱싱 완료",
+ "RemovedFromCache": "캐시에서 제거하고 재인덱싱했습니다.",
+ "RemoveFromCacheConfirmation": "이 항목을 캐시에서 제거하시겠습니까?",
+ "ReIndexDocumentConfirmation": "문서 \"{0}\"을(를) 재인덱싱하시겠습니까?",
+ "DeleteFromDatabase": "데이터베이스에서 삭제",
+ "Deleted": "삭제됨",
+ "Search": "검색",
+ "StartDate": "시작일",
+ "EndDate": "종료일",
+ "CreationTime": "생성 시간",
+ "LastUpdateTime": "마지막 업데이트",
+ "LastSignificantUpdateTime": "마지막 주요 업데이트",
+ "Version": "버전",
+ "LanguageCode": "언어 코드",
+ "FileName": "파일 이름",
+ "LastCachedTime": "캐시 시간",
+ "Project": "프로젝트",
+ "AdvancedFilters": "고급 필터",
+ "RemoveCacheAndReIndexConfirmation": "문서 \"{0}\"을(를) 캐시에서 제거하고 재인덱싱합니다. 계속하시겠습니까?",
+ "GeneratePdf": "PDF 생성",
+ "Generating": "생성 중...",
+ "Language": "언어",
+ "ForceToGenerateNewPdf": "새 PDF 강제 생성",
+ "PdfGeneratedSuccessfully": "PDF가 생성되었습니다.",
+ "GenerateAndDownloadPdf": "PDF 생성 및 다운로드",
+ "PdfFileDeletionWarningMessage": "PDF 파일 \"{0}\"을(를) 삭제하시겠습니까?",
+ "ManagePdfFiles": "PDF 파일 관리",
+ "Permission:ManagePdfFiles": "PDF 파일 관리",
+ "PdfDeletedSuccessfully": "PDF 파일이 삭제되었습니다.",
+ "PdfGenerationStarted": "PDF 생성을 시작했습니다.",
+ "PdfGenerationStartedInfoMessage": "PDF 생성을 시작했습니다. 완료되면 PDF 파일 섹션에 파일이 추가되었는지 확인할 수 있습니다."
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Common.Application.Contracts/Volo/Docs/Common/Localization/Resources/Docs/ApplicationContracts/ko.json b/modules/docs/src/Volo.Docs.Common.Application.Contracts/Volo/Docs/Common/Localization/Resources/Docs/ApplicationContracts/ko.json
new file mode 100644
index 0000000000..e110342281
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Common.Application.Contracts/Volo/Docs/Common/Localization/Resources/Docs/ApplicationContracts/ko.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Permission:DocumentManagement.Common": "문서 관리 공통",
+ "Permission:PdfDownload": "PDF 다운로드"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/ko.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/ko.json
new file mode 100644
index 0000000000..7e6d22155b
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/ko.json
@@ -0,0 +1,51 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Documents": "문서",
+ "BackToWebsite": "웹사이트로 돌아가기",
+ "Contributors": "기여자",
+ "ShareOn": "공유",
+ "Version": "버전",
+ "Edit": "편집",
+ "LastEditTime": "마지막 편집",
+ "Delete": "삭제",
+ "ClearCache": "캐시 지우기",
+ "ClearCacheConfirmationMessage": "프로젝트 \"{0}\"의 모든 캐시를 지우시겠습니까?",
+ "ReIndexAllProjects": "모든 프로젝트 다시 인덱싱",
+ "ReIndexProject": "프로젝트 다시 인덱싱",
+ "ReIndexProjectConfirmationMessage": "프로젝트 \"{0}\"을(를) 다시 인덱싱하시겠습니까?",
+ "SuccessfullyReIndexProject": "다시 인덱싱했습니다: \"{0}\"",
+ "ReIndexAllProjectConfirmationMessage": "모든 프로젝트를 다시 인덱싱하시겠습니까?",
+ "SuccessfullyReIndexAllProject": "모든 프로젝트를 다시 인덱싱했습니다.",
+ "InThisDocument": "이 문서에서",
+ "GoToTop": "맨 위로 이동",
+ "Projects": "프로젝트",
+ "NoProjectWarning": "아직 프로젝트가 없습니다!",
+ "DocumentNotFound": "요청한 문서를 찾을 수 없습니다!",
+ "ProjectNotFound": "요청한 프로젝트를 찾을 수 없습니다!",
+ "NavigationDocumentNotFound": "이 버전에는 탐색 문서가 없습니다!",
+ "DocumentNotFoundInSelectedLanguage": "요청한 언어의 문서를 찾을 수 없어 기본 언어의 문서를 표시합니다.",
+ "FilterTopics": "주제 필터링",
+ "FullSearch": "문서에서 검색",
+ "Volo.Docs.Domain:010001": "Elasticsearch가 활성화되어 있지 않습니다.",
+ "MultipleVersionDocumentInfo": "이 문서에는 여러 버전이 있습니다. 가장 적합한 옵션을 선택하세요.",
+ "DocumentOptions": "문서 옵션",
+ "New": "신규",
+ "Upd": "업데이트",
+ "NewExplanation": "최근 2주 이내에 생성되었습니다.",
+ "UpdatedExplanation": "최근 2주 이내에 업데이트되었습니다.",
+ "Volo.Docs.Domain:010002": "단축 이름 {ShortName}이(가) 이미 존재합니다.",
+ "Preview": "미리 보기",
+ "Search": "검색",
+ "SearchResults": "검색 결과",
+ "SearchInTheAllDocuments": "모든 문서에서 검색",
+ "Next": "다음",
+ "Previous": "이전",
+ "ProjectDeletionWarningMessage": "프로젝트가 삭제됩니다.",
+ "Docs_Page_Title": "ABP 문서",
+ "Docs_Page_Description": "ABP 문서에서 포괄적인 가이드와 API 참조를 확인하여 개발 및 문제 해결에 활용할 수 있습니다.",
+ "GoogleTranslate": "Google 번역",
+ "DownloadPDF": "PDF 다운로드",
+ "PdfFileGeneratedSuccessfully": "PDF 파일이 생성되었습니다."
+ }
+}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/ko.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/ko.json
new file mode 100644
index 0000000000..6603762f4d
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/ko.json
@@ -0,0 +1,17 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Features": "기능",
+ "NoFeatureFoundMessage": "사용 가능한 기능이 없습니다.",
+ "ManageHostFeatures": "호스트 기능 관리",
+ "ManageHostFeaturesText": "다음 버튼을 클릭하여 호스트 측 기능을 관리할 수 있습니다.",
+ "Permission:FeatureManagement": "기능 관리",
+ "Permission:FeatureManagement.ManageHostFeatures": "호스트 기능 관리",
+ "Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0} 기능 값이 유효하지 않습니다!",
+ "Menu:FeatureManagement": "기능 관리",
+ "ResetToDefault": "기본값으로 재설정",
+ "ResetedToDefault": "기본값으로 재설정됨",
+ "AreYouSure": "계속하시겠습니까?",
+ "AreYouSureToResetToDefault": "기본값으로 재설정하시겠습니까?"
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ko.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ko.json
new file mode 100644
index 0000000000..a46c0434fd
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ko.json
@@ -0,0 +1,143 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Menu:IdentityManagement": "ID 관리",
+ "Users": "사용자",
+ "NewUser": "새 사용자",
+ "UserName": "사용자 이름",
+ "Surname": "성",
+ "EmailAddress": "이메일 주소",
+ "PhoneNumber": "전화번호",
+ "UserInformations": "사용자 정보",
+ "DisplayName:IsDefault": "기본값",
+ "DisplayName:IsStatic": "정적",
+ "DisplayName:IsPublic": "공개",
+ "Roles": "역할",
+ "Password": "비밀번호",
+ "PersonalInfo": "내 프로필",
+ "PersonalSettings": "개인 설정",
+ "UserDeletionConfirmationMessage": "사용자 '{0}'을(를) 삭제합니다. 계속하시겠습니까?",
+ "RoleDeletionConfirmationMessage": "역할 '{0}'을(를) 삭제합니다. 계속하시겠습니까?",
+ "DisplayName:RoleName": "역할 이름",
+ "DisplayName:UserName": "사용자 이름",
+ "DisplayName:Name": "이름",
+ "DisplayName:Surname": "성",
+ "DisplayName:Password": "비밀번호",
+ "DisplayName:Email": "이메일 주소",
+ "DisplayName:PhoneNumber": "전화번호",
+ "DisplayName:TwoFactorEnabled": "2단계 인증",
+ "DisplayName:IsActive": "활성",
+ "DisplayName:LockoutEnabled": "계정 잠금",
+ "Description:LockoutEnabled": "로그인 실패 시 계정을 잠급니다.",
+ "NewRole": "새 역할",
+ "RoleName": "역할 이름",
+ "CreationTime": "생성 시간",
+ "Permissions": "권한",
+ "DisplayName:CurrentPassword": "현재 비밀번호",
+ "DisplayName:NewPassword": "새 비밀번호",
+ "DisplayName:NewPasswordConfirm": "새 비밀번호 확인",
+ "PasswordChangedMessage": "비밀번호가 변경되었습니다.",
+ "PersonalSettingsSavedMessage": "개인 설정이 저장되었습니다.",
+ "Volo.Abp.Identity:DefaultError": "알 수 없는 오류가 발생했습니다.",
+ "Volo.Abp.Identity:ConcurrencyFailure": "낙관적 동시성 검사에 실패했습니다. 작업 중인 엔터티가 다른 사용자에 의해 수정되었습니다. 변경 내용을 취소하고 다시 시도하십시오.",
+ "Volo.Abp.Identity:DuplicateEmail": "이메일 주소 '{0}'은(는) 이미 사용 중입니다.",
+ "Volo.Abp.Identity:DuplicateRoleName": "역할 이름 '{0}'은(는) 이미 사용 중입니다.",
+ "Volo.Abp.Identity:DuplicateUserName": "사용자 이름 '{0}'은(는) 이미 사용 중입니다.",
+ "Volo.Abp.Identity:InvalidEmail": "이메일 주소 '{0}'은(는) 유효하지 않습니다.",
+ "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "제공된 PasswordHasherCompatibilityMode가 유효하지 않습니다.",
+ "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "반복 횟수는 양의 정수여야 합니다.",
+ "Volo.Abp.Identity:InvalidRoleName": "역할 이름 '{0}'은(는) 유효하지 않습니다.",
+ "Volo.Abp.Identity:InvalidToken": "토큰이 유효하지 않습니다.",
+ "Volo.Abp.Identity:InvalidUserName": "사용자 이름 '{0}'은(는) 유효하지 않습니다.",
+ "Volo.Abp.Identity:LoginAlreadyAssociated": "이 로그인 정보와 연결된 사용자가 이미 존재합니다.",
+ "Volo.Abp.Identity:PasswordMismatch": "비밀번호가 올바르지 않습니다.",
+ "Volo.Abp.Identity:PasswordRequiresDigit": "비밀번호에는 숫자('0'~'9')가 하나 이상 포함되어야 합니다.",
+ "Volo.Abp.Identity:PasswordRequiresLower": "비밀번호에는 소문자('a'~'z')가 하나 이상 포함되어야 합니다.",
+ "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "비밀번호에는 영숫자가 아닌 문자가 하나 이상 포함되어야 합니다.",
+ "Volo.Abp.Identity:PasswordRequiresUpper": "비밀번호에는 대문자('A'~'Z')가 하나 이상 포함되어야 합니다.",
+ "Volo.Abp.Identity:PasswordTooShort": "비밀번호는 {0}자 이상이어야 합니다.",
+ "Volo.Abp.Identity:PasswordRequiresUniqueChars": "비밀번호에는 서로 다른 문자가 {0}개 이상 사용되어야 합니다.",
+ "Volo.Abp.Identity:PasswordInHistory": "최근 {0}개의 비밀번호와 동일한 비밀번호는 사용할 수 없습니다.",
+ "Volo.Abp.Identity:RoleNotFound": "역할 {0}이(가) 존재하지 않습니다.",
+ "Volo.Abp.Identity:UserAlreadyHasPassword": "사용자에게 이미 비밀번호가 설정되어 있습니다.",
+ "Volo.Abp.Identity:UserAlreadyInRole": "사용자가 이미 역할 '{0}'에 속해 있습니다.",
+ "Volo.Abp.Identity:UserLockedOut": "사용자가 잠겼습니다.",
+ "Volo.Abp.Identity:UserLockoutNotEnabled": "이 사용자는 잠금 기능이 활성화되어 있지 않습니다.",
+ "Volo.Abp.Identity:UserNameNotFound": "사용자 {0}이(가) 존재하지 않습니다.",
+ "Volo.Abp.Identity:UserNotInRole": "사용자가 역할 '{0}'에 속해 있지 않습니다.",
+ "Volo.Abp.Identity:PasswordConfirmationFailed": "비밀번호와 비밀번호 확인 값이 일치하지 않습니다.",
+ "Volo.Abp.Identity:NullSecurityStamp": "사용자 보안 스탬프는 null일 수 없습니다.",
+ "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "복구 코드를 사용하는 데 실패했습니다.",
+ "Volo.Abp.Identity:010001": "자신의 계정은 삭제할 수 없습니다!",
+ "Volo.Abp.Identity:010002": "사용자에게 {MaxUserMembershipCount}개를 초과하는 조직 단위를 설정할 수 없습니다!",
+ "Volo.Abp.Identity:010003": "외부 로그인을 사용하는 사용자의 비밀번호는 변경할 수 없습니다!",
+ "Volo.Abp.Identity:010004": "이름이 {0}인 조직 단위가 이미 존재합니다. 같은 수준에 동일한 이름의 조직 단위를 두 개 만들 수 없습니다.",
+ "Volo.Abp.Identity:010005": "정적 역할의 이름은 변경할 수 없습니다.",
+ "Volo.Abp.Identity:010006": "정적 역할은 삭제할 수 없습니다.",
+ "Volo.Abp.Identity:010007": "자신의 2단계 인증 설정은 변경할 수 없습니다.",
+ "Volo.Abp.Identity:010008": "2단계 인증 설정 변경은 허용되지 않습니다.",
+ "Volo.Abp.Identity:010009": "자신에게 위임할 수 없습니다.",
+ "Volo.Abp.Identity:010010": "상위 조직 단위('{ParentId}')가 존재하지 않거나 다른 테넌트에 속해 있습니다.",
+ "Volo.Abp.Identity:010021": "이름이 이미 존재합니다: '{0}'.",
+ "Volo.Abp.Identity:010022": "정적 클레임 유형은 업데이트할 수 없습니다.",
+ "Volo.Abp.Identity:010023": "정적 클레임 유형은 삭제할 수 없습니다.",
+ "Identity.OrganizationUnit.MaxUserMembershipCount": "사용자에게 허용되는 최대 조직 단위 멤버십 수",
+ "ThisUserIsNotActiveMessage": "이 사용자는 활성 상태가 아닙니다.",
+ "Permission:IdentityManagement": "ID 관리",
+ "Permission:RoleManagement": "역할 관리",
+ "Permission:Create": "생성",
+ "Permission:Edit": "편집",
+ "Permission:Delete": "삭제",
+ "Permission:ChangePermissions": "권한 변경",
+ "Permission:ManageRoles": "역할 관리",
+ "Permission:UserManagement": "사용자 관리",
+ "Permission:UserLookup": "사용자 조회",
+ "DisplayName:Abp.Identity.Password.RequiredLength": "필수 길이",
+ "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "필수 고유 문자 수",
+ "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "필수 영숫자 이외 문자",
+ "DisplayName:Abp.Identity.Password.RequireLowercase": "필수 소문자",
+ "DisplayName:Abp.Identity.Password.RequireUppercase": "필수 대문자",
+ "DisplayName:Abp.Identity.Password.RequireDigit": "필수 숫자",
+ "DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "사용자의 정기적인 비밀번호 변경 강제",
+ "DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "비밀번호 변경 주기(일)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "비밀번호 재사용 방지 활성화",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "재사용할 수 없는 이전 비밀번호 수",
+ "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "새 사용자에게 활성화",
+ "DisplayName:Abp.Identity.Lockout.LockoutDuration": "잠금 기간(초)",
+ "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "최대 접근 실패 횟수",
+ "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "로그인 시 이메일 인증 강제",
+ "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "사용자의 전화번호 인증 허용",
+ "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "로그인 시 전화번호 인증 강제",
+ "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "사용자의 사용자 이름 변경 허용",
+ "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "사용자의 이메일 주소 변경 허용",
+ "Description:Abp.Identity.Password.RequiredLength": "비밀번호에 필요한 최소 길이입니다.",
+ "Description:Abp.Identity.Password.RequiredUniqueChars": "비밀번호에 포함되어야 하는 서로 다른 문자의 최소 개수입니다.",
+ "Description:Abp.Identity.Password.RequireNonAlphanumeric": "비밀번호에 영숫자가 아닌 문자가 포함되어야 하는지 여부입니다.",
+ "Description:Abp.Identity.Password.RequireLowercase": "비밀번호에 ASCII 소문자가 포함되어야 하는지 여부입니다.",
+ "Description:Abp.Identity.Password.RequireUppercase": "비밀번호에 ASCII 대문자가 포함되어야 하는지 여부입니다.",
+ "Description:Abp.Identity.Password.RequireDigit": "비밀번호에 숫자가 포함되어야 하는지 여부입니다.",
+ "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "사용자가 정기적으로 비밀번호를 변경하도록 강제할지 여부입니다.",
+ "Description:Abp.Identity.Password.PasswordChangePeriodDays": "사용자 비밀번호가 유효한 기간(일)입니다.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "사용자가 이전 비밀번호를 재사용하지 못하도록 할지 여부입니다.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "재사용할 수 없는 이전 비밀번호의 개수입니다.",
+ "Description:Abp.Identity.Lockout.AllowedForNewUsers": "새 사용자를 잠글 수 있는지 여부입니다.",
+ "Description:Abp.Identity.Lockout.LockoutDuration": "잠금이 발생했을 때 사용자가 잠기는 기간입니다.",
+ "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "잠금이 활성화된 경우 사용자가 잠기기 전까지 허용되는 접근 실패 횟수입니다.",
+ "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "사용자는 계정을 만들 수 있지만 이메일 주소를 인증하기 전에는 로그인할 수 없습니다.",
+ "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "사용자가 전화번호를 인증할 수 있습니다. SMS 연동이 필요합니다.",
+ "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "사용자는 계정을 만들 수 있지만 전화번호를 인증하기 전에는 로그인할 수 없습니다.",
+ "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "사용자가 사용자 이름을 변경할 수 있는지 여부입니다.",
+ "Description:Abp.Identity.User.IsEmailUpdateEnabled": "사용자가 이메일 주소를 변경할 수 있는지 여부입니다.",
+ "DisplayName:Abp.Identity.SignIn.RequireEmailVerificationToRegister": "등록 시 이메일 인증 강제",
+ "Description:Abp.Identity.SignIn.RequireEmailVerificationToRegister": "이메일 주소를 인증하지 않으면 사용자 계정이 생성되지 않습니다.",
+ "Details": "세부 정보",
+ "CreatedBy": "생성자",
+ "ModifiedBy": "수정자",
+ "ModificationTime": "수정 시간",
+ "PasswordUpdateTime": "비밀번호 변경 시간",
+ "LockoutEndTime": "잠금 종료 시간",
+ "FailedAccessCount": "접근 실패 횟수",
+ "UserResourcePermissionProviderKeyLookupService": "사용자",
+ "RoleResourcePermissionProviderKeyLookupService": "역할"
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/ko.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/ko.json
new file mode 100644
index 0000000000..949706d2b0
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/ko.json
@@ -0,0 +1,17 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Volo.IdentityServer:DuplicateIdentityResourceName": "ID 리소스 이름이 이미 존재합니다: {Name}",
+ "Volo.IdentityServer:DuplicateApiResourceName": "API 리소스 이름이 이미 존재합니다: {Name}",
+ "Volo.IdentityServer:DuplicateApiScopeName": "API 범위 이름이 이미 존재합니다: {Name}",
+ "Volo.IdentityServer:DuplicateClientId": "클라이언트 ID가 이미 존재합니다: {ClientId}",
+ "UserLockedOut": "잘못된 로그인 시도로 인해 사용자 계정이 잠겼습니다. 잠시 후 다시 시도해 주세요.",
+ "InvalidUserNameOrPassword": "사용자 이름 또는 비밀번호가 올바르지 않습니다!",
+ "LoginIsNotAllowed": "로그인할 수 없습니다! 계정이 비활성 상태이거나 이메일 또는 전화번호 확인이 필요합니다.",
+ "InvalidUsername": "사용자 이름 또는 비밀번호가 올바르지 않습니다!",
+ "InvalidAuthenticatorCode": "인증 코드가 올바르지 않습니다!",
+ "InvalidRecoveryCode": "복구 코드가 올바르지 않습니다!",
+ "TheTargetUserIsNotLinkedToYou": "대상 사용자가 현재 사용자와 연결되어 있지 않습니다!",
+ "ClientResourcePermissionProviderKeyLookupService": "클라이언트"
+ }
+}
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/ko.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/ko.json
new file mode 100644
index 0000000000..5142cfcf44
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/ko.json
@@ -0,0 +1,16 @@
+{
+ "culture": "ko",
+ "texts": {
+ "TheOpenIDConnectRequestCannotBeRetrieved": "OpenID Connect 요청을 가져올 수 없습니다.",
+ "TheUserDetailsCannotBbeRetrieved": "사용자 세부 정보를 가져올 수 없습니다.",
+ "TheApplicationDetailsCannotBeFound": "애플리케이션 세부 정보를 찾을 수 없습니다.",
+ "DetailsConcerningTheCallingClientApplicationCannotBeFound": "호출한 클라이언트 애플리케이션의 세부 정보를 찾을 수 없습니다.",
+ "TheSpecifiedGrantTypeIsNotImplemented": "지정된 권한 부여 유형 {0}은(는) 구현되어 있지 않습니다.",
+ "Authorization": "권한 부여",
+ "DoYouWantToGrantAccessToYourData": "{0}에게 데이터 접근 권한을 부여하시겠습니까?",
+ "ScopesRequested": "요청된 범위",
+ "Accept": "허용",
+ "Deny": "거부",
+ "ApplicationResourcePermissionProviderKeyLookupService": "클라이언트"
+ }
+}
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/ko.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/ko.json
new file mode 100644
index 0000000000..eea6682bd4
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/ko.json
@@ -0,0 +1,29 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Permissions": "권한",
+ "OnlyProviderPermissons": "이 프로바이더만",
+ "All": "모두",
+ "SelectAllInAllTabs": "모든 권한 부여",
+ "SelectAllInThisTab": "모두 선택",
+ "SaveWithoutAnyPermissionsWarningMessage": "권한을 하나도 부여하지 않고 저장하시겠습니까?",
+ "PermissionGroup": "권한 그룹",
+ "Filter": "필터",
+ "ResourcePermissions": "권한",
+ "ResourcePermissionTarget": "대상",
+ "ResourcePermissionPermissions": "권한",
+ "AddResourcePermission": "권한 추가",
+ "ResourcePermissionDeletionConfirmationMessage": "모든 권한을 삭제하시겠습니까?",
+ "UpdateResourcePermission": "권한 업데이트",
+ "GrantAllResourcePermissions": "모두 부여",
+ "NoResourceProviderKeyLookupServiceFound": "프로바이더 키 조회 서비스를 찾을 수 없습니다.",
+ "NoResourcePermissionFound": "정의된 권한이 없습니다.",
+ "UpdatePermission": "권한 업데이트",
+ "NoPermissionsAssigned": "할당된 권한이 없습니다.",
+ "SelectProvider": "프로바이더 선택",
+ "SearchProviderKey": "프로바이더 키 검색",
+ "Provider": "프로바이더",
+ "ErrorLoadingPermissions": "권한을 불러오는 중 오류가 발생했습니다.",
+ "PleaseSelectProviderAndPermissions": "프로바이더와 권한을 선택해 주세요."
+ }
+}
\ No newline at end of file
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/ko.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/ko.json
new file mode 100644
index 0000000000..b5b2366535
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/ko.json
@@ -0,0 +1,43 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Settings": "설정",
+ "SavedSuccessfully": "성공적으로 저장되었습니다.",
+ "Permission:SettingManagement": "설정 관리",
+ "Permission:Emailing": "이메일",
+ "Permission:EmailingTest": "이메일 테스트",
+ "Permission:TimeZone": "시간대",
+ "SendTestEmail": "테스트 이메일 보내기",
+ "SenderEmailAddress": "발신자 이메일 주소",
+ "TargetEmailAddress": "수신자 이메일 주소",
+ "Subject": "제목",
+ "Body": "본문",
+ "TestEmailSubject": "테스트 이메일 {0}",
+ "TestEmailBody": "테스트 이메일 본문 메시지입니다.",
+ "SentSuccessfully": "성공적으로 전송되었습니다.",
+ "MailSendingFailed": "이메일 전송에 실패했습니다. 이메일 설정을 확인한 후 다시 시도해 주세요.",
+ "Send": "보내기",
+ "Menu:Settings": "설정",
+ "Menu:Emailing": "이메일",
+ "Menu:TimeZone": "시간대",
+ "DisplayName:Timezone": "시간대",
+ "TimezoneHelpText": "이 기능을 사용하면 서버의 기본 시간대를 설정할 수 있으며, 사용자는 각자 자신의 시간대를 선택할 수 있습니다. 사용자의 시간대가 서버 시간대와 다르면 모든 시간이 이에 맞게 조정됩니다. 예를 들어 서버가 Europe/London(00:00)으로 설정되어 있고 사용자가 Europe/Paris(+01:00)에 있는 경우, 해당 사용자의 시간은 1시간 조정됩니다. '기본 시간대'를 선택하면 서버 또는 브라우저의 시간대가 자동으로 사용됩니다.",
+ "DefaultTimeZone": "기본 시간대",
+ "SmtpHost": "호스트",
+ "SmtpPort": "포트",
+ "SmtpUserName": "사용자 이름",
+ "SmtpPassword": "비밀번호",
+ "SmtpDomain": "도메인",
+ "SmtpEnableSsl": "SSL 사용",
+ "SmtpUseDefaultCredentials": "기본 자격 증명 사용",
+ "DefaultFromAddress": "기본 발신자 주소",
+ "DefaultFromDisplayName": "기본 발신자 표시 이름",
+ "Feature:SettingManagementGroup": "설정 관리",
+ "Feature:SettingManagementEnable": "설정 관리 사용",
+ "Feature:SettingManagementEnableDescription": "애플리케이션에서 설정 관리 시스템을 사용합니다.",
+ "Feature:AllowChangingEmailSettings": "이메일 설정 변경 허용",
+ "Feature:AllowChangingEmailSettingsDescription": "이메일 설정 변경을 허용합니다.",
+ "SmtpPasswordPlaceholder": "비밀번호를 변경하려면 값을 입력하세요.",
+ "NoSettingsAvailable": "표시할 설정이 없습니다."
+ }
+}
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/ko.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/ko.json
new file mode 100644
index 0000000000..13bfe0999b
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/ko.json
@@ -0,0 +1,23 @@
+{
+ "culture": "ko",
+ "texts": {
+ "Volo.Abp.TenantManagement:DuplicateTenantName": "테넌트 이름이 이미 존재합니다: {Name}",
+ "Menu:TenantManagement": "테넌트 관리",
+ "Tenants": "테넌트",
+ "NewTenant": "새 테넌트",
+ "TenantName": "테넌트 이름",
+ "DisplayName:TenantName": "테넌트 이름",
+ "TenantDeletionConfirmationMessage": "테넌트 '{0}'이(가) 삭제됩니다. 계속하시겠습니까?",
+ "ConnectionStrings": "연결 문자열",
+ "DisplayName:DefaultConnectionString": "기본 연결 문자열",
+ "DisplayName:UseSharedDatabase": "공유 데이터베이스 사용",
+ "Permission:TenantManagement": "테넌트 관리",
+ "Permission:Create": "생성",
+ "Permission:Edit": "편집",
+ "Permission:Delete": "삭제",
+ "Permission:ManageConnectionStrings": "연결 문자열 관리",
+ "Permission:ManageFeatures": "기능",
+ "DisplayName:AdminEmailAddress": "관리자 이메일 주소",
+ "DisplayName:AdminPassword": "관리자 비밀번호"
+ }
+}
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Contracts/Volo/Abp/VirtualFileExplorer/Localization/Resources/ko.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Contracts/Volo/Abp/VirtualFileExplorer/Localization/Resources/ko.json
new file mode 100644
index 0000000000..8b53474d20
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Contracts/Volo/Abp/VirtualFileExplorer/Localization/Resources/ko.json
@@ -0,0 +1,16 @@
+{
+ "culture": "ko",
+ "texts": {
+ "VirtualFileExplorer": "가상 파일 탐색기",
+ "VirtualFileType": "가상 파일 형식",
+ "Menu:VirtualFileExplorer": "가상 파일 탐색기",
+ "LastUpdateTime": "마지막 업데이트 시간",
+ "VirtualFileName": "가상 파일 이름",
+ "FileContent": "파일 내용",
+ "Size": "크기",
+ "BackToRoot": "루트로 돌아가기",
+ "EmptyFileInfoList": "가상 파일이 없습니다.",
+ "Permission:AbpVirtualFileExplorer": "가상 파일 탐색기",
+ "Permission:AbpVirtualFileExplorer:View": "보기"
+ }
+}