You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/08/15 18:45:37 UTC

[tomcat] 04/06: Add Korean translations to the standard Tomcat distribution.

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit e6dcf670006fcaac766f03df2d147918ebeb110e
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 19:37:15 2019 +0100

    Add Korean translations to the standard Tomcat distribution.
---
 build.xml                                          |  10 +
 java/javax/el/LocalStrings_ko.properties           |  28 ++
 java/javax/servlet/LocalStrings_ko.properties      |  23 ++
 java/javax/servlet/http/LocalStrings_ko.properties |  26 ++
 .../authenticator/LocalStrings_ko.properties       |  70 +++++
 .../catalina/connector/LocalStrings_ko.properties  |  74 ++++++
 .../catalina/core/LocalStrings_ko.properties       | 239 +++++++++++++++++
 .../catalina/deploy/LocalStrings_ko.properties     |  25 ++
 .../catalina/filters/LocalStrings_ko.properties    |  65 +++++
 .../catalina/ha/deploy/LocalStrings_ko.properties  |  52 ++++
 .../catalina/ha/session/LocalStrings_ko.properties |  84 ++++++
 .../catalina/ha/tcp/LocalStrings_ko.properties     |  30 +++
 .../catalina/loader/LocalStrings_ko.properties     |  60 +++++
 .../catalina/manager/LocalStrings_ko.properties    | 155 +++++++++++
 .../manager/host/LocalStrings_ko.properties        |  84 ++++++
 .../catalina/mbeans/LocalStrings_ko.properties     |  21 ++
 .../catalina/realm/LocalStrings_ko.properties      |  94 +++++++
 .../catalina/security/LocalStrings_ko.properties   |  22 ++
 .../catalina/servlets/LocalStrings_ko.properties   |  53 ++++
 .../catalina/session/LocalStrings_ko.properties    |  79 ++++++
 .../catalina/startup/LocalStrings_ko.properties    | 154 +++++++++++
 .../tribes/transport/LocalStrings_ko.properties    |  16 ++
 .../tribes/util/LocalStrings_ko.properties         |  16 ++
 .../catalina/users/LocalStrings_ko.properties      |  25 ++
 .../catalina/util/LocalStrings_ko.properties       |  53 ++++
 .../catalina/valves/LocalStrings_ko.properties     | 134 ++++++++++
 java/org/apache/coyote/LocalStrings_ko.properties  |  33 +++
 .../apache/coyote/ajp/LocalStrings_ko.properties   |  29 ++
 .../coyote/http11/LocalStrings_ko.properties       |  41 +++
 .../http11/filters/LocalStrings_ko.properties      |  27 ++
 .../http11/upgrade/LocalStrings_ko.properties      |  23 ++
 .../jasper/resources/LocalStrings_ko.properties    | 292 +++++++++++++++++++++
 java/org/apache/naming/LocalStrings_ko.properties  |  30 +++
 .../naming/factory/LocalStrings_ko.properties      |  32 +++
 .../factory/webservices/LocalStrings_ko.properties |  16 ++
 .../apache/tomcat/util/LocalStrings_ko.properties  |  30 +++
 .../tomcat/util/buf/LocalStrings_ko.properties     |  20 ++
 .../tomcat/util/compat/LocalStrings_ko.properties  |  16 ++
 .../util/descriptor/LocalStrings_ko.properties     |  21 ++
 .../tomcat/util/http/LocalStrings_ko.properties    |  36 +++
 .../util/http/parser/LocalStrings_ko.properties    |  34 +++
 .../tomcat/util/scan/LocalStrings_ko.properties    |  24 ++
 .../util/threads/res/LocalStrings_ko.properties    |  16 ++
 .../tomcat/websocket/LocalStrings_ko.properties    | 120 +++++++++
 .../websocket/pojo/LocalStrings_ko.properties      |  45 ++++
 .../websocket/server/LocalStrings_ko.properties    |  40 +++
 res/maven/mvn-pub.xml                              |   1 +
 res/maven/tomcat-i18n-ko.pom                       |  35 +++
 webapps/docs/changelog.xml                         |   3 +
 .../WEB-INF/classes/LocalStrings_ko.properties     |  48 ++++
 50 files changed, 2704 insertions(+)

diff --git a/build.xml b/build.xml
index 0c910e8..8d8b507 100644
--- a/build.xml
+++ b/build.xml
@@ -870,6 +870,16 @@
       <zipfileset file="${tomcat.manifests}/default.license"
         fullpath="META-INF/LICENSE" />
     </jar>
+    <jar jarfile="${tomcat.build}/lib/tomcat-i18n-ko.jar"
+      manifest="${tomcat.manifests}/default.manifest">
+      <fileset dir="${tomcat.classes}">
+        <include name="**/LocalStrings_ko.properties" />
+      </fileset>
+      <zipfileset file="${tomcat.manifests}/default.notice"
+        fullpath="META-INF/NOTICE" />
+      <zipfileset file="${tomcat.manifests}/default.license"
+        fullpath="META-INF/LICENSE" />
+    </jar>
     <jar jarfile="${tomcat.build}/lib/tomcat-i18n-ru.jar"
       manifest="${tomcat.manifests}/default.manifest">
       <fileset dir="${tomcat.classes}">
diff --git a/java/javax/el/LocalStrings_ko.properties b/java/javax/el/LocalStrings_ko.properties
new file mode 100644
index 0000000..0597cf3
--- /dev/null
+++ b/java/javax/el/LocalStrings_ko.properties
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+expressionFactory.cannotCreate=타입 [{0}]의 ExpressionFactory를 생성할 수 없습니다.
+expressionFactory.cannotFind=타입 [{0}]의 ExpressionFactory를 찾을 수 없습니다.
+expressionFactory.readFailed=[{0}]을(를) 읽지 못했습니다.
+
+objectNotAssignable=타입 [{0}]의 객체를, 타입 [{1}]의 객체 배열에 추가할 수 없습니다.
+propertyNotFound=타입 [{0}]에서 프로퍼티 [{1}]을(를) 찾을 수 없습니다.
+propertyNotReadable=타입 [{0}]에서 프로퍼티 [{1}]을(를) 읽을 수 없습니다.
+propertyNotWritable=타입 [{0}]에서 쓰기 가능하지 않은 프로퍼티 [{1}]
+propertyReadError=타입 [{0}]에서 [{1}]을(를) 읽는 중 오류 발생
+propertyWriteError=타입 [{0}]에 [{1}]을(를) 쓰는 중 오류 발생
+
+util.method.ambiguous=애매하지 않고 명백하게 메소드를 찾을 수 없습니다: {0}.{1}({2})
+util.method.notfound=메소드를 찾을 수 없습니다: {0}.{1}({2})
diff --git a/java/javax/servlet/LocalStrings_ko.properties b/java/javax/servlet/LocalStrings_ko.properties
new file mode 100644
index 0000000..b09b07b
--- /dev/null
+++ b/java/javax/servlet/LocalStrings_ko.properties
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+err.not_iso8859_1=ISO 8859-1 문자가 아닙니다: [{0}]
+
+httpConstraintElement.invalidRolesDeny=DENY를 사용할 때에는 역할들이 지정될 수 없습니다.
+
+httpMethodConstraintElement.invalidMethod=유효하지 않은 HTTP 메소드
+
+value.false=false
+value.true=true
diff --git a/java/javax/servlet/http/LocalStrings_ko.properties b/java/javax/servlet/http/LocalStrings_ko.properties
new file mode 100644
index 0000000..6bfec90
--- /dev/null
+++ b/java/javax/servlet/http/LocalStrings_ko.properties
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+err.cookie_name_blank=쿠키 이름이 널이거나 길이가 0인 문자열이어서는 안됩니다.
+err.cookie_name_is_token=쿠키 이름 [{0}]은(는) 예약된 토큰입니다.
+err.io.indexOutOfBounds=크기 [{2}]인 배열에 대하여, 유효하지 않은 offset [{0}] 그리고/또는 길이 [{1}].
+err.io.nullArray=write 메소드에 널인 바이트 배열이 전달되었습니다.
+err.io.short_read=Short Read
+
+http.method_delete_not_supported=HTTP 메소드 DELETE는 이 URL에 의해 지원되지 않습니다.
+http.method_get_not_supported=HTTP 메소드 GET은 이 URL에 의해 지원되지 않습니다.
+http.method_not_implemented=이 URI를 위한 서블릿은 메소드 [{0}]을(를) 구현하지 않았습니다.
+http.method_post_not_supported=HTTP 메소드인 POST는 이 URL에 의해 지원되지 않습니다.
+http.method_put_not_supported=HTTP 메소드 PUT은 이 URL에 의해 지원되지 않습니다.
diff --git a/java/org/apache/catalina/authenticator/LocalStrings_ko.properties b/java/org/apache/catalina/authenticator/LocalStrings_ko.properties
new file mode 100644
index 0000000..e162b94
--- /dev/null
+++ b/java/org/apache/catalina/authenticator/LocalStrings_ko.properties
@@ -0,0 +1,70 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+authenticator.certificates=이 요청에 클라인트 인증서 체인이 없습니다.
+authenticator.changeSessionId=인증 처리 시, 세션 ID를 [{0}]에서 [{1}](으)로 변경했습니다.
+authenticator.check.authorize=사용자 이름 [{0}]을(를) Connector로부터 얻었으며, 이는 유효한 것으로 신뢰되었습니다. Tomcat Realm으로부터, 이 사용자를 위한 역할들을 구합니다.
+authenticator.check.authorizeFail=Realm이 사용자 [{0}]을(를) 인식하지 못했습니다. 해당 사용자명에 대해 아무런 역할 없이 Principal을 생성합니다.
+authenticator.check.found=[{0}]은(는) 이미 인증되었습니다.
+authenticator.check.sso=인증되지 않았는데, SSO 세션 ID [{0}]이(가) 발견되었습니다. 다시 인증을 시도합니다.
+authenticator.formlogin=폼 로그인 페이지에 대한 유효하지 않은 직접 참조
+authenticator.loginFail=로그인 실패
+authenticator.manager=Trust 매니저들을 초기화하는 중 예외 발생
+authenticator.noAuthHeader=클라이언트가 authorization 헤더를 보내지 않았습니다.
+authenticator.notContext=설정 오류: 컨텍스트에 설정되어야만 합니다.
+authenticator.requestBodyTooBig=요청의 body가 너무 커서, 인증 처리 과정에서 캐시에 저장될 수 없습니다.
+authenticator.sessionExpired=로그인 처리 허용 시간이 초과되었습니다. 계속하시려면 뒤로 가기를 두번 클릭한 후, 요청했던 링크를 다시 클릭하거나, 브라우저를 닫았다가 다시 시작해야 합니다.
+authenticator.tomcatPrincipalLogoutFail=TomcatPrincipal 인스턴스를 사용한 로그아웃 시도가 실패했습니다.
+authenticator.unauthorized=제공된 credentials를 사용하여 인증할 수 없습니다.
+
+basicAuthenticator.invalidCharset=허용된 값들은 오직 널, 빈 문자열, 또는 UTF-8 문자열입니다.
+
+digestAuthenticator.cacheRemove=새로운 엔트리들을 위한 공간을 만들기 위해, client nonce cache로부터 유효한 엔트리를 제거했습니다. 리플레이 공격이 가능해진 상태입니다. 가능성 있는 리플레이 공격들을 방지하려면, nonceValidity를 감소 시키거나, nonceCacheSize를 증가 시키십시오. 더 이상 이러한 종류의 경고 메시지들은 향후 5분 동안 나오지 않을 것입니다.
+
+formAuthenticator.forwardErrorFail=오류 페이지로 forward하는 중 예기치 않은 오류 발생
+formAuthenticator.forwardLogin=메소드 [{1}]을(를) 사용한 [{0}]에 대한 요청을, 컨텍스트 [{3}]의 로그인 페이지 [{2}](으)로, GET 요청 메소드를 사용하여 forward 합니다.
+formAuthenticator.forwardLoginFail=로그인 페이지로 forward하는 중 예기치 않은 오류 발생
+formAuthenticator.noErrorPage=컨텍스트 [{0}]에서 폼 기반 인증을 위한 오류 페이지가 정의되지 않았습니다.
+formAuthenticator.noLoginPage=컨텍스트 [{0}]에서, 폼 기반 인증을 위한 로그인 페이지가 정의되지 않았습니다.
+
+singleSignOn.debug.associate=SSO가, 애플리케이션 세션 [{1}]을(를) SSO 세션 [{0}]와(과) 연관시킵니다.
+singleSignOn.debug.associateFail=SSO 세션 [{1}]이(가) 존재하지 않기 때문에, SSO가 애플리케이션 세션 [{0}]을(를) 연관시키지 못했습니다.
+singleSignOn.debug.cookieCheck=SSO가, SSO 쿠키가 존재하는지 점검합니다.
+singleSignOn.debug.cookieNotFound=SSO가, SSO 쿠키를 찾지 못했습니다.
+singleSignOn.debug.deregister=SSO가, SSO 세션 [{1}]와(과) 연관된 애플리케이션 세션 [{0}]을(를) 만료시킵니다.
+singleSignOn.debug.deregisterFail=SSO 세션 [{0}]이(가) 캐시에 존재하지 않기 때문에, SSO가 해당 SSO 세션에 대한 등록을 제거하지 못했습니다.
+singleSignOn.debug.deregisterNone=SSO가 SSO 세션 [{0}]의 등록을 제거했으나, 연관된 애플리케이션 세션들을 찾지 못했습니다.
+singleSignOn.debug.hasPrincipal=SSO가 이전에 인증된 Principal [{0}]을(를) 발견했습니다.
+singleSignOn.debug.invoke=SSO가 [{0}]을(를) 위해 요청을 처리합니다.
+singleSignOn.debug.principalCheck=SSO 세션 [{0}]을(를) 위하여, SSO가 캐시된 Principal을 찾습니다.
+singleSignOn.debug.principalFound=인증 타입이 [{1}]인, 캐시된 Principal [{0}]을(를), SSO가 발견했습니다.
+singleSignOn.debug.principalNotFound=SSO가 캐시된 Principal을 찾지 못했습니다. 세션 [{0}]을(를) 위한 SSO 쿠키를 지웁니다.
+singleSignOn.debug.register=사용자 [{1}]을(를) 위해, 인증 타입 [{2}]을 사용하여, SSO가 SSO 세션 [{0}]을(를) 등록합니다.
+singleSignOn.debug.removeSession=SSO가 SSO 세션 [{1}](으)로부터 세션 [{0}]을(를) 제거합니다.
+singleSignOn.debug.sessionLogout=SSO 세션 [{0}]와(과) 애플리케이션 세션 [{1}]을(를) 위해, SSO가 로그아웃을 처리 중
+singleSignOn.debug.sessionTimeout=SSO 세션 [{0}]와(과) 애플리케이션 세션 [{1}]을(를) 위한, SSO 처리가 제한 시간 초과되었습니다.
+singleSignOn.debug.update=SSO가, SSO 세션 [{0}]의 인증 타입을 [{1}](으)로 변경합니다.
+singleSignOn.sessionExpire.contextNotFound=컨텍스트를 찾을 수 없기 때문에, SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+singleSignOn.sessionExpire.engineNull=엔진이 널이기 때문에 SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+singleSignOn.sessionExpire.hostNotFound=호스트를 찾을 수 없어서, SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+singleSignOn.sessionExpire.managerError=세션을 찾는 동안 매니저가 예외를 발생시켜, SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+singleSignOn.sessionExpire.managerNotFound=매니저를 찾을 수 없기 때문에, SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+singleSignOn.sessionExpire.sessionNotFound=세션을 찾을 수 없기 때문에, SSO가 세션 [{0}]을(를) 만료시킬 수 없습니다.
+
+spnegoAuthenticator.authHeaderNoToken=클라이언트에 의해 전송된 Negotiate authorization 헤더가 토큰을 포함하지 않았습니다.
+spnegoAuthenticator.authHeaderNotNego=클라이언트가 보낸 Authorization 헤더가 Negotiate로 시작하지 않았습니다.
+spnegoAuthenticator.hostnameFail=Unable to determine the host name to construct the default SPN. Please set the spn attribute of the authenticator.
+spnegoAuthenticator.serviceLoginFail=서비스 Principal로서 로그인 할 수 없습니다.
+spnegoAuthenticator.ticketValidateFail=클라이언트에 의해 제공된 티켓이 유효한지를 확인하지 못했습니다.
diff --git a/java/org/apache/catalina/connector/LocalStrings_ko.properties b/java/org/apache/catalina/connector/LocalStrings_ko.properties
new file mode 100644
index 0000000..18f4677
--- /dev/null
+++ b/java/org/apache/catalina/connector/LocalStrings_ko.properties
@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+coyoteAdapter.accesslogFail=접근 로그에 엔트리를 추가하기 위한 시도 중 예외 발생
+coyoteAdapter.asyncDispatch=비동기 요청을 처리하는 중 예외 발생
+coyoteAdapter.authenticate=Connector에 의해 제공된 사용자 [{0}]을(를) 인증했습니다.
+coyoteAdapter.authorize=Tomcat의 Realm을 사용하여 사용자 [{0}]을(를) 승인 중
+coyoteAdapter.checkRecycled.request=참조 해제 되지않은 요청을 발견하여 강제로 참조 해제했습니다.
+coyoteAdapter.checkRecycled.response=참조 해제되지 않은 응답이 발견되어 강제로 참조 해제합니다.
+coyoteAdapter.debug=변수 [{0}]이(가) 값 [{1}]을(를) 가지고 있습니다.
+coyoteAdapter.nullRequest=비동기 디스패치는, 기존 요청에 대해 오직 한번만 일어나야 합니다.
+coyoteAdapter.parsePathParam=인코딩 [{0}]을(를) 사용하여 경로 파라미터들을 파싱할 수 없습니다. URL 내의 경로 파라미터들은 무시될 것입니다.
+
+coyoteConnector.invalidPort=지정된 포트 번호, [{0}]이(가) 유효하지 않기 때문에, Connector가 시작될 수 없습니다.
+coyoteConnector.parseBodyMethodNoTrace=TRACE 메소드는 엔티티를 포함해서는 안됩니다. (RFC 2616 Section 9.6 참조)
+coyoteConnector.protocolHandlerDestroyFailed=프로토콜 핸들러 소멸 중 실패
+coyoteConnector.protocolHandlerInitializationFailed=프로토콜 핸들러 초기화가 실패했습니다.
+coyoteConnector.protocolHandlerInstantiationFailed=프로토콜 핸들러 인스턴스 생성에 실패했습니다.
+coyoteConnector.protocolHandlerPauseFailed=프로토콜 핸들러에 대한 일시 정지가 실패했습니다.
+coyoteConnector.protocolHandlerResumeFailed=프로토콜 핸들러를 재개하지 못했습니다.
+coyoteConnector.protocolHandlerStartFailed=프로토콜 핸들러 시작 실패
+coyoteConnector.protocolHandlerStopFailed=프로토콜 핸들러를 중지시키지 못했습니다.
+
+coyoteRequest.alreadyAuthenticated=해당 요청은 이미 인증되었습니다.
+coyoteRequest.attributeEvent=속성 이벤트 리스너에 의해 예외 발생
+coyoteRequest.authenticate.ise=응답이 커밋된 후에는 authenticate()를 호출할 수 없습니다.
+coyoteRequest.chunkedPostTooLarge=포스트된 데이터의 크기가 너무 커서 파라미터들이 파싱되지 않았습니다. 이 요청은 chunked request였기 때문에 더 이상 처리될 수 없었습니다. 만일 애플리케이션이 매우 큰 포스트 데이터를 받아들여야 한다면, Connector의 maxPostSize 속성을 사용하여 이 문제를 해결하십시오.
+coyoteRequest.getContextPath.ise=Canonical 컨텍스트 경로 [{0}]이(가), User Agent [{1}]에 의해 표시된 URI와 부합되지 않습니다.
+coyoteRequest.getInputStream.ise=이 요청에 대해 getReader()가 이미 호출되었습니다.
+coyoteRequest.getReader.ise=getInputStream()이 이미 이 요청을 위해 호출되었습니다.
+coyoteRequest.gssLifetimeFail=사용자 principal [{0}]의 남아있는 lifetime을 구하지 못했습니다.
+coyoteRequest.maxPostSizeExceeded=Multi-part 요청이, 연관된 connector에 설정된 maxPostSize의 한계치를 초과하는 파라미터 데이터(업로드된 파일들은 제외)를 포함했습니다.
+coyoteRequest.parseParameters=포스트된 파라미터들을 처리하는 중 예외 발생
+coyoteRequest.postTooLarge=포스트된 데이터의 크기가 너무 커서, 파라미터들이 파싱되지 않았습니다. 만일 애플리케이션이 대량의 포스트 데이터를 받아들여야 하는 경우, Connector의 maxPostSize 속성을 설정하여 문제를 해결하십시오.
+coyoteRequest.sendfileNotCanonical=sendfile과 사용되도록 지정된 파일 [{0}]의 canonical 이름을 결정할 수 없습니다.
+coyoteRequest.sessionCreateCommitted=응답이 이미 커밋된 후에는, 세션을 생성할 수 없습니다.
+coyoteRequest.sessionEndAccessFail=요청을 참조 해제하는 과정에서, 세션에 대한 접근을 종료시키려 개시하는 중 예외 발생
+coyoteRequest.setAttribute.namenull=널인 이름을 사용하여 setAttribute를 호출할 수 없습니다.
+coyoteRequest.uploadCreate=서블릿 [{1}]에 의해 요구되는, 임시 업로드 폴더를 [{0}] 위치에 생성합니다.
+coyoteRequest.uploadCreateFail=[{0}]에 업로드 폴더를 생성하지 못했습니다.
+coyoteRequest.uploadLocationInvalid=임시 파일 업로드 위치 [{0}]은(는) 유효하지 않습니다.
+
+coyoteResponse.getOutputStream.ise=이 응답에 대해 getWriter()가 이미 호출되었습니다.
+coyoteResponse.getWriter.ise=이 응답을 위해 getOutputStream()이 이미 호출되었습니다.
+coyoteResponse.reset.ise=응답이 이미 커밋된 후에는, reset()을 호출할 수 없습니다.
+coyoteResponse.resetBuffer.ise=응답이 이미 커밋된 후에는, 버퍼를 재설정(reset)할 수 없습니다.
+coyoteResponse.sendError.ise=응답이 이미 커밋된 후에는 sendError()를 호출할 수 없습니다.
+coyoteResponse.sendRedirect.ise=응답이 이미 커밋된 후에는, sendRedirect()를 호출할 수 없습니다.
+coyoteResponse.sendRedirect.note=<html><body><p>Redirecting to <a href="{0}">{0}</a></p></body></html>
+coyoteResponse.setBufferSize.ise=데이터가 이미 쓰여진 후에는, 버퍼 크기를 변경할 수 없습니다.
+
+inputBuffer.streamClosed=스트림이 닫혔습니다.
+
+request.asyncNotSupported=현재 체인의 필터 또는 서블릿이, 비동기 오퍼레이션들을 지원하지 않습니다.
+request.fragmentInDispatchPath=디스패치 경로 [{0}](으)로부터 URI fragment를 제거했습니다.
+request.notAsync=만일 현재의 쓰레드가 비동기 모드에 있지 않다면, 이 메소드를 호출하는 것은 불허됩니다. (즉, isAsyncStarted()가 false를 반환하는 경우)
+
+requestFacade.nullRequest=요청 객체가 이미 참조 해제 되었고, 더 이상 이 facade와 연관되지 않습니다.
+
+response.sendRedirectFail=[{0}](으)로 redirect하지 못했습니다.
+
+responseFacade.nullResponse=해당 응답 객체가 이미 참조 해제되었으며, 더 이상 이 ResponseFacade 객체와 연관이 없습니다.
diff --git a/java/org/apache/catalina/core/LocalStrings_ko.properties b/java/org/apache/catalina/core/LocalStrings_ko.properties
new file mode 100644
index 0000000..e2943e2
--- /dev/null
+++ b/java/org/apache/catalina/core/LocalStrings_ko.properties
@@ -0,0 +1,239 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+applicationContext.addFilter.ise=컨텍스트가 이미 초기화되었기 때문에, 필터들은 컨텍스트 [{0}]에 추가될 수 없습니다.
+applicationContext.addListener.iae.cnfe=타입 [{0}]의 인스턴스를 생성할 수 없습니다.
+applicationContext.addListener.iae.init=타입 [{0}]의 인스턴스를 리스너로서 추가할 수 없습니다.
+applicationContext.addListener.iae.sclNotAllowed=첫번째 ServletContextListener가 호출되고 나면, 더 이상 ServletContextListener들을 추가할 수 없습니다.
+applicationContext.addListener.iae.wrongType=지정된 타입 [{0}]이(가) 요구되는 리스너 타입들 중의 하나가 아닙니다.
+applicationContext.addListener.ise=컨텍스트가 이미 초기화 되었기에, 컨텍스트 [{0}]에 리스너를 추가할 수 없습니다.
+applicationContext.addRole.ise=해당 컨텍스트가 이미 초기화되어 있기에, 역할들이 컨텍스트 [{0}]에 추가될 수 없습니다.
+applicationContext.addServlet.ise=컨텍스트 [{0}]이(가) 이미 초기화되었기에, 서블릿들이 추가될 수 없습니다.
+applicationContext.attributeEvent=속성 이벤트 리스너가 예외를 발생시켰습니다.
+applicationContext.illegalDispatchPath=애플리케이션이 불허된 경로 [{0}](으)로 RequestDispatcher를 얻으려 시도했지만, 해당 경로가 인코딩된 디렉토리 경로 이동 시도를 포함하고 있기 때문에, 거부되었습니다.
+applicationContext.invalidFilterName=유효하지 않은 필터 이름 [{0}]으로 인하여, 필터 정의를 추가할 수 없습니다.
+applicationContext.invalidServletName=유효하지 않은 서블릿 이름 ([{0}]) 때문에, 서블릿 정의를 추가할 수 없습니다.
+applicationContext.lookup.error=컨텍스트 [{1}] 내의 리소스 [{0}]의 위치를 결정하지 못했습니다.
+applicationContext.mapping.error=매핑 중 오류 발생
+applicationContext.requestDispatcher.iae=경로 [{0}]이(가) "/" 문자로 시작하지 않습니다.
+applicationContext.resourcePaths.iae=경로 [{0}]이(가) "/" 문자로 시작하지 않습니다.
+applicationContext.role.iae=컨텍스트 [{0}]을(를) 위해 선언되는 개별 역할이, 널이거나 빈 문자열이어서는 안됩니다.
+applicationContext.roles.iae=컨텍스트 [{0}]을(를) 위해 선언된 역할들의 배열이 널이어서는 안됩니다.
+applicationContext.setAttribute.namenull=속성 이름이 널이어서는 안됩니다.
+applicationContext.setInitParam.ise=컨텍스트가 이미 초기화된 후에, 초기화 파라미터들이 설정될 수 없습니다.
+applicationContext.setSessionTracking.iae.invalid=컨텍스트 [{1}]를 위해 요청된 세션 트랙킹 모드 [{0}]은(는), 이 컨텍스트에서 지원되지 않습니다.
+applicationContext.setSessionTracking.iae.ssl=컨텍스트 [{0}]을(를) 위해 요청된 세션 트랙킹 모드들이, SSL과 적어도 다른 하나 이상의 모드들을 포함했습니다. SSL은 다른 모드들과 함께 설정될 수 없습니다.
+applicationContext.setSessionTracking.ise=컨텍스트 [{0}]을(를) 위한 세션 트랙킹 모드들은, 컨텍스트가 실행되고 있는 중에 설정될 수 없습니다.
+
+applicationDispatcher.allocateException=서블릿 [{0}]을(를) 위한 할당 중 예외 발생
+applicationDispatcher.deallocateException=서블릿 [{0}]을(를) 위한 할당 해제 작업 중 예외 발생
+applicationDispatcher.forward.ise=응답이 이미 커밋된 후에는 forward할 수 없습니다.
+applicationDispatcher.isUnavailable=서블릿 [{0}]은(는) 현재 가용하지 않습니다.
+applicationDispatcher.serviceException=서블릿 [{0}]을(를) 위한 Servlet.service() 호출이 예외를 발생시켰습니다.
+applicationDispatcher.specViolation.request=원본 ServletRequest 또는 wrap된 원본 ServletRequest가 RequestDispatcher로 전달되지 않았으며, 이는 SRV.8.2와 SRV.14.2.5.1에 대한 위반입니다.
+applicationDispatcher.specViolation.response=원래의 ServletResponse 또는 wrapping된 원래의 ServletResponse가 RequestDispatcher에 전달되지 않았으며, 이는 SRV.8.2와 SRV.14.2.5.1을 위반합니다.
+
+applicationFilterConfig.jmxRegisterFail=타입이 [{0}](이)고 이름이 [{1}]인 필터를 위한 JMX 등록이 실패했습니다.
+applicationFilterConfig.jmxUnregister=타입이 [{0}](이)고 이름이 [{1}]인 필터를 위해, JMX 등록 제거가 완료되었습니다.
+applicationFilterConfig.jmxUnregisterFail=타입이 [{0}](이)고 이름이 [{1}]인 필터를 위한, JMX 등록을 제거하지 못했습니다.
+applicationFilterConfig.preDestroy=타입이 [{1}]이고 이름이 [{0}]인 필터에 대해 preDestroy를 호출하지 못했습니다.
+applicationFilterConfig.release=타입이 [{1}](이)고 이름이 [{0}]인 필터를 소멸시키지 못했습니다.
+
+applicationFilterRegistration.nullInitParam=이름 또는 값 또는 둘 다 널이어서, 필터를 위한 초기화 파라미터를 설정할 수 없습니다. 이름: [{0}], 값: [{1}]
+applicationFilterRegistration.nullInitParams=널인 이름 또는 값 때문에, 필터의 초기화 파라미터를 설정할 수 없습니다. 이름: [{0}], 값: [{1}]
+
+applicationHttpRequest.fragmentInDispatchPath=디스패치 경로 [{0}](으)로부터 URI fragment를 제거했습니다.
+
+applicationServletRegistration.setServletSecurity.iae=[{1}](이)라는 이름의 컨텍스트에 배치된 서블릿 [{0}]을(를) 위해, 널 constraint가 지정되었습니다.
+applicationServletRegistration.setServletSecurity.ise=컨텍스트가 이미 초기화되었기에, [{1}](이)라는 이름의 컨텍스트에 배치된 서블릿 [{0}]에 security constraint들이 추가될 수 없습니다.
+
+applicationSessionCookieConfig.ise=컨텍스트가 이미 초기화되었기에, 컨텍스트 [{1}]을(를) 위한 SessionCookieConfig에 프로퍼티 [{0}]이(가) 추가될 수 없습니다.
+
+aprListener.aprDestroy=APR 기반 Apache Tomcat Native 라이브러리를 셧다운하지 못했습니다.
+aprListener.aprInit=프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [{0}]
+aprListener.aprInitDebug=[{0}](이)라는 이름들을 사용하여, java.library.path [{1}]에서, APR 기반 Apache Tomcat Native 라이브러리를 찾을 수 없습니다. 보고된 오류들: [{2}]
+aprListener.aprInitError=APR 기반 Apache Tomcat Native 라이브러리를 로드하지 못했습니다. 보고된 오류는 [{0}]입니다.
+aprListener.currentFIPSMode=현재의 FIPS 모드: [{0}]
+aprListener.enterAlreadyInFIPSMode=AprLifecycleListener가 강제로 FIPS 모드로 들어가도록 설정되었으나, 라이브러리가 이미 FIPS 모드 [{0}]에 있습니다.
+aprListener.flags=APR 용량정보들: IPv6 [{0}], sendfile [{1}], accept filters [{2}], random [{3}].
+aprListener.initializeFIPSFailed=FIPS 모드로 진입하지 못했습니다.
+aprListener.initializeFIPSSuccess=FIPS 모드로 성공적으로 진입했습니다.
+aprListener.initializedOpenSSL=OpenSSL이 성공적으로 초기화되었습니다: [{0}]
+aprListener.initializingFIPS=FIPS 모드 초기화...
+aprListener.requireNotInFIPSMode=AprLifecycleListener는 라이브러리가 이미 FIPS 모드에 있어야만 하도록 설정되어 있는데, FIPS 모드에 있지 않았습니다.
+aprListener.skipFIPSInitialization=이미 FIPS 모드에 있습니다. FIPS 초기화는 건너뜁니다.
+aprListener.sslInit=SSLEngine을 초기화하지 못했습니다.
+aprListener.tcnInvalid=APR 기반의 Apache Tomcat Native 라이브러리가 호환되지 않는 버전 [{0}]이(가) 설치되어 있습니다. Tomcat은 버전 [{1}]을(를) 요구합니다.
+aprListener.tcnValid=APR 버전 [{1}]을(를) 사용한, APR 기반 Apache Tomcat Native 라이브러리 [{0}]을(를) 로드했습니다.
+aprListener.tcnVersion=APR 기반의 Apache Tomcat Native 라이브러리의 예전 버전 [{0}](이)가 설치되어 있습니다. Tomcat은 최소 버전으로서 [{1}]을(를) 추천합니다.
+aprListener.tooLateForFIPSMode=setFIPSMode를 수행할 수 없습니다: SSL이 이미 초기화되었습니다.
+aprListener.tooLateForSSLEngine=setSSLEngine을 호출할 수 없습니다: SSL이 이미 초기화 되었습니다.
+aprListener.tooLateForSSLRandomSeed=setSSLRandomSeed를 호출할 수 없습니다: SSL이 이미 초기화되어 있습니다.
+aprListener.wrongFIPSMode=예기치 않은 AprLifecycleListener의 FIPSMode 옵션 값: [{0}]
+
+asyncContextImpl.asyncDispachError=비동기 디스패치 도중 오류 발생
+asyncContextImpl.asyncRunnableError=AsyncContext.start()를 통해, 비동기로 Runnable을 처리하는 도중 오류 발생
+asyncContextImpl.dispatchingStarted=비동기 디스패치 오퍼레이션이 이미 호출되었습니다. 동일한 비동기 사이클 내에서, 추가적인 비동기 디스패치 오퍼레이션은 허용되지 않습니다.
+asyncContextImpl.noAsyncDispatcher=ServletContext로부터 반환된 디스패처는 비동기 디스패치를 지원하지 않습니다.
+asyncContextImpl.onCompleteError=타입 [{0}]의 리스너를 위한 onComplete() 호출이 실패했습니다.
+asyncContextImpl.onErrorError=타입 [{0}]의 리스너를 위한 onError() 호출이 실패했습니다.
+asyncContextImpl.onStartAsyncError=타입 [{0}]의 리스너를 위한 onStartAsync() 호출이 실패했습니다.
+asyncContextImpl.onTimeoutError=타입이 [{0}]인 리스너를 위한, onTimeout() 호출이 실패했습니다.
+asyncContextImpl.request.ise=complete() 또는 어떠한 종류의 dispatch() 메소드들이 호출된 후에, getRequest()를 호출하는 것은 불허됩니다.
+asyncContextImpl.requestEnded=AsyncContext와 연관된 요청은 이미 처리를 완료했습니다.
+asyncContextImpl.response.ise=complete() 또는 어떤 종류의 dispatch() 메소드라도 호출된 이후에는, getResponse()를 호출하는 것은 불허됩니다.
+
+containerBase.backgroundProcess.cluster=클러스터 [{0}]을(를) 백그라운드 프로세스에서 처리하는 중 오류 발생
+containerBase.backgroundProcess.realm=Realm [{0}]을(를) 백그라운드 프로세스에서 처리 중 예외 발생
+containerBase.backgroundProcess.unexpectedThreadDeath=백그라운드 쓰레드 [{0}]이(가) 예기치 않게 종료되었습니다.
+containerBase.backgroundProcess.valve=Valve [{0}]의 백그라운드 프로세스를 처리하는 중 예외 발생
+containerBase.nullName=컨테이너 이름은 널일 수 없습니다.
+containerBase.threadedStartFailed=자식 컨테이너를 시작 중 실패했습니다.
+containerBase.threadedStopFailed=자식 컨테이너가 중지되는 중 실패했습니다.
+
+defaultInstanceManager.invalidInjection=유효하지 않은 메소드 리소스 injection annotation
+defaultInstanceManager.restrictedClass=클래스 [{0}]에 대한 접근이 금지되었습니다. 접근 제한된 클래스입니다. 그것을 로드할 수 있으려면, 웹 애플리케이션이 반드시 privileged 된 것으로 설정되어야 합니다.
+defaultInstanceManager.restrictedContainerServlet=클래스 [{0}]을(를) 접근하는 것은 금지되어 있습니다. 해당 클래스는 (ContainerServlet 인터페이스를 구현하고 있는) 접근 제한 클래스입니다. 웹 애플리케이션이 만약 접근하고자 한다면 로드할 수 있는 권한이 설정되어야 합니다.
+defaultInstanceManager.restrictedFiltersResource=제한 필터들에 대한 설정 파일을 찾을 수 없습니다: [{0}]
+defaultInstanceManager.restrictedListenersResource=RestrictedListeners.properties 파일을 찾을 수 없습니다: [{0}]
+defaultInstanceManager.restrictedServletsResource=제한 서블릿들에 대한 프로퍼티 파일을 찾을 수 없습니다: [{0}]
+defaultInstanceManager.restrictedWrongValue=제한 클래스들 프로퍼티 파일 [{0}]에 클래스 이름 [{1}]을(를) 위한 잘못된 값이 설정되었습니다. 요구되는 값: [restricted], 실제 값: [{2}]
+
+filterChain.filter=필터 실행에서 예외가 발생했습니다.
+filterChain.servlet=서블릿 실행이 예외를 발생시켰습니다.
+
+jreLeakListener.authPolicyFail=javax.security.auth.Policy 클래스에서 메모리 누수를 방지하려 시도하는 중 오류 발생
+jreLeakListener.classToInitializeFail=Tomcat을 시작하던 중, 발생 가능성 있는 메모리 누수를 방지하기 위한 클래스 [{0}]을(를) 로드하지 못했습니다.
+jreLeakListener.gcDaemonFail=Tomcat이 시작하는 동안, 가능성 있는 메모리 누수들을 방지하기 위한 GC Daemon 쓰레드 생성을 개시하지 못했습니다. 이는 Sun JVM들이 아닌 환경에서 발생할 수 있습니다.
+jreLeakListener.jarUrlConnCacheFail=기본 설정으로서, Jar URL 연결 캐싱을 사용불능 상태로 설정하지 못했습니다.
+jreLeakListener.ldapPoolManagerFail=가능성 있는 메모리 누수들을 방지하기 위하여, Tomcat이 시작하는 동안, com.sun.jndi.ldap.LdapPoolManager 클래스 생성을 개시하지 못했습니다. 이는 Sun JVM들이 아닌 환경에서 발생할 수 있습니다.
+jreLeakListener.xmlParseFail=XML 파싱하는 과정에서, 메모리 누수들을 방지하려 시도하는 중 오류 발생
+
+naming.addEnvEntry=Environment 엔트리 [{0}]을(를) 추가합니다.
+naming.addResourceEnvRef=리소스 env ref [{0}]을(를) 추가합니다.
+naming.bindFailed=객체를 바인딩하지 못했습니다: [{0}]
+naming.invalidEnvEntryType=Environment 엔트리 [{0}]이(가) 유효하지 않은 타입을 가지고 있습니다.
+naming.invalidEnvEntryValue=Environment 엔트리 [{0}]이(가) 유효하지 않은 값을 가지고 있습니다.
+naming.jmxRegistrationFailed=JMX 내에서 등록 실패했습니다: [{0}]
+naming.namingContextCreationFailed=Naming Context 생성 실패: [{0}]
+naming.unbindFailed=객체 [{0}]을(를) 바인딩 해제하지 못했습니다.
+
+noPluggabilityServletContext.notAllowed=Servlet 3.0 스펙의 4.4 장에 따르면, web.xml 또는 web-fragment.xml 파일에 정의되지 않거나 @WebListener로 annotate되지 않은, ServletContextListener에서 이 메소드를 호출하는 것은 허용되지 않습니다.
+
+standardContext.applicationListener=클래스 [{0}]의 애플리케이션 리스너를 설정하는 중 오류 발생
+standardContext.applicationSkipped=이전 오류(들)로 인하여, 애플리케이션 리스너들을 설치하는 것을 건너뛰었습니다.
+standardContext.backgroundProcess.instanceManager=인스턴스 매니저 [{0}]을(를) 백그라운드 프로세스에서 처리 중 예외 발생
+standardContext.cluster.noManager=매니저가 발견되지 않습니다. 클러스터 매니저가 사용되어야 하는지 점검합니다. 설정된 클러스터: [{0}], 배포할 수 있는 애플리케이션: [{1}]
+standardContext.configurationFail=하나 이상의 구성요소(들)이, 해당 컨텍스트가 올바로 설정되지 않았다고 표시했습니다.
+standardContext.duplicateListener=리스너 [{0}]이(가) 이미 이 컨텍스트를 위해 설정되어 있습니다. 중복된 정의는 무시되었습니다.
+standardContext.errorPage.error=오류 페이지 위치 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.errorPage.required=ErrorPage는 널이어서는 안됩니다.
+standardContext.errorPage.warning=경고: Servlet 2.4에서 오류 페이지 위치 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.extensionValidationError=필수적으로 요구되는 애플리케이션 extension들이 유효한지 확인하려 시도하는 중 오류 발생
+standardContext.filterFail=하나 이상의 필터들이 시작하지 못했습니다. 모든 상세 사항은 적절한 컨테이너 로그 파일에서 찾을 수 있습니다.
+standardContext.filterMap.either=필터 매핑은 반드시 <url-pattern> 또는 <servlet-name>, 둘 중 하나를 지정해야 합니다.
+standardContext.filterMap.name=필터 매핑이 알 수 없는 필터 이름 [{0}]을(를) 지정하고 있습니다.
+standardContext.filterMap.pattern=필터 매핑에서 유효하지 않은 <url-pattern>: [{0}]
+standardContext.filterStart=필터 [{0}]을(를) 시작하는 중 오류 발생
+standardContext.invalidWrapperClass=[{0}]은(는) StandardWrapper의 하위 클래스가 아닙니다.
+standardContext.isUnavailable=이 애플리케이션은 현재 가용 상태가 아닙니다.
+standardContext.listenerFail=하나 이상의 리스너들이 시작하지 못했습니다. 상세 내역은 적절한 컨테이너 로그 파일에서 찾을 수 있습니다.
+standardContext.listenerStart=Context initialized 이벤트를 [{0}] 클래스의 인스턴스인 리스너에 전송하는 동안 예외 발생
+standardContext.listenerStop=클래스 [{0}]의 인스턴스인 리스너에게 contextDestroyed 이벤트를 전송하는 중 예외 발생
+standardContext.loadOnStartup.loadException=웹 애플리케이션 [{0}] 내의 서블릿 [{1}]이(가) load() 예외를 발생시켰습니다.
+standardContext.loginConfig.errorPage=폼 오류 페이지 [{0}]은(는) 반드시 "/"로 시작해야 합니다.
+standardContext.loginConfig.errorWarning=주의: Servlet 2.4에서 폼 오류 페이지 [{0}]은(는) 반드시 "/" 로 시작해야 합니다.
+standardContext.loginConfig.loginPage=폼 로그인 페이지 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.loginConfig.loginWarning=경고: Servlet 2.4에서 폼 로그인 페이지 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.loginConfig.required=LoginConfig은(는) 널일 수 없습니다.
+standardContext.manager=클래스 [{0}]의 매니저 객체를 설정했습니다.
+standardContext.managerFail=세션 매니저가 시작하지 못했습니다.
+standardContext.namingResource.destroy.fail=이전 Naming 리소스를 소멸시키지 못했습니다.
+standardContext.namingResource.init.fail=새로운 Naming 리소스들을 초기화하지 못했습니다.
+standardContext.noResourceJar=리소스 JAR들은 지원되지 않습니다. [{0}]에서 발견된 JAR는, 이름이 [{1}]인 컨텍스트를 위한 정적 컨텐트를 제공하는 데에 사용되지 않을 것입니다.
+standardContext.notStarted=[{0}](이)라는 이름을 가진 컨텍스트는 아직 시작되지 않았습니다.
+standardContext.notWrapper=컨텍스트의 자식은 반드시 Wrapper여야 합니다.
+standardContext.parameter.duplicate=중복된 컨텍스트 초기화 파라미터: [{0}]
+standardContext.parameter.required=파라미터 이름과 파라미터 값, 둘 다 필수적입니다.
+standardContext.pathInvalid=컨텍스트 경로는 반드시 빈 문자열이거나, 또는 ''/''로 시작하고 ''/''로 끝나지 않는 문자열이어야 합니다. 해당 경로 [{0}]은(는) 이 조건을 충족시키지 않아 [{1}](으)로 변경되었습니다.
+standardContext.postconstruct.duplicate=클래스 [{0}]에서 중복된 PostConstruct 메소드 정의가 발견됨
+standardContext.postconstruct.required=Fully qualified 클래스 이름과 메소드 이름, 둘 다 필수적입니다.
+standardContext.predestroy.duplicate=클래스 [{0}]을(를) 위해, 중복된 @PreDestroy 메소드 정의입니다.
+standardContext.predestroy.required=Fully qualified 클래스 이름과 메소드 이름, 둘 다 필수적으로 요구됩니다.
+standardContext.reloadingCompleted=이름이 [{0}]인 컨텍스트를 다시 로드하는 것을 완료했습니다.
+standardContext.reloadingStarted=이름이 [{0}]인 컨텍스트를 다시 로드하는 작업이 시작되었습니다.
+standardContext.requestListener.requestInit=클래스 [{0}]의 리스너 인스턴스에게, request initialized Lifecycle 이벤트를 보내는 중 예외 발생
+standardContext.resourcesInit=정적 리소스들을 초기화하는 중 오류 발생
+standardContext.resourcesStart=정적 리소스들을 시작하는 중 오류 발생
+standardContext.resourcesStop=정적 리소스들을 중지시키는 중 오류 발생
+standardContext.sciFail=ServletContainerInitializer 처리 중 오류 발생
+standardContext.securityConstraint.mixHttpMethod=<http-method>와 <http-method-omission>을 동일한 web resource collection에서 섞어서 사용하는 것은 허용되지 않습니다.
+standardContext.securityConstraint.pattern=Security constraint 엘리먼트에서 유효하지 않은 <url-pattern> [{0}]입니다.
+standardContext.servletFail=하나 이상의 서블릿들이 시작 시에 제대로 로드되지 않았습니다. 상세 정보는 적절한 컨테이너 로그 파일에서 찾을 수 있습니다.
+standardContext.servletMap.name=서블릿 매핑이 알 수 없는 서블릿 이름 [{0}]을(를) 지정하고 있습니다.
+standardContext.servletMap.pattern=서블릿 매핑에서 유효하지 않은 <url-pattern> [{0}]
+standardContext.startFailed=이전 오류들로 인해 컨텍스트 [{0}]의 시작이 실패했습니다.
+standardContext.startingContext=이름이 [{0}]인 컨텍스트를 시작하는 중 예외 발생
+standardContext.stop.asyncWaitInterrupted=처리 중인 비동기 요청이 완료되기를 기다리기 위해 unloadDelay 밀리초를 대기하는 동안 인터럽트를 받았습니다. 더 이상의 지체 없이 컨텍스트 중지 작업을 계속할 것입니다.
+standardContext.stoppingContext=이름이 [{0}]인 컨텍스트를 중지시키는 중 예외 발생
+standardContext.urlPattern.patternWarning=경고: Servlet 2.4에서 URL 패턴 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.workCreateException=디렉토리 [{0}]와(과) CATALINA_HOME [{1}](으)로부터, 컨텍스트 [{2}]을(를) 위한 작업 디렉토리의 절대 경로를 결정하지 못했습니다.
+standardContext.workCreateFail=컨텍스트 [{1}]을(를) 위한 작업 디렉토리 [{0}]을(를) 생성하지 못했습니다.
+standardContext.workPath=컨텍스트 [{0}]을(를) 위한 작업 경로를 구하는 중 예외 발생
+
+standardContextValve.acknowledgeException=요청에 대해, 100 (Continue) 응답과 함께, ACK을 보내지 못했습니다.
+
+standardEngine.jvmRouteFail=엔진의 jvmRoute 속성을 시스템 프로퍼티로부터 설정하지 못했습니다.
+standardEngine.notHost=엔진의 자식은 반드시 호스트여야 합니다.
+standardEngine.notParent=엔진은 부모 컨테이너를 가질 수 없습니다.
+
+standardHost.clientAbort=원격 클라이언트가 요청을 중단시켰습니다. IOException: [{0}]
+standardHost.invalidErrorReportValveClass=지정된 오류 보고 Valve 클래스 [{0}]을(를) 로드할 수 없었습니다.
+standardHost.noContext=이 요청을 처리하기 위한 컨텍스트가 설정되지 않았습니다.
+standardHost.notContext=호스트의 자식은 반드시 컨텍스트이어야 합니다.
+standardHost.nullName=호스트 이름이 필수적입니다.
+standardHost.problematicAppBase=호스트 [{0}]에서 appBase를 위해 빈 문자열을 사용하는 것은, 결국 appBase를 CATALINA_BASE로 설정하게 되는데, 이는 좋은 생각이 아닙니다.
+
+standardHostValue.customStatusFailed=커스텀 오류 페이지 [{0}]은(는) 올바르게 디스패치될 수 없었습니다.
+
+standardServer.accept.timeout=셧다운 명령을 위해 listen하고 있는 소켓이, accept()를 호출 한 후, 예기치 않은 제한 시간 초과([{0}] 밀리초)를 발생시켰습니다. 버그 56684가 발생한 경우일까요?
+standardServer.shutdownViaPort=셧다운 포트를 통해 유효한 셧다운 명령을 받았습니다. 서버 인스턴스를 중지시킵니다.
+
+standardService.start.name=서비스 [{0}]을(를) 시작합니다.
+standardService.stop.name=서비스 [{0}]을(를) 중지시킵니다.
+
+standardWrapper.allocate=서블릿 인스턴스를 할당하는 중 오류 발생
+standardWrapper.allocateException=서블릿 [{0}]을(를) 위해 할당하던 중 예외 발생
+standardWrapper.deallocateException=서블릿 [{0}]을(를) 위한 할당 해제 처리 중 예외 발생
+standardWrapper.destroyException=서블릿 [{0}]을(를) 위한 Servlet.destroy() 호출 중 익셉션이 발생했습니다.
+standardWrapper.destroyInstance=서블릿 [{0}]을(를) 위한 InstanceManager.destroy() 호출이 예외를 발생시켰습니다.
+standardWrapper.initException=서블릿 [{0}]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.
+standardWrapper.instantiate=서블릿 클래스 [{0}](으)로부터 인스턴스 생성하는 중 오류 발생
+standardWrapper.isUnavailable=서블릿 [{0}]은(는) 현재 가용하지 않습니다.
+standardWrapper.notChild=Wrapper 컨테이너는 자식 컨테이너들을 가질 수 없습니다.
+standardWrapper.notClass=서블릿 [{0}]을(를) 위한 서블릿 클래스가 지정되지 않았습니다.
+standardWrapper.notContext=Wrapper의 부모 컨테이너는 반드시 컨텍스트여야 합니다.
+standardWrapper.notFound=서블릿 [{0}]은(는) 가용하지 않습니다.
+standardWrapper.notServlet=클래스 [{0}]은(는) 서블릿이 아닙니다,
+standardWrapper.releaseFilters=서블릿 [{0}]을(를) 위해 필터를 해제하는 중 예외 발생
+standardWrapper.serviceException=경로가 [{1}]인 컨텍스트의 서블릿 [{0}]을(를) 위한 Servlet.service() 호출이 예외를 발생시켰습니다.
+standardWrapper.serviceExceptionRoot=경로 [{1}]의 컨텍스트 내의 서블릿 [{0}]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [{2}]을(를) 발생시켰습니다.
+standardWrapper.unavailable=서블릿 [{0}]을(를) 가용하지 않은 상태로 표시합니다.
+standardWrapper.unloadException=서블릿 [{0}]을(를) 위한 unload() 호출 시, 예외를 발생시켰습니다.
+standardWrapper.unloading=서블릿이 언로드되었기 때문에, 서블릿 [{0}]을(를) 할당할 수 없습니다.
+standardWrapper.waiting=서블릿 [{1}]을(를) 위해, [{0}]개의 인스턴스(들)이 할당 해제되기를 기다립니다.
+
+threadLocalLeakPreventionListener.containerEvent.error=컨테이너 이벤트 [{0}]을(를) 처리하는 중 예외 발생
+threadLocalLeakPreventionListener.lifecycleEvent.error=Lifecycle 이벤트 [{0}]을(를) 처리하는 중 예외 발생
diff --git a/java/org/apache/catalina/deploy/LocalStrings_ko.properties b/java/org/apache/catalina/deploy/LocalStrings_ko.properties
new file mode 100644
index 0000000..4014c60
--- /dev/null
+++ b/java/org/apache/catalina/deploy/LocalStrings_ko.properties
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+namingResources.cleanupCloseFailed=컨테이너 [{2}] 내의 리소스 [{1}]을(를) 위한 메소드 [{0}]을(를) 호출하지 못했으므로, 해당 리소스를 위한 cleanup이 수행되지 않았습니다.
+namingResources.cleanupCloseSecurity=컨테이너 [{2}]에서 리소스 [{1}]을(를) 위한 메소드 [{0}]을(를) 찾을 수 없어서, 해당 리소스에 대한 cleanup이 수행되지 않았습니다.
+namingResources.cleanupNoClose=컨테이너 [{1}]의 리소스 [{0}]은(는) [{2}] 메소드를 가지고 있지 않아, 해당 리소스에 대한 cleanup이 수행되지 않았습니다.
+namingResources.cleanupNoContext=컨테이너 [{0}]을(를) 위한 JNDI Naming 컨텍스트를 조회하지 못하여, 해당 컨테이너를 위한 cleanup이 수행되지 않았습니다.
+namingResources.cleanupNoResource=컨테이터 [{1}]을(를) 위한 JNDI 리소스 [{0}]을(를) 검색하지 못하였으므로, 해당 리소스에 대한 cleanup이 수행되지 않았습니다.
+namingResources.ejbLookupLink=EJB 레퍼런스 [{0}]이(가) ejb-link와 lookup-name 둘 다를 지정했습니다.
+namingResources.envEntryLookupValue=Environment 엔트리 [{0}]은(는) lookup-name과 값 둘 다 지정하고 있습니다.
+namingResources.mbeanCreateFail=Naming 리소스 [{0}]을(를) 위한 MBean을 생성하지 못했습니다.
+namingResources.mbeanDestroyFail=Naming 리소스 [{0}]을(를) 위한 MBean을 소멸시키지 못했습니다.
+namingResources.resourceTypeFail=[{0}](이)라는 이름의 JNDI 리소스는 타입이 [{1}]이지만, 해당 타입은 해당 리소스를 위해 설정된 injection 대상(들)의 타입(들)과 일관되지 않습니다.
diff --git a/java/org/apache/catalina/filters/LocalStrings_ko.properties b/java/org/apache/catalina/filters/LocalStrings_ko.properties
new file mode 100644
index 0000000..859c7c1
--- /dev/null
+++ b/java/org/apache/catalina/filters/LocalStrings_ko.properties
@@ -0,0 +1,65 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+addDefaultCharset.unsupportedCharset=지정된 문자셋 [{0}]은(는) 지원되지 않습니다.
+
+corsFilter.invalidPreflightMaxAge=preflightMaxAge를 파싱할 수 없습니다.
+corsFilter.invalidSupportsCredentials=allowedOrigins=[*]인 상태일 때, supportsCredentials=[true]로 설정하는 것은 허용되지 않습니다.
+corsFilter.nullRequest=HttpServletRequest 객체가 널입니다.
+corsFilter.nullRequestType=CORSRequestType 객체가 널입니다.
+corsFilter.onlyHttp=CORS는 HttpServletRequest나 HttpServletResponse가 아닌 요청 또는 응답을 지원하지 않습니다.
+corsFilter.wrongType1=타입이 [{0}]인 HttpServletRequest 객체가 요구됩니다.
+corsFilter.wrongType2=타입이 [{0}]이거나 [{1}]인 HttpServletRequest 객체가 요구됩니다.
+
+csrfPrevention.invalidRandomClass=randomClass로 설정된 클래스 [{0}]을(를) 사용하여, java.util.Random 객체를 생성할 수 없습니다.
+
+expiresFilter.exceptionProcessingParameter=설정 파라미터를 처리하는 중 예외 발생 (이름:[{0}], 값:[{1}])
+expiresFilter.expirationHeaderAlreadyDefined=요청 [{0}]에 대한 응답 상태 [{1}], content-type [{2}], expiration 헤더는 이미 정의되었음.
+expiresFilter.filterInitialized=설정 [{0}]와(과) 함께 필터가 초기화 되었습니다.
+expiresFilter.invalidDurationNumber=지시어 [{1}] 내에서 유효하지 않은 duration (숫자) 값: [{0}]
+expiresFilter.invalidDurationUnit=지시어 [{1}] 내에서 유효하지 않은 지속 시간 단위 (years|months|weeks|days|hours|minutes|seconds) [{0}]
+expiresFilter.noDurationFound=지시어 [{0}] 내에서 duration을 찾을 수 없습니다.
+expiresFilter.noDurationUnitAfterAmount=지시어 [{1}] 내에서, 수량 값 [{0}] 이후에, 지속시간 단위를 찾을 수 없습니다.
+expiresFilter.noExpirationConfigured=요청 [{0}]에 대하여, 응답 상태: [{1}], content-type: [{2}], expiration헤더는 설정 안됨.
+expiresFilter.noExpirationConfiguredForContentType=Content-type [{0}]을(를) 위한 Expires 설정이 존재하지 않습니다.
+expiresFilter.numberError=쉼표로 구분된 목록 [{1}] 내의, [{0}]번째 (첫번째 인덱스는 0) 숫자를 파싱하는 중 예외 발생
+expiresFilter.responseAlreadyCommited=요청 [{0}]: 이미 커밋된 응답에 ExpiresFilter를 적용할 수 없습니다.
+expiresFilter.setExpirationDate=요청: [{0}], 응답 상태: [{1}], Content-Type: [{2}]. 만료 시간 설정: [{3}]
+expiresFilter.skippedStatusCode=응답 상태가 [{1}](이)고 Content-Type이 [{1}]인 요청 [{0}]에 대하여, 주어진 상태를 고려하여 Expiration 헤더 생성을 건너뜁니다.
+expiresFilter.startingPointInvalid=지시어 [{1}]에 있는 [{0}]은(는) Expiration 설정의 시작 점 (access|now|modification|a<seconds>|m<seconds>)로서 유효하지 않습니다.
+expiresFilter.startingPointNotFound=지시어 [{0}] 내에서 시작 점(access|now|modification|a<seconds>|m<seconds>)을 찾을 수 없습니다.
+expiresFilter.unknownParameterIgnored=값이 [{1}]인 알 수 없는 파라미터 [{0}]은(는) 무시됩니다!
+expiresFilter.unsupportedStartingPoint=지원되지 않는 시작 점 [{0}]
+expiresFilter.useDefaultConfiguration=Content-Type [{1}]을(를) 위해, 기본값 [{0}]을(를) 사용하여 [{2}]을(를) 반환합니다.
+expiresFilter.useMatchingConfiguration=[{0}]을(를) 사용하여 Content-type [{2}]이(가) [{1}]와(과) 부합되는지 점검하여 [{3}]을(를) 반환합니다.
+
+filterbase.noSuchProperty=타입이 [{1}]인 필터들에 프로퍼티 [{0}]이(가) 정의되지 않았습니다.
+
+http.403=지정된 리소스 [{0}]에 접근하는 것이 금지되어 있습니다.
+
+httpHeaderSecurityFilter.clickjack.invalid=Anti-clickjacking 헤더로 유효하지 않은 값 [{0}]이(가) 지정되었습니다.
+httpHeaderSecurityFilter.committed=HttpHeaderSecurityFilter에 진입할 때에, 응답이 이미 커밋되었기 때문에, HTTP 헤더들을 추가할 수 없습니다.
+
+remoteCidrFilter.invalid=[{0}]을(를) 위해, 유효하지 않은 설정이 제공되었습니다. 상세 정보는 이전 메시지들을 확인하십시오.
+remoteCidrFilter.noRemoteIp=클라이언트가 IP 주소를 가지고 있지 않습니다. 요청이 거절되었습니다.
+
+remoteIpFilter.invalidNumber=파라미터 [{0}]을(를) 위해 불허되는 숫자입니다: [{1}]
+
+requestFilter.deny=프로퍼티 [{1}]에 기반하여, [{0}]을(를) 위한 요청이 거부되었습니다.
+
+restCsrfPreventionFilter.invalidNonce=CSRF nonce validation 실패
+
+webDavFilter.xpProblem=WebdavFixFilter: XP-x64-SP2 클라이언트는, WebDAV 서블릿과 정상 동작하지 않는 것으로 알려져 있습니다.
+webDavFilter.xpRootContext=WebdavFixFilter: XP-x64-SP2 클라이언트는, 오직 루트 컨텍스트와 정상 동작할 것입니다.
diff --git a/java/org/apache/catalina/ha/deploy/LocalStrings_ko.properties b/java/org/apache/catalina/ha/deploy/LocalStrings_ko.properties
new file mode 100644
index 0000000..5bc13cd
--- /dev/null
+++ b/java/org/apache/catalina/ha/deploy/LocalStrings_ko.properties
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+farmWarDeployer.alreadyDeployed=webapp [{0}](들)이 이미 배치되어 있습니다.
+farmWarDeployer.deleteFail=[{0}]을(를) 삭제하지 못했습니다.
+farmWarDeployer.deployEnd=[{0}](으)로부터의 배치 작업이 완료됐습니다.
+farmWarDeployer.fileCopyFail=[{0}](으)로부터 [{1}](으)로 복사할 수 없습니다.
+farmWarDeployer.hostOnly=FarmWarDeployer는 오직 하위 엘리먼트인 호스트 클러스터 엘리먼트에서 존재해야 합니다.
+farmWarDeployer.hostParentEngine=FarmWarDeployer는, 오직 [{0}]의 부모가 엔진일 때에만, 정상 동작할 수 있습니다!
+farmWarDeployer.mbeanNameFail=엔진 [{0}]와(과) 호스트 [{1}]을(를) 위한 MBean 객체 이름을 구성할 수 없습니다.
+farmWarDeployer.modInstall=[{1}](으)로부터 웹 애플리케이션 [{0}]을(를) 설치합니다.
+farmWarDeployer.modInstallFail=WAR 파일을 설치할 수 없습니다.
+farmWarDeployer.msgIoe=farm deploy 파일 메시지를 읽을 수 없습니다.
+farmWarDeployer.msgRxDeploy=클러스터 배치 경로 [{0}]을(를) 받았음, war: [{1}]
+farmWarDeployer.msgRxUndeploy=경로 [{0}]에 대한 클러스터 배치 제거 메시지를 수신했습니다.
+farmWarDeployer.removeFailLocal=[{0}](으)로부터 로컬 삭제가 실패했습니다.
+farmWarDeployer.removeFailRemote=FarmWarDeployer가 컨텍스트 [{0}]을(를) 로컬에서 제거하지 못하였습니다. 다른 Manager가 해당 애플리케이션을 서비스 중에 있습니다!
+farmWarDeployer.removeLocal=웹 애플리케이션 [{0}]을(를) 제거합니다.
+farmWarDeployer.removeLocalFail=WAR 파일을 제거할 수 없습니다.
+farmWarDeployer.removeStart=웹 애플리케이션 [{0}]을(를) 전 클러스터에서 제거
+farmWarDeployer.removeTxMsg=전 클러스터에서 [{0}]에 대한 배치를 제거 할 것을 전송합니다.
+farmWarDeployer.renameFail=[{0}]을(를) [{1}](으)로 이름을 변경하지 못했습니다.
+farmWarDeployer.sendEnd=클러스터 war 배치 경로 [{0}]을(를) 전송합니다. war [{1}]은(는) 완료되었습니다.
+farmWarDeployer.sendFragment=클러스터 war 파일 (경로: [{0}]) [{1}]을(를) [{2}](으)로 전송합니다.
+farmWarDeployer.sendStart=클러스터 war 배치 경로 [{0}]을(를) 전송합니다, war [{1}]이(가) 시작되었습니다.
+farmWarDeployer.servicingDeploy=애플리케이션 [{0}]이(가) 서비스되고 있습니다. War 파일 [{1}]을(를) 다시 touch 하십시오!
+farmWarDeployer.servicingUndeploy=애플리케이션 [{0}]이(가) 서비스 되고 있는 중이어서, 백업 클러스터 노드로부터 제거될 수 없습니다.
+farmWarDeployer.started=클러스터 FarmWarDeployer가 시작되었습니다.
+farmWarDeployer.stopped=클러스터 FarmWarDeployer가 중지되었습니다.
+farmWarDeployer.undeployEnd=컨텍스트 [{0}]의 배치를 제거했습니다.
+farmWarDeployer.undeployLocal=로컬 컨텍스트 [{0}]의 배치를 제거합니다.
+farmWarDeployer.watchDir=클러스터 배치관리자가 변경사항들을 탐지하기 위해 [{0}]을(를) 감시합니다.
+
+fileNewFail=[{0}]을(를) 생성할 수 없습니다.
+
+warWatcher.cantListWatchDir=WatchDir [{0}] 내의 파일 목록을 구할 수 없습니다. 해당 디렉토리가 존재하는지 그리고 읽기 권한이 있는지 점검하십시오.
+warWatcher.checkWarResult=WarInfo.check()가 [{1}]을(를) 위해 [{0}]을(를) 반환했습니다.
+warWatcher.checkingWar=WAR 파일 [{0}]을(를) 점검합니다.
+warWatcher.checkingWars=[{0}] 내의 WAR들을 점검합니다.
+warWatcher.listedFileDoesNotExist=[{0}]이(가) [{1}]에서 탐지되었으나, 존재하지 않습니다. [{1}]에 대한 디렉토리 접근 허가 설정을 점검해 보시겠습니까?
diff --git a/java/org/apache/catalina/ha/session/LocalStrings_ko.properties b/java/org/apache/catalina/ha/session/LocalStrings_ko.properties
new file mode 100644
index 0000000..3e84a1a
--- /dev/null
+++ b/java/org/apache/catalina/ha/session/LocalStrings_ko.properties
@@ -0,0 +1,84 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+backupManager.noCluster=이 컨텍스트 [{0}]와(과) 연관된 클러스터가 없습니다.
+backupManager.startFailed=백업매니저 [{0}]을(를) 시작하지 못했습니다.
+backupManager.startUnable=BackupManager를 시작할 수 없습니다: [{0}]
+backupManager.stopped=매니저 [{0}]이(가) 중지되고 있습니다.
+
+deltaManager.createMessage.access=매니저 [{0}]: 세션(ID: [{1}])을 위한 세션 접근 메시지를 생성합니다.
+deltaManager.createMessage.accessChangePrimary=매니저 [{0}]: 세션(ID: [{1}])을 위해 Primary 노드 변경 메시지를 생성합니다.
+deltaManager.createMessage.allSessionData=매니저 [{0}]이(가) 모든 세션 데이터를 전송했습니다.
+deltaManager.createMessage.allSessionTransfered=매니저 [{0}]이(가), 모든 세션 데이터 전송 완료 메시지를 보냈습니다.
+deltaManager.createMessage.delta=매니저 [{0}]: 세션(ID: [{1}])을 위한 델타 요청 메시지를 생성합니다.
+deltaManager.createMessage.expire=매니저 [{0}]: 세션(ID: [{1}])을 위한 세션 만료 메시지를 생성합니다.
+deltaManager.createMessage.unableCreateDeltaRequest=세션 ID [{0}]을(를) 위한 델타 요청을 직렬화할 수 없습니다.
+deltaManager.createSession.newSession=ID가 [{0}]인 DeltaSession을 생성했습니다. 총 개수=[{1}]
+deltaManager.dropMessage=매니저 [{0}]: GET_ALL_SESSIONS 동기화 국면 내에서, 메시지 [{1}]을(를) 무시합니다. 시작 시간: [{2}], 메시지의 타임스탬프: [{3}]
+deltaManager.expireSessions=매니저 [{0}]이(가) 셧다운 시에 세션들을 만료시킵니다.
+deltaManager.foundMasterMember=컨텍스트 [{0}]을(를) 위한 복제 마스터 멤버 [{1}]을(를) 찾았습니다.
+deltaManager.loading.cnfe=저장된 세션들을 로드하는 중 ClassNotFoundException 발생: [{0}]
+deltaManager.loading.existing.session=기존 세션 [{0}]을(를) 오버로드합니다.
+deltaManager.loading.ioe=저장된 세션들을 로드하는 중 IOException 발생: [{0}]
+deltaManager.managerLoad=저장소로부터 세션들을 로드하는 중 예외 발생
+deltaManager.noCluster=시작 중... 이 컨텍스트와 연관된 클러스터가 없습니다: [{0}]
+deltaManager.noContextManager=매니저 [{0}]: [{1}]에서 전송되었던 ''Get all session data'' 메시지에 응답하여, ''No matching context manager'' 메시지를 [{2}] 밀리초 후에 받았습니다.
+deltaManager.noMasterMember=시작 중... 도메인 [{1}]에 컨텍스트 [{0}]을(를) 위한 다른 멤버들은 없는 상태입니다.
+deltaManager.noMembers=매니저 [{0}]: 상태 이전 작업을 건너뜁니다. 클러스터 그룹 내에 활성화된 멤버가 없습니다.
+deltaManager.noSessionState=매니저 [{0}]: [{1}]에서 보낸 세션 상태 메시지를 받지 못했습니다. [{2}] 밀리초 이후 제한 시간 초과되었습니다.
+deltaManager.receiveMessage.accessed=매니저 [{0}]: 세션(ID: [{1}])을 위한 세션 접근 메시지를 받았습니다.
+deltaManager.receiveMessage.allSessionDataAfter=매니저 [{0}]: 모든 세션 상태가 역직렬화되었습니다.
+deltaManager.receiveMessage.allSessionDataBegin=매니저 [{0}]: 모든 세션 상태 데이터를 받았습니다.
+deltaManager.receiveMessage.createNewSession=매니저 [{0}]: 세션 [{1}]을(를) 위한 세션 생성됨 메시지를 수신했습니다.
+deltaManager.receiveMessage.delta=매니저 [{0}]: 세션(ID: [{1}])을 위한 세션 델타 메시지를 받았습니다.
+deltaManager.receiveMessage.delta.unknown=매니저 [{0}]: 알 수 없는 세션 [{1}]을(를) 위한 세션 델타를 받았습니다.
+deltaManager.receiveMessage.error=매니저 [{0}]: TCP 채널을 통해 메시지를 받을 수 없습니다.
+deltaManager.receiveMessage.eventType=매니저 [{0}]: 타입이 [{1}]인 SessionMessage를 [{2}](으)로부터 받았습니다.
+deltaManager.receiveMessage.expired=매니저 [{0}]: 세션 [{1}]을(를) 위한 세션 만료 메시지를 받았습니다.
+deltaManager.receiveMessage.noContextManager=매니저 [{0}]이(가) 노드 [{1}:{2}](으)로부터 no context manager 메시지를 받았습니다.
+deltaManager.receiveMessage.transfercomplete=매니저 [{0}]이(가) 노드 [{1}:{2}](으)로부터, 세션 상태 이전 완료 메시지를 받았습니다.
+deltaManager.receiveMessage.unloadingAfter=매니저 [{0}]: 세션들을 언로드하는 작업이 완료되었습니다.
+deltaManager.receiveMessage.unloadingBegin=매니저 [{0}]: 세션들에 대해 언로드를 시작합니다.
+deltaManager.registerCluster=매니저 [{0}]을(를), [{2}](이)라는 이름의 클러스터 엘리먼트 [{1}](으)로 등록합니다.
+deltaManager.sendMessage.newSession=매니저 [{0}]이(가) 새로운 세션 [{1}]을(를) 전송합니다.
+deltaManager.sessionReceived=매니저 [{0}]; [{1}]에서 전송된 세션 상태를 [{2}] 밀리초 이내에 받음
+deltaManager.startClustering=[{0}]에서 클러스터 매니저를 시작합니다.
+deltaManager.stopped=매니저 [{0}]이(가) 중지됩니다.
+deltaManager.unableSerializeSessionID=세션 ID [{0}]을(를) 직렬화할 수 없습니다.
+deltaManager.unloading.ioe=세션들을 저장하는 중 IOException 발생: [{0}]
+deltaManager.waitForSessionState=매니저 [{0}]: [{1}](으)로부터 세션 상태를 요청합니다. 만일 [{2}]초 이내에 세션 상태를 받지 못하면, 이 오퍼레이션은 제한 시간 초과 처리될 것입니다.
+
+deltaRequest.showPrincipal=Principal [{0}]이(가) 세션 [{1}]에 설정되었습니다.
+deltaRequest.wrongPrincipalClass=ClusterManager는 오직 GenericPrincipal만을 지원합니다. 사용된 realm은 principal 클래스 [{0}]을(를) 사용했습니다.
+
+deltaSession.notifying=클러스터에 세션 만료를 통지합니다: primary여부: [{0}], 세션ID: [{1}]
+deltaSession.readSession=readObject()가 세션 [{0}]을(를) 로드합니다.
+deltaSession.writeSession=writeObject()가 세션 [{0}]을(를) 저장합니다.
+
+jvmRoute.cannotFindSession=세션 [{0}]을(를) 찾을 수 없습니다.
+jvmRoute.changeSession=세션을 [{0}]에서 [{1}](으)로 변경했습니다.
+jvmRoute.failover=다른 jvmRoute로 Failover를 탐지했습니다. 원래의 라우트: [{0}], 새로운 라우트: [{1}]. 세션 ID: [{2}]
+jvmRoute.foundManager=[{1}]에서 클러스터 매니저 [{0}]을(를) 찾았습니다.
+jvmRoute.missingJvmRouteAttribute=엔진의 jvmRoute 속성이 설정되지 않았습니다!
+jvmRoute.noCluster=JvmRouterBinderValve가 설정되었지만, 클러스터링이 사용되고 있지 않습니다. PersistentManager가 사용되는 경우, Fail over는 여전히 정상 동작할 것입니다.
+jvmRoute.notFoundManager=[{0}]에서 클러스터 매니저를 찾을 수 없습니다.
+jvmRoute.set.orignalsessionid=요청의 속성 [{0}]에 원래의 세션 ID를 설정합니다: [{1}]
+jvmRoute.turnoverInfo=Failover를 위한 jvmRoute 교체 수행 시간: [{0}] 밀리초
+jvmRoute.valve.started=JvmRouteBinderValve가 시작됐습니다.
+jvmRoute.valve.stopped=JvmRouteBinderValve가 중지되었습니다.
+
+standardSession.notSerializable=세션 [{1}]을 위한 세션 속성 [{0}]을(를) 직렬화할 수 없습니다.
+standardSession.removeAttribute.ise=removeAttribute: 세션이 이미 무효화되었습니다.
+standardSession.setAttribute.namenull=setAttribute: name 파라미터는 널일 수 없습니다.
diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings_ko.properties b/java/org/apache/catalina/ha/tcp/LocalStrings_ko.properties
new file mode 100644
index 0000000..412fb5d
--- /dev/null
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings_ko.properties
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ReplicationValve.crossContext.add=교차 컨텍스트 세션 복제 컨테이너를 replicationValve의 threadlocal에 추가합니다.
+ReplicationValve.crossContext.registerSession=컨텍스트 [{1}](으)로부터 세션 ID가 [{0}]인 교차 컨텍스트 세션을 등록합니다.
+ReplicationValve.crossContext.remove=replicationValve의 threadlocal로부터, 교차 컨텍스트 세션 복제 컨테이너를 제거합니다.
+ReplicationValve.crossContext.sendDelta=컨텍스트 [{0}](으)로부터 교차 컨텍스트 세션 델타를 보냅니다.
+ReplicationValve.filter.failure=필터 컴파일을 할 수 없습니다. filter=[{0}]
+ReplicationValve.filter.loading=요청 필터를 로드합니다: [{0}]
+ReplicationValve.invoke.uri=[{0}]에 복제 요청을 호출합니다.
+ReplicationValve.nocluster=이 요청을 위해 설정된 클러스터가 없습니다.
+ReplicationValve.resetDeltaRequest=클러스터가 독립형(standalone)입니다: 컨텍스트 [{0}]에서 세션 요청 델타를 재설정(reset)합니다.
+ReplicationValve.send.failure=복제 요청을 수행 할 수 없습니다.
+ReplicationValve.send.invalid.failure=세션 [id={0}] 유효하지 않음 메시지를 클러스터에 전송할 수 없습니다.
+ReplicationValve.session.found=컨텍스트 [{0}]에서 세션 [{1}]을(를) 발견했으나, 이는 ClusterSession이 아닙니다.
+ReplicationValve.session.indicator=컨텍스트 [{0}]: 요청 속성 [{2}]에 있는 세션 [{1}]의 Primary 여부: [{3}]
+ReplicationValve.session.invalid=컨텍스트 [{0}]: 요청된 세션 [{1}]이(가), 유효하지 않거나, 제거되었거나, 또는 이 클러스터 노드로 복제되지 않았습니다.
+ReplicationValve.stats=[{2}]개의 요청들, [{3}]개의 전송 요청들, [{4}]개의 교차 컨텍스트 요청들, 그리고 [{5}]개의 필터 요청들을 처리하는 동안, 평균 요청 시간=[{0}] 밀리초, 클러스터 오버헤드 시간=[{1}] 밀리초가 소요되었습니다. (총 요청 처리 시간=[{6}] 밀리초, 총 클러스터 요청 처리 시간=[{7}] 밀리초)
diff --git a/java/org/apache/catalina/loader/LocalStrings_ko.properties b/java/org/apache/catalina/loader/LocalStrings_ko.properties
new file mode 100644
index 0000000..bfc5708
--- /dev/null
+++ b/java/org/apache/catalina/loader/LocalStrings_ko.properties
@@ -0,0 +1,60 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+webappClassLoader.addExportsRmi=Java 9에서 실행하면서 RMI Target 메모리 누수 탐지를 사용 가능하게 하려면, "--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"를 JVM 명령 행 아규먼트에 추가해야 합니다. 또는, RMI Target 메모리 누수 탐지를 사용불능 상태로 설정함으로써, 이 경고를 없앨 수도 있습니다.
+webappClassLoader.addExportsThreadLocal=Java 9 환경에서 실행할 때에는, ThreadLocal 메모리 누수 탐지를 위하여, "--add-opens=java.base/java.lang=ALL-UNNAMED"를 JVM 명령 행 아규먼트들에 추가해야 합니다. 또는, ThreadLocal 메모리 누수 탐지를 사용불능 상태로 설정함으로써, 이 경고 메시지를 없앨 수도 있습니다.
+webappClassLoader.addTransformer=클래스 파일 Transformer [{0}]을(를) 웹 애플리케이션 [{1}]에 추가했습니다.
+webappClassLoader.addTransformer.duplicate=웹 애플리케이션 [{1}]에 클래스 파일 변환기 [{0}]을(를) 추가하기 위한, 중복된 호출을 무시합니다.
+webappClassLoader.addTransformer.illegalArgument=웹 애플리케이션 [{0}]이(가) 널인, 클래스 파일 Transformer을 추가하려 시도했습니다.
+webappClassLoader.checkThreadLocalsForLeaks=웹 애플리케이션 [{0}]이(가), 타입 [{1}]인 키와 (값: [{2}]) 타입 [{3}]인 값을 (값: [{4}]) 사용하여 ThreadLocal 객체를 생성했지만, 웹 애플리케이션이 중지될 때 그것을 제거하지 못했습니다. 혹시 있을 법한 메모리 누수를 방지하기 위하여, 시간을 두고 쓰레드들을 재생성할 것입니다.
+webappClassLoader.checkThreadLocalsForLeaks.badKey=타입이 [{0}]인 키의 문자열 representation을 결정할 수 없습니다.
+webappClassLoader.checkThreadLocalsForLeaks.badValue=타입이 [{0}]인 값의 문자열 representation을 결정할 수 없습니다.
+webappClassLoader.checkThreadLocalsForLeaks.unknown=알 수 없음
+webappClassLoader.checkThreadLocalsForLeaksFail=웹 애플리케이션 [{0}]을(를) 위한 ThreadLocal 참조들에 대한 점검이 실패했습니다.
+webappClassLoader.checkThreadLocalsForLeaksNone=웹 애플리케이션 [{0}]이(가), 타입 [{1}]의 키(값: [{2}])와 타입 [{3}]의 값(값: [{4}])을 사용하여, ThreadLocal Map을 생성했습니다. 해당 ThreadLocal Map은 weak 키들을 유지하고 있기 때문에, 이는 메모리 누수가 아닙니다.
+webappClassLoader.checkThreadLocalsForLeaksNull=웹 애플리케이션 [{0}]이(가), 타입 [{1}]인 키를 (값: [{2}]) 사용하여 ThreadLocal 객체를 생성했습니다. 해당 ThreadLocal 객체가 올바르게 널로 설정되었으므로, 해당 키는 GC에 의해 제거 될 것입니다.
+webappClassLoader.checkThreadsHttpClient=웹 애플리케이션 클래스로더를 사용하는 HttpClient keep-alive 쓰레드를 발견했습니다. 쓰레드의 클래스로더를 부모 클래스로더로 전환시켰습니다.
+webappClassLoader.clearJdbc=웹 애플리케이션 [{0}]이(가) JDBC 드라이버 [{1}]을(를) 등록했지만, 웹 애플리케이션이 중지될 때, 해당 JDBC 드라이버의 등록을 제거하지 못했습니다. 메모리 누수를 방지하기 위하여, 등록을 강제로 제거했습니다.
+webappClassLoader.clearObjectStreamClassCachesFail=웹 애플리케이션 [{0}]을(를) 위해, ObjectStreamClass$Caches로부터 soft references를 폐기하지 못했습니다.
+webappClassLoader.clearReferencesResourceBundlesCount=웹 애플리케이션 [{1}]을(를) 위한 캐시로부터, ResourceBundle [{0}]에 대한 참조들을 제거했습니다.
+webappClassLoader.clearReferencesResourceBundlesFail=웹 애플리케이션 [{0}]을(를) 위한 ResourceBundle 참조들을 폐기하지 못했습니다.
+webappClassLoader.clearRmi=스텁 클래스 [{0}]와(과) 값 [{1}]을(를) 가진 RMI Target을 발견했습니다. 이 RMI Target은 메모리 누수를 방지하기 위하여 강제로 제거되었습니다.
+webappClassLoader.clearRmiFail=sun.rmi.transport.Target으로부터 참조된 컨텍스트 클래스로더를, 웹 애플리케이션 [{0}]을(를) 위해, 폐기하지 못했습니다.
+webappClassLoader.clearRmiInfo=웹 애플리케이션 [{0}]을(를) 위한 컨텍스트 클래스로더를 폐기하기 위한, 클래스 sun.rmi.transport.Target을 찾지 못했습니다. 이는 Sun JVM들이 아닌 환경에서 발생할 수 있습니다.
+webappClassLoader.getThreadGroupError=ThreadGroup [{0}]의 부모 ThreadGroup을 얻을 수 없습니다. 잠재적인 메모리 누수 문제를 찾기 위해 모든 쓰레드들을 점검하는 것이 불가능합니다.
+webappClassLoader.illegalJarPath=[{0}](이)라는 이름을 가진, 불허되는 JAR 엔트리가 탐지되었습니다.
+webappClassLoader.javaseClassLoaderNull=j2seClassLoader 속성이 널이어서는 안됩니다.
+webappClassLoader.jdbcRemoveFailed=웹 애플리케이션 [{0}]을(를) 위한 JDBC 드라이버의 등록을 제거하지 못했습니다.
+webappClassLoader.loadedByThisOrChildFail=컨텍스트 [{1}]에서 잠재적 메모리 누수를 방지하기 위해, [{0}] 클래스의 인스턴스 내에 있는 엔트리들을 모두 점검하려는 시도가 실패했습니다.
+webappClassLoader.readError=리소스 읽기 오류 : [{0}]을(를) 로드할 수 없었습니다.
+webappClassLoader.removeTransformer=웹 애플리케이션 [{1}](으)로부터 클래스 파일 Transformer [{0}]을(를) 제거했습니다.
+webappClassLoader.stopThreadFail=웹 애플리케이션 [{1}]을 위한, [{0}](이)라는 이름의 쓰레드를 종료시키지 못했습니다.
+webappClassLoader.stopTimerThreadFail=웹 애플리케이션 [{1}]을(를) 위한, [{0}](이)라는 이름의 TimerThread를 종료시키지 못했습니다.
+webappClassLoader.stopped=불허되는 접근: 이 웹 애플리케이션 인스턴스는 이미 중지되었습니다. [{0}]을(를) 로드할 수 없습니다. 디버그 목적 및 불허되는 접근을 발생시킨 해당 쓰레드를 종료시키기 위한 시도로서, 다음 스택 트레이스가 생성됩니다.
+webappClassLoader.transformError=Instrumentation 오류: 클래스 파일 포맷이 규약을 따르지 않기 때문에, 클래스 [{0}]을(를) 변환시킬 수 없었습니다.
+webappClassLoader.validationErrorJarPath=[{0}](이)라는 이름의 엔트리를 JAR 파일 내에서 찾을 수 없습니다.
+webappClassLoader.warnTimerThread=웹 애플리케이션 [{0}]이(가) java.util.Timer API를 통해 [{1}](이)라는 이름을 가진 TimerThread를 시작한 것으로 보이지만, 그 쓰레드를 중지시키지 못했습니다. 메모리 누수를 방지하기 위해, 타이머가 (연관된 쓰레드와 함께) 강제로 취소되었습니다.
+webappClassLoader.wrongVersion=(클래스 [{0}]을(를) 로드할 수 없습니다)
+
+webappClassLoaderParallel.registrationFailed=org.apache.catalina.loader.ParallelWebappClassLoader를 병렬 클래스 로딩이 가능하게 등록하려 했지만 실패했습니다.
+
+webappLoader.classDeploy=클래스 파일들 [{0}]을(를) [{1}](으)로 배치합니다.
+webappLoader.copyFailure=리소스들을 복사하지 못했습니다.
+webappLoader.deploy=작업 디렉토리 [{0}]에 클래스 레파지토리들을 배치합니다.
+webappLoader.jarDeploy=JAR [{0}]을(를) [{1}]에 배치합니다.
+webappLoader.mkdirFailure=리소스들을 복사할 대상 디렉토리를 생성하지 못했습니다.
+webappLoader.reloadable=reloadable 프로퍼티를 [{0}](으)로 설정할 수 없습니다.
+webappLoader.starting=이 로더를 시작합니다.
+webappLoader.stopping=이 로더를 중지시키는 중
diff --git a/java/org/apache/catalina/manager/LocalStrings_ko.properties b/java/org/apache/catalina/manager/LocalStrings_ko.properties
new file mode 100644
index 0000000..06afaba
--- /dev/null
+++ b/java/org/apache/catalina/manager/LocalStrings_ko.properties
@@ -0,0 +1,155 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+htmlManagerServlet.appsAvailable=실행 중
+htmlManagerServlet.appsExpire=세션들을 만료시키기
+htmlManagerServlet.appsName=표시 이름
+htmlManagerServlet.appsPath=경로
+htmlManagerServlet.appsReload=다시 로드
+htmlManagerServlet.appsSessions=세션들
+htmlManagerServlet.appsStart=시작
+htmlManagerServlet.appsStop=중지
+htmlManagerServlet.appsTasks=명령들
+htmlManagerServlet.appsTitle=애플리케이션들
+htmlManagerServlet.appsUndeploy=배치된 것을 제거
+htmlManagerServlet.appsVersion=버전
+htmlManagerServlet.connectorStateAliveSocketCount=Keep alive 소켓 개수:
+htmlManagerServlet.connectorStateBytesRecieved=수신된 바이트 크기:
+htmlManagerServlet.connectorStateBytesSent=전송된 바이트 크기:
+htmlManagerServlet.connectorStateErrorCount=오류 개수:
+htmlManagerServlet.connectorStateHint=P: 요청을 파싱 또는 준비, S: 서비스, F: 완료 R: 준비 K: Keepalive
+htmlManagerServlet.connectorStateMaxProcessingTime=최대 처리 시간:
+htmlManagerServlet.connectorStateMaxThreads=최대 쓰레드 개수:
+htmlManagerServlet.connectorStateProcessingTime=처리 시간:
+htmlManagerServlet.connectorStateRequestCount=요청 회수:
+htmlManagerServlet.connectorStateTableTitleBRecv=받은 바이트 크기
+htmlManagerServlet.connectorStateTableTitleBSent=전송된 바이트 크기
+htmlManagerServlet.connectorStateTableTitleClientAct=클라이언트 (실제)
+htmlManagerServlet.connectorStateTableTitleClientForw=클라이언트 (Forwarded)
+htmlManagerServlet.connectorStateTableTitleRequest=요청
+htmlManagerServlet.connectorStateTableTitleStage=단계
+htmlManagerServlet.connectorStateTableTitleTime=시간
+htmlManagerServlet.connectorStateTableTitleVHost=가상호스트
+htmlManagerServlet.connectorStateThreadBusy=현재 사용중인 쓰레드들:
+htmlManagerServlet.connectorStateThreadCount=현재 쓰레드 개수:
+htmlManagerServlet.deployButton=배치
+htmlManagerServlet.deployConfig=XML 설정 파일 경로:
+htmlManagerServlet.deployServer=서버에 있는 디렉토리 또는 WAR 파일을 배치합니다.
+htmlManagerServlet.deployTitle=배치
+htmlManagerServlet.deployUpload=배치할 WAR 파일
+htmlManagerServlet.deployUploadFail=실패 - 배치관리자에서 업로드 실패, 예외: [{0}]
+htmlManagerServlet.deployUploadFile=업로드할 WAR 파일을 선택하십시오.
+htmlManagerServlet.deployUploadInServerXml=실패 - 컨텍스트가 server.xml에 정의되어 있다면, War 파일 [{0}]은(는) 업로드될 수 없습니다.
+htmlManagerServlet.deployUploadNoFile=실패 - 파일 업로드 실패. 파일이 없습니다.
+htmlManagerServlet.deployUploadNotWar=실패 - 업로드된 파일 [{0}]은(는) 반드시 .war이어야 합니다.
+htmlManagerServlet.deployUploadWarExists=실패 - War 파일 [{0}]이(가) 이미 서버에 존재합니다.
+htmlManagerServlet.deployWar=WAR 또는 디렉토리 경로:
+htmlManagerServlet.diagnosticsLeak=웹 애플리케이션이 중지되거나, 다시 로드되거나, 또는 배치 제거될 때, 메모리 누수를 유발하는지 여부를 살펴보려 점검합니다.
+htmlManagerServlet.diagnosticsLeakButton=메모리 누수 찾기
+htmlManagerServlet.diagnosticsLeakWarning=이 진단 점검은 Full Garbage Collection을 개시할 것입니다. 프로덕션 시스템들에서는 극도의 주의를 기울여 사용하십시오.
+htmlManagerServlet.diagnosticsTitle=시스템 진단
+htmlManagerServlet.expire.explain=idle 값 &ge;
+htmlManagerServlet.expire.unit=분
+htmlManagerServlet.findleaksList=다음 웹 애플리케이션들이 중지되었지만 (다시 로드되거나, 배치가 제거되어), 이전 실행 시에 로드되었던 클래스들이 여전히 메모리에 남아 있어서, 메모리 누수를 유발할 수 있습니다. (확인하려면 프로파일러를 사용하십시오):\n\
+\n
+htmlManagerServlet.findleaksNone=어떤 웹 애플리케이션도, 중지 시 또는 다시 로드될 때 또는 배치로부터 제거 될 때, 메모리 누수를 유발하지 않은 것 같습니다.
+htmlManagerServlet.helpHtmlManager=HTML 매니저 도움말
+htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
+htmlManagerServlet.helpManager=매니저 도움말
+htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
+htmlManagerServlet.jvmFreeMemory=유휴 메모리:
+htmlManagerServlet.jvmMaxMemory=최대 메모리:
+htmlManagerServlet.jvmTableTitleInitial=초기
+htmlManagerServlet.jvmTableTitleMaximum=최대값
+htmlManagerServlet.jvmTableTitleMemoryPool=메모리 풀
+htmlManagerServlet.jvmTableTitleTotal=전체
+htmlManagerServlet.jvmTableTitleType=타입
+htmlManagerServlet.jvmTableTitleUsed=사용된 메모리
+htmlManagerServlet.jvmTotalMemory=전체 메모리:
+htmlManagerServlet.list=애플리케이션들의 목록을 표시
+htmlManagerServlet.manager=매니저
+htmlManagerServlet.messageLabel=메시지:
+htmlManagerServlet.noManager=-
+htmlManagerServlet.noVersion=지정 안됨
+htmlManagerServlet.osAvailableMemory=가용 메모리:
+htmlManagerServlet.osFreePageFile=유휴 페이지 파일:
+htmlManagerServlet.osKernelTime=프로세스 커널 타임:
+htmlManagerServlet.osMemoryLoad=메모리 로드:
+htmlManagerServlet.osPhysicalMemory=물리적 메모리:
+htmlManagerServlet.osTotalPageFile=전체 페이지 파일:
+htmlManagerServlet.osUserTime=프로세스 User Time:
+htmlManagerServlet.serverHostname=호스트명
+htmlManagerServlet.serverIPAddress=IP 주소
+htmlManagerServlet.serverJVMVendor=JVM 벤더
+htmlManagerServlet.serverJVMVersion=JVM 버전
+htmlManagerServlet.serverOSArch=운영체제 아키텍처
+htmlManagerServlet.serverOSName=운영체제 이름
+htmlManagerServlet.serverOSVersion=운영체제 버전
+htmlManagerServlet.serverTitle=서버 정보
+htmlManagerServlet.serverVersion=Tomcat 버전
+htmlManagerServlet.title=Tomcat 웹 애플리케이션 매니저
+
+managerServlet.alreadyContext=실패 - 애플리케이션이 이미 경로 [{0}]에 존재합니다.
+managerServlet.deleteFail=실패 - [{0}]을(를) 삭제할 수 없습니다. 이 파일이 계속해서 존재하면 문제들을 일으킬 수 있습니다.
+managerServlet.deployFailed=실패 - 컨텍스트 경로 [{0}]에, 애플리케이션을 배치하지 못했습니다.
+managerServlet.deployed=OK - 컨텍스트 경로 [{0}]에 애플리케이션을 배치했습니다.
+managerServlet.deployedButNotStarted=실패 - 컨텍스트 경로 [{0}]에 있는 애플리케이션을 배치했으나, 컨텍스트가 시작되지 못했습니다.
+managerServlet.exception=실패 - 예외 발생 [{0}]
+managerServlet.findleaksFail=실패 - 잠재 메모리 누수 찾기 실패: 호스트가 StandardHost의 인스턴스가 아닙니다.
+managerServlet.findleaksList=OK - 다음 애플리케이션들에서 잠재적인 메모리 누수들이 발견되었습니다:
+managerServlet.findleaksNone=OK - 메모리 누수가 발견 안됨
+managerServlet.inService=실패 - 애플리케이션 [{0}]이(가) 이미 서비스되고 있습니다.
+managerServlet.invalidCommand=실패 - 명령 [{0}]을(를) 위해 유효하지 않은 파라미터들이 제공되었습니다.
+managerServlet.invalidPath=실패 - 유효하지 않은 컨텍스트 경로 [{0}]이(가) 지정되었습니다.
+managerServlet.listed=OK - 가상 호스트 [{0}]을(를) 위한 애플리케이션들의 목록이 표시되었습니다.
+managerServlet.listitem={0}:{1}:{2}:{3}
+managerServlet.mkdirFail=실패 - 디렉토리 [{0}]을(를) 생성할 수 없습니다.
+managerServlet.noCommand=실패 - 명령이 지정되지 않았습니다.
+managerServlet.noContext=실패 - [{0}](이)라는 이름을 가진 컨텍스트가 없습니다.
+managerServlet.noGlobal=실패 - 가용한 글로벌 JNDI 리소스들이 없습니다.
+managerServlet.noManager=실패 - 경로 [{0}]을(를) 위한 매니저가 없습니다.
+managerServlet.noSelf=실패 - 매니저는 자기 자신을 다시 로드하거나, 중지시키거나, 자신의 배치를 제거할 수 없습니다.
+managerServlet.noWrapper=컨테이너가 이 서블릿을 위해 setWrapper()를 호출하지 않았습니다.
+managerServlet.notDeployed=실패 - 컨텍스트 [{0}]이(가) server.xml에 정의되어 있어, 배치를 제거할 수 없습니다.
+managerServlet.objectNameFail=실패 - 매니저 서블릿을 위한 객체 이름 [{0}]을(를) 등록할 수 없습니다.
+managerServlet.postCommand=실패 - GET 요청을 통해 명령 [{0}]을(를) 사용하려 시도했으나, POST 요청이 요구됩니다.
+managerServlet.reloaded=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 다시 로드했습니다.
+managerServlet.resourcesAll=OK - 모든 타입들의 글로벌 리소스들이 목록으로 표시되었습니다.
+managerServlet.resourcesType=OK - 타입이 [{0}]인 글로벌 리소스들의 목록을 표시했습니다.
+managerServlet.saveFail=실패 - 설정을 저장하지 못했습니다: [{0}]
+managerServlet.saved=OK - 서버 설정이 저장되었습니다.
+managerServlet.savedContext=OK - 컨텍스트 [{0}]의 설정이 저장되었습니다.
+managerServlet.serverInfo=OK - 서버 정보\n\
+Tomcat 버전: [{0}]\n\
+운영체제 이름: [{1}]\n\
+운영체제 버전: [{2}]\n\
+운영체제 아키텍처: [{3}]\n\
+JVM 버전: [{4}]\n\
+JVM 벤더: [{5}]
+managerServlet.sessiondefaultmax=세션 비활성화 최대 시간의 기본 값은 [{0}]분입니다.
+managerServlet.sessions=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 위한 세션 정보
+managerServlet.sessiontimeout=[{0}]분: [{1}]개의 세션들
+managerServlet.sessiontimeout.expired=[{0}]분: [{1}]개의 세션들이 만료되었습니다.
+managerServlet.sessiontimeout.unlimited=무제한 시간: [{0}] 세션들
+managerServlet.startFailed=실패 - 컨텍스트 경로 [{0}]의 애플리케이션이 시작될 수 없었습니다.
+managerServlet.started=OK - 컨텍스트 경로 [{0}]의 애플리케이션이 시작되었습니다.
+managerServlet.stopped=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 중지시켰습니다.
+managerServlet.threaddump=OK - JVM 쓰레드 덤프
+managerServlet.undeployed=OK - 컨텍스트 경로 [{0}]에 배치된 애플리케이션을 제거했습니다.
+managerServlet.unknownCommand=실패 - 알 수 없는 명령: [{0}]
+managerServlet.vminfo=OK - VM 정보
+
+statusServlet.complete=서버의 전체 상태
+statusServlet.title=서버 상태
diff --git a/java/org/apache/catalina/manager/host/LocalStrings_ko.properties b/java/org/apache/catalina/manager/host/LocalStrings_ko.properties
new file mode 100644
index 0000000..98f7a31
--- /dev/null
+++ b/java/org/apache/catalina/manager/host/LocalStrings_ko.properties
@@ -0,0 +1,84 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+hostManagerServlet.add=추가: 호스트 [{0}]을(를) 추가합니다.
+hostManagerServlet.addFailed=실패 - 호스트 [{0}]을(를) 추가하지 못했습니다.
+hostManagerServlet.addSuccess=OK - 호스트 [{0}]이(가) 추가되었습니다.
+hostManagerServlet.alreadyHost=실패 - 이름이 [{0}]인 호스트가 이미 존재합니다.
+hostManagerServlet.alreadyStarted=실패 - 호스트 [{0}]은(는) 이미 시작되었습니다.
+hostManagerServlet.alreadyStopped=실패 - 호스트 [{0}]은(는) 이미 중지되었습니다.
+hostManagerServlet.appBaseCreateFail=실패 - 호스트 [{1}]을(를) 위한 appBase [{0}]을(를) 생성하지 못했습니다.
+hostManagerServlet.cannotRemoveOwnHost=실패 - 자신의 호스트 [{0}]을(를) 제거할 수는 없습니다.
+hostManagerServlet.cannotStartOwnHost=실패 - 자기 자신의 호스트 [{0}]을(를) 시작할 수 없습니다.
+hostManagerServlet.cannotStopOwnHost=실패 - 자신의 호스트 [{0}]을(를) 중지시킬 수 없습니다.
+hostManagerServlet.configBaseCreateFail=실패 - 호스트 [{0}]을(를) 위한 configBase를 식별하지 못했습니다.
+hostManagerServlet.exception=실패 - 예외 발생 [{0}]
+hostManagerServlet.invalidHostName=실패 - 유효하지 않은 호스트 이름 [{0}]이(가) 지정되었습니다.
+hostManagerServlet.list=목록: 엔진 [{0}]을(를) 위한 호스트들의 목록을 표시합니다.
+hostManagerServlet.listed=OK - 호스트 목록
+hostManagerServlet.listitem=[{0}]:[{1}]
+hostManagerServlet.managerXml=실패 - manager.xml을 설치할 수 없었습니다.
+hostManagerServlet.noCommand=실패 - 명령이 지정되지 않았습니다.
+hostManagerServlet.noHost=실패 - 호스트 이름 [{0}]은(는) 존재하지 않습니다.
+hostManagerServlet.noWrapper=이 서블릿을 위해, 컨테이너가 setWrapper()를 호출한 적이 없습니다.
+hostManagerServlet.postCommand=실패 - GET 요청을 통해 명령 [{0}]을(를) 사용하려 시도했지만, POST 메소드가 필수적입니다.
+hostManagerServlet.remove=제거: 호스트 [{0}]을(를) 제거합니다.
+hostManagerServlet.removeFailed=실패 - 호스트 [{0}]을(를) 제거하지 못했습니다.
+hostManagerServlet.removeSuccess=OK - 호스트 [{0}]을(를) 제거했습니다.
+hostManagerServlet.start=시작: 이름이 [{0}]인 호스트를 시작합니다.
+hostManagerServlet.startFailed=실패 - 호스트 [{0}]을(를) 시작하지 못했습니다.
+hostManagerServlet.started=OK - 호스트 [{0}](이)가 시작되었습니다.
+hostManagerServlet.stop=중지: [{0}](이)라는 이름의 호스트를 중지합니다.
+hostManagerServlet.stopFailed=실패 - 호스트 [{0}]을(를) 중지시키지 못했습니다.
+hostManagerServlet.stopped=OK - 호스트 [{0}]이(가) 중지되었습니다.
+hostManagerServlet.unknownCommand=실패 - 알 수 없는 명령 [{0}]
+
+htmlHostManagerServlet.addAliases=별칭들:
+htmlHostManagerServlet.addAppBase=앱 base:
+htmlHostManagerServlet.addAutoDeploy=자동배치
+htmlHostManagerServlet.addButton=추가
+htmlHostManagerServlet.addCopyXML=XML복사
+htmlHostManagerServlet.addDeployOnStartup=시작 시 배치하기
+htmlHostManagerServlet.addDeployXML=XML배치
+htmlHostManagerServlet.addHost=호스트
+htmlHostManagerServlet.addManager=매니저 앱
+htmlHostManagerServlet.addName=이름:
+htmlHostManagerServlet.addTitle=가상 호스트 추가
+htmlHostManagerServlet.addUnpackWARs=WAR들의 압축 풀기
+htmlHostManagerServlet.helpHtmlManager=HTML 호스트 매니저 도움말
+htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
+htmlHostManagerServlet.helpManager=호스트 매니저 도움말
+htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
+htmlHostManagerServlet.hostAliases=호스트의 별칭들
+htmlHostManagerServlet.hostName=호스트 이름
+htmlHostManagerServlet.hostTasks=명령들
+htmlHostManagerServlet.hostThis=호스트 매니저가 설치되었습니다 - 명령들은 사용 불능 상태입니다.
+htmlHostManagerServlet.hostsRemove=제거
+htmlHostManagerServlet.hostsStart=시작
+htmlHostManagerServlet.hostsStop=중지
+htmlHostManagerServlet.list=가상 호스트들의 목록을 표시
+htmlHostManagerServlet.manager=호스트 관리자
+htmlHostManagerServlet.messageLabel=메시지:
+htmlHostManagerServlet.serverJVMVendor=JVM 벤더
+htmlHostManagerServlet.serverJVMVersion=JVM 버전
+htmlHostManagerServlet.serverOSArch=운영체제 아키첵처
+htmlHostManagerServlet.serverOSName=운영체제 이름
+htmlHostManagerServlet.serverOSVersion=운영체제 버전
+htmlHostManagerServlet.serverTitle=서버 정보
+htmlHostManagerServlet.serverVersion=Tomcat 버전
+htmlHostManagerServlet.title=Tomcat 가상 호스트 매니저
+
+statusServlet.complete=서버 상태 전부
+statusServlet.title=서버 상태
diff --git a/java/org/apache/catalina/mbeans/LocalStrings_ko.properties b/java/org/apache/catalina/mbeans/LocalStrings_ko.properties
new file mode 100644
index 0000000..fef6cb4
--- /dev/null
+++ b/java/org/apache/catalina/mbeans/LocalStrings_ko.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jmxRemoteLifecycleListener.createRegistryFailed=[{0}] 서버를 위한 RMI 레지스트리를, 포트 번호 [{1}]을(를) 사용하여 생성할 수 없습니다.
+jmxRemoteLifecycleListener.createServerFailed=JMX connector 서버가 생성될 수 없었거나, [{0}] 서버를 위해 시작되지 못했습니다.
+jmxRemoteLifecycleListener.destroyServerFailed=[{0}] 서버를 위해, JMX connector 서버가 중지될 수 없었습니다.
+jmxRemoteLifecycleListener.invalidRmiBindAddress=유효하지 않은 RMI 바인딩 주소 [{0}]
+jmxRemoteLifecycleListener.invalidURL=[{0}] 서버에 요청하는 JMX 서비스 URL [{1}]은(는) 유효하지 않습니다.
+jmxRemoteLifecycleListener.start=[{2}] 서버를 위하여, JMX 원격 리스너가 포트 [{0}]에 레지스트리를 설정했으며, 포트 [{1}]에 서버를 설정했습니다.
diff --git a/java/org/apache/catalina/realm/LocalStrings_ko.properties b/java/org/apache/catalina/realm/LocalStrings_ko.properties
new file mode 100644
index 0000000..2782e09
--- /dev/null
+++ b/java/org/apache/catalina/realm/LocalStrings_ko.properties
@@ -0,0 +1,94 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+combinedRealm.addRealm=Realm [{0}]을(를) 추가하여, 전체 Realm 개수는 [{1}]이(가) 됩니다.
+combinedRealm.authFail=사용자 [{0}]을(를) realm [{1}]을(를) 사용하여 인증하지 못했습니다.
+combinedRealm.authStart=사용자 [{0}]을(를), realm [{1}]을(를) 사용하여 인증 시도 중
+combinedRealm.authSuccess=사용자 [{0}]을(를) realm [{1}]을(를) 사용하여 인증했습니다.
+combinedRealm.getPassword=getPassword() 메소드는 절대 호출되서는 안됩니다.
+combinedRealm.getPrincipal=getPrincipal() 메소드는 절대로 호출되서는 안됩니다.
+combinedRealm.realmStartFail=[{0}] realm을 시작하지 못했습니다.
+combinedRealm.unexpectedMethod=CombinedRealm의 메소드에 예기치 않은 호출이었습니다.
+
+dataSourceRealm.authenticateFailure=사용자명 [{0}]은(는) 성공적으로 인증되지 않았습니다.
+dataSourceRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+dataSourceRealm.close=데이터베이스 연결을 닫는 중 예외 발생
+dataSourceRealm.exception=인증 처리 수행 중 예외 발생
+dataSourceRealm.getPassword.exception=[{0}]을(를) 위한 비밀번호를 조회하던 중 예외 발생
+dataSourceRealm.getRoles.exception=사용자 [{0}]을(를) 위한 역할들을 조회하는 중 예외 발생
+
+jaasCallback.username=반환된 사용자명 [{0}]
+
+jaasRealm.accountExpired=사용자명 [{0}]은(는) 만료된 계정이라서 인증되지 않았습니다.
+jaasRealm.authenticateFailure=사용자명 [{0}]은(는) 성공적으로 인증되지 못했습니다.
+jaasRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 Principal [{1}](으)로서 인증되었습니다 -- Subject 또한 생성되었습니다.
+jaasRealm.beginLogin=애플리케이션 [{1}]을(를) 위한 LoginContext를 사용하여, 사용자명 [{0}]을(를) 위한 JAASRealm 로그인이 요청되었습니다.
+jaasRealm.checkPrincipal=Principal [{0}] [{1}]을(를) 점검합니다.
+jaasRealm.credentialExpired=만료된 credentials로 인하여, 사용자명 [{0}]이(가) 인증되지 않았습니다.
+jaasRealm.failedLogin=사용자명 [{0}]은(는) 로그인 실패로 인하여 인증되지 않았습니다.
+jaasRealm.loginContextCreated=사용자명 [{0}]을(를) 위해 생성된 JAAS LoginContext
+jaasRealm.loginException=사용자 이름 [{0}]을(를) 인증하는 중 로그인 예외 발생
+jaasRealm.rolePrincipalAdd=이 사용자 Principal의 역할들에, 역할 Principal [{0}]을(를) 추가합니다.
+jaasRealm.rolePrincipalFailure=유효한 역할 Principal들을 찾을 수 없습니다.
+jaasRealm.unexpectedError=예기치 않은 오류
+jaasRealm.userPrincipalFailure=유효한 사용자 Principal을 찾을 수 없습니다.
+jaasRealm.userPrincipalSuccess=Principal [{0}]은(는) 유효한 사용자 클래스입니다. 이를 사용자 Principal로 사용하겠습니다.
+
+jdbcRealm.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+jdbcRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+jdbcRealm.close=데이터베이스 연결을 닫는 중 예외 발생
+jdbcRealm.exception=인증 처리 수행 중 예외 발생
+jdbcRealm.open=데이터베이스 연결을 여는 중 예외 발생
+jdbcRealm.open.invalidurl=드라이버 [{0}]은(는) URL [{1}]을(를) 지원하지 않습니다.
+
+jndiRealm.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+jndiRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+jndiRealm.cipherSuites=이 tls 연결을 위한 cipher suite들로서, [{0}]을(를) 사용 가능하게 합니다.
+jndiRealm.close=디렉토리 서버 연결을 닫는 중 예외 발생
+jndiRealm.emptyCipherSuites=주어진 cipher suite들에 빈 문자열이 설정되었습니다. 기본 cipher suite들을 사용합니다.
+jndiRealm.exception=인증 처리 수행 중 예외 발생
+jndiRealm.exception.retry=인증 처리 수행 중 예외 발생. 재시도합니다...
+jndiRealm.invalidHostnameVerifier=[{0}]은(는), HostnameVerifier를 위한 클래스 이름으로서, 유효하지 않습니다.
+jndiRealm.invalidSslProtocol=주어진 프로토콜 [{0}]은(는) 유효하지 않습니다. 반드시 [{1}] 중의 하나여야 합니다.
+jndiRealm.invalidSslSocketFactory=[{0}]은(는) SSLSocketFactory 객체를 위해 유효한 클래스 이름이 아닙니다.
+jndiRealm.negotiatedTls=프로토콜 [{0}]을(를) 사용하여 TLS 연결을 negotiate 했습니다.
+jndiRealm.open=디렉토리 서버 연결을 여는 중 예외 발생
+jndiRealm.tlsClose=tls 응답을 닫는 중 예외 발생
+
+lockOutRealm.authLockedUser=잠금 상태인 사용자 [{0}]을(를) 인증하려는 시도가 이루어졌습니다.
+lockOutRealm.removeWarning=캐시 크기를 한계값 내에서 유지하기 위하여, 사용자 [{0}]을(를), [{1}]초 후에 실패 사용자 캐시로부터 제거했습니다.
+
+memoryRealm.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+memoryRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+memoryRealm.loadExist=메모리 데이터베이스 파일 [{0}]을(를) 읽을 수 없습니다.
+memoryRealm.loadPath=메모리 데이터베이스 파일 [{0}](으)로부터 사용자들을 로드합니다.
+memoryRealm.readXml=메모리 데이터베이스 파일을 읽는 중 예외 발생
+memoryRealm.xmlFeatureEncoding=XML 파일들에서 자바 인코딩 이름들을 허용하기 위해 digester를 설정하는 중 예외 발생. 오직 IANA 인코딩 이름들만 지원될 것입니다.
+
+realmBase.algorithm=유효하지 않은 메시지 Digest 알고리즘 [{0}]이(가) 지정되었습니다.
+realmBase.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+realmBase.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+realmBase.createUsernameRetriever.ClassCastException=클래스 [{0}]이(가) X509UsernameRetriever 타입이 아닙니다.
+realmBase.delegatedCredentialFail=사용자 [{0}]을(를) 위한 대리 인증서를 얻을 수 없습니다.
+realmBase.digest=사용자의 credentials를 digest하는 중 오류 발생
+realmBase.forbidden=요청된 리소스에 대한 접근이 거부되었습니다.
+realmBase.gotX509Username=X509 인증서로부터 사용자 이름을 구했습니다: [{0}]
+realmBase.gssContextNotEstablished=Authenticator 구현 오류: 전달된 보안 컨텍스트가 완전히 확립되지 않았습니다.
+realmBase.gssNameFail=확립된 GSSContext로부터, 이름을 추출하지 못했습니다.
+realmBase.hasRoleFailure=사용자명 [{0}]은(는) 역할 [{1}]을(를) 가지고 있지 않습니다.
+realmBase.hasRoleSuccess=사용자명 [{0}]이(가) 역할 [{1}]을(를) 가지고 있습니다.
+
+userDatabaseRealm.lookup=키 [{0}]을(를) 사용하여 사용자 데이터베이스를 찾는 중 예외 발생
+userDatabaseRealm.noDatabase=키 [{0}]을(를) 사용하여 UserDatabase 구성요소를 찾을 수 없습니다.
diff --git a/java/org/apache/catalina/security/LocalStrings_ko.properties b/java/org/apache/catalina/security/LocalStrings_ko.properties
new file mode 100644
index 0000000..fc0e72b
--- /dev/null
+++ b/java/org/apache/catalina/security/LocalStrings_ko.properties
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SecurityListener.checkUmaskFail=umask 설정 [{0}]을(를) 사용하여 시작을 시도했습니다. 적어도 umask를 [{1}] 만큼 제한적으로 설정하지 않고 Tomcat을 시작하는 것은, Lifecycle 리스너인 org.apache.catalina.security.SecurityListener (통상 CATALINA_BASE/conf/server.xml에서 설정)에 의해 차단되었습니다.
+SecurityListener.checkUmaskNone=시스템 프로퍼티 [{0}]에 umask 설정이 없습니다. 하지만, Tomcat은 umask를 지원하는 플랫폼에서 실행 중인 것으로 보입니다. 해당 시스템 프로퍼티는 보통 CATALINA_HOME/bin/catalina.sh에서 설정됩니다. Lifecycle 리스너인 org.apache.catalina.security.SecurityListener(통상 CATALINA_BASE/conf/server.xml에서 설정)는, umask 값이 적어도 [{1}] 만큼 제한적으로 설정되기를 요구합니다.
+SecurityListener.checkUmaskParseFail=값 [{0}]이(가) 유효한 umask 값이 아니어서, 파싱하지 못했습니다.
+SecurityListener.checkUmaskSkip=umask를 결정할 수 없습니다. Tomcat이 Windows에서 실행되는 것으로 보이므로, umask 점검을 건너뜁니다.
+SecurityListener.checkUserWarning=사용자 [{0}](으)로서 실행하면서, 프로그램 시작이 시도 되었습니다. 이 사용자로서 Tomcat을 실행하는 것은, Lifecycle 리스너인 org.apache.catalina.security.SecurityListener (보통 CATALINA_BASE/conf/server.xml에서 설정)에 의해 차단되었습니다.
+
+SecurityUtil.doAsPrivilege=PrivilegedExceptionAction 블록을 실행하는 중 예외가 발생했습니다.
diff --git a/java/org/apache/catalina/servlets/LocalStrings_ko.properties b/java/org/apache/catalina/servlets/LocalStrings_ko.properties
new file mode 100644
index 0000000..f686f2d
--- /dev/null
+++ b/java/org/apache/catalina/servlets/LocalStrings_ko.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cgiServlet.emptyEnvVarName=초기화 파라미터 [environment-variable-] 내에, 빈 문자열의 환경 변수 이름입니다.
+cgiServlet.expandCloseFail=경로 [{0}]에 위치한 스크립트를 위한, 입력 스트림을 닫지 못했습니다.
+cgiServlet.expandCreateDirFail=스크립트를 압축해제 하기 위한 대상 디렉토리 [{0}]을(를) 생성하지 못했습니다.
+cgiServlet.expandDeleteFail=압축해제 중 IOException이 발생한 후, [{0}]에 위치한 해당 파일을 삭제하지 못했습니다.
+cgiServlet.expandFail=경로 [{0}]의 스크립트를 [{1}](으)로 압축해제 하지 못했습니다.
+cgiServlet.expandNotFound=[{0}]을(를) 찾을 수 없어서 압축해제 할 수 없습니다.
+cgiServlet.expandOk=[{0}] 경로에 있는 스트립트가 [{1}](으)로 압축 해제되었습니다.
+cgiServlet.find.found=CGI 발견: 이름 [{0}], 경로 [{1}], 스크립트 이름 [{2}], CGI 이름 [{3}]
+cgiServlet.find.location=[{0}]에 위치한 파일을 찾는 중
+cgiServlet.find.path=CGI 위치 [{1}]에 대해 상대적 경로 [{0}]에 위치한, CGI 스크립트가 요청되었습니다.
+cgiServlet.invalidArgumentDecoded=디코드된 명령 행 아규먼트 [{0}]이(가), 설정된 cmdLineArgumentsDecoded 패턴 [{1}]과(와) 부합되지 않습니다.
+cgiServlet.invalidArgumentEncoded=인코드된 명령 행 아규먼트 [{0}]이(가), 설정된 cmdLineArgumentsEncoded 패턴 [{1}]과(와) 부합되지 않습니다.
+cgiServlet.runBadHeader=잘못된 헤더 행: [{0}]
+cgiServlet.runFail=CGI 처리 중 I/O 문제 발생
+cgiServlet.runHeaderReaderFail=헤더를 읽기 위한 reader를 닫는 중 I/O 문제 발생
+cgiServlet.runInvalidStatus=유효하지 않은 HTTP 상태: [{0}]
+cgiServlet.runOutputStreamFail=출력 스트림을 닫는 중 I/O 문제 발생
+cgiServlet.runReaderInterrupt=stderr에 대한 읽기 쓰레드를 기다리는 중 중단됨
+cgiServlet.runStdErr=stderr 행: [{0}]
+cgiServlet.runStdErrCount=stderr에서 [{0}] 행들을 받았습니다.
+cgiServlet.runStdErrFail=stderr에서 I/O 문제 발생
+
+defaultServlet.blockExternalEntity=PublicId가 [{0}](이)고 systemId가 [{0}]인 외부 엔티티에 대한 접근을 차단했습니다.
+defaultServlet.blockExternalEntity2=이름이 [{0}], publicId가 [{1}], baseURI가 [{2}]이며 systemId가 [{3}]인, 외부 엔티티에 대한 접근을 차단했습니다.
+defaultServlet.blockExternalSubset=이름이 [{0}](이)고 baseURI가 [{1}]인 외부 하위 집합에 대한 접근이 차단되었습니다.
+defaultServlet.missingResource=요청된 리소스 [{0}]은(는) 가용하지 않습니다.
+defaultServlet.noResources=정적 리소스들을 찾을 수 없었습니다.
+defaultServlet.skipfail=단지 [{0}] 바이트들만이 가용하기 때문에, 읽기가 실패했습니다. 요청된 범위의 시작 위치에 도달하기 위하여, [{1}] 바이트들을 건너뛰어야 했습니다.
+defaultServlet.xslError=XSL Transformer 오류
+
+directory.filename=파일명
+directory.lastModified=최종변경시간
+directory.parent=상위로: [{0}]
+directory.size=크기
+directory.title=[{0}]을(를) 위한 디렉토리 목록 표시
+
+webdavservlet.enternalEntityIgnored=요청이, PublicID가 [{0}]이고 SystemID가 [{1}]인 외부 엔티티에 대한 참조를 포함했는데, 이는 무시되었습니다.
+webdavservlet.jaxpfailed=JAXP의 초기화가 실패했습니다.
diff --git a/java/org/apache/catalina/session/LocalStrings_ko.properties b/java/org/apache/catalina/session/LocalStrings_ko.properties
new file mode 100644
index 0000000..af13bdf
--- /dev/null
+++ b/java/org/apache/catalina/session/LocalStrings_ko.properties
@@ -0,0 +1,79 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+JDBCStore.SQLException=SQL 오류 [{0}]
+JDBCStore.checkConnectionClassNotFoundException=JDBC 드라이버 클래스를 찾을 수 없습니다: [{0}]
+JDBCStore.checkConnectionDBClosed=데이터베이스 연결이 널이거나 닫힌 상태입니다. 다시 열려고 시도합니다.
+JDBCStore.checkConnectionDBReOpenFail=데이터베이스에 대해 다시 연결을 맺지 못했습니다. 데이터베이스가 다운되었을 수 있습니다.
+JDBCStore.checkConnectionSQLException=SQL 예외 발생 [{0}]
+JDBCStore.close=데이터베이스 연결 [{0}]을(를) 닫는 동안 예외 발생
+JDBCStore.commitSQLException=데이터베이스 연결을 닫기 전, 커밋을 시도하는 중 SQLException 발생
+JDBCStore.loading=데이터베이스 [{1}](으)로부터 세션 [{0}]을(를) 로드합니다.
+JDBCStore.missingDataSourceName=유효한 JNDI 이름이 주어지지 않았습니다.
+JDBCStore.removing=데이터베이스 [{1}]에서 세션 [{0}]을(를) 제거합니다.
+JDBCStore.saving=세션 [{0}]을(를) 데이터베이스 [{1}]에 저장합니다.
+JDBCStore.wrongDataSource=JNDI DataSource [{0}]을(를) 열 수 없습니다.
+
+fileStore.createFailed=세션 데이터 저장소를 위한 디렉토리[{0}]을(를) 생성할 수 없습니다.
+fileStore.deleteFailed=파일 [{0}]을(를) 삭제할 수 없습니다. 이는 세션 저장소 위치의 생성을 방해하고 있습니다.
+fileStore.loading=파일 [{1}](으)로부터 세션 [{0}]을(를) 로드합니다.
+fileStore.removing=파일 [{1}]에 저장된 세션 [{0}]을(를) 제거합니다.
+fileStore.saving=세션 [{0}]을(를) 파일 [{1}]에 저장합니다.
+
+managerBase.createSession.ise=createSession: 활성화된 세션이 너무 많습니다.
+managerBase.sessionAttributeNameFilter=이름 필터 [{1}]와(과) 부합되지 않기 때문에, [{0}](이)라는 이름의 세션 속성을 건너뛰었습니다.
+managerBase.sessionAttributeValueClassNameFilter=값의 타입 [{1}]이(가) 필터 [{2}]와(과) 부합하지 않기 때문에, [{0}](이)라는 이름의 세션 속성을 건너뛰었습니다.
+managerBase.sessionTimeout=유효하지 않은, 세션 제한 시간 초과 설정입니다: [{0}]
+managerBase.setContextNotNew=만일 매니저가 NEW 상태에 있지 않다면, 매니저와 연관된 컨텍스트를 변경하기 위해 setContext()를 호출하는 것은 불허됩니다.
+
+persistentManager.backupMaxIdle=세션 [{0}]을(를) 세션 저장소에 백업합니다. [{1}]초 동안 유휴 상태였습니다.
+persistentManager.deserializeError=세션 [{0}]을(를) 역직렬화하는 중 오류 발생
+persistentManager.loading=[{0}]개의 저장된 세션들을 로드합니다.
+persistentManager.serializeError=세션을 직렬화하는 중 오류 발생 [{0}]: [{1}]
+persistentManager.storeKeysException=세션 저장소에 있는 세션들의 ID 목록을 결정할 수 없습니다. 아마도 세션 저장소가 비어 있는 것 같습니다.
+persistentManager.storeSizeException=세션 저장소에 얼마나 많은 세션이 존재하는지 알아낼 수 없습니다. 아마도 세션 저장소가 비어 있는 것 같습니다.
+persistentManager.swapIn=저장소로부터 세션 [{0}]을(를) 다시 로드하여 활성화시킵니다.
+persistentManager.swapInException=저장소에 저장된 세션을 메모리로 로드하는 중, 저장소에서 예외 발생: [{0}]
+persistentManager.swapInInvalid=세션 저장소로부터 로드된 세션 [{0}]은(는) 유효하지 않습니다.
+persistentManager.swapMaxIdle=[{1}]초 동안 유휴 상태에 있던, 세션 [{0}]을(를) 저장소로 옮깁니다.
+persistentManager.swapTooManyActive=[{1}]초 동안 비활성화 상태에 있던 세션 [{0}]을(를) 매니저로부터 저장소로 이동합니다. 너무 많은 세션들이 활성화되어 있습니다.
+persistentManager.tooManyActive=활성화된 세션들이 너무 많습니다: [{0}]. 세션 저장소로 내보낼 만한 유휴 세션들을 찾습니다.
+persistentManager.unloading=[{0}]개의 세션들을 저장합니다.
+
+standardManager.loading=[{0}](으)로부터 저장된 세션들을 로드합니다.
+standardManager.managerLoad=세션 저장소로부터 세션들을 로드하는 중 예외 발생
+standardManager.managerUnload=세션들을 저장소로 언로드하는 중 예외 발생
+standardManager.unloading=세션들을 [{0}]에 저장합니다.
+standardManager.unloading.debug=저장된 세션들을 언로드합니다.
+standardManager.unloading.nosessions=언로드할 수 있는 저장된 세션들이 없습니다.
+
+standardSession.attributeEvent=세션 속성 이벤트 리스너가 예외를 발생시켰습니다.
+standardSession.bindingEvent=세션 바인딩 이벤트 리스너가 예외를 발생시켰습니다.
+standardSession.getAttribute.ise=getAttribute: 세션이 이미 무효화되었습니다.
+standardSession.getAttributeNames.ise=getAttributeNames: 세션이 이미 무효화되었습니다.
+standardSession.getCreationTime.ise=getCreationTime: 세션이 이미 무효화되었습니다.
+standardSession.getLastAccessedTime.ise=getLastAccessedTime: 세션이 이미 무효화 되었습니다.
+standardSession.getThisAccessedTime.ise=getThisAccessedTime: 세션이 이미 만료되었습니다.
+standardSession.getValueNames.ise=getValueNames: 세션이 이미 무효화 되었습니다.
+standardSession.invalidate.ise=invalidate: 세션이 이미 무효화되었습니다.
+standardSession.isNew.ise=isNew: 세션이 이미 무효화 되었습니다.
+standardSession.logoutfail=세션을 만료시킬 때, 사용자를 로그아웃 하는 중 예외 발생
+standardSession.notDeserializable=세션 [{1}]을(를) 위한 세션 속성 [{0}]을(를) 역직렬화할 수 없습니다.
+standardSession.notSerializable=세션 [{1}]을(를) 위한 세션 속성 [{0}]을(를) 직렬화할 수 없습니다.
+standardSession.removeAttribute.ise=removeAttribute: 세션이 이미 무효화되었습니다.
+standardSession.sessionEvent=세션 이벤트 리스너가 예외를 발생시켰습니다.
+standardSession.setAttribute.iae=setAttribute: 직렬화할 수 없는 속성 [{0}]
+standardSession.setAttribute.ise=setAttribute: 세션 [{0}]이(가) 이미 무효화되었습니다.
+standardSession.setAttribute.namenull=setAttribute: name 파라미터는 널일 수 없습니다.
diff --git a/java/org/apache/catalina/startup/LocalStrings_ko.properties b/java/org/apache/catalina/startup/LocalStrings_ko.properties
new file mode 100644
index 0000000..7b6411d
--- /dev/null
+++ b/java/org/apache/catalina/startup/LocalStrings_ko.properties
@@ -0,0 +1,154 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+catalina.configFail=[{0}](으)로부터 서버 설정을 로드할 수 없습니다.
+catalina.noCluster=[{0}](으)로 인하여 클러스터 RuleSet을 찾을 수 없습니다. 클러스터 설정은 사용불능 상태입니다.
+catalina.serverStartFail=필수 항목인 서버 구성요소가 제대로 시작되지 못하여, Tomcat이 시작될 수 없습니다.
+catalina.shutdownHookFail=서버를 중지시키려는 과정에서, 셧다운 훅에서 오류가 발생했습니다.
+catalina.stopServer=셧다운 포트가 설정되지 않았습니다. OS 시그널을 통해 서버를 셧다운합니다. 서버는 아직 셧다운되지 않았습니다.
+
+contextConfig.altDDNotFound=alt-dd 파일 [{0}]을(를) 찾을 수 없습니다.
+contextConfig.annotationsStackOverflow=StackOverflowError로 인하여, 웹 애플리케이션 [{0}]에서 annotation 스캔을 완료하지 못했습니다. 가능성 있는 근본 원인(root cause)들 중의 하나는 -Xss가 너무 적게 설정되어 있거나 불허된 순환 상속 의존관계들일 수 있습니다. 처리되는 클래스의 상속 계층구조는 [{1}]입니다.
+contextConfig.applicationMissing=애플리케이션 web.xml이 없습니다. 기본 설정들만을 사용할 것입니다.
+contextConfig.applicationParse=[{0}]에 위치한 애플리케이션 web.xml에서 파싱 오류 발생
+contextConfig.applicationPosition=[{0}]행 [{1}]열에서 발생했음
+contextConfig.applicationStart=[{0}]에 위치한 애플리케이션 web.xml을 파싱합니다.
+contextConfig.applicationUrl=애플리케이션 web.xml의 URL을 결정할 수 없습니다.
+contextConfig.authenticatorConfigured=메소드 [{0}]을(를) 위한 Authenticator를 설정했습니다.
+contextConfig.authenticatorInstantiate=클래스 [{0}]의 Authenticator 인스턴스를 생성할 수 없습니다,
+contextConfig.authenticatorMissing=인증 메소드 [{0}]을(를) 위한 Authenticator를 설정할 수 없습니다.
+contextConfig.authenticatorResources=Authenticator들의 매핑 목록을 로드할 수 없습니다.
+contextConfig.badUrl=컨텍스트 descriptor [{0}]을(를) 처리할 수 없습니다.
+contextConfig.baseError=글로벌 설정의 위치를 결정할 수 없습니다. (통상 $CATALINA_BASE/conf)
+contextConfig.cce=Lifecycle 이벤트 데이터 객체 [{0}]이(가) Context 객체가 아닙니다.
+contextConfig.contextClose=context.xml을 닫는 중 오류 발생
+contextConfig.contextMissing=context.xml이 존재하지 않습니다: [{0}]
+contextConfig.contextParse=컨텍스트 [{0}]을(를) 위한 context.xml 내에서 파싱 오류 발생
+contextConfig.defaultError=[{1}]에 위치하고 [{0}](이)라는 이름의 기본 web.xml을 처리하는 중 오류 발생
+contextConfig.defaultMissing=글로벌 web.xml 파일을 찾을 수 없습니다.
+contextConfig.defaultPosition=[{0}] 행, [{1}] 열에서 발생
+contextConfig.destroy=ContextConfig: 소멸시키는 중
+contextConfig.fileUrl=URL [{0}](으)로부터 File 객체를 생성할 수 없습니다.
+contextConfig.fixDocBase=컨텍스트 [{0}]을(를) 위한 docBase를 조정하는 중 예외 발생
+contextConfig.init=ContextConfig: 초기화 중
+contextConfig.inputStreamFile=파일 [{0}]에 대하여 annotation들을 처리할 수 없습니다.
+contextConfig.inputStreamJar=Annotation들을 스캔하기 위해, Jar [{1}](으)로부터의 Jar 엔트리 [{0}]을(를) 처리할 수 없습니다.
+contextConfig.invalidSci=ServletContentInitializer [{0}]이(가) 생성될 수 없었습니다.
+contextConfig.invalidSciHandlesTypes=하나 이상의 ServletContentInitializer들의 @HandlesTypes annotation에 대한 점검을 위해, 클래스 [{0}]을(를) 로드할 수 없습니다.
+contextConfig.jarFile=Annotation들을 위해 Jar [{0}]을(를) 처리할 수 없습니다.
+contextConfig.jspFile.error=JSP 파일 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+contextConfig.jspFile.warning=경고: Servlet 2.4에서 JSP 파일 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+contextConfig.missingRealm=인증 처리 시 사용할 Realm이 설정되지 않았습니다.
+contextConfig.processAnnotationsDir.debug=Annotation들을 가진 클래스 파일들을 찾기 위해 디렉토리 [{0}]을(를) 스캔합니다.
+contextConfig.processAnnotationsJar.debug=Annotation들, [{0}]을(를) 가진 클래스 파일들을 찾기 위해, JAR 파일을 스캔합니다.
+contextConfig.processAnnotationsWebDir.debug=Annotation들인 [{0}]을(를) 가진 클래스 파일들을 찾기 위해, 웹 애플리케이션 디렉토리를 스캔합니다.
+contextConfig.resourceJarFail=정적 리소스들이, [{1}](이)라는 이름의 컨텍스트에 포함되게 하기 위하여, URL [{0}]에서 발견된 JAR를 처리하지 못했습니다.
+contextConfig.role.auth=보안 역할 이름 [{0}]이(가), <security-role>에서 정의되지 않은 채로, <auth-constraint>에서 사용되었습니다.
+contextConfig.role.link=보안 역할 이름 [{0}]이(가) <security-role>에서 정의된 적이 없는데, <role-link>에서 사용되었습니다.
+contextConfig.role.runas=<security-role> 내에 정의되지 않고, 보안 역할 이름 [{0}]이(가) <run-as>에서 사용되었습니다.
+contextConfig.sci.debug=[{0}]을(를) 위해 ServletContainerInitializer를 처리할 수 없습니다. 이는 필시 @HandlesTypes annotation 내에 정의된 클래스가 존재하지 않기 때문일 것입니다.
+contextConfig.sci.info=[{0}]을(를) 위한 ServletContainerInitializer를 처리할 수 없습니다. 이는 필시 @HandlesTypes annotation에 정의된 클래스가 존재하지 않기 때문일 것입니다. 전체 스택 트레이스를 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오.
+contextConfig.servletContainerInitializerFail=이름이 [{0}]인 컨텍스트를 위한 ServletContainerInitializer들을 탐지하지 못했습니다.
+contextConfig.start=ContextConfig: 시작 처리 중
+contextConfig.stop=ContextConfig: STOP 처리 중
+contextConfig.unavailable=이전 오류(들)로 인하여, 이 애플리케이션이 가용하지 않은 것으로 표시합니다.
+contextConfig.unknownUrlProtocol=Annotation 처리 중, 인식되지 않는 프로토콜 [{0}]을(를) 포함하여, URL [{1}]이(가) 무시되었습니다.
+contextConfig.urlPatternValue=클래스 [{1}]의 [{0}] annotation을 위해, urlPatterns와 value 속성, 둘 다 설정되었습니다.
+contextConfig.webinfClassesUrl=[{0}]을(를) 위한 URL을 결정할 수 없습니다.
+contextConfig.xmlSettings=컨텍스트 [{0}]이(가), validation:[{1}]와(과) namespaceAware:[{2}]을 사용하여, web.xml과 web-fragment.xml 파일들을 파싱합니다.
+
+embedded.authenticatorNotInstanceOfValve=지정된 Authenticator는 Valve가 아닙니다.
+embedded.noEngines=엔진들이 아직 정의되지 않았습니다.
+embedded.notmp=[{0}] 위치로 지정된 임시 폴더를 찾을 수 없습니다.
+
+engineConfig.cce=Lifecycle 이벤트 데이터 객체 [{0}]이(가) Engine 객체가 아닙니다.
+engineConfig.start=EngineConfig: START 처리 중
+engineConfig.stop=EngineConfig: STOP 처리 중
+
+expandWar.copy=[{0}]을(를) [{1}]에 복사하는 중 오류 발생
+expandWar.createFailed=디렉토리 [{0}]을(를) 생성할 수 없습니다.
+expandWar.deleteFailed=[{0}]이(가) 완전히 삭제될 수 없었습니다. 남아있는 파일들의 존재는 문제들을 일으킬 수 있습니다.
+expandWar.illegalPath=아카이브 [{0}]에 문제가 있어 무시될 것입니다: 엔트리가 불허되는 경로 [{1}]을(를) 포함하고 있고, 그 경로가 정의된 docBase [{3}] 외부에 존재하기 때문에, [{2}]에 압축을 풀지 않았습니다.
+expandWar.missingJarEntry=JarEntry [{0}]을(를) 위한 입력 스트림을 얻을 수 없습니다 - WAR 파일이 깨졌나요?
+
+failedContext.start=글로벌, 또는 호스트 별, 또는 해당 컨텍스트의 context.xml 파일을 처리하지 못하였으므로, 컨텍스트 [{0}]은(는) 시작될 수 없습니다.
+
+hostConfig.appBase=호스트 [{0}]을(를) 위한 애플리케이션 base [{1}]이(가), 존재하지 않거나 디렉토리가 아닙니다. 배치 오류들을 방지하기 위하여, deployOnStartUp과 autoDeploy가 false로 설정되어 있었습니다. 다른 오류들이 여전히 발생할 수 있습니다.
+hostConfig.canonicalizing=[{1}]의 배치를 제거하려 시도하는 동안, [{0}]을(를) 위한 canonical 경로를 결정할 수 없습니다.
+hostConfig.cce=Lifecycle 이벤트 데이터 객체 [{0}]이(가) 호스트 객체가 아닙니다.
+hostConfig.context.remove=컨텍스트 [{0}]을(를) 제거하는 중 오류 발생
+hostConfig.context.restart=컨텍스트 [{0}]이(가) 다시 시작하는 동안 오류 발생
+hostConfig.createDirs=배치를 위한 디렉토리 [{0}]을(를) 생성할 수 없습니다.
+hostConfig.deploy.error=웹 애플리케이션 디렉토리 [{0}]을(를) 배치하는 중 예외 발생
+hostConfig.deployDescriptor=배치 descriptor [{0}]을(를) 배치합니다.
+hostConfig.deployDescriptor.blocked=컨텍스트 경로 [{0}]의 웹 애플리케이션이 배치되지 않았습니다. 왜냐하면 해당 애플리케이션의 안전한 배치에 필요한 설정들이 배치 descriptor [{1}]에 포함되어 있으나, 이 호스트의 deployXML 설정에 의해 배치 descriptor들이 처리 되지 않았기 때문입니다. 이 애플리케이션을 배치하기 위해서는 적절한 descriptor가 [{2}]에 생성되어야 합니다.
+hostConfig.deployDescriptor.error=배치 descriptor [{0}]을(를) 배치하는 중 오류 발생
+hostConfig.deployDescriptor.finished=배치 descriptor [{0}]의 배치가 [{1}] 밀리초 내에 완료되었습니다.
+hostConfig.deployDescriptor.localDocBaseSpecified=호스트 appBase 내의 docBase [{0}]이(가) 지정되었으나, 이는 무시될 것입니다.
+hostConfig.deployDescriptor.threaded.error=배치 descriptor들을 배치하려는 멀티 쓰레드 작업이 완료되기를 기다리는 중 오류 발생
+hostConfig.deployDir=웹 애플리케이션 디렉토리 [{0}]을(를) 배치합니다.
+hostConfig.deployDir.error=웹 애플리케이션 디렉토리 [{0}]을(를) 배치하는 중 오류 발생
+hostConfig.deployDir.finished=웹 애플리케이션 디렉토리 [{0}]에 대한 배치가 [{1}] 밀리초에 완료되었습니다.
+hostConfig.deployDir.threaded.error=디렉토리들의 멀티 쓰레드 배치 작업이 완료되기를 기다리는 중 오류 발생
+hostConfig.deployWar=웹 애플리케이션 아카이브 [{0}]을(를) 배치합니다.
+hostConfig.deployWar.error=웹 애플리케이션 아카이브 [{0}]을(를) 배치하는 중 오류 발생
+hostConfig.deployWar.finished=웹 애플리케이션 아카이브 [{0}]의 배치가 [{1}] 밀리초에 완료되었습니다.
+hostConfig.deployWar.hiddenDir=WAR [{1}]은(는) 우선순위가 높게 처리되어야 하고, unpackWARs가 false이기 때문에, 디렉토리 [{0}]은(는) 무시될 것입니다.
+hostConfig.deployWar.threaded.error=WAR 파일들에 대해 멀티 쓰레드 배치 작업들이 완료되기까지 기다리는 중 오류 발생
+hostConfig.deploying=발견된 웹 애플리케이션들을 배치합니다.
+hostConfig.docBaseUrlInvalid=제공된 docBase는 URL로서 표현될 수 없습니다.
+hostConfig.expand=웹 애플리케이션 아카이브 [{0}]의 압축을 풉니다.
+hostConfig.expand.error=웹 애플리케이션 아카이브 [{0}]의 압축을 푸는 중 예외 발생
+hostConfig.expanding=발견된 웹 애플리케이션 아카이브들의 압축을 풉니다.
+hostConfig.ignorePath=자동 배치를 위해 appBase내의 [{0}] 경로를 무시합니다.
+hostConfig.illegalWarName=War 이름[{0}]이(가) 유효하지 않습니다. 이 아카이브는 무시될 것입니다.
+hostConfig.jmx.register=컨텍스트 [{0}]을(를) 등록하지 못했습니다.
+hostConfig.jmx.unregister=컨텍스트 [{0}]에 대한 등록을 제거하지 못했습니다.
+hostConfig.reload=컨텍스트 [{0}]을(를) 다시 로드합니다.
+hostConfig.resourceNotAbsolute=[{1}]이(가) 절대 경로가 아니기 때문에, 컨텍스트 [{0}](으)로부터 리소스를 제거할 수 없습니다.
+hostConfig.start=HostConfig: 시작 처리 중
+hostConfig.stop=HostConfig.stop() 오퍼레이션 처리 중
+hostConfig.undeploy=컨텍스트 [{0}]의 배치를 제거합니다.
+hostConfig.undeployVersion=활성화된 세션이 없는, 컨텍스트 [{0}]의 이전 버전의 배치를 제거합니다.
+
+passwdUserDatabase.readFail=/etc/passwd로부터 사용자들의 전체 집합을 구하지 못했습니다.
+
+tomcat.addWebapp.conflictChild=이미 존재하는 컨텍스트 [{2}](으)로 인하여, [{0}]에 위치한 WAR를 컨텍스트 경로 [{1}](으)로 배치할 수 없습니다.
+tomcat.addWebapp.conflictFile=이미 존재하는 파일 [{2}](으)로 인하여, [{0}]에 위치한 WAR를 컨텍스트 경로 [{1}](으)로 배치할 수 없습니다.
+
+userConfig.database=사용자 데이터베이스를 로드하는 중 예외 발생
+userConfig.deploy=사용자 [{0}]을(를) 위해 웹 애플리케이션을 배치합니다.
+userConfig.deploy.threaded.error=사용자 디렉토리들의 멀티 쓰레드 배치 작업이 완료되기를 기다리는 중 오류 발생
+userConfig.deploying=사용자 웹 애플리케이션들을 배치합니다.
+userConfig.error=사용자 [{0}]을(를) 위한 웹 애플리케이션을 배치 중 오류 발생
+userConfig.start=UserConfig: START 처리 중
+userConfig.stop=UserConfig: STOP 처리 중
+
+versionLoggerListener.arg=명령 행 아규먼트: {0}
+versionLoggerListener.catalina.base=CATALINA_BASE:         {0}
+versionLoggerListener.catalina.home=CATALINA_HOME:         {0}
+versionLoggerListener.env=환경 변수:  {0} = {1}
+versionLoggerListener.java.home=자바 홈:             {0}
+versionLoggerListener.os.arch=아키텍처:          {0}
+versionLoggerListener.os.name=운영체제 이름:               {0}
+versionLoggerListener.os.version=운영체제 버전:            {0}
+versionLoggerListener.prop=시스템 프로퍼티:       {0} = {1}
+versionLoggerListener.serverInfo.server.built=Server 빌드 시각:          {0}
+versionLoggerListener.serverInfo.server.number=Server 버전 번호:         {0}
+versionLoggerListener.serverInfo.server.version=서버 버전 이름:        {0}
+versionLoggerListener.vm.vendor=JVM 벤더:            {0}
+versionLoggerListener.vm.version=JVM 버전:           {0}
+
+webAnnotationSet.invalidInjection=유효하지 않은 메소드 리소스 injection annotation입니다.
diff --git a/java/org/apache/catalina/tribes/transport/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/transport/LocalStrings_ko.properties
new file mode 100644
index 0000000..e4cf87b
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/LocalStrings_ko.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+PooledSender.senderDisconnectFail=Sender의 연결을 끊지 못했습니다.
diff --git a/java/org/apache/catalina/tribes/util/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/util/LocalStrings_ko.properties
new file mode 100644
index 0000000..b86f4dc
--- /dev/null
+++ b/java/org/apache/catalina/tribes/util/LocalStrings_ko.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+uuidGenerator.createRandom=[{0}]을(를) 사용하여, UUID 생성을 위한 SecureRandom 인스턴스를 생성하는 데에, [{1}] 밀리초가 소요됐습니다.
diff --git a/java/org/apache/catalina/users/LocalStrings_ko.properties b/java/org/apache/catalina/users/LocalStrings_ko.properties
new file mode 100644
index 0000000..ca5a211
--- /dev/null
+++ b/java/org/apache/catalina/users/LocalStrings_ko.properties
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+memoryUserDatabase.fileNotFound=지정된 사용자 데이터베이스 [{0}]을(를) 찾을 수 없었습니다.
+memoryUserDatabase.notPersistable=사용자 데이터베이스에 저장할 수 없습니다 - 디렉토리에 쓰기 권한이 없음.
+memoryUserDatabase.nullGroup=널 또는 길이가 0인 그룹 이름이 지정되었습니다. 해당 그룹은 무시될 것입니다.
+memoryUserDatabase.nullRole=널이거나 길이가 0인 문자열로, 역할 이름이 지정되었습니다. 해당 역할은 무시됩니다.
+memoryUserDatabase.nullUser=사용자 이름에 널이거나 길이가 0인 문자열이 지정되었습니다. 이 사용자는 무시될 것입니다.
+memoryUserDatabase.readOnly=사용자 데이터베이스는 읽기 전용으로 설정되어 있습니다. 변경 사항들이 저장될 수 없습니다.
+memoryUserDatabase.renameNew=새 파일을 [{0}](으)로 이름을 변경할 수 없습니다.
+memoryUserDatabase.renameOld=원본 파일을 [{0}](으)로 이름을 변경할 수 없습니다.
+memoryUserDatabase.writeException=[{0}]에 데이터를 쓰는 중 IOException 발생
+memoryUserDatabase.xmlFeatureEncoding=XML 파일들 내에서 자바 인코딩 이름들을 허용하기 위하여, Digester를 설정하던 중 예외 발생. 오직 IANA 인코딩 이름들만 지원될 것입니다.
diff --git a/java/org/apache/catalina/util/LocalStrings_ko.properties b/java/org/apache/catalina/util/LocalStrings_ko.properties
new file mode 100644
index 0000000..04369f3
--- /dev/null
+++ b/java/org/apache/catalina/util/LocalStrings_ko.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SecurityUtil.doAsPrivilege=PrivilegedExceptionAction 블록을 실행하는 동안 예외가 발생했습니다.
+
+customObjectInputStream.logRequired=로그를 남기면서 클래스 이름을 필터링 하기 위해서는 유효한 Logger가 필요합니다.
+customObjectInputStream.nomatch=클래스 [{0}]은(는), 역직렬화 되도록 허용된 클래스들의 정규식 패턴 [{1}]과(와) 부합되지 않습니다.
+
+extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}] : 필수 extension [{2}]을(를) 찾을 수 없습니다.
+extensionValidator.extension-validation-error=ExtensionValidator[{0}]: 필수 extension(들)을 찾는 과정에서 [{1}]번의 실패 발생
+extensionValidator.failload=Extension [{0}]을(를) 로드하는 중 실패
+extensionValidator.web-application-manifest=웹 애플리케이션 Manifest
+
+introspection.classLoadFailed=클래스 [{0}]을(를) 로드하지 못했습니다.
+
+lifecycleBase.alreadyDestroyed=이미 destroy() 메소드가 호출되었던 구성요소 [{0}]에서, 다시 destroy()가 호출되었습니다. 두번째 호출은 무시될 것입니다.
+lifecycleBase.alreadyStarted=start()가 이미 호출된 후에, 구성요소 [{0}]에 start() 메소드가 호출되었습니다. 두번째 호출은 무시될 것입니다.
+lifecycleBase.alreadyStopped=stop()이 이미 호출된 후에, 구성요소 [{0}]에 대해 stop() 메소드가 호출되었습니다. 두번째 호출은 무시될 것입니다.
+lifecycleBase.destroyFail=구성요소 [{0}]을(를) 소멸시키지 못했습니다.
+lifecycleBase.destroyStopFail=실패한 구성요소 [{0}]에 대해, clean-up을 개시하기 위해 stop()을 호출했으나, 이 호출 또한 실패했습니다.
+lifecycleBase.initFail=구성요소 [{0}]을(를) 초기화하지 못했습니다.
+lifecycleBase.invalidTransition=상태 [{2}]에 있는 구성 요소 [{1}]에 대해, 유효하지 않은 Lifecycle 전환이 시도되었습니다 ([{0}]).
+lifecycleBase.setState=[{0}]을(를) 위한 상태를 [{1}](으)로 설정합니다.
+lifecycleBase.startFail=구성요소 [{0}]을(를) 시작하지 못했습니다.
+lifecycleBase.stopFail=구성요소 [{0}]을(를) 중지시키지 못했습니다.
+
+lifecycleMBeanBase.registerFail=구성요소 초기화 중, [{1}](이)라는 이름을 가진 객체 [{0}]을(를) 등록하지 못했습니다.
+
+netmask.cidrNegative=CIDR [{0}]이(가) 음수입니다.
+netmask.cidrNotNumeric=CIDR [{0}]이(가) 숫자가 아닙니다.
+netmask.cidrTooBig=CIDR [{0}]이(가) 주소 길이 [{1}]보다 큽니다.
+netmask.invalidAddress=주소 [{0}]은(는) 유효하지 않습니다.
+
+parameterMap.locked=잠금 상태인 ParameterMap에 대한 변경이 허용되지 않습니다.
+
+resourceSet.locked=잠금 상태인 ResourceSet에 대한 변경은 허용되지 않습니다.
+
+sessionIdGeneratorBase.createRandom=[{0}] 알고리즘을 사용하여, 세션 ID를 생성하기 위한 SecureRandom 객체를 생성하는데, [{1}] 밀리초가 소요됐습니다.
+sessionIdGeneratorBase.random=클래스 [{0}]의 난수 발생기를 초기화하는 중 예외 발생. java.secure.SecureRandom으로 대체합니다.
+sessionIdGeneratorBase.randomAlgorithm=알고리즘 [{0}]을(를) 사용하여 난수 발생기를 초기화하는 중 오류 발생
+sessionIdGeneratorBase.randomProvider=Provider [{0}]을(를) 사용하여, 난수 발생기를 초기화하는 중 예외 발생
diff --git a/java/org/apache/catalina/valves/LocalStrings_ko.properties b/java/org/apache/catalina/valves/LocalStrings_ko.properties
new file mode 100644
index 0000000..df0c3e9
--- /dev/null
+++ b/java/org/apache/catalina/valves/LocalStrings_ko.properties
@@ -0,0 +1,134 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+accessLogValve.alreadyExists=접근 로그 파일을 [{0}]에서 [{1}](으)로 이름을 변경하지 못했습니다. 파일이 이미 존재합니다.
+accessLogValve.closeFail=접근 로그 파일을 닫지 못했습니다.
+accessLogValve.deleteFail=이전 접근 로그 파일 [{0}]을(를) 삭제하지 못했습니다.
+accessLogValve.invalidLocale=로케일을 [{0}](으)로 설정하지 못했습니다.
+accessLogValve.invalidPortType=유효하지 않은 포트 타입 [{0}]. 서버 (로컬) 포트를 사용합니다.
+accessLogValve.openDirFail=접근 로그 파일(들)을 위한 디렉토리 [{0}]을(를) 생성하지 못했습니다.
+accessLogValve.openFail=접근 로그 파일 [{0}]을(를) 열지 못했습니다.
+accessLogValve.renameFail=접근 로그 파일을 [{0}]에서 [{1}](으)로 이름을 변경하지 못했습니다.
+accessLogValve.rotateFail=접근 로그를 순환시키지 못했습니다.
+accessLogValve.unsupportedEncoding=인코딩을 [{0}](으)로 설정하지 못했습니다. 시스템 기본 문자셋을 사용할 것입니다.
+
+errorReportValve.description=설명
+errorReportValve.exception=예외
+errorReportValve.exceptionReport=예외 보고
+errorReportValve.message=메시지
+errorReportValve.noDescription=설명이 없습니다.
+errorReportValve.note=비고
+errorReportValve.rootCause=근본 원인 (root cause)
+errorReportValve.rootCauseInLogs=근본 원인(root cause)의 풀 스택 트레이스를, 서버 로그들에서 확인할 수 있습니다.
+errorReportValve.statusHeader=HTTP 상태 {0} – {1}
+errorReportValve.statusReport=상태 보고
+errorReportValve.type=타입
+errorReportValve.unknownReason=알 수 없는 사유
+
+http.400.desc=클라이언트 오류로서 인지된 어떤 문제로 인하여, 서버가 해당 요청을 처리할 수 없거나, 처리하지 않을 것입니다. (예: 잘못된 요청 문법, 유효하지 않은 요청 메시지 framing, 또는 신뢰할 수 없는 요청 라우팅).
+http.400.reason=잘못된 요청
+http.401.desc=대상 리소스에 접근하기 위한 유효한 인증 credentials가 없기 때문에, 요청에 적용되지 않았습니다.
+http.401.reason=인가 안됨
+http.402.desc=이 상태 코드는 미래의 사용을 위해 예약되어 있습니다.
+http.402.reason=지불이 요구됨
+http.403.desc=서버가 요청을 이해했으나 승인을 거부합니다.
+http.403.reason=금지됨
+http.404.desc=Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.
+http.404.reason=찾을 수 없음
+http.405.desc=요청 행에 포함된 해당 메소드는, origin 서버에 의해 인지되었으나, 대상 리소스에 의해 지원되지 않습니다.
+http.405.reason=허용되지 않는 메소드
+http.406.desc=요청으로부터 받은 proactive negotiation 헤더에 따르면, 대상 리소스는 해당 user agent가 받아들일만한 현재의 representation이 없고, 서버 또한 기본 representation을 제공하지 않으려 합니다.
+http.406.reason=받아들일 수 없음
+http.407.desc=이 상태 코드는 401 (인증 안됨)과 유사하나, 이는 클라이언트가 프록시를 사용하기 위하여 스스로를 인증할 필요가 있음을 알려줍니다.
+http.407.reason=프록시 인증이 요구됨
+http.408.desc=대기하도록 준비된 시간 이내에, 서버가 완전한 요청 메시지를 수신하지 못했습니다.
+http.408.reason=요청 제한 시간 초과
+http.409.desc=대상 리소스의 현재 상태와의 충돌 때문에, 요청이 완료될 수 없었습니다.
+http.409.reason=충돌됨
+http.410.desc=대상 리소스에 대한 접근이 해당 origin 서버에서 더이상 가용하지 않으며, 이러한 조건은 아마도 영구적일 것으로 보입니다.
+http.410.reason=사라졌음
+http.411.desc=Content-Length가 정의되지 않은 요청을, 서버가 받아들이기를 거부했습니다.
+http.411.reason=Length가 요구됨
+http.412.desc=서버에서 검사될 때, 요청 헤더 필드들 내에 주어진 하나 이상의 조건(들)이, false로 평가되었습니다.
+http.412.reason=사전 조건 충족 실패
+http.413.desc=요청의 payload가 서버가 처리하려 하거나 처리할 수 있는 것 보다 크기 때문에, 서버가 요청 처리를 거부합니다.
+http.413.reason=Payload가 너무 큽니다.
+http.414.desc=서버가 처리할 수 있는 것보다 request-target이 더 길기 때문에, 요청에 대한 서비스를 거부합니다.
+http.414.reason=URI가 너무 깁니다.
+http.415.desc=Payload가 대상 리소스에 대한 이 메소드에 의해 지원되지 않는 포맷이기 때문에, Origin 서버가 요청을 서비스하기를 거부합니다.
+http.415.reason=지원되지 않는 Media Type
+http.416.desc=요청의 Range 헤더 필드 내의 범위들 중 어느 것도, 선택된 리소스의 현재 범위와 겹치지 않거나, 요청된 범위들의 집합이 유효하지 않은 범위들, 또는 과도하게 작거나 겹치는 범위들이기 때문에 거절되었습니다.
+http.416.reason=충족될 수 없는 범위
+http.417.desc=요청의 Expect 헤더 필드에 주어진 expectation이, 적어도 하나 이상의 inbound 서버들에 의해 충족될 수 없었습니다.
+http.417.reason=Expectation Failed
+http.421.desc=요청이 응답을 생성할 수 없는 서버로 전달되었습니다.
+http.421.reason=잘못 안내된 요청
+http.422.desc=서버가 요청 엔티티의 Content-Type을 이해하고, 요청 엔티티의 문법이 올바르게 되어 있지만, 포함된 instruction들을 처리할 수 없었습니다.
+http.422.reason=처리할 수 없는 엔티티
+http.423.desc=메소드의 원본 또는 대상 리소스가 잠금 상태입니다.
+http.423.reason=잠겨짐
+http.424.desc=요청된 액션이 이미 실패한 또 다른 액션에 의존하고 있었기 때문에, 해당 리소스에 대해 이 메소드를 수행할 수 없습니다.
+http.424.reason=실패한 의존적 요청
+http.426.desc=서버가 현재의 프로토콜을 사용하여 요청을 처리하기를 거부했지만, 클라이언트가 다른 프로토콜로 업그레이드한 후에 처리하려 할 수도 있습니다.
+http.426.reason=업그레이드가 요구됨
+http.428.desc=Origin 서버는 요청이 사전 조건적이기를 요구합니다 (예: If-Match와 같은 헤더).
+http.428.reason=사전조건이 필수적입니다.
+http.429.desc=사용자가 주어진 시간 동안 너무 많은 요청을 보냈습니다. ("rate limiting")
+http.429.reason=너무 많은 요청들
+http.431.desc=요청 내의 헤더 필드들이 너무 커서 서버가 처리하려 하지 않습니다.
+http.431.reason=요청의 헤더 필드들이 너무 큼
+http.451.desc=서버가 법적인 사유들로 이 요청을 거부했습니다.
+http.451.reason=법적인 사유들로 인하여 가용하지 않음
+http.500.desc=서버가, 해당 요청을 충족시키지 못하게 하는 예기치 않은 조건을 맞닥뜨렸습니다.
+http.500.reason=내부 서버 오류
+http.501.desc=서버가 이 요청을 충족시키는데 필요한 필수적인 기능을 지원하지 않습니다.
+http.501.reason=구현되지 않음
+http.502.desc=서버가 게이트웨이 또는 프록시로서 동작하면서 요청을 처리하려 시도하는 동안, inbound 서버로부터 유효하지 않은 응답을 받았습니다.
+http.502.reason=잘못된 게이트웨이
+http.503.desc=일시적인 서버 부하 또는 예정된 유지보수 작업으로 인하여, 서버가 현재 요청을 처리할 수 없습니다. 잠시 지연된 뒤에 상황이 나아질 것으로 보입니다.
+http.503.reason=서비스가 가용하지 않음
+http.504.desc=서버가 게이트웨이 또는 프록시로 동작하는 동안, 요청을 처리 완료하기 위해 접근해야 하는 상위 서버로부터, 필요한 응답을 적절한 시간 내에 받지 못했습니다.
+http.504.reason=게이트웨이 제한 시간 초과
+http.505.desc=서버가 요청 메시지에서 사용된 HTTP의 major 버전을 지원하지 않거나, 또는 지원하기를 거부합니다.
+http.505.reason=HTTP 버전이 지원되지 않음
+http.506.desc=서버에 내부 설정 오류가 있습니다: 선택된 변형(variant) 리소스가, 투명한 컨텐트 교섭(negotiation) 그 자체에 관여하도록 설정되어 있는데, 그로 인하여 교섭 프로세스에 적절한 엔드포인트가 아닙니다.
+http.506.reason=Variant Also Negotiates
+http.507.desc=서버가 요청 처리를 성공적으로 완료하기 위해 필요한 representation을 저장할 수 없기 때문에, 해당 메소드가 해당 리소스에 대해 처리될 수 없었습니다.
+http.507.reason=충분하지 않은 저장 공간
+http.508.desc=서버가 "Depth: infinity"를 가진 요청을 처리하는 도중, 무한 루프를 맞닥뜨리는 바람에 오퍼레이션을 종료시켰습니다.
+http.508.reason=루프가 탐지됨
+http.510.desc=요청이, 리소스에 접근하기 위한 policy를 충족시키지 않습니다.
+http.510.reason=확장 안됨
+http.511.desc=클라이언트가 네트워크에 접근하기 위해서는 인증을 해야 합니다.
+http.511.reason=네트워크 인증이 필요함
+
+jdbcAccessLogValve.close=데이터베이스를 닫지 못했습니다.
+jdbcAccessLogValve.exception=접근 엔트리를 추가하는 중 예외 발생
+
+remoteCidrValve.invalid=[{0}]을(를) 위해 유효하지 않은 설정이 제공되었습니다. 상세 정보를 보시려면 이전 메시지들을 확인하십시오.
+remoteCidrValve.noRemoteIp=클라이언트가 IP 주소를 가지고 있지 않습니다. 요청은 거절되었습니다.
+
+remoteIpValve.invalidPortHeader=HTTP 헤더 [{1}] 내에 유효하지 않은 포트 번호 값입니다: [{0}]
+
+requestFilterValve.configInvalid=Remote[Addr|Host]Valve를 위해 하나 이상의 유효하지 않은 설정이 제공되었는데, 이는 해당 Valve와 부모 컨테이너들이 시작되지 못하게 했습니다.
+requestFilterValve.deny=프로퍼티 [{1}]에 기반하여, [{0}]을(를) 위한 요청을 거절합니다.
+
+sslValve.certError=java.security.cert.X509Certificate 객체를 생성하기 위한 인증서 문자열 [{0}]을(를) 처리하지 못했습니다.
+sslValve.invalidProvider=[{0}]의 이 요청과 연관된 Connector에 지정된 SSL provider는 유효하지 않습니다. 해당 인증서 데이터가 처리될 수 없었습니다.
+
+stuckThreadDetectionValve.notifyStuckThreadCompleted=쓰레드 [{0}] (ID=[{3}])이(가) 이전에 stuck 상태로 보고된 바 있으나 이제 완료되었습니다. 해당 쓰레드는 대략 [{1}] 밀리초 동안 활성화되어 있었습니다. {2,choice,0#|0< 이 Valve에 의해 모니터링되는 쓰레드들이 여전히 [{2}]개가 있고, 그것들은 어쩌면 stuck 상태에 있을 수 있습니다.}
+stuckThreadDetectionValve.notifyStuckThreadDetected=쓰레드 [{0}] (id=[{6}])이(가), [{4}]을(를) 위한 동일한 요청을 처리하기 위해, ([{2}] 이후) [{1}] 밀리초 동안 활성화되어 있었으며, 해당 쓰레드가 stuck된 상태에 있을 수 있습니다.\n\
+(이 StuckThreadDetectionValve를 위한 stuck 상태 진입 기준점은 [{5}] 초입니다.) 이 Valve에 의해 모니터되는 전체 쓰레드들 중 [{3}] 개의 쓰레드가 stuck 상태일 수 있습니다.
+stuckThreadDetectionValve.notifyStuckThreadInterrupted=쓰레드 [{0}](id=[{5}])이(가), [{1}] 밀리초 동안 동일 요청을 처리하기 위해 ([{2}] 이후로) [{3}] 동안 활성화되어 있었으나, 필시 stuck 상태에 있을 법한 쓰레드이기 때문에 중단되었습니다. (이 StuckThreadDetectionValve를 위한 중단 한계치는 [{4}] 초로 설정되어 있습니다.)
diff --git a/java/org/apache/coyote/LocalStrings_ko.properties b/java/org/apache/coyote/LocalStrings_ko.properties
new file mode 100644
index 0000000..4fbc2dd
--- /dev/null
+++ b/java/org/apache/coyote/LocalStrings_ko.properties
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+abstractConnectionHandler.error=요청을 읽는 중 오류 발생. 무시합니다.
+abstractConnectionHandler.ioexception.debug=IOException들은 정상적이므로, 무시합니다.
+abstractConnectionHandler.socketexception.debug=SocketException들은 정상적인 상태이므로 무시되었습니다.
+
+abstractProcessor.fallToDebug=\n\
+비고: 요청에 대한 파싱 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+abstractProcessor.hostInvalid=호스트 [{0}]은(는) 유효하지 않습니다.
+abstractProcessor.nonContainerThreadError=컨테이너 쓰레드가 아닌 쓰레드에서, 처리 도중 오류가 발생했습니다. 연결을 즉시 닫을 것입니다.
+
+abstractProtocolHandler.destroy=프로토콜 핸들러 [{0}]을(를) 소멸시킵니다.
+abstractProtocolHandler.init=프로토콜 핸들러 [{0}]을(를) 초기화합니다.
+abstractProtocolHandler.pause=프로토콜 핸들러 [{0}]을(를) 일시 정지 중
+abstractProtocolHandler.resume=프로토콜 핸들러 [{0}]을(를) 재개합니다.
+abstractProtocolHandler.setAttribute=속성 [{0}]에 값 [{1}]을(를) 설정
+abstractProtocolHandler.start=프로토콜 핸들러 [{0}]을(를) 시작합니다.
+abstractProtocolHandler.stop=프로토콜 핸들러 [{0}]을(를) 중지시킵니다.
+
+asyncStateMachine.invalidAsyncState=비동기 상태가 [{1}]인 요청에 대하여, [{0}]을(를) 호출하는 것은 유효하지 않습니다.
diff --git a/java/org/apache/coyote/ajp/LocalStrings_ko.properties b/java/org/apache/coyote/ajp/LocalStrings_ko.properties
new file mode 100644
index 0000000..5272560
--- /dev/null
+++ b/java/org/apache/coyote/ajp/LocalStrings_ko.properties
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ajpMessage.invalidPos=위치 [{0}](으)로부터 바이트들을 읽기를 요청 받았는데, 이는 해당 AJP 메시지의 끝 위치를 넘어섰습니다.
+
+ajpmessage.invalid=서명 [{0}]와(과) 함께, 유효하지 않은 메시지를 받았습니다.
+ajpmessage.invalidLength=길이가 [{0}]인 유효하지 않은 메시지를 받았습니다.
+ajpmessage.null=널 값을 추가할 수 없습니다.
+ajpmessage.overflow=버퍼에 [{0}] 바이트들을 위치 [{1}]에 추가하는 동안 오버플로우 오류 발생
+
+ajpprocessor.certs.fail=인증서를 변환시키지 못했습니다.
+ajpprocessor.failedread=소켓 읽기가 실패했습니다.
+ajpprocessor.failedsend=AJP 메시지를 전송하지 못했습니다.
+ajpprocessor.header.error=헤더 메시지를 파싱하지 못했습니다.
+ajpprocessor.header.tooLong=길이가 [{0}]인 헤더 메시지를 받았지만, 패킷 크기는 단지 [{1}]입니다.
+ajpprocessor.request.prepare=요청을 준비하는 중 오류 발생
+ajpprocessor.request.process=요청 처리 중 오류 발생
diff --git a/java/org/apache/coyote/http11/LocalStrings_ko.properties b/java/org/apache/coyote/http11/LocalStrings_ko.properties
new file mode 100644
index 0000000..aafdcc0
--- /dev/null
+++ b/java/org/apache/coyote/http11/LocalStrings_ko.properties
@@ -0,0 +1,41 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+http11processor.fallToDebug=\n\
+비고: HTTP 요청 파싱 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+http11processor.header.parse=HTTP 요청 헤더를 파싱하는 중 오류 발생
+http11processor.neverused=이 메소드는 절대 사용되서는 안됩니다.
+http11processor.request.finish=요청을 완료하는 중 오류 발생
+http11processor.request.inconsistentHosts=요청 행(request line)에 지정된 호스트가, 호스트 헤더와 일관되지 않습니다.
+http11processor.request.invalidScheme=HTTP 요청이 유효하지 않은 스킴을 가진 절대 URI를 포함했습니다.
+http11processor.request.invalidUri==HTTP 요청이 유효하지 않은 URI를 포함했습니다.
+http11processor.request.invalidUserInfo=HTTP 요청이, 유효하지 않은 userinfo를 가진 절대 URI를 포함했습니다.
+http11processor.request.multipleHosts=요청이 여러 개의 호스트 헤더들을 포함했습니다.
+http11processor.request.noHostHeader=HTTP/1.1 요청이 호스트 헤더를 제공하지 않았습니다.
+http11processor.request.prepare=요청을 준비하는 중 오류 발생
+http11processor.request.process=요청 처리 중 오류 발생
+http11processor.response.finish=응답을 완료하는 중 오류 발생
+http11processor.sendfile.error=sendfile을 사용하여 데이터를 보내는 중 오류 발생. 시작 지점과 종료 지점을 위한 요청 속성들이 유효하지 않아 발생했을 수 있습니다.
+http11processor.socket.info=소켓에 대한 정보를 얻는 중 예외 발생
+
+iib.eof.error=소켓에서 예기치 않은 EOF를 읽었습니다.
+iib.invalidHttpProtocol=HTTP 프로토콜에서 유효하지 않은 문자가 발견되었습니다.
+iib.invalidRequestTarget=요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.
+iib.invalidheader=HTTP 헤더 행 [{0}]이(가) RFC 7230을 준수하지 않아, 무시되었습니다.
+iib.invalidmethod=메소드 이름에 유효하지 않은 문자가 발견되었습니다. HTTP 메소드 이름은 유효한 토큰이어야 합니다.
+iib.parseheaders.ise.error=예기치 않은 상태: 헤더들이 이미 파싱되었습니다. 버퍼가 참조 해제되지 않았었나요?
+iib.requestheadertoolarge.error=요청 헤더가 너무 큽니다.
+
+iob.responseheadertoolarge.error=응답 헤더들에 가용한 버퍼 공간을 초과하는 데이터를 쓰려는 시도가 발생했습니다. 해당 Connector의 maxHttpHeaderSize를 증가시키거나, 응답 헤더들에 보다 적은 데이터를 쓰도록 하십시오.
diff --git a/java/org/apache/coyote/http11/filters/LocalStrings_ko.properties b/java/org/apache/coyote/http11/filters/LocalStrings_ko.properties
new file mode 100644
index 0000000..4557c08
--- /dev/null
+++ b/java/org/apache/coyote/http11/filters/LocalStrings_ko.properties
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+chunkedInputFilter.eos=요청의 body를 읽는 동안 예기치 않은 스트림의 끝
+chunkedInputFilter.eosTrailer=Trailer 헤더들을 읽는 중 예기치 않은 스트림의 끝
+chunkedInputFilter.error=이전 오류로 인하여 데이터가 가용하지 않습니다.
+chunkedInputFilter.invalidCrlf=유효하지 않은 행의 끝 시퀀스입니다. (CR 또는 LF가 아닌 다른 문자가 발견됨)
+chunkedInputFilter.invalidCrlfCRCR=유효하지 않은 행의 끝 시퀀스 (CRCR)
+chunkedInputFilter.invalidCrlfNoCR=유효하지 않은 라인 끝 시퀀스 (CR 바이트가 LF 바이트 전에 존재하지 않음)
+chunkedInputFilter.invalidCrlfNoData=유효하지 않은 행의 끝 시퀀스 (더 이상 읽을 데이터가 없음)
+chunkedInputFilter.invalidHeader=유효하지 않은 chunk 헤더
+chunkedInputFilter.maxExtension=maxExtensionSize 값을 초과했습니다.
+chunkedInputFilter.maxTrailer=maxTrailerSize 값을 초과했습니다.
+
+inputFilter.maxSwallow=maxSwallowSize 값을 초과했습니다.
diff --git a/java/org/apache/coyote/http11/upgrade/LocalStrings_ko.properties b/java/org/apache/coyote/http11/upgrade/LocalStrings_ko.properties
new file mode 100644
index 0000000..03e8fcd
--- /dev/null
+++ b/java/org/apache/coyote/http11/upgrade/LocalStrings_ko.properties
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+upgrade.sis.isFinished.ise=ServletInputStream이 non-blocking 모드 안에 있지 않을 때, isFinished()를 호출하는 것은 불허됩니다. (즉, setReadListener()가 먼저 호출되어야만 합니다.)
+upgrade.sis.isReady.ise=ServletInputStream이 non-blocking 모드 안에 있지 않을 때, isReady()를 호출하는 것은 불허됩니다. (즉 setReadListener()가 반드시 먼저 호출되어야 합니다.)
+upgrade.sis.read.ise=Non-blocking 모드에서는, 먼저 isReady()를 호출하여 가용한 데이터가 있는지 여부를 점검하지 않은 상태에서, 어떤 종류의 read() 메소드라도 호출하는 것은 불허됩니다.
+upgrade.sis.readListener.null=setReadListener()에 널을 넘기는 것은 불허됩니다.
+upgrade.sis.readListener.set=업그레이드된 동일한 연결을 위해, setReadListener()를 두 번 이상 호출하는 것은 불허됩니다.
+upgrade.sos.canWrite.ise=ServletOutputStream이 non-blocking 모드 안에 있지 않을 때, canWrite()를 호출하는 것은 불허됩니다. (즉 setWriteListener()가 반드시 먼저 호출되어야 합니다.)
+upgrade.sos.writeListener.null=setWriteListener() 호출 시, 널을 넘기는 것은 불허됩니다.
+upgrade.sos.writeListener.set=동일한 업그레이드된 연결에 대하여, setWriteListener()를 두번 이상 호출하는 것은 불허됩니다.
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
new file mode 100644
index 0000000..0cf7f6f
--- /dev/null
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -0,0 +1,292 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jasper.error.emptybodycontent.nonempty=TLD 파일에 따르면, [{0}] 태그는 반드시 비어 있어야 하는데, 그렇지 않습니다,
+
+jsp.error.action.isnottagfile=[{0}] 액션은 오직 태그 파일들 내에서만 사용될 수 있습니다.
+jsp.error.action.istagfile=[{0}] 액션은 태그 파일 내에서 사용될 수 없습니다.
+jsp.error.attempt_to_clear_flushed_buffer=오류: 이미 배출되어 버린 버퍼를 폐기하려는 시도
+jsp.error.attr.quoted=속성 값은 인용부호로 처리되어야 합니다.
+jsp.error.attribute.custom.non_rt_with_expr=TLD 또는 태그 파일 내의 attribute 지시어에 의하면, 속성 [{0}]은(는) 어떤 표현식도 받아들이지 않습니다.
+jsp.error.attribute.deferredmix=${} 와 #{} 모두를 동일한 속성 값 내에서 표현식들로 사용할 수 없습니다.
+jsp.error.attribute.duplicate=엘리먼트 내에서 속성의 qualified 이름들은 반드시 유일해야 합니다.
+jsp.error.attribute.invalidPrefix=속성 prefix [{0}]이(가), 임포트된 어떤 태그 라이브러리와도 대응되지 않습니다.
+jsp.error.attribute.noequal=등호("=")가 요구됩니다.
+jsp.error.attribute.noescape=속성 값 [{0}]이(가) [{1}]을(를) 사용하여 인용부 처리되어 있는데, 이는 값 내에서 사용될 때에는 반드시 escape되어야 하는 것입니다.
+jsp.error.attribute.noquote=인용부호가 요구됩니다.
+jsp.error.attribute.nowhitespace=JSP 스펙에 따르면, 속성 이름은 반드시 whitespace 다음에 나타나야 합니다.
+jsp.error.attribute.null_name=속성 이름이 널임
+jsp.error.attribute.standard.non_rt_with_expr=표준 액션 [{1}]의 속성 [{0}]은(는), 어떠한 표현식도 받아들이지 않습니다.
+jsp.error.attribute.unterminated=[{0}]을(를) 위한 속성 값이 올바르게 종료되지 않았습니다.
+jsp.error.bad.scratch.dir=귀하가 지정한 scratchDir [{0}]은(는) 사용할 수 없습니다.
+jsp.error.badStandardAction=유효하지 않은 표준 액션
+jsp.error.bad_attribute=TLD에 따르면, 속성 [{0}]은(는) 태그 [{1}]을(를) 위해 유효하지 않습니다.
+jsp.error.bad_tag=Prefix [{1}]와(과) 함께 임포트된 태그 라이브러리 내에, 태그 [{0}]이(가) 정의되지 않았습니다.
+jsp.error.beans.nomethod=타입 [{1}]인 bean의 프로퍼티 [{0}]을(를) 읽기 위한 메소드를 찾을 수 없습니다.
+jsp.error.beans.nomethod.setproperty=타입이 [{2}]인 bean 내에서, 타입 [{1}]의 프로퍼티 [{0}]에 대하여, 쓰기 가능한 메소드를 찾을 수 없습니다.
+jsp.error.beans.noproperty=타입이 [{1}]인 bean의 프로퍼티 [{0}]에 대한 정보를 찾을 수 없습니다.
+jsp.error.beans.nullbean=널 객체에 대하여, bean 오퍼레이션이 시도되었습니다.
+jsp.error.beans.property.conversion=속성 [{2}]에 설정된 문자열 [{0}]을(를), 클래스 [{1}](으)로 변환할 수 없습니다: [{3}]
+jsp.error.beans.propertyeditor.notregistered=PropertyEditorManager에 PropertyEditor가 등록되어 있지 않습니다.
+jsp.error.beans.setproperty.noindexset=인덱스화된 프로퍼티를 설정할 수 없습니다.
+jsp.error.bug48498=JSP extract를 표시할 수 없습니다. XML 파서의 버그 때문일 수 있습니다 (상세 정보는 Tomcat 버그 48498을 참조).
+jsp.error.classname=.class 파일로부터 클래스명을 결정할 수 없습니다.
+jsp.error.coerce_to_type=속성 [{0}]을(를) 위한 값 [{2}]을(를), 타입 [{1}](으)로 강제 변환 시킬 수 없습니다.
+jsp.error.compilation=파일 컴파일 중 오류 발생: [{0}] [{1}]
+jsp.error.compiler=가용한 자바 컴파일러가 없습니다.
+jsp.error.compiler.config=설정 옵션들인 compilerClassName: [{0}]와(과) compiler: [{1}]들을 지원하는, 가용한 자바 컴파일러가 없습니다.
+jsp.error.config_pagedir_encoding_mismatch=jsp-property-group [{0}]에 지정된 페이지 인코딩이, 페이지 지시어 [{1}]에 지정된 것과 다릅니다.
+jsp.error.corresponding.servlet=생성된 서블릿 오류:\n\
+\n
+jsp.error.could.not.add.taglibraries=하나 이상의 태그 라이브러리들을 추가할 수 없었습니다.
+jsp.error.data.file.processing=파일 [{0}]을(를) 처리하는 중 오류 발생
+jsp.error.data.file.read=파일 [{0}]을(를) 읽는 중 오류 발생
+jsp.error.data.file.write=데이터 파일을 쓰는 중 오류 발생
+jsp.error.deferredmethodandvalue='deferredValue'와 'deferredMethod', 둘 다 'true'일 수 없습니다.
+jsp.error.deferredmethodsignaturewithoutdeferredmethod='deferredMethod'가 'true'가 아니면, 메소드 signature를 지정할 수 없습니다.
+jsp.error.deferredvaluetypewithoutdeferredvalue=만일 'deferredValue' 값이 'true'가 아니라면, 값의 타입을 지정할 수 없습니다.
+jsp.error.directive.isnottagfile=[{0}] 지시어는 오직 태그 파일 내에서만 사용될 수 있습니다.
+jsp.error.directive.istagfile=[{0}] 지시어는 태그 파일 내에서 사용될 수 없습니다.
+jsp.error.duplicate.name.jspattribute=표준 또는 커스텀 액션에 지정된 속성 [{0}]이(가), 내부에 포함된 jsp:attribute 내의 name 속성의 값으로도 지정된 것 같습니다.
+jsp.error.duplicateqname=중복된 qualified 이름 [{0}]을(를) 갖는 속성이 발견되었습니다. 속성의 qualified 이름들은 반드시 엘리먼트 내에서 유일해야 합니다.
+jsp.error.dynamic.attributes.not.implemented=[{0}] 태그가 동적 속성들을 받아들인다고 선언되어 있으나, 필수적인 인터페이스를 구현하지 않았습니다.
+jsp.error.el.parse=[{0}] : [{1}]
+jsp.error.el.template.deferred=#{...}은(는) 템플릿 텍스트에서 허용되지 않습니다.
+jsp.error.el_interpreter_class.instantiation=ELInterpreter 클래스 [{0}]을(를) 로드하지 못했거나, 인스턴스를 생성하지 못했습니다.
+jsp.error.fallback.invalidUse=jsp:fallback은 jsp:plugin의 직계 자식 엘리먼트여야 합니다.
+jsp.error.file.already.registered=파일 [{0}]의 재귀적인 include입니다.
+jsp.error.file.cannot.read=파일을 읽을 수 없습니다: [{0}]
+jsp.error.file.not.found=파일 [{0}]을(를) 찾을 수 없습니다.
+jsp.error.flush=데이터를 배출하는 중 예외가 발생했습니다.
+jsp.error.fragmentwithtype='fragment'와 'type' 속성, 둘 다를 지정할 수 없습니다. 만일 'fragment'이 지정되면, 'type'은 'javax.servlet.jsp.tagext.JspFragment'으로 고정됩니다.
+jsp.error.function.classnotfound=function [{1}]을(를) 위하여 TLD에 지정된, 클래스 [{0}]을(를) 찾을 수 없습니다: [{2}]
+jsp.error.include.exception=[{0}]을(를) include할 수 없습니다.
+jsp.error.include.tag=유효하지 않은 jsp:include 태그
+jsp.error.internal.filenotfound=내부 오류: 파일 [{0}]을(를) 찾을 수 없습니다.
+jsp.error.invalid.attribute=[{0}]은(는) 유효하지 않은 속성을 가지고 있습니다: [{1}]
+jsp.error.invalid.bean=useBean의 class 속성을 위한 값 [{0}]은(는) 유효하지 않습니다.
+jsp.error.invalid.directive=유효하지 않은 지시어
+jsp.error.invalid.expression=[{0}]이(가) 유효하지 않은 표현식(들)을 포함하고 있습니다: [{1}]
+jsp.error.invalid.implicit=[{0}]에 위치한 태그 파일을 위해, 유효하지 않은 묵시적 TLD입니다.
+jsp.error.invalid.implicit.version=[{0}]에 위치한 태그 파일을 위한 묵시적인 TLD에, 유효하지 않은 JSP 버전이 정의되어 있습니다.
+jsp.error.invalid.scope=''scope'' 속성으로 불허되는 값: [{0}] (반드시 "page", "request", "session", "application" 중의 하나여야 합니다.)
+jsp.error.invalid.tagdir=태그 파일 디렉토리 [{0}]이(가) "/WEB-INF/tags"로 시작하지 않습니다.
+jsp.error.invalid.version=[{0}]에 있는 tag 파일에 유효하지 않은 JSP 버전이 정의되어 있습니다.
+jsp.error.ise_on_clear=버퍼 크기가 0일 때 clear()를 호출하는 것은 불허됩니다.
+jsp.error.java.line.number=코드 생성된 자바 파일 [{1}]의 [{0}] 행에서 오류가 발생했습니다.
+jsp.error.javac=Javac 예외 발생
+jsp.error.javac.env=환경:
+jsp.error.jspbody.emptybody.only=[{0}] 태그는 오직 jsp:attribute만을 body 안에 포함할 수 있습니다.
+jsp.error.jspbody.invalidUse=jsp:body는 반드시 표준 또는 커스텀 액션의 하위 엘리먼트이어야 합니다.
+jsp.error.jspbody.required=jsp:attribute가 사용되는 경우, [{0}]을(를) 위한 태그의 body를 지정하기 위해, jsp:body를 사용해야 합니다.
+jsp.error.jspc.missingTarget=target이 없음: 반드시 -webapp 또는 -uriroot, 또는 하나 이상의 JSP page들을 지정해야 합니다.
+jsp.error.jspc.no_uriroot=uriroot가 지정되지 않아서, 지정된 해당 JSP 파일(들)에 대한 위치를 알아낼 수 없습니다.
+jsp.error.jspc.uriroot_not_dir=-uriroot 옵션은 반드시 이미 존재하는 디렉토리를 지정해야 합니다.
+jsp.error.jspelement.missing.name=필수 항목인 XML 스타일의 'name' 속성이 존재하지 않습니다.
+jsp.error.jspoutput.conflict=&lt;jsp:output&gt;: [{0}]이(가) 다른 값들로 여러 번 나타나는 것은 불허됩니다. (이전 값: [{1}], 신규 값: [{2}])
+jsp.error.jspoutput.doctypenamesystem=&lt;jsp:output&gt;: 'doctype-root-element'와 'doctype-system' 속성들은 반드시 함께 나타나야 합니다.
+jsp.error.jspoutput.doctypepublicsystem=&lt;jsp:output&gt;: 'doctype-public' 속성이 나타나는 경우에는, 'doctype-system' 속성이 반드시 존재해야 합니다.
+jsp.error.jspoutput.invalidUse=&lt;jsp:output&gt;은 표준 문법에서 사용되서는 안됩니다.
+jsp.error.jspoutput.nonemptybody=&lt;jsp:output&gt;은 body를 포함해서는 안됩니다.
+jsp.error.jsptext.badcontent='&lt;'가 &lt;jsp:text&gt;의 body 내에 존재할 때에는 반드시 CDATA 내에 포함되어야 합니다.
+jsp.error.lastModified=파일 [{0}]을(를) 위한 최종 변경 시간을 결정할 수 없습니다.
+jsp.error.library.invalid=라이브러리 [{0}]에 의하면, JSP 페이지가 유효하지 않습니다: [{1}]
+jsp.error.literal_with_void=Void 반환 타입인 deferred 메소드로서 정의된 속성 [{0}]을(를) 위해, literal 값이 지정되었습니다. JSP.2.3.4는 이런 경우 literal 값들을 허용하지 않습니다.
+jsp.error.loadclass.taghandler=태그 [{1}]을(를) 위한 태그 핸들러 클래스 [{0}]을(를) 로드할 수 없습니다.
+jsp.error.location=행: [{0}], 열: [{1}]
+jsp.error.mandatory.attribute=[{0}]: 필수 속성 [{1}]이(가) 없습니다.
+jsp.error.missing.tagInfo=[{0}]을(를) 위한 TagInfo 객체가 TLD에 없습니다.
+jsp.error.missing_attribute=해당 TLD 또는 태그 파일에 의하면, 속성 [{0}]은(는) 태그 [{1}]에 필수 사항입니다.
+jsp.error.missing_var_or_varReader='var' 또는 'varReader' 속성이 없습니다.
+jsp.error.namedAttribute.invalidUse=jsp:attribute는 반드시 표준 또는 커스텀 액션의 하위 엘리먼트이어야 합니다.
+jsp.error.needAlternateJavaEncoding=기본 자바 인코딩 [{0}]은(는) 귀하의 자바 플랫폼에서 유효하지 않습니다. JspServlet의 ''javaEncoding'' 파라미터를 통해, 대안적 인코딩을 설정할 수 있습니다.
+jsp.error.nested.jspattribute=jsp:attribute 표준 액션은 또 다른 jsp:attribute 표준 액션 내에 포함될 수 없습니다.
+jsp.error.nested.jspbody=jsp:body 표준 액션은, 또 다른 jsp:body 또는 jsp:attribute 표준 액션 내에 포함될 수 없습니다.
+jsp.error.nested_jsproot=Nested &lt;jsp:root&gt;
+jsp.error.no.more.content=파싱이 더 요구되는 상황에서, 컨텐트의 끝에 도달했습니다: 태그 nesting 오류일까요?
+jsp.error.no.scratch.dir=JSP 엔진에 scratch 디렉토리가 설정되지 않았습니다. 이 컨텍스트를 위해 "jsp.initparams=scratchdir=<dir-name>"을 servlets.properties 파일에 추가하십시오.
+jsp.error.no.scriptlets=스크립팅 엘리먼트들은 ( &lt;%!, &lt;jsp:declaration, &lt;%=, &lt;jsp:expression, &lt;%, &lt;jsp:scriptlet ) 이곳에서 허용되지 않습니다.
+jsp.error.noFunction=지정된 prefix를 사용하여 function [{0}]의 위치를 결정할 수 없습니다.
+jsp.error.noFunctionMethod=클래스 [{2}] 내에서, function [{1}]을(를) 위한 메소드 [{0}]을(를) 찾을 수 없습니다.
+jsp.error.non_null_tei_and_var_subelems=태그 [{0}]이(가) 하나 이상의 variable 하위 엘리먼트들과, 하나 이상의 VariableInfo들을 반환하는 TagExtraInfo 클래스를 포함하고 있습니다.
+jsp.error.not.in.template=JSP 템플릿 텍스트의 body에서, [{0}]은(는) 허용되지 않습니다.
+jsp.error.outputfolder=출력 폴더가 없음
+jsp.error.overflow=오류: JSP 버퍼 오버플로우
+jsp.error.page.conflict.autoflush=페이지 지시어: ''autoFlush''가 다른 값들로 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.buffer=페이지 지시어: 다른 값들을 가진 ''buffer''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.contenttype=페이지 지시어: 다른 값들을 가지는 ''contentType''이 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.deferredsyntaxallowedasliteral=페이지 지시어: 다른 값들을 가지는 ''deferredSyntaxAllowedAsLiteral''이 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.errorpage=페이지 지시어: 다른 값들을 가지는 ''errorPage''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.extends=페이지 지시어: 다른 값들을 가지는 ''extends''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.info=페이지 지시어: 다른 값들을 가지는 ''info''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.iselignored=페이지 지시어: 다른 값들을 가지는 ''isELIgnored''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.iserrorpage=페이지 지시어: 다른 값들을 가지는 ''isErrorPage''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.isthreadsafe=페이지 지시어: 다른 값들을 가지는 ''isThreadSafe''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.language=페이지 지시어: 다른 값들로 ''language''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.session=페이지 지시어: ''session''이 다른 값들로 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.conflict.trimdirectivewhitespaces=페이지 지시어: 다른 값들을 가지는 ''trimDirectiveWhitespaces''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.page.invalid.buffer=페이지 지시어: 유효하지 않은 버퍼 설정 값
+jsp.error.page.invalid.deferredsyntaxallowedasliteral=페이지 지시어: deferredSyntaxAllowedAsLiteral에 유효하지 않은 값
+jsp.error.page.invalid.import=페이지 지시어: 임포트를 위한 유효한 값이 아닙니다.
+jsp.error.page.invalid.iselignored=페이지 지시어: isELIgnored에 유효하지 않은 값
+jsp.error.page.invalid.iserrorpage=페이지 지시어: isErrorPage에 유효하지 않은 값
+jsp.error.page.invalid.isthreadsafe=페이지 지시어: isThreadSafe에 유효하지 않은 값
+jsp.error.page.invalid.session=페이지 지시어: 세션을 위해 유효하지 않은 값
+jsp.error.page.invalid.trimdirectivewhitespaces=페이지 지시어: trimDirectiveWhitespaces에 유효하지 않은 값
+jsp.error.page.language.nonjava=페이지 지시어: 유효하지 않은 language 속성입니다.
+jsp.error.page.multi.pageencoding=페이지 지시어는 여러 개의 pageencoding을 가져서는 안됩니다.
+jsp.error.page.noSession=어떤 세션에도 참여하지 않는 페이지에서 세션 scope에 접근할 수 없습니다.
+jsp.error.param.invalidUse=jsp:param 액션은, jsp:include, jsp:forward, 또는 jsp:params 엘리먼트들 외부에서 사용되서는 안됩니다.
+jsp.error.paramexpected="name"과 "value" 속성들을 포함한 "jsp:param" 표준 액션이 요구됩니다.
+jsp.error.params.emptyBody=jsp:params는 반드시 적어도 하나 이상의 jsp:param을 포함해야 합니다.
+jsp.error.params.invalidUse=jsp:params는 반드시 jsp:plugin의 직계 자식이어야 합니다.
+jsp.error.parse.error.in.TLD=태그 라이브러리 descriptor 내에서 파싱 오류 발생: [{0}]
+jsp.error.parse.xml=[{0}] 파일에서 XML 파싱 오류 발생
+jsp.error.parse.xml.invalidPublicId=유효하지 않은 PUBLIC ID: [{0}]
+jsp.error.parse.xml.line=파일 [{0}]에서 XML 파싱 오류 발생: (행: [{1}], 열: [{2}])
+jsp.error.parse.xml.scripting.invalid.body=[{0}] 엘리먼트의 body 내에서는, 반드시 어떠한 XML 엘리먼트들도 포함해서는 안됩니다.
+jsp.error.plugin.badtype=jsp:plugin: 내의 'type' 속성을 위해 불허되는 값입니다. 반드시 'bean' 또는 'applet'이어야 합니다.
+jsp.error.plugin.nocode=jsp:plugin에 code가 선언 안됨
+jsp.error.plugin.notype=jsp:plugin에 type이 선언되지 않았습니다.
+jsp.error.plugin.wrongRootElement=[{0}] 내의 루트 엘리먼트의 이름이 [{1}]와(과) 다릅니다.
+jsp.error.prefix.refined=현재 범위에서 이미 [{2}](으)로서 정의되어 있는데, prefix를 [{0}]에서 [{1}](으)로 재정의하려는 시도입니다.
+jsp.error.prefix.use_before_dcl=이 태그 지시어에 지정된 prefix [{0}]은(는), 이전에 파일 [{1}] 내의 [{2}] 행에 있는 액션에 의해 사용된 적이 있습니다.
+jsp.error.prolog_config_encoding_mismatch=XML 프롤로그 [{0}]에 지정된 페이지 인코딩이, jsp-property-group [{1}]에 지정된 것과 다릅니다.
+jsp.error.prolog_pagedir_encoding_mismatch=XML 프롤로그 [{0}]에 지정된 페이지 인코딩이, 페이지 지시어 [{1}]에 지정된 것과 다릅니다.
+jsp.error.quotes.unterminated=종료되지 않은 인용부들
+jsp.error.scripting.variable.missing_name=속성 [{0}](으)로부터 스크립팅 변수 이름을 결정할 수 없습니다.
+jsp.error.servlet.destroy.failed=JSP 페이지를 위한 Servlet.destroy() 호출 중 예외 발생
+jsp.error.signature.classnotfound=TLD 내에 function [{1}]을 위해 지정된 메소드 signature에 포함된 클래스 [{0}]을(를) 찾을 수 없습니다. [{2}]
+jsp.error.simpletag.badbodycontent=클래스 [{0}]을(를) 위한 TLD가 SimpleTag로서 유효하지 않은 body-content (JSP)를 지정하고 있습니다.
+jsp.error.single.line.number=JSP 파일 [{1}]의 [{0}] 행에서 오류가 발생했습니다.
+jsp.error.stream.close.failed=스트림 닫기 실패
+jsp.error.stream.closed=스트림이 닫혔습니다.
+jsp.error.tag.conflict.attr=태그 지시어: 서로 다른 값들을 가지는 속성 [{0}]이(가) 여러 번 나타나는 것은 불허됩니다. (이전 값: [{1}], 신규 값: [{2}])
+jsp.error.tag.conflict.deferredsyntaxallowedasliteral=태그 지시어: 다른 값들을 가지는 "deferredSyntaxAllowedAsLiteral"이 여러 번 나타나는 것은 불허됩니다 (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.tag.conflict.iselignored=태그 지시어: 다른 값들을 가지는 ''isELIgnored''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.tag.conflict.language=태그 지시어: 다른 값들을 가지는 ''language''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.tag.conflict.trimdirectivewhitespaces=태그 지시어: 다른 값들을 가지는 ''trimDirectiveWhitespaces''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
+jsp.error.tag.invalid.deferredsyntaxallowedasliteral=태그 지시어: deferredSyntaxAllowedAsLiteral을 위해 유효하지 않은 값
+jsp.error.tag.invalid.iselignored=태그 지시어: isELIgnored을 위해 유효하지 않은 값
+jsp.error.tag.invalid.trimdirectivewhitespaces=태그 지시어: trimDirectiveWhitespaces에 유효하지 않은 값
+jsp.error.tag.language.nonjava=태그 지시어: 유효하지 않은 language 속성
+jsp.error.tag.multi.pageencoding=태그 지시어에서 pageEncoding이 여러 번 나타나서는 안됩니다.
+jsp.error.tagdirective.badbodycontent=태그 지시어 내에 유효하지 않은 body-content: [{0}]
+jsp.error.tagfile.badSuffix=태그 파일 경로 [{0}]이(가) ".tag"로 끝나지 않습니다.
+jsp.error.tagfile.illegalPath=불허되는 태그 파일 경로: [{0}]. 경로는 반드시 "/WEB-INF/tags" 또는 "/META-INF/tags"로 시작해야 합니다.
+jsp.error.tagfile.missingPath=태그 파일에 대한 경로가 지정되지 않았습니다.
+jsp.error.tagfile.nameFrom.badAttribute=attribute 지시어는 ([{1}] 행에 선언되고 그 name 속성이 [{0}]이며 그 값은 name-from-attribute의 값인) 반드시 java.lang.String 타입이어야 하고, "required"여야 하며, "rtexprvalue"가 되어서는 안됩니다.
+jsp.error.tagfile.nameFrom.noAttribute=이 name-from-attribute 속성 값, [{0}]을(를) 가진 name 속성을 가진 attribute 지시어를 찾을 수 없습니다.
+jsp.error.tagfile.nameNotUnique=[{2}] 행에 있는 [{0}] 값과 [{1}] 값이 동일합니다.
+jsp.error.taglibDirective.absUriCannotBeResolved=절대 URI인 [{0}]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다.
+jsp.error.taglibDirective.both_uri_and_tagdir='uri'와 'tagdir' 속성, 둘 다 지정되었습니다.
+jsp.error.taglibDirective.missing.location='uri'나 'tagdir' 중 어느 것도 지정되지 않았습니다.
+jsp.error.tei.invalid.attributes=[{0}]을(를) 위한 TagExtraInfo로부터 Validation 오류 메시지입니다.
+jsp.error.teiclass.instantiation=TagExtraInfo 클래스 [{0}]을(를) 로드하거나 인스턴스를 생성하지 못했습니다.
+jsp.error.text.has_subelement=&lt;jsp:text&gt;는 하위 엘리먼트들을 가져서는 안됩니다.
+jsp.error.tld.fn.duplicate.name=태그 라이브러리 [{1}] 내에, 중복된 function 이름 [{0}]이(가) 존재합니다.
+jsp.error.tld.fn.invalid.signature=TLD 내에 function signature로서 유효하지 않은 문법입니다. 태그 라이브러리: [{0}], Function: [{1}]
+jsp.error.tld.invalid_tld_file=유효하지 않은 TLD 파일: [{0}]. 보다 상세한 정보는 JSP 스펙 7.3.1 장을 참조하십시오.
+jsp.error.tld.mandatory.element.missing=TLD 파일 [{1}] 내에서, 필수 항목인 TLD 엘리먼트 [{0}]이(가) 존재하지 않거나 비어 있습니다.
+jsp.error.tld.missing_jar=TLD를 포함하는 JAR 리소스 [{0}]이(가) 없습니다.
+jsp.error.tld.unable_to_get_jar=TLD [{1}]을(를) 포함한 JAR 리소스 [{0}]을(를) 구할 수 없습니다.
+jsp.error.tlv.invalid.page=[{1}] 내의 [{0}]을(를) 위한 TagLibraryValidator로부터 Validation 오류 메시지들
+jsp.error.tlvclass.instantiation=TagLibraryValidator 클래스 [{0}]을(를) 로드하거나 인스턴스를 생성하지 못했습니다.
+jsp.error.unable.compile=JSP를 위한 클래스를 컴파일할 수 없습니다.
+jsp.error.unable.deleteClassFile=클래스 파일을 삭제할 수 없습니다.
+jsp.error.unable.load=JSP를 위한 클래스를 로드할 수 없습니다.
+jsp.error.unable.renameClassFile=클래스 파일의 이름을 변경할 수 없습니다.
+jsp.error.unable.to_find_method=속성 [{0}]을(를) 위한 setter 메소드를 찾을 수 없습니다.
+jsp.error.unavailable=JSP가 가용하지 않은 상태로 표시되어 있습니다.
+jsp.error.unbalanced.endtag=종료 태그 "&lt;/{0}"이(가) 시작 태그와 맞지 않습니다.
+jsp.error.undeclared_namespace=커스텀 태그가, 선언되지 않은 네임스페이스 [{0}]을(를) 포함했습니다.
+jsp.error.unknown_attribute_type=속성 [{0}]을(를) 위한 속성 타입으로 알 수 없는 값 [{1}]이(가) 설정되었습니다.
+jsp.error.unsupported.encoding=지원되지 않는 인코딩: [{0}]
+jsp.error.unterminated=종료되지 않은 [{0}] 태그
+jsp.error.usebean.duplicate=useBean: 중복된 bean 이름: [{0}]
+jsp.error.usebean.noSession=JSP 페이지가 세션에 참여하지 않기로 (page 지시어를 통해) 선언되어 있을 때, useBean이 session scope을 사용하는 것은 불허됩니다.
+jsp.error.var_and_varReader='var'또는 'varReader' 중 오직 하나만 지정할 수 있습니다.
+jsp.error.variable.alias=variable 지시어 내에서, name-from-attribute과 alias 속성, 둘 다 지정하거나, 둘 다 지정하지 말아야 합니다.
+jsp.error.variable.both.name=variable 지시어 내에서, name-given과 name-from-attribute 속성, 둘 다를 지정할 수 없습니다.
+jsp.error.variable.either.name=name-given 또는 name-from-attribute 속성 둘 중 하나는, variable 지시어 내에서 반드시 지정되어야 합니다.
+jsp.error.xml.badStandardAction=유효하지 않은 표준 액션: [{0}]
+jsp.error.xml.bad_tag=URI [{1}]와(과) 연관된 태그 라이브러리 내에, 태그 [{0}]이(가) 정의되지 않았습니다.
+jsp.exception=행 [{1}]에서 [{0}]을(를) 처리하는 중 예외 발생
+jsp.info.ignoreSetting=SecurityManager가 사용 가능 상태로 설정되었기 때문에, [{1}]의 [{0}]을(를) 위한 설정은 무시됩니다.
+jsp.message.dont.modify.servlets=중요사항: 코드 생성된 서블릿들을 변경하지 마시오.
+jsp.message.jsp_added=컨텍스트 [{1}]의 큐에, 경로 [{0}]을(를) 위한 JSP를 추가합니다.
+jsp.message.jsp_queue_created=컨텍스트 [{1}]을(를) 위해 길이가 [{0}]인 JSP 큐를 생성했습니다.
+jsp.message.jsp_queue_update=컨텍스트 [{1}]의 큐에 존재하는 JSP 서블릿(경로: [{0}])을 변경합니다.
+jsp.message.jsp_removed_excess=컨텍스트 [{1}]의 큐로부터, 과도하게 오래 수행되는 JSP (경로: [{0}]) 페이지를 제거합니다.
+jsp.message.jsp_removed_idle=컨텍스트 [{1}] 내의 경로 [{0}]을(를) 위한 JSP가 [{2}] 밀리초 동안 유휴 상태에 있었으므로 제거합니다.
+jsp.message.jsp_unload_check=컨텍스트 [{0}] 내에서 JSP들이 언로드되어야 하는지 점검합니다. JSP 개수: [{1}], 큐 길이: [{2}]
+jsp.message.parent_class_loader_is=부모 클래스로더: [{0}]]
+jsp.message.scratch.dir.is=JSP 엔진을 위한 Scratch 디렉토리: [{0}]
+jsp.tldCache.noTldSummary=적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다.
+jsp.warning.bad.urlpattern.propertygroup=web.xml 내 url-pattern 하위 엘리먼트에 잘못된 값: [{0}]
+jsp.warning.checkInterval=경고: initParam인 checkInterval에 유효하지 않은 값. 기본 값인 "300" 초를 사용할 것입니다.
+jsp.warning.classDebugInfo=경고: initParam인 classdebuginfo에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.compiler.classfile.delete.fail=생성된 클래스 파일 [{0}]을(를) 삭제하지 못했습니다.
+jsp.warning.compiler.classfile.delete.fail.unknown=코드 생성된 클래스 파일(들)을 삭제하지 못했습니다.
+jsp.warning.compiler.javafile.delete.fail=생성된 자바 파일 [{0}]을(를) 삭제하지 못했습니다.
+jsp.warning.development=경고: initParam인 development에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
+jsp.warning.displaySourceFragment=경고: initParam인 displaySourceFragment에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
+jsp.warning.dumpSmap=경고: initParam인 dumpSmap에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.enablePooling=주의: initParam인 enablePooling에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
+jsp.warning.fork=경고: initParam인 fork에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
+jsp.warning.genchararray=경고: initParam인 genStringAsCharArray에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.jspIdleTimeout=경고: initParam인 jspIdleTimeout에 유효하지 않은 값. 기본값 "-1"을 사용할 것입니다.
+jsp.warning.keepgen=경고: initParam인 keepgenerated에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.mappedFile=경고: initParam인 mappedFile에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.maxLoadedJsps=경고: initParam인 maxLoadedJsps에 유효하지 않은 값. 기본 값인 "-1"을 사용할 것입니다.
+jsp.warning.modificationTestInterval=경고: initParam인 modificationTestInterval에 유효하지 않은 값. 기본 값인 "4"초를 사용할 것입니다.
+jsp.warning.noJarScanner=경고: ServletContext에 org.apache.tomcat.JarScanner가 설정되지 않았습니다. 기본 JarScanner 구현 객체를 사용할 것입니다.
+jsp.warning.quoteAttributeEL=경고: initParam인 quoteAttributeEL에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.recompileOnFail=경고: initParam인 recompileOnFail에 유효하지 않은 값. 기본 값인 false를 사용할 것입니다.
+jsp.warning.suppressSmap=경고: initParam인 suppressSmap에 유효하지 않은 값. 기본값인 "false"를 사용할 것입니다.
+jsp.warning.unknown.sourceVM=알 수 없는 Source VM [{0}]은(는) 무시됩니다.
+jsp.warning.unknown.targetVM=알 수 없는 target VM [{0}]은(는) 무시됩니다.
+jsp.warning.unsupported.sourceVM=요청된 소스 VM [{0}]은(는) 지원되지 않습니다. [{1}]을(를) 사용합니다.
+jsp.warning.unsupported.targetVM=요청된 대상 VM [{0}]은(는) 지원되지 않습니다. [{1}]을(를) 사용합니다.
+jsp.warning.xpoweredBy=경고: initParam인 xpoweredBy에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+
+jspc.delete.fail=파일 [{0}]을(를) 삭제하지 못했습니다.
+jspc.error.fileDoesNotExist=파일 아규먼트 [{0}]이(가) 존재하지 않습니다.
+jspc.error.generalException=오류: 파일 [{0}]이(가) 다음의 일반적인 예외를 발생시켰습니다:
+jspc.generation.result=[{0}]개의 오류를 발생시키며, 코드 생성이 [{1}] 밀리초에 완료되었습니다.
+jspc.implicit.uriRoot=uriRoot가 묵시적으로 [{0}](으)로 설정됨
+jspc.webfrg.footer=\n\
+</web-fragment>\n\
+\n
+jspc.webinc.footer=<!--\n\
+End of content automatically created by Apache Tomcat JspC.\n\
+-->\n\
+\n\
+\n
+jspc.webinc.header=<!--\n\
+Automatically created by Apache Tomcat JspC.\n\
+-->\n\
+\n\
+\n
+jspc.webinc.insertEnd=<!-- JSPC servlet mappings end -->
+jspc.webinc.insertStart=<!-- JSPC servlet mappings start -->
+jspc.webxml.footer=\n\
+</web-app>\n\
+\n
+
+org.apache.jasper.compiler.ELParser.invalidQuotesForStringLiteral=문자열 literal [{0}]은(는) 유효하지 않습니다. 반드시 홑따옴표들 또는 쌍따옴표들로 둘러싸여야 합니다.
+org.apache.jasper.compiler.ELParser.invalidQuoting=표현식 [{0}]은(는) 유효하지 않습니다. 인용되는 문자열 내에서는, 오직 [], [''] 그리고 ["] 만이 [] 을 사용하여 escape될 수 있습니다.
+
+xmlParser.skipBomFail=XML 입력 스트림을 파싱할 때 BOM을 건너뛰지 못했습니다.
diff --git a/java/org/apache/naming/LocalStrings_ko.properties b/java/org/apache/naming/LocalStrings_ko.properties
new file mode 100644
index 0000000..0404c1b
--- /dev/null
+++ b/java/org/apache/naming/LocalStrings_ko.properties
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+contextBindings.noContextBoundToCL=Naming 컨텍스트가 이 클래스로더에 바인딩되지 않았습니다.
+contextBindings.noContextBoundToThread=이 쓰레드에 Naming 컨텍스트가 바인딩되지 않았습니다.
+contextBindings.unknownContext=알 수 없는 컨텍스트 이름: [{0}]
+
+namingContext.alreadyBound=Name [{0}]이(가) 이미 이 컨텍스트에 바인딩 되어 있습니다.
+namingContext.contextExpected=Name이 컨텍스트에 바인딩 되지 않았습니다.
+namingContext.failResolvingReference=참조를 결정하는 중 예기치 않은 예외 발생
+namingContext.invalidName=Name이 유효하지 않습니다.
+namingContext.nameNotBound=Name [{0}]은(는) 이 컨텍스트에 바인딩되지 않았습니다. [{1}]을(를) 찾을 수 없습니다.
+namingContext.noAbsoluteName=이 네임스페이스를 위한 절대 이름을 생성할 수 없습니다.
+namingContext.readOnly=컨텍스트가 읽기 전용입니다.
+
+selectorContext.methodUsingName=Name [{1}]을(를) 사용하여 메소드 [{0}]을(를) 호출합니다.
+selectorContext.methodUsingString=문자열 [{1}]을(를) 사용하여 메소드 [{0}]을(를) 호출합니다.
+selectorContext.noJavaUrl=이 컨텍스트는 반드시 java: URL을 통해 접근되어야 합니다.
diff --git a/java/org/apache/naming/factory/LocalStrings_ko.properties b/java/org/apache/naming/factory/LocalStrings_ko.properties
new file mode 100644
index 0000000..60c0f47
--- /dev/null
+++ b/java/org/apache/naming/factory/LocalStrings_ko.properties
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dataSourceLinkFactory.badWrapper=타입 [{0}]을(를) 위한 wrapper가 아닙니다.
+
+factoryBase.factoryClassError=리소스 팩토리 클래스를 로드하지 못했습니다.
+factoryBase.factoryCreationError=리소스 팩토리 인스턴스를 생성하지 못했습니다.
+factoryBase.instanceCreationError=리소스 인스턴스를 생성하지 못했습니다.
+
+lookupFactory.circularReference=[{0}]을(를) 수반한 순환 참조를 발견했습니다.
+lookupFactory.createFailed=JNDI lookup 팩토리 클래스의 인스턴스를 생성할 수 없었습니다.
+lookupFactory.loadFailed=JNDI lookup 팩토리 클래스를 로드할 수 없었습니다.
+lookupFactory.typeMismatch=JNDI 참조 [{0}]은(는) 타입이 [{1}]이어야 하지만, lookup으로 찾아진 객체 [{2}]은(는) 타입이 [{3}]입니다.
+
+resourceFactory.factoryCreationError=리소스 팩토리 인스턴스를 생성할 수 없었습니다.
+
+resourceLinkFactory.invalidGlobalContext=호출자가, 유효하지 않은 글로벌 컨텍스트를 제공했습니다.
+resourceLinkFactory.nullType=글로벌 리소스 [{1}]을(를) 참조하는 해당 로컬 리소스 링크 [{0}]이(가) 필수적인 속성 타입을 지정하지 않았습니다.
+resourceLinkFactory.unknownType=글로벌 리소스 [{1}]을(를) 참조하는 해당 로컬 리소스 링크 [{0}]이(가), 알 수 없는 타입 [{2}]으로 지정되어 있습니다.
+resourceLinkFactory.wrongType=글로벌 리소스 [{1}]을(를) 참조하는 해당 로컬 리소스 링크 [{0}]은(는), 타입 [{2}]의 인스턴스틀 반환할 것으로 기대되었지만, 정작 타입 [{3}]의 인스턴스를 반환했습니다.
diff --git a/java/org/apache/naming/factory/webservices/LocalStrings_ko.properties b/java/org/apache/naming/factory/webservices/LocalStrings_ko.properties
new file mode 100644
index 0000000..cbb7afc
--- /dev/null
+++ b/java/org/apache/naming/factory/webservices/LocalStrings_ko.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+serviceProxy.portNotFound=Port-component-ref [{0}]을(를) 찾을 수 없습니다.
diff --git a/java/org/apache/tomcat/util/LocalStrings_ko.properties b/java/org/apache/tomcat/util/LocalStrings_ko.properties
new file mode 100644
index 0000000..b0a5227
--- /dev/null
+++ b/java/org/apache/tomcat/util/LocalStrings_ko.properties
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+diagnostics.threadDumpTitle=풀 쓰레드 덤프
+diagnostics.vmInfoClassCompilation=클래스 컴파일
+diagnostics.vmInfoClassLoading=클래스 로딩
+diagnostics.vmInfoGarbageCollectors=Garbage Collector [{0}]
+diagnostics.vmInfoLogger=Logger 정보
+diagnostics.vmInfoMemory=메모리 정보
+diagnostics.vmInfoMemoryManagers=메모리 매니저 [{0}]
+diagnostics.vmInfoMemoryPools=메모리 풀 [{0}]
+diagnostics.vmInfoOs=운영체제 정보
+diagnostics.vmInfoPath=경로 정보
+diagnostics.vmInfoRuntime=런타임 정보
+diagnostics.vmInfoStartup=프로그램 시작 아규먼트들
+diagnostics.vmInfoSystem=시스템 프로퍼티들
+diagnostics.vmInfoThreadCounts=쓰레드 개수
+diagnostics.vmInfoThreadMxBean=ThreadMXBean 용량정보들
diff --git a/java/org/apache/tomcat/util/buf/LocalStrings_ko.properties b/java/org/apache/tomcat/util/buf/LocalStrings_ko.properties
new file mode 100644
index 0000000..8bdce35
--- /dev/null
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_ko.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+b2cConverter.unknownEncoding=문자 인코딩 [{0}]은(는) 지원되지 않습니다.
+
+uDecoder.convertHexDigit.notHex=[{0}]은(는) 16진수 숫자가 아닙니다.
+uDecoder.urlDecode.conversionError=문자셋 [{1}]을(를) 사용하여 [{0}]을(를) 디코드하지 못했습니다.
+uDecoder.urlDecode.missingDigit=% 문자 뒤에 두 개의 16진수 숫자들이 이어져야 하기 때문에, [{0}]을(를) 디코드하지 못했습니다.
diff --git a/java/org/apache/tomcat/util/compat/LocalStrings_ko.properties b/java/org/apache/tomcat/util/compat/LocalStrings_ko.properties
new file mode 100644
index 0000000..05e0e91
--- /dev/null
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_ko.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jre9Compat.invalidModuleUri=[{0}](으)로 제공된 모듈 URI는 JarScanner가 처리할 수 있는 URL로 변환될 수 없습니다.
diff --git a/java/org/apache/tomcat/util/descriptor/LocalStrings_ko.properties b/java/org/apache/tomcat/util/descriptor/LocalStrings_ko.properties
new file mode 100644
index 0000000..e723fae
--- /dev/null
+++ b/java/org/apache/tomcat/util/descriptor/LocalStrings_ko.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+digesterFactory.missingSchema=XML 스키머 [{0}]을(를) 찾을 수 없었습니다. XML validation이 사용 가능 상태라면, 이는 XML validation 실패를 일으킬 가능성이 큽니다.
+
+localResolver.unresolvedEntity=Public ID가 [{1}]이고 system ID가 [{2}]이며 base URI가 [{3}]인 XML 리소스 [{0}]을(를), 알려진 로컬 엔티티로 결정할 수 없습니다.
+
+xmlErrorHandler.error=[{1}]을(를) 처리 중, 치명적이지 않은 오류 [{0}]이(가) 보고되었습니다.
+xmlErrorHandler.warning=[{1}]을(를) 처리 중 경고가 보고됨: [{0}]
diff --git a/java/org/apache/tomcat/util/http/LocalStrings_ko.properties b/java/org/apache/tomcat/util/http/LocalStrings_ko.properties
new file mode 100644
index 0000000..1ed3f3b
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/LocalStrings_ko.properties
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cookies.fallToDebug=\n\
+\ 비고: 쿠키 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+cookies.invalidCookieToken=쿠키들: 유효하지 않은 쿠키입니다. 유효한 토큰 또는 인용부호로 처리된 값이 아닙니다.
+cookies.invalidSpecial=쿠키들: 알 수 없는 특별한 쿠키
+cookies.maxCountFail=허용된 최대 쿠키 개수 [{0}]을(를) 초과한 쿠키들이 탐지되었습니다.
+
+headers.maxCountFail=최대 허용 헤더 개수 [{0}]보다 더 많은 헤더들이 탐지되었습니다.
+
+parameters.bytes=입력 [{0}]을(를) 사용하여 처리를 시작합니다.
+parameters.copyFail=디버그 로그를 위한 원래의 파라미터 값들을 복사하지 못했습니다.
+parameters.decodeFail.debug=문자 디코딩 실패. 값 [{1}](으)로 설정된 파라미터 [{0}]은(는) 무시됩니다.
+parameters.decodeFail.info=문자 디코딩이 실패했습니다. 값 [{1}]을(를) 가진 파라미터 [{0}]은(는) 무시되었습니다. 주의: 여기서 인용된 이름과 값은 디코딩 실패로 인해 데이터가 손상되었을 수 있습니다. 손상되지 않은 원본 데이터를 보시려면, 로그 레벨을 디버그 레벨로 하십시오.
+parameters.emptyChunk=빈 파라미터 chunk는 무시됩니다.
+parameters.fallToDebug=\n\
+비고: 파라미터 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+parameters.invalidChunk=[{0}] 바이트에서 시작하고 [{1}] 바이트에서 끝나며 값이 [{2}]인, 유효하지 않은 chunk는 무시됩니다.
+parameters.maxCountFail=단일 요청 ([{0}])에 허용되는 최대 요청 파라미터들의 개수 보다 더 많은 파라미터들이 탐지되었습니다. 이 한계값을 초과하는 파라미터들은 무시되었습니다. 이 한계값을 변경하기 위해서는 Connector의 maxParameterCount 속성을 설정하십시오.
+parameters.maxCountFail.fallToDebug=\n\
+비고: 이 오류가 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+parameters.multipleDecodingFail=문자 디코딩이 실패했습니다. 전체 [{0}]개의 실패가 탐지되었지만, 오직 첫번째 실패만 로그에 기록되었습니다. 모든 실패들을 로그에 남기려면 로그 레벨을 디버그 레벨로 설정하십시오.
+parameters.noequal=위치 [{0}]에서 시작하고 위치 [{1}]에서 끝나며 값이 [{2}]인 파라미터 다음에, ''='' 문자가 뒤따르지 않습니다.
diff --git a/java/org/apache/tomcat/util/http/parser/LocalStrings_ko.properties b/java/org/apache/tomcat/util/http/parser/LocalStrings_ko.properties
new file mode 100644
index 0000000..2295ec0
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings_ko.properties
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+http.closingBracket=닫는 대괄호(']')가 IPv6 이름이 아닌 호스트 이름에서 발견되었습니다.
+http.illegalAfterIpv6=호스트 이름 내에서, IPv6 주소 이후에 문자 [{0}]은(는) 허용되지 않습니다.
+http.illegalCharacterDomain=문자 [{0}]은(는) 도메인 이름 내에서 유효하지 않은 문자입니다.
+http.illegalCharacterIpv4=문자 [{0}]은(는) IPv4 주소에서 절대 유효하지 않은 것입니다.
+http.illegalCharacterIpv6=문자 [{0}]은(는) IPv6 주소 내에서 유효하지 않은 것입니다.
+http.invalidHextet=유효하지 않은 헥스텟(hextet)입니다. 헥스텟은 반드시 네 개 이하의 문자들이어야 합니다.
+http.invalidIpv4Location=IPv6 주소가, 유효하지 않은 위치에 내장 IPv4 주소를 포함하고 있습니다.
+http.invalidLeadingZero=IPv4 옥텟(octet)은, 값이 0이 아닌 이상, 0으로 시작해서는 안됩니다.
+http.invalidOctet=유효하지 않은 옥텟(octet) [{0}]. IPv4 옥텟의 유효한 범위는 0에서 255까지입니다.
+http.invalidSegmentEndState=상태 [{0}]은(는) segment의 끝으로 유효하지 않습니다.
+http.noClosingBracket=IPv6 주소에 닫는 대괄호가 없습니다.
+http.noOpeningBracket=IPv6 주소에 여는 대괄호가 없습니다.
+http.singleColonEnd=IPv6 주소는 단일 ':' 문자로 끝나서는 안됩니다.
+http.singleColonStart=IPv6 주소는 단일의 ':'으로 시작할 수 없습니다.
+http.tooFewHextets=IPv6 주소는 반드시 8개의 헥스텟(hextet)들로 이루어져야 하지만, 이 주소는 [{0}] 개의 헥스텟들으로 이루어져 있고, 하나 이상의 0 헥스텟들을 표시하기 위한 ''::'' 시퀀스도 존재하지 않습니다.
+http.tooManyColons=IPv6 주소는 연속으로 두 개를 초과한 콜론 문자('':'')들을 포함할 수 없습니다.
+http.tooManyDoubleColons=IPv6 주소는 단일한 '::' 시퀀스만을 포함해야 합니다.
+http.tooManyHextets=IPv6 주소가 [{0}]개의 헥스텟(hextet)들을 포함하고 있지만, 유효한 IPv6 주소는 8개를 초과할 수 없습니다.
+http.wrongOctetCount=IPv4 주소는 반드시, [{0}]개가 아니라, 정확히 4개의 옥텟(octet)들을 가져야 합니다.
diff --git a/java/org/apache/tomcat/util/scan/LocalStrings_ko.properties b/java/org/apache/tomcat/util/scan/LocalStrings_ko.properties
new file mode 100644
index 0000000..b747954
--- /dev/null
+++ b/java/org/apache/tomcat/util/scan/LocalStrings_ko.properties
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jarScan.classloaderFail=클래스로더 계층구조로부터 [{0}]을(를) 스캔하지 못했습니다.
+jarScan.classloaderJarNoScan=클래스패스로부터 파일 [{0}]에 대한 JAR 스캔을 수행하지 않습니다.
+jarScan.classloaderJarScan=클래스패스로부터 JAR [{0}]을(를) 스캔합니다.
+jarScan.classloaderStart=클래스로더 계층 구조에서 JAR들을 스캔합니다.
+jarScan.jarUrlStart=URL [{0}]에 위치한 JAR를 스캔합니다.
+jarScan.webinflibFail=/WEB-INF/lib으로부터 JAR [{0}]을(를) 스캔하지 못했습니다.
+jarScan.webinflibJarNoScan=/WEB-INF/lib 내의 파일 [{0}]에 대한 JAR 스캔을 수행하지 않습니다.
+jarScan.webinflibJarScan=/WEB-INF/lib으로부터 JAR [{0}]을(를) 스캔합니다.
+jarScan.webinflibStart=JAR들을 찾기 위해 /WEB-INF/lib을 스캔합니다.
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties b/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
new file mode 100644
index 0000000..ad04282
--- /dev/null
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+threadPoolExecutor.threadStoppedToAvoidPotentialLeak=컨텍스트가 중지된 후에 발생할 수 있는 잠재적 메모리 누수를 피하기 위하여, 쓰레드 [{0}]을(를) 중지시킵니다.
diff --git a/java/org/apache/tomcat/websocket/LocalStrings_ko.properties b/java/org/apache/tomcat/websocket/LocalStrings_ko.properties
new file mode 100644
index 0000000..82753b6
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/LocalStrings_ko.properties
@@ -0,0 +1,120 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+asyncChannelGroup.createFail=JavaEE 컨테이너들과 같은 복잡한 클래스로더 환경에서 메모리 누수를 방지하기 위해 필수적이며 웹소켓 클라이언트들을 위한, 전용 AsynchronousChannelGroup를 생성할 수 없습니다.
+
+asyncChannelWrapperSecure.closeFail=채널을 깨끗하게 닫지 못했습니다.
+asyncChannelWrapperSecure.concurrentRead=동시 발생적인 읽기 오퍼레이션들은 허용되지 않습니다.
+asyncChannelWrapperSecure.concurrentWrite=동시적인 쓰기 오퍼레이션들은 허용되지 않습니다.
+asyncChannelWrapperSecure.eof=예기치 않은 스트림의 끝
+asyncChannelWrapperSecure.statusUnwrap=unwrap() 오퍼레이션 후에, SSLEngineResult의 예기치 않은 상태입니다.
+asyncChannelWrapperSecure.statusWrap=wrap() 오퍼레이션 수행 이후, SSLEngineResult의 예기치 않은 상태입니다.
+asyncChannelWrapperSecure.tooBig=결과 [{0}]이(가) 너무 커서, 정수로서 표현될 수 없습니다.
+asyncChannelWrapperSecure.wrongStateRead=읽기 오퍼레이션을 완료하려 시도할 때에, 읽기 진행 중임을 표시하는 플래그가 false인 것으로 (true였어만 했음에도) 밝혀졌습니다.
+asyncChannelWrapperSecure.wrongStateWrite=쓰기 오퍼레이션을 완료하려 시도할 때, 쓰기 진행 중이라는 플래그가 false로 (true였어야 함에도) 밝혀졌습니다.
+
+backgroundProcessManager.processFailed=백그라운드 프로세스가 실패했습니다.
+
+caseInsensitiveKeyMap.nullKey=널인 키들은 허용되지 않습니다.
+
+futureToSendHandler.timeout=[{0}] [{1}]이(가) 완료되기를 기다린 후, 작업 제한 시간을 초과했습니다.
+
+perMessageDeflate.deflateFailed=압축된 웹소켓 프레임의 압축을 풀지 못했습니다.
+perMessageDeflate.duplicateParameter=[{0}] 확장 파라미터가 중복 정의되어 있습니다.
+perMessageDeflate.invalidWindowSize=크기가 [{1}]인 유효하지 않은 윈도우들이 [{0}]을 위해 지정되었습니다. 유효한 값들의 범위는 8에서 15까지의 모든 숫자들입니다.
+perMessageDeflate.unknownParameter=알 수 없는 확장 파라미터 [{0}]은(는), 정의되지 않았습니다.
+
+transformerFactory.unsupportedExtension=Extension [{0}]은(는) 지원되지 않습니다.
+
+util.invalidMessageHandler=제공된 메시지 핸들러에 onMessage(Object) 메소드가 없습니다.
+util.invalidType=[{0}] 값을 타입 [{1}](으)로 강제 변환시킬 수 없습니다. 해당 타입은 지원되지 않습니다.
+util.notToken=허용되지 않는 확장 파라미터가 지정되었습니다. 이름: [{0}], 값: [{1}].
+util.unknownDecoderType=해당 디코더 타입 [{0}]은(는) 인식되지 않습니다.
+
+wsFrame.bufferTooSmall=비동기 메시지를 지원할 수 없습니다. 버퍼가 너무 작습니다. 버퍼 크기: [{0}], 메시지 크기: [{1}]
+wsFrame.byteToLongFail=너무 많은 바이트들([{0}])이 제공되어, long으로 변환될 수 없었습니다.
+wsFrame.closed=Control 프레임을 닫은 이후에 새로운 프레임을 받았습니다.
+wsFrame.controlFragmented=단편화된(fragmented) Control 프레임을 받았지만, Control 프레임은 단편화될 수 없습니다.
+wsFrame.controlNoFin=fin 비트셋을 포함하지 않은 control 프레임이 전송되었습니다. Control 프레임들에 continuation 프레임들이 사용되는 것이 허용되지 않습니다.
+wsFrame.controlPayloadTooBig=Control 프레임이, 크기가 [{0}]인 payload와 함께 전송되었는데, 이는 최대 허용치인 125바이트를 초과합니다.
+wsFrame.invalidOpCode=인식되지 않는 opCode [{0}]와(과) 함께, 웹소켓 프레임이 전송되었습니다.
+wsFrame.invalidUtf8=웹소켓 텍스트 프레임을 받았는데, 유효하지 않은 바이트 시퀀스를 포함하고 있기 때문에, UTF-8로 디코딩될 수 없었습니다.
+wsFrame.invalidUtf8Close=웹소켓 닫기 프레임을 접수하였는데, 닫기 사유는 유효하지 않은 UTF-8 바이트 시퀀스들을 포함했다는 것입니다.
+wsFrame.ioeTriggeredClose=복구될 수 없는 IOException이 발생하여 연결이 닫혔습니다.
+wsFrame.messageTooBig=메시지가 [{0}] 바이트의 길이로 되어 있으나, MessageHandler는 [{1}] 바이트의 제한값을 가지고 있습니다.
+wsFrame.noContinuation=Continuation 프레임이 요구될 때에, 새로운 메시지가 시작되었습니다.
+wsFrame.notMasked=클라이언트 프레임이 마스크 되어 있지 않습니다. 모든 클라이언트 프레임들은 반드시 마스크 되어야 합니다.
+wsFrame.oneByteCloseCode=클라이언트가 단일 바이트의 payload를 가진 닫기 프레임을 보냈는데, 이는 유효하지 않습니다.
+wsFrame.partialHeaderComplete=웹소켓 프레임을 받았습니다. fin [{0}], rsv [{1}], OpCode [{2}], payload 길이 [{3}]
+wsFrame.sessionClosed=해당 세션이 이미 닫혔기 때문에, 클라이언트 데이터가 처리될 수 없습니다.
+wsFrame.textMessageTooBig=디코드된 텍스트 메시지가 출력 버퍼에 비해 너무 크며, 해당 엔드포인트는 partial 메시지들을 지원하지 않습니다.
+wsFrame.wrongRsv=클라이언트 프레임이, opCode [{1}]을(를) 포함한 메시지를 위해, reserved 비트들을 [{0}](으)로 설정했는데, 이는 이 엔드포인트에 의해 지원되지 않습니다.
+
+wsFrameClient.ioe=서버가 전송한 데이터를 읽는 중 실패
+
+wsHandshakeRequest.invalidUri=문자열 [{0}]은(는) 유효한 URI를 구성하는 데 사용될 수 없습니다.
+wsHandshakeRequest.unknownScheme=요청의 스킴 [{0}]이(가) 인식되지 않는 스킴입니다.
+
+wsRemoteEndpoint.changeType=단편화된(fragmented) 메시지를 전송할 때, 모든 fragment들은 반드시 동일한 타입이어야 합니다.
+wsRemoteEndpoint.closed=웹소켓 세션이 이미 닫혔기 때문에, 메시지가 전달되지 않을 것입니다.
+wsRemoteEndpoint.closedDuringMessage=웹소켓 세션이 이미 닫혔기 때문에, 메시지의 나머지 부분은 전달되지 않을 것입니다.
+wsRemoteEndpoint.closedOutputStream=OutputStream이 이미 닫혀 있으므로, 이 메소드는 호출될 수 없습니다.
+wsRemoteEndpoint.closedWriter=Writer가 이미 닫혔기 때문에, 이 메소드는 호출될 수 없습니다.
+wsRemoteEndpoint.flushOnCloseFailed=세션이 이미 종료된 이후에도, 메시지들이 배치(batch)에 포함되어 있습니다. 배치에 남아있는 메시지들을 배출할 수 없습니다.
+wsRemoteEndpoint.invalidEncoder=지정된 타입 [{0}]의 Encoder의 인스턴스를 생성할 수 없었습니다.
+wsRemoteEndpoint.noEncoder=클래스 [{0}]의 객체를 위한 인코더가 지정되지 않았습니다.
+wsRemoteEndpoint.nullData=유효하지 않은 널 데이터 아규먼트
+wsRemoteEndpoint.nullHandler=유효하지 않은 널 핸들러 아규먼트
+wsRemoteEndpoint.tooMuchData=Ping 또는 pong은 125 바이트를 초과한 데이터를 보낼 수 없습니다.
+wsRemoteEndpoint.wrongState=호출된 메소드에 대해, 원격 엔드포인트가 유효하지 않은 상태 [{0}]에 있습니다.
+
+wsSession.closed=웹소켓 세션 [{0}]은(는) 이미 닫혔으며, (close()를 제외한) 어떤 메소드도 닫힌 세션에 호출되어서는 안됩니다.
+wsSession.created=웹소켓 세션 [{0}]을(를) 생성했습니다.
+wsSession.doClose=웹소켓 세션 [{0}]을(를) 닫습니다.
+wsSession.duplicateHandlerBinary=바이너리 메시지 핸들러가 이미 설정되었습니다.
+wsSession.duplicateHandlerPong=Pong 메시지 핸들러가 이미 설정되었습니다.
+wsSession.duplicateHandlerText=텍스트 메시지 핸들러가 이미 설정되어 있습니다.
+wsSession.flushFailOnClose=세션이 닫힐 때, 배치에 쌓인 메시지들을 배출하지 못했습니다.
+wsSession.instanceDestroy=엔드포인트 인스턴스에 대한 등록을 제거하지 못했습니다.
+wsSession.instanceNew=엔드포인트 인스턴스 등록 실패
+wsSession.invalidHandlerTypePong=Pong 메시지 핸들러는 반드시 MessageHandler.Whole을 구현해야 합니다.
+wsSession.messageFailed=웹소켓 연결이 이미 닫혔기 때문에, 완전한 메시지를 쓸 수 없습니다.
+wsSession.removeHandlerFailed=핸들러 [{0}]이(가), 이 세션과 함께 등록되지 않았었기 때문에, 제거될 수 없습니다.
+wsSession.sendCloseFail=세션 [{0}]을(를) 위해, 원격 엔드포인트로 세션 닫기 메시지를 보내지 못했습니다.
+wsSession.timeout=웹소켓 세션 [{0}]이(가) 제한 시간 초과로 만료되었습니다.
+wsSession.unknownHandler=인식되지 않는 타입 [{1}]을(를) 위한 것이었기에, 해당 메시지 핸들러 [{0}]을(를) 추가할 수 없습니다.
+wsSession.unknownHandlerType=메시지 핸들러 [{0}]이(가) 인식되지 않는 타입 [{1}](으)로 wrap 되어 있어, 추가할 수 없습니다.
+
+wsWebSocketContainer.asynchronousSocketChannelFail=서버에 대한 연결을 열 수 없습니다.
+wsWebSocketContainer.defaultConfiguratorFail=기본 Configurator를 생성하지 못했습니다.
+wsWebSocketContainer.endpointCreateFail=타입이 [{0}]인 로컬 엔드포인트를 생성하지 못했습니다.
+wsWebSocketContainer.failedAuthentication=HTTP 응답 코드 [{0}]을(를) 처리하지 못했습니다. 인증 헤더가 서버에 의해 받아들여지지 않았습니다.
+wsWebSocketContainer.httpRequestFailed=웹소켓 연결을 초기화하기 위한 HTTP 요청이 실패했습니다.
+wsWebSocketContainer.invalidExtensionParameters=서버가, 클라이언트가 지원할 수 없는 확장 파라미터들과 함께 응답했습니다.
+wsWebSocketContainer.invalidHeader=[{0}] 내에서, 헤더 이름과 헤더 값을 구분하기 위한 콜론('':'')이 존재하지 않기에, HTTP 헤더를 파싱할 수 없습니다. 해당 헤더를 건너뛰었습니다.
+wsWebSocketContainer.invalidStatus=서버 [{0}](으)로부터의 HTTP 응답은, 웹소켓으로 HTTP 업그레이드를 허용하지 않았습니다.
+wsWebSocketContainer.invalidSubProtocol=웹소켓 서버가, 해당 Sec-WebSocket-Protocol 헤더를 위해 여러 값들을 반환했습니다.
+wsWebSocketContainer.maxBuffer=이 구현은 버퍼의 최대 크기를 Integer.MAX_VALUE로 제한합니다.
+wsWebSocketContainer.missingAnnotation=@ClientEndpoint에 의해 annotate되지 않았기에, POJO 클래스 [{0}]을(를) 사용할 수 없습니다.
+wsWebSocketContainer.missingLocationHeader=HTTP 응답 코드 [{0}]을(를) 처리하지 못했습니다. 응답에 Location 헤더가 없습니다.
+wsWebSocketContainer.missingWWWAuthenticateHeader=HTTP 응답 코드 [{0}]을(를) 처리하지 못했습니다. 응답 헤더 WWW-Authenticate가 없습니다.
+wsWebSocketContainer.pathNoHost=URI 내에 호스트가 지정되지 않았습니다.
+wsWebSocketContainer.pathWrongScheme=스킴 [{0}]은(는) 지원되지 않습니다. 지원되는 스킴들은 ws와 wss입니다.
+wsWebSocketContainer.proxyConnectFail=설정된 프록시 [{0}](으)로 연결하지 못했습니다. HTTP 응답 코드는 [{1}]이었습니다.
+wsWebSocketContainer.redirectThreshold=순환 Location 헤더 [{0}]이(가) 탐지되었고, 최대 redirect 회수에 도달했습니다. 최대 [{2}]회 중 [{1}]회.
+wsWebSocketContainer.sessionCloseFail=ID가 [{0}]인 세션이 깨끗하게 닫히지 않았습니다.
+wsWebSocketContainer.shutdown=웹 애플리케이션이 중지되고 있습니다.
+wsWebSocketContainer.sslEngineFail=SSL/TLS 연결들을 지원하는 SSLEngine을 생성할 수 없습니다.
+wsWebSocketContainer.unsupportedAuthScheme=HTTP 응답 코드 [{0}]을(를) 처리하지 못했습니다. 지원되지 않는 인증 스킴 [{1}]이(가) 응답에서 반환되었습니다.
diff --git a/java/org/apache/tomcat/websocket/pojo/LocalStrings_ko.properties b/java/org/apache/tomcat/websocket/pojo/LocalStrings_ko.properties
new file mode 100644
index 0000000..78174c8
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/pojo/LocalStrings_ko.properties
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+pojoEndpointBase.closeSessionFail=오류 처리 중 웹소켓 세션을 닫지 못했습니다.
+pojoEndpointBase.onCloseFail=타입이 [{0}]인 POJO를 위한 POJO 엔드포인트의 onClose 메소드를 호출하지 못했습니다.
+pojoEndpointBase.onError=[{0}]을(를) 위한 오류 핸들링이 설정되지 않았으며, 다음과 같은 오류가 발생했습니다.
+pojoEndpointBase.onErrorFail=타입이 [{0}]인 POJO를 위한 POJO 엔드포인트의 onError를 호출하지 못했습니다.
+pojoEndpointBase.onOpenFail=타입이 [{0}]인 POJO를 위한, POJO 엔드포인트의 onOpen 메소드를 호출하지 못했습니다.
+
+pojoEndpointServer.getPojoInstanceFail=타입이 [{0}]인 POJO 인스턴스를 생성하지 못했습니다.
+
+pojoMessageHandlerWhole.decodeIoFail=메시지를 디코딩하는 중 IO 오류 발생
+pojoMessageHandlerWhole.maxBufferSize=이 구현을 위해 지원되는 최대 메시지 크기는 Integer.MAX_VALUE입니다.
+
+pojoMethodMapping.decodePathParamFail=경로 파라미터 값 [{0}]을(를), 요구되는 타입 [{1}](으)로 디코드하지 못했습니다.
+pojoMethodMapping.duplicateAnnotation=중복된 [{0}] annotation들이 클래스 [{1}]에 존재합니다.
+pojoMethodMapping.duplicateLastParam=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에, 여러 개의 boolean 타입의 (마지막) 파라미터들이 존재합니다.
+pojoMethodMapping.duplicateMessageParam=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 여러 개의 메시지 파라미터들이 존재합니다.
+pojoMethodMapping.duplicatePongMessageParam=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 여러 개의 PongMessage 파라미터들이 존재합니다.
+pojoMethodMapping.duplicateSessionParam=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 여러 개의 세션 파라미터들이 존재합니다.
+pojoMethodMapping.invalidDecoder=지정된 타입 [{0}]의 디코더를 생성할 수 없었습니다.
+pojoMethodMapping.methodNotPublic=Annotate된 메소드 [{0}]이(가) public 메소드가 아닙니다.
+pojoMethodMapping.noDecoder=클래스 [{1}]에서, OnMessage로 annotate된 메소드 [{0}]에 존재하는 메시지 파라미터들을 위한 디코더를 찾을 수 없습니다.
+pojoMethodMapping.noPayload=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에, payload 파라미터가 존재하지 않습니다.
+pojoMethodMapping.onErrorNoThrowable=OnError로 annotate된 클래스 [{1}]의 메소드 [{0}]에 Throwable 파라미터가 없습니다.
+pojoMethodMapping.paramWithoutAnnotation=@PathParam으로 annotate 되지 않은 클래스 [{2}]의 메소드 [{1}]에서, 타입이 [{0}]인 파라미터가 발견되었습니다.
+pojoMethodMapping.partialInputStream=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 유효하지 않은 InputStream과 boolean 파라미터들이 존재합니다.
+pojoMethodMapping.partialObject=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 유효하지 않은 Object와 boolean 파라미터들이 존재합니다.
+pojoMethodMapping.partialPong=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 존재하는 PongMessage와 boolean 파라미터들은 유효하지 않습니다.
+pojoMethodMapping.partialReader=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에, 유효하지 않은 Reader와 boolean 파라미터들이 존재합니다.
+pojoMethodMapping.pongWithPayload=OnMessage로 annotate된 클래스 [{1}]의 메소드 [{0}]에 존재하는 PongMessage와 Message 파라미터들은 유효하지 않습니다.
+
+pojoPathParam.wrongType=타입 [{0}]은(는) 경로 파라미터로서 허용되지 않습니다. @PathParam으로 annotate된 파라미터들은 오직 문자열들, 또는 자바 원시타입들 또는 그것들의 박싱된 버전들이어야 합니다.
diff --git a/java/org/apache/tomcat/websocket/server/LocalStrings_ko.properties b/java/org/apache/tomcat/websocket/server/LocalStrings_ko.properties
new file mode 100644
index 0000000..58f5870
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/server/LocalStrings_ko.properties
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+serverContainer.addNotAllowed=이전에 등록된 엔드포인트들 중 하나라도 사용하려고 시도하게 되면, 엔드포인트들을 더 이상 등록할 수 없습니다.
+serverContainer.configuratorFail=타입이 [{1}]인 POJO를 위한 타입 [{0}]의 Configurator를 생성하지 못했습니다.
+serverContainer.duplicatePaths=여러 개의 엔드포인트들이 동일한 경로 [{0}]에 배치될 수 없습니다: 기존 엔드포인트는 [{1}]였으며 신규 엔드포인트는 [{2}]입니다.
+serverContainer.encoderFail=타입이 [{0}]인 인코더를 생성할 수 없습니다.
+serverContainer.failedDeployment=이전 배치의 실패로 인하여, 호스트 [{1}] 내에 경로 [{0}]의 웹 애플리케이션에 대한 웹소켓 엔드포인트들의 배치가 허용되지 않습니다.
+serverContainer.missingAnnotation=클래스가 @ServerEndpoint로 annotate되어 있지 않기에, POJO 클래스 [{0}]을(를) 배치할 수 없습니다.
+serverContainer.missingEndpoint=경로 [{0}]을(를) 위한 엔드포인트 인스턴스가 요청되었지만, 부합되는 엔드포인트 클래스를 찾지 못했습니다.
+serverContainer.pojoDeploy=POJO 클래스인 [{0}]을(를) 서블릿 컨텍스트 [{2}]의 [{1}] 경로에 배치합니다.
+serverContainer.servletContextMismatch=컨텍스트 경로가 [{2}]인 ServletContext에 할당되어 있는 상황에서, 웹소켓 ServerContainer가, 컨텍스트 경로가 [{1}]인 ServletContext에서 경로 [{0}]에 있는 WebSocket을 위해, annotate된 POJO를 등록하려 시도했습니다.
+serverContainer.servletContextMissing=지정된 ServletContext가 없습니다.
+
+upgradeUtil.incompatibleRsv=호환되지 않는 RSV 비트를 사용하여, Extension들이 지정되었습니다.
+
+uriTemplate.duplicateParameter=허용되지 않는 경로에서, 파라미터 [{0}]이(가) 두번 이상 나타나고 있습니다.
+uriTemplate.emptySegment=경로 [{0}]이(가), 하나 이상의 허용되지 않는 empty segment들을 포함하고 있습니다.
+uriTemplate.invalidPath=경로 [{0}](은)는 유효하지 않습니다.
+uriTemplate.invalidSegment=세그먼트 [{0}]은(는) 제공된 경로 [{1}] 내에 유효하지 않습니다.
+
+wsFrameServer.bytesRead=[{0}] 바이트를 입력 버퍼에 읽어 처리를 준비합니다.
+wsFrameServer.onDataAvailable=메소드 엔트리
+
+wsHttpUpgradeHandler.destroyFailed=웹소켓 HttpUpgradeHandler를 소멸시키는 중, WebConnection을 닫지 못했습니다.
+wsHttpUpgradeHandler.noPreInit=컨테이너가 init()을 호출하기 전에 웹소켓 HttpUpgradeHandler를 설정하기 위하여, preInit() 메소드가 반드시 호출되어야만 합니다. 통상 이는 WsHttpUpgradeHandler 인스턴스를 생성한 서블릿도 preInit()을 호출해야 함을 의미합니다.
+
+wsRemoteEndpointServer.closeFailed=해당 ServletOutputStream의 연결을 깨끗하게 닫지 못했습니다.
diff --git a/res/maven/mvn-pub.xml b/res/maven/mvn-pub.xml
index 3f79c7b..42b6a30 100644
--- a/res/maven/mvn-pub.xml
+++ b/res/maven/mvn-pub.xml
@@ -318,6 +318,7 @@
     <doMavenDeployNoSrc artifactId="tomcat-i18n-es"/>
     <doMavenDeployNoSrc artifactId="tomcat-i18n-fr"/>
     <doMavenDeployNoSrc artifactId="tomcat-i18n-ja"/>
+    <doMavenDeployNoSrc artifactId="tomcat-i18n-ko"/>
     <doMavenDeployNoSrc artifactId="tomcat-i18n-ru"/>
 
     <!-- Extras jars -->
diff --git a/res/maven/tomcat-i18n-ko.pom b/res/maven/tomcat-i18n-ko.pom
new file mode 100644
index 0000000..2d7fd2e
--- /dev/null
+++ b/res/maven/tomcat-i18n-ko.pom
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+  http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.tomcat</groupId>
+  <artifactId>tomcat-i18n-ko</artifactId>
+  <version>@MAVEN.DEPLOY.VERSION@</version>
+  <description>Korean translations</description>
+  <url>https://tomcat.apache.org/</url>
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+</project>
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 6b0671c..d707dfa 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -181,6 +181,9 @@
         distribution. Back-port additions and updates to the German i18n
         messages. (markt)
       </add>
+      <add>
+        Add Korean translations to the standard Tomcat distribution. (markt)
+      </add>
     </changelog>
   </subsection>
 </section>
diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_ko.properties b/webapps/examples/WEB-INF/classes/LocalStrings_ko.properties
new file mode 100644
index 0000000..5999f05
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_ko.properties
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cookies.cookies=귀하의 브라우저가 다음 쿠키들을 보냅니다.
+cookies.make-cookie=귀하의 브라우저에 전송하기 위한 쿠키 생성
+cookies.name=이름:
+cookies.no-cookies=귀하의 브라우저는 어떤 쿠키도 전송하지 않습니다.
+cookies.set=귀하는 다음 쿠키를, 귀하의 브라우저에 전송했습니다.
+cookies.title=쿠키들의 예제
+cookies.value=값:
+
+helloworld.title=안녕 세계여!
+
+requestheader.title=요청의 헤더 예제
+
+requestinfo.label.method=메소드:
+requestinfo.label.pathinfo=경로 정보:
+requestinfo.label.protocol=프로토콜:
+requestinfo.label.remoteaddr=원격 주소:
+requestinfo.label.requesturi=요청 URI:
+requestinfo.title=요청 정보 예제
+
+requestparams.firstname=이름:
+requestparams.lastname=성
+requestparams.no-params=파라미터들이 없습니다. 파라미터들을 입력하십시오.
+requestparams.params-in-req=이 요청의 파라미터들:
+requestparams.title=요청 파라미터들의 예제
+
+sessions.adddata=귀하의 세션에 데이터를 추가
+sessions.created=생성시간:
+sessions.data=귀하의 세션에 다음 데이터가 있습니다:
+sessions.dataname=세션 속성 이름:
+sessions.datavalue=세션 속성 값:
+sessions.id=세션 ID:
+sessions.lastaccessed=최종 접근 시간:
+sessions.title=세션들의 예제


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org