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 13:55:13 UTC

[tomcat] branch 8.5.x updated (cc0bd3c -> be0d580)

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

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


    from cc0bd3c  Back-port additions and improvements to the Russian i18n messages.
     new b2d767e  Add Korean translations to standard Tomcat distribution
     new be0d580  Add Simplified Chinese translations

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build.xml                                          |  20 ++
 java/javax/el/LocalStrings_ko.properties           |  52 ++++
 java/javax/el/LocalStrings_zh_CN.properties        |  50 ++++
 java/javax/servlet/LocalStrings_ko.properties      |  23 ++
 java/javax/servlet/LocalStrings_zh_CN.properties   |  22 ++
 java/javax/servlet/http/LocalStrings_ko.properties |  27 ++
 .../servlet/http/LocalStrings_zh_CN.properties     |  23 ++
 .../authenticator/LocalStrings_ko.properties       |  72 +++++
 .../authenticator/LocalStrings_zh_CN.properties    |  45 +++
 .../jaspic/LocalStrings_ko.properties              |  30 ++
 .../jaspic/LocalStrings_zh_CN.properties           |  25 ++
 .../catalina/connector/LocalStrings_ko.properties  |  89 ++++++
 .../connector/LocalStrings_zh_CN.properties        |  41 +++
 .../catalina/core/LocalStrings_ko.properties       | 262 +++++++++++++++++
 .../catalina/core/LocalStrings_zh_CN.properties    | 103 +++++++
 .../catalina/deploy/LocalStrings_ko.properties     |  25 ++
 .../catalina/deploy/LocalStrings_zh_CN.properties  |  20 ++
 .../catalina/filters/LocalStrings_ko.properties    |  65 +++++
 .../catalina/filters/LocalStrings_zh_CN.properties |  35 +++
 .../ha/authenticator/LocalStrings_ko.properties    |  17 ++
 .../ha/authenticator/LocalStrings_zh_CN.properties |  16 ++
 .../catalina/ha/context/LocalStrings_ko.properties |  19 ++
 .../catalina/ha/deploy/LocalStrings_ko.properties  |  52 ++++
 .../ha/deploy/LocalStrings_zh_CN.properties        |  28 ++
 .../catalina/ha/session/LocalStrings_ko.properties |  90 ++++++
 .../ha/session/LocalStrings_zh_CN.properties       |  37 +++
 .../catalina/ha/tcp/LocalStrings_ko.properties     |  42 +++
 .../catalina/ha/tcp/LocalStrings_zh_CN.properties  |  23 ++
 .../catalina/loader/LocalStrings_ko.properties     |  71 +++++
 .../catalina/loader/LocalStrings_zh_CN.properties  |  32 +++
 .../catalina/manager/LocalStrings_ko.properties    | 177 ++++++++++++
 .../catalina/manager/LocalStrings_zh_CN.properties |  77 +++++
 .../manager/host/LocalStrings_ko.properties        |  91 ++++++
 .../manager/host/LocalStrings_zh_CN.properties     |  57 ++++
 .../catalina/mapper/LocalStrings_ko.properties     |  31 ++
 .../catalina/mapper/LocalStrings_zh_CN.properties  |  20 ++
 .../catalina/mbeans/LocalStrings_ko.properties     |  23 ++
 .../catalina/realm/LocalStrings_ko.properties      | 104 +++++++
 .../catalina/realm/LocalStrings_zh_CN.properties   |  49 ++++
 .../catalina/security/LocalStrings_ko.properties   |  22 ++
 .../security/LocalStrings_zh_CN.properties         |  16 ++
 .../catalina/servlets/LocalStrings_ko.properties   |  55 ++++
 .../servlets/LocalStrings_zh_CN.properties         |  28 ++
 .../catalina/session/LocalStrings_ko.properties    |  83 ++++++
 .../catalina/session/LocalStrings_zh_CN.properties |  42 +++
 .../catalina/startup/LocalStrings_ko.properties    | 162 +++++++++++
 .../catalina/startup/LocalStrings_zh_CN.properties |  72 +++++
 .../storeconfig/LocalStrings_ko.properties         |  22 ++
 .../tribes/group/LocalStrings_ko.properties        |  28 ++
 .../tribes/group/LocalStrings_zh_CN.properties     |  18 ++
 .../group/interceptors/LocalStrings_ko.properties  |  83 ++++++
 .../interceptors/LocalStrings_zh_CN.properties     |  53 ++++
 .../catalina/tribes/io/LocalStrings_ko.properties  |  27 ++
 .../tribes/io/LocalStrings_zh_CN.properties        |  23 ++
 .../catalina/tribes/jmx/LocalStrings_ko.properties |  21 ++
 .../tribes/jmx/LocalStrings_zh_CN.properties       |  17 ++
 .../tribes/membership/LocalStrings_ko.properties   |  56 ++++
 .../membership/LocalStrings_zh_CN.properties       |  28 ++
 .../tribes/tipis/LocalStrings_ko.properties        |  53 ++++
 .../tribes/tipis/LocalStrings_zh_CN.properties     |  27 ++
 .../tribes/transport/LocalStrings_ko.properties    |  24 ++
 .../tribes/transport/LocalStrings_zh_CN.properties |  20 ++
 .../transport/bio/LocalStrings_ko.properties       |  40 +++
 .../transport/bio/LocalStrings_zh_CN.properties    |  26 ++
 .../transport/nio/LocalStrings_ko.properties       |  57 ++++
 .../transport/nio/LocalStrings_zh_CN.properties    |  33 +++
 .../tribes/util/LocalStrings_ko.properties         |  25 ++
 .../tribes/util/LocalStrings_zh_CN.properties      |  18 ++
 .../catalina/users/LocalStrings_ko.properties      |  30 ++
 .../catalina/users/LocalStrings_zh_CN.properties   |  24 ++
 .../catalina/util/LocalStrings_ko.properties       |  53 ++++
 .../catalina/util/LocalStrings_zh_CN.properties    |  29 ++
 .../catalina/valves/LocalStrings_ko.properties     | 142 ++++++++++
 .../catalina/valves/LocalStrings_zh_CN.properties  |  60 ++++
 .../valves/rewrite/LocalStrings_ko.properties      |  20 ++
 .../webresources/LocalStrings_ko.properties        |  59 ++++
 .../webresources/LocalStrings_zh_CN.properties     |  27 ++
 java/org/apache/coyote/LocalStrings_ko.properties  |  54 ++++
 .../apache/coyote/LocalStrings_zh_CN.properties    |  31 ++
 .../apache/coyote/ajp/LocalStrings_ko.properties   |  34 +++
 .../coyote/ajp/LocalStrings_zh_CN.properties       |  22 ++
 .../coyote/http11/LocalStrings_ko.properties       |  53 ++++
 .../coyote/http11/LocalStrings_zh_CN.properties    |  32 +++
 .../http11/filters/LocalStrings_ko.properties      |  27 ++
 .../http11/filters/LocalStrings_zh_CN.properties   |  24 ++
 .../http11/upgrade/LocalStrings_ko.properties      |  36 +++
 .../http11/upgrade/LocalStrings_zh_CN.properties   |  22 ++
 .../apache/coyote/http2/LocalStrings_ko.properties | 168 +++++++++++
 .../coyote/http2/LocalStrings_zh_CN.properties     |  55 ++++
 .../jasper/resources/LocalStrings_ko.properties    | 313 +++++++++++++++++++++
 .../jasper/resources/LocalStrings_zh_CN.properties | 135 +++++++++
 java/org/apache/naming/LocalStrings_ko.properties  |  30 ++
 .../apache/naming/LocalStrings_zh_CN.properties    |  21 ++
 .../naming/factory/LocalStrings_ko.properties      |  32 +++
 .../naming/factory/LocalStrings_zh_CN.properties   |  16 ++
 .../factory/webservices/LocalStrings_ko.properties |  16 ++
 .../tomcat/dbcp/dbcp2/LocalStrings_ko.properties   |  26 ++
 .../dbcp/dbcp2/LocalStrings_zh_CN.properties       |  20 ++
 .../apache/tomcat/util/LocalStrings_ko.properties  |  30 ++
 .../tomcat/util/LocalStrings_zh_CN.properties      |  23 ++
 .../tomcat/util/buf/LocalStrings_ko.properties     |  28 ++
 .../tomcat/util/buf/LocalStrings_zh_CN.properties  |  16 ++
 .../util/codec/binary/LocalStrings_ko.properties   |  19 ++
 .../tomcat/util/compat/LocalStrings_ko.properties  |  19 ++
 .../util/compat/LocalStrings_zh_CN.properties      |  16 ++
 .../util/descriptor/LocalStrings_ko.properties     |  21 ++
 .../util/descriptor/tld/LocalStrings_ko.properties |  16 ++
 .../util/descriptor/web/LocalStrings_ko.properties |  66 +++++
 .../descriptor/web/LocalStrings_zh_CN.properties   |  27 ++
 .../util/digester/LocalStrings_ko.properties       |  17 ++
 .../util/digester/LocalStrings_zh_CN.properties    |  16 ++
 .../tomcat/util/http/LocalStrings_ko.properties    |  41 +++
 .../tomcat/util/http/LocalStrings_zh_CN.properties |  24 ++
 .../util/http/parser/LocalStrings_ko.properties    |  40 +++
 .../util/http/parser/LocalStrings_zh_CN.properties |  27 ++
 .../tomcat/util/net/LocalStrings_ko.properties     | 154 ++++++++++
 .../tomcat/util/net/LocalStrings_zh_CN.properties  |  67 +++++
 .../util/net/jsse/LocalStrings_ko.properties       |  39 +++
 .../util/net/jsse/LocalStrings_zh_CN.properties    |  22 ++
 .../util/net/openssl/LocalStrings_ko.properties    |  66 +++++
 .../util/net/openssl/LocalStrings_zh_CN.properties |  34 +++
 .../net/openssl/ciphers/LocalStrings_ko.properties |  16 ++
 .../tomcat/util/scan/LocalStrings_ko.properties    |  25 ++
 .../tomcat/util/scan/LocalStrings_zh_CN.properties |  22 ++
 .../util/threads/res/LocalStrings_ko.properties    |  16 ++
 .../tomcat/websocket/LocalStrings_ko.properties    | 132 +++++++++
 .../tomcat/websocket/LocalStrings_zh_CN.properties |  56 ++++
 .../websocket/pojo/LocalStrings_ko.properties      |  45 +++
 .../websocket/pojo/LocalStrings_zh_CN.properties   |  25 ++
 .../websocket/server/LocalStrings_ko.properties    |  43 +++
 .../websocket/server/LocalStrings_zh_CN.properties |  25 ++
 res/maven/mvn-pub.xml                              |   3 +-
 res/maven/tomcat-i18n-ko.pom                       |  35 +++
 res/maven/tomcat-i18n-zh-CN.pom                    |  35 +++
 webapps/docs/changelog.xml                         |   7 +
 .../WEB-INF/classes/LocalStrings_ko.properties     |  48 ++++
 .../WEB-INF/classes/LocalStrings_zh_CN.properties  |  38 +++
 137 files changed, 6273 insertions(+), 1 deletion(-)
 create mode 100644 java/javax/el/LocalStrings_ko.properties
 create mode 100644 java/javax/el/LocalStrings_zh_CN.properties
 create mode 100644 java/javax/servlet/LocalStrings_ko.properties
 create mode 100644 java/javax/servlet/LocalStrings_zh_CN.properties
 create mode 100644 java/javax/servlet/http/LocalStrings_ko.properties
 create mode 100644 java/javax/servlet/http/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/authenticator/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/authenticator/jaspic/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/connector/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/connector/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/core/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/core/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/deploy/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/deploy/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/filters/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/ha/authenticator/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/ha/authenticator/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/ha/context/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/ha/deploy/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/ha/deploy/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/ha/session/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/ha/tcp/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/ha/tcp/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/loader/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/loader/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/manager/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/manager/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/manager/host/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/manager/host/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/mapper/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/mapper/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/mbeans/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/realm/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/security/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/security/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/servlets/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/servlets/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/session/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/session/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/startup/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/storeconfig/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/group/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/group/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/group/interceptors/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/io/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/io/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/jmx/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/jmx/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/membership/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/tipis/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/tipis/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/bio/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/nio/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/transport/nio/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/tribes/util/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/tribes/util/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/users/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/users/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/util/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/util/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/valves/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/valves/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/catalina/valves/rewrite/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/webresources/LocalStrings_ko.properties
 create mode 100644 java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/ajp/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/ajp/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/http11/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/http11/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/http11/filters/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/http11/filters/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/http11/upgrade/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/http11/upgrade/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/coyote/http2/LocalStrings_ko.properties
 create mode 100644 java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/jasper/resources/LocalStrings_ko.properties
 create mode 100644 java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/naming/LocalStrings_ko.properties
 create mode 100644 java/org/apache/naming/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/naming/factory/LocalStrings_ko.properties
 create mode 100644 java/org/apache/naming/factory/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/naming/factory/webservices/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/buf/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/codec/binary/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/compat/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/descriptor/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/descriptor/tld/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/descriptor/web/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/descriptor/web/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/digester/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/http/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/http/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/http/parser/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/net/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/net/jsse/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/net/jsse/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/net/openssl/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/net/openssl/ciphers/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/scan/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/util/scan/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/websocket/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/websocket/pojo/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/websocket/pojo/LocalStrings_zh_CN.properties
 create mode 100644 java/org/apache/tomcat/websocket/server/LocalStrings_ko.properties
 create mode 100644 java/org/apache/tomcat/websocket/server/LocalStrings_zh_CN.properties
 create mode 100644 res/maven/tomcat-i18n-ko.pom
 create mode 100644 res/maven/tomcat-i18n-zh-CN.pom
 create mode 100644 webapps/examples/WEB-INF/classes/LocalStrings_ko.properties
 create mode 100644 webapps/examples/WEB-INF/classes/LocalStrings_zh_CN.properties


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


[tomcat] 02/02: Add Simplified Chinese translations

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit be0d580eee72aed615171ae7068be2b168d9bdd5
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 14:54:59 2019 +0100

    Add Simplified Chinese translations
---
 build.xml                                          |  10 ++
 java/javax/el/LocalStrings_zh_CN.properties        |  50 ++++++++
 java/javax/servlet/LocalStrings_zh_CN.properties   |  22 ++++
 .../servlet/http/LocalStrings_zh_CN.properties     |  23 ++++
 .../authenticator/LocalStrings_zh_CN.properties    |  45 +++++++
 .../jaspic/LocalStrings_zh_CN.properties           |  25 ++++
 .../connector/LocalStrings_zh_CN.properties        |  41 +++++++
 .../catalina/core/LocalStrings_zh_CN.properties    | 103 ++++++++++++++++
 .../catalina/deploy/LocalStrings_zh_CN.properties  |  20 +++
 .../catalina/filters/LocalStrings_zh_CN.properties |  35 ++++++
 .../ha/authenticator/LocalStrings_zh_CN.properties |  16 +++
 .../ha/deploy/LocalStrings_zh_CN.properties        |  28 +++++
 .../ha/session/LocalStrings_zh_CN.properties       |  37 ++++++
 .../catalina/ha/tcp/LocalStrings_zh_CN.properties  |  23 ++++
 .../catalina/loader/LocalStrings_zh_CN.properties  |  32 +++++
 .../catalina/manager/LocalStrings_zh_CN.properties |  77 ++++++++++++
 .../manager/host/LocalStrings_zh_CN.properties     |  57 +++++++++
 .../catalina/mapper/LocalStrings_zh_CN.properties  |  20 +++
 .../catalina/realm/LocalStrings_zh_CN.properties   |  49 ++++++++
 .../security/LocalStrings_zh_CN.properties         |  16 +++
 .../servlets/LocalStrings_zh_CN.properties         |  28 +++++
 .../catalina/session/LocalStrings_zh_CN.properties |  42 +++++++
 .../catalina/startup/LocalStrings_zh_CN.properties |  72 +++++++++++
 .../tribes/group/LocalStrings_zh_CN.properties     |  18 +++
 .../interceptors/LocalStrings_zh_CN.properties     |  53 ++++++++
 .../tribes/io/LocalStrings_zh_CN.properties        |  23 ++++
 .../tribes/jmx/LocalStrings_zh_CN.properties       |  17 +++
 .../membership/LocalStrings_zh_CN.properties       |  28 +++++
 .../tribes/tipis/LocalStrings_zh_CN.properties     |  27 +++++
 .../tribes/transport/LocalStrings_zh_CN.properties |  20 +++
 .../transport/bio/LocalStrings_zh_CN.properties    |  26 ++++
 .../transport/nio/LocalStrings_zh_CN.properties    |  33 +++++
 .../tribes/util/LocalStrings_zh_CN.properties      |  18 +++
 .../catalina/users/LocalStrings_zh_CN.properties   |  24 ++++
 .../catalina/util/LocalStrings_zh_CN.properties    |  29 +++++
 .../catalina/valves/LocalStrings_zh_CN.properties  |  60 +++++++++
 .../webresources/LocalStrings_zh_CN.properties     |  27 +++++
 .../apache/coyote/LocalStrings_zh_CN.properties    |  31 +++++
 .../coyote/ajp/LocalStrings_zh_CN.properties       |  22 ++++
 .../coyote/http11/LocalStrings_zh_CN.properties    |  32 +++++
 .../http11/filters/LocalStrings_zh_CN.properties   |  24 ++++
 .../http11/upgrade/LocalStrings_zh_CN.properties   |  22 ++++
 .../coyote/http2/LocalStrings_zh_CN.properties     |  55 +++++++++
 .../jasper/resources/LocalStrings_zh_CN.properties | 135 +++++++++++++++++++++
 .../apache/naming/LocalStrings_zh_CN.properties    |  21 ++++
 .../naming/factory/LocalStrings_zh_CN.properties   |  16 +++
 .../dbcp/dbcp2/LocalStrings_zh_CN.properties       |  20 +++
 .../tomcat/util/LocalStrings_zh_CN.properties      |  23 ++++
 .../tomcat/util/buf/LocalStrings_zh_CN.properties  |  16 +++
 .../util/compat/LocalStrings_zh_CN.properties      |  16 +++
 .../descriptor/web/LocalStrings_zh_CN.properties   |  27 +++++
 .../util/digester/LocalStrings_zh_CN.properties    |  16 +++
 .../tomcat/util/http/LocalStrings_zh_CN.properties |  24 ++++
 .../util/http/parser/LocalStrings_zh_CN.properties |  27 +++++
 .../tomcat/util/net/LocalStrings_zh_CN.properties  |  67 ++++++++++
 .../util/net/jsse/LocalStrings_zh_CN.properties    |  22 ++++
 .../util/net/openssl/LocalStrings_zh_CN.properties |  34 ++++++
 .../tomcat/util/scan/LocalStrings_zh_CN.properties |  22 ++++
 .../tomcat/websocket/LocalStrings_zh_CN.properties |  56 +++++++++
 .../websocket/pojo/LocalStrings_zh_CN.properties   |  25 ++++
 .../websocket/server/LocalStrings_zh_CN.properties |  25 ++++
 res/maven/mvn-pub.xml                              |   2 +-
 res/maven/tomcat-i18n-zh-CN.pom                    |  35 ++++++
 webapps/docs/changelog.xml                         |   4 +
 .../WEB-INF/classes/LocalStrings_zh_CN.properties  |  38 ++++++
 65 files changed, 2130 insertions(+), 1 deletion(-)

diff --git a/build.xml b/build.xml
index 863f2be..aeeb2b0 100644
--- a/build.xml
+++ b/build.xml
@@ -909,6 +909,16 @@
       <zipfileset file="${tomcat.manifests}/default.license"
         fullpath="META-INF/LICENSE" />
     </jar>
+    <jar jarfile="${tomcat.build}/lib/tomcat-i18n-zh-CN.jar"
+      manifest="${tomcat.manifests}/default.manifest">
+      <fileset dir="${tomcat.classes}">
+        <include name="**/LocalStrings_zh_CN.properties" />
+      </fileset>
+      <zipfileset file="${tomcat.manifests}/default.notice"
+        fullpath="META-INF/NOTICE" />
+      <zipfileset file="${tomcat.manifests}/default.license"
+        fullpath="META-INF/LICENSE" />
+    </jar>
 
   </target>
 
diff --git a/java/javax/el/LocalStrings_zh_CN.properties b/java/javax/el/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..99ab703
--- /dev/null
+++ b/java/javax/el/LocalStrings_zh_CN.properties
@@ -0,0 +1,50 @@
+# 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.
+
+beanNameELResolver.beanReadOnly=名称为[{0}]的bean只读
+
+elProcessor.defineFunctionInvalidClass=类[{0}]不是公共的
+elProcessor.defineFunctionInvalidMethod=类[{1}]的方法[{0}]不是公共静态方法
+elProcessor.defineFunctionInvalidParameterList=类[{2}]的方法[{1}]的参数列表[{0}]无效
+elProcessor.defineFunctionInvalidParameterTypeName=类[{2}]的方法[{1}]的参数类型[{0}]无效
+elProcessor.defineFunctionNoMethod=无法找到类[{1}]的公共静态方法[{0}]
+elProcessor.defineFunctionNullParams=一个或多个输入参数为null
+
+expressionFactory.cannotCreate=无法创建类型为[{0}]的表达式工厂
+expressionFactory.readFailed=无法读取[{0}]
+
+importHandler.ambiguousImport=无法导入类[{0}],因为它与已导入的[{1}]冲突
+importHandler.ambiguousStaticImport=无法处理静态导入[{0}],因为它与已导入的[{1}]冲突
+importHandler.classNotFound=无法导入类[{0}],因为无法找到它
+importHandler.invalidClass=类[{0}]必须是公共的和非抽象的,并且不能是接口
+importHandler.invalidClassNameForStatic=为 static import [{1}] 指定的类 [{0}] 不可用
+importHandler.invalidStaticName=导入 [{0}] 的静态方法或字段名称必须包含类
+importHandler.staticNotFound=导入[{2}]的类[{1}]中找不到静态导入[{0}]
+
+lambdaExpression.tooFewArgs=仅为至少需要[{1}]个参数的lambda表达式提供了[{0}]个参数
+
+objectNotAssignable=无法将类型为[{0}]的对象添加到[{1}]类型的对象数组中
+propertyNotFound=类型[{0}]上找不到属性[{1}]
+propertyNotReadable=属性[{1}]在类型[{0}]上不可读
+propertyNotWritable=属性[{1}]在类型[{0}]上不可写
+propertyReadError=在类型[{0}]上读取[{1}]时出错
+propertyWriteError=在类型[{0}]上写入[{1}]时出错
+
+staticFieldELResolver.methodNotFound=在类[{1}]上找不到名为[{0}]的匹配的公共静态方法
+staticFieldELResolver.notFound=在类[{1}]上找不到名为[{0}]的公共静态字段
+staticFieldELResolver.notWriteable=不允许写入静态字段(当前情况中为类[{1}]上的字段[{0}])
+
+util.method.ambiguous=无法找到明确的方法:{0}.{1}({2})
+util.method.notfound=找不到方法:{0}.{1}({2})
diff --git a/java/javax/servlet/LocalStrings_zh_CN.properties b/java/javax/servlet/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..7fc4358
--- /dev/null
+++ b/java/javax/servlet/LocalStrings_zh_CN.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.
+
+err.not_iso8859_1=不是ISO 8859-1字符:[{0}]
+
+httpConstraintElement.invalidRolesDeny=使用 DENY 时可能未指定角色
+
+httpMethodConstraintElement.invalidMethod=无效的HTTP.方法
+
+value.true=true
diff --git a/java/javax/servlet/http/LocalStrings_zh_CN.properties b/java/javax/servlet/http/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..c471410
--- /dev/null
+++ b/java/javax/servlet/http/LocalStrings_zh_CN.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.cookie_name_blank=Cookie名称不能为null或零长度
+err.io.short_read=短.读
+
+http.method_delete_not_supported=此URL不支持Http方法DELETE
+http.method_get_not_supported=此URL不支持Http方法GET
+http.method_not_implemented=这个servlet没有为这个URI实现方法[{0}]
+http.method_post_not_supported=此URL不支持Http方法POST
+http.method_put_not_supported=此URL不支持HTTP方法PUT
diff --git a/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties b/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..e4d7a05
--- /dev/null
+++ b/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.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.
+
+authenticator.certificates=此请求中没有客户端证书链
+authenticator.changeSessionId=在身份验证时, 会话 ID 从 [{0} 更改为 [{1}]
+authenticator.check.found=已通过身份验证 [{0}]
+authenticator.check.sso=未经过身份验证但找到了SSO会话ID [{0}]。尝试重新验证。
+authenticator.formlogin=对表单登录页的直接引用无效
+authenticator.jaspicCleanSubjectFail=清除 JASPIC 主题失败
+authenticator.jaspicSecureResponseFail=在JASPIC处理期间无法保证响应
+authenticator.jaspicServerAuthContextFail=失败的获取一个JASPIC  ServerAuthContext 实例
+authenticator.loginFail=登录失败
+authenticator.manager=初始化信任管理器异常
+authenticator.noAuthHeader=客户端未发送授权请求头
+authenticator.notContext=配置错误:必须被附属于一个上下文
+authenticator.requestBodyTooBig=请求正文太大,无法在身份验证过程中进行缓存
+authenticator.sessionExpired=已超出登录过程所允许的时间。 如果您希望继续,则必须单击两次后退并重新单击您请求的链接或先关闭然后重新打开浏览器
+authenticator.tomcatPrincipalLogoutFail=使用TomcatPrincipal实例注销失败
+authenticator.unauthorized=无法使用提供的凭据进行身份验证
+
+basicAuthenticator.invalidCharset=只允许值为null、空字符串或UTF-8
+
+digestAuthenticator.cacheRemove=已从客户端 nonce 缓存中删除有效条目,以便为新条目腾出空间。重播攻击现在是可能的。为防止重播攻击的可能性,请降低nonceValidity或增加nonceCacheSize。此类型的进一步警告将被抑制5分钟。
+
+singleSignOn.debug.cookieCheck=SSO检查SSO cookie
+singleSignOn.debug.cookieNotFound=SSO没有找到SSO cookie
+singleSignOn.debug.principalFound=SSO 找到了带着认证类型的缓存代理
+singleSignOn.debug.removeSession=SSO 从 SSO session [{1}] 中删除应用程序会话 [{0}]
+singleSignOn.debug.update=SSO 更新SSO 会话[{0}] 对认证 类型[{1}]
+singleSignOn.sessionExpire.hostNotFound=因为 Host 丢失,SSO 无法使 session [{0}] 失效
+singleSignOn.sessionExpire.managerError=由于会话管理器在检索会话时抛出异常,导致单点登录无法使会话[{0}]失效
+
+spnegoAuthenticator.authHeaderNoToken=客户端发送的协商授权 header 未包含 token
diff --git a/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties b/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..b7f1fa3
--- /dev/null
+++ b/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.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.
+
+authConfigFactoryImpl.zeroLengthAppContext=:)应用上下文名称的长度为0是无效的
+authConfigFactoryImpl.zeroLengthMessageLayer=零长度的消息层名称是无效的
+
+jaspicAuthenticator.authenticate=通过JASPIC验证[{0}]的请求
+
+persistentProviderRegistrations.deleteFail=无法删除临时文件[{0}]
+persistentProviderRegistrations.existsDeleteFail=临时文件[{0}]已存在且无法删除
+persistentProviderRegistrations.moveFail=无法将[{0}]移至[{1}]
+
+simpleServerAuthConfig.noModules=“没有配置ServerAuthModules”
diff --git a/java/org/apache/catalina/connector/LocalStrings_zh_CN.properties b/java/org/apache/catalina/connector/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..b6c2c69
--- /dev/null
+++ b/java/org/apache/catalina/connector/LocalStrings_zh_CN.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.
+
+coyoteAdapter.checkRecycled.response=遇到非回收的相应并强行回收。
+coyoteAdapter.debug=变量[{0}]的值为[{1}]。
+coyoteAdapter.parsePathParam=无法使用编码[{0}]解析地址参数,url中的该地址参数将被忽略
+
+coyoteConnector.invalidEncoding=编码 [{0}] 不能被 JRE 识别,Connector 将继续使用 [{1}]
+coyoteConnector.invalidPort=连接器不能启动,因为指定的端口 [{0}]无效
+coyoteConnector.protocolHandlerInstantiationFailed=协议处理程序实例化失败
+coyoteConnector.protocolHandlerPauseFailed=协议处理程序暂停失败
+coyoteConnector.protocolHandlerStopFailed=协议处理程序.停止失败
+
+coyoteInputStream.nbNotready=在非阻塞模式下,只有之前的读数据完成,并且isReady()方法返回true,你才可以使用 ServletInputStream 读取数据
+
+coyoteRequest.changeSessionId=无法更改 session ID。 没有与此请求关联的 session。
+coyoteRequest.filterAsyncSupportUnknown=无法确定是否有任何过滤器不支持异步处理
+coyoteRequest.gssLifetimeFail=为用户主体 [{0}] 获取剩余生命期失败
+coyoteRequest.noMultipartConfig=由于没有提供multi-part配置,无法处理parts
+coyoteRequest.setAttribute.namenull=不能在一个空的名字上调用setAttribute
+
+coyoteResponse.encoding.invalid=JRE无法识别编码[{0}]
+coyoteResponse.sendRedirect.note=<html><body><p>重定向到<a href="{0}">{0}</a></p></body></html>
+
+request.asyncNotSupported=当前链的筛选器或servlet不支持异步操作。
+
+requestFacade.nullRequest=请求对象已被回收,不再与此facade关联
+
+responseFacade.nullResponse=响应对象已被回收,不再与此外观关联
diff --git a/java/org/apache/catalina/core/LocalStrings_zh_CN.properties b/java/org/apache/catalina/core/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..f4fa870
--- /dev/null
+++ b/java/org/apache/catalina/core/LocalStrings_zh_CN.properties
@@ -0,0 +1,103 @@
+# 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.addJspFile.iae=JSP 文件 [{0}] 不可用
+applicationContext.addListener.iae.cnfe=无法创建类型为 [{0}] 的实例
+applicationContext.addListener.iae.wrongType=指定的类型[{0}]不是预期的侦听器类型之一
+applicationContext.addRole.ise=上下文被初始化后,角色不能再被添加到[{0}]中
+applicationContext.attributeEvent=属性事件监听器引发的异常
+applicationContext.invalidServletName=由于servlet名称[{0}]无效,无法添加对应servlet的定义。
+applicationContext.mapping.error=映射中.的错误
+applicationContext.setAttribute.namenull=Name 不能为 null
+applicationContext.setSessionTracking.iae.ssl=为上下文 [{0}] 请求的 session 跟踪模式包括 SSL 和至少一种其他模式。 SSL可能未配置其他模式。
+applicationContext.setSessionTracking.ise=当上下文正在运行,无法设置上下文[{0}]的会话跟踪模式
+
+applicationDispatcher.specViolation.response=原始的ServletResponse或包装后的ServletResponse未传递给RequestDispatcher,原因:违反了SRV.8.2和SRV.14.2.5.1\n\
+\n
+
+applicationFilterConfig.release=失败的销毁过滤器类型为[{1}]名称为[{0}]
+
+applicationFilterRegistration.nullInitParams=由于name和(或)value为null,无法为过滤器设置初始化参数。name为 [{0}],value为 [{1}]
+
+applicationPushBuilder.methodNotToken=HTTP方法必须是令牌(token),但 [{0}] 包含非令牌字符
+
+aprListener.aprInitError=基于APR的本地库加载失败.错误报告为[{0}]
+aprListener.initializeFIPSSuccess=成功的进入FIPS 模式
+aprListener.initializingFIPS=初始化FIPS模式...
+aprListener.tooLateForSSLRandomSeed=无法设置 SSLRandomSeed:SSL已经初始化
+
+containerBase.backgroundProcess.unexpectedThreadDeath=后台线程[{0}]意外结束
+containerBase.nullName=容器名称不能为null
+containerBase.threadedStartFailed=子容器启动失败
+
+defaultInstanceManager.invalidInjection=方法资源注入注解无效
+defaultInstanceManager.restrictedContainerServlet=禁止访问类 [{0}]。 它是一个受限制的类(实现了 ContainerServlet 接口)。 必须将 Web 应用程序配置为特权才能加载它
+defaultInstanceManager.restrictedListenersResource=无法找到RestrictedListener的配置文件[{0}]
+
+filterChain.filter=Filter 执行抛出一个异常
+
+naming.addEnvEntry=添加环境条目 [{0}]
+naming.addResourceEnvRef=添加资源环境引用 [{0}]
+naming.invalidEnvEntryType=环境条目[{0}]没有一个有效哦的类型
+naming.namingContextCreationFailed=创建上下文名称失败
+naming.wsdlFailed=未找到 wsdl 文件:[{0}]
+
+standardContext.backgroundProcess.resources=异常处理资源[{0}] 后台进程
+standardContext.cookieProcessor.null=不允许将上下文的CookieProcessor 设置为null
+standardContext.errorPage.required=ErrorPage不能为null
+standardContext.errorPage.warning=警告:在Servlet 2.4中,错误页位置 [{0}] 必须以"/"开头
+standardContext.filterMap.either=过滤器映射必须指定 <url-pattern> 或 <servlet-name>
+standardContext.filterMap.name=Filter mapping 指定了一个未知的 filter名称 [{0}]
+standardContext.filterMap.pattern=过滤器映射中的<url-pattern> [{0}] 无效
+standardContext.filterStart=启动过滤器异常
+standardContext.invalidWrapperClass=[{0}] 不是StandardWrapper的子类
+standardContext.isUnavailable=此应用程序目前不可用
+standardContext.listenerStart=异常将上下文初始化事件发送到类的侦听器实例.[{0}]
+standardContext.loginConfig.errorPage=表单错误页[{0}]必须以"/"开始
+standardContext.loginConfig.errorWarning=警告:Servlet 2.4中,表单错误页[{0}]必须以"/"开始
+standardContext.loginConfig.loginPage=表单登录页面 [{0}] 必须以''/''开头
+standardContext.managerFail=会话管理器无法启动
+standardContext.namingResource.init.fail=未能初始化新的命名资源
+standardContext.notStarted=名为[{0}]的上下文还没有被启动
+standardContext.parameter.duplicate=重复的上下文初始化参数[{0}]
+standardContext.predestroy.duplicate=类 [{0}] 的 @PreDestroy 方法定义重复
+standardContext.resourcesStart=启动静态资源出错
+standardContext.resourcesStop=停止静态资源时出错
+standardContext.securityConstraint.mixHttpMethod=在相同的web资源集合中不允许混用: <http-method> 和 <http-method-omission>
+standardContext.securityConstraint.pattern=安全约束中的<url-pattern> [{0}] 无效
+standardContext.servletFail=启动时无法加载一个或多个Servlet。 全部的详细信息可在相应的容器日志文件中找到
+standardContext.stop.asyncWaitInterrupted=等待卸载延迟毫秒以完成飞行中的异步请求时收到中断。上下文停止将继续,不会有进一步的延迟。
+standardContext.stoppingContext=异常停止的上下文使用名为[{0}]
+standardContext.unknownCookieEncoding=为setCookieEncoding(String)指定了未知编码[{0}],因此将使用默认的UTF-8。
+
+standardContextValve.acknowledgeException=以100(继续)响应确认请求失败
+
+standardEngine.notParent=引擎不能有父容器
+
+standardHost.noContext=没有配置上下文来处理此请求
+standardHost.notContext=主机的子节点必须有上下文
+
+standardServer.accept.timeout=在调用accept()方法之后,侦听shutdown命令的套接字经历了意外的超时[{0}]毫秒。 这是bug 56684的一个例子?
+standardServer.storeConfig.notAvailable=没有将StoreConfig实现注册为名为[{0}]的MBean,因此无法保存配置。合适的MBean通常通过StoreConfigLifecycleListener注册。
+
+standardService.engine.stopFailed=失败停止关联的引擎
+
+standardWrapper.destroyInstance=servlet[{0}]实例管理销毁(destroy) 抛出异常
+standardWrapper.isUnavailable=Servlet [{0}]当前不可用。
+standardWrapper.notChild=Wrapper容器内部不允许有子容器。
+standardWrapper.notFound=Servlet [{0}] 不可用
+standardWrapper.unloading=无法分配servlet [{0}],因为它没有被加载
+
+threadLocalLeakPreventionListener.containerEvent.error=异常处理容器事件[{0}]
diff --git a/java/org/apache/catalina/deploy/LocalStrings_zh_CN.properties b/java/org/apache/catalina/deploy/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..471ab8b
--- /dev/null
+++ b/java/org/apache/catalina/deploy/LocalStrings_zh_CN.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.
+
+namingResources.cleanupCloseSecurity=无法检索容器[{2}]中的资源[{1}]的方法[{0}],因此没有对该资源进行清理
+namingResources.ejbLookupLink=EJB的引用[{0}]同时指定了ejb-link和lookup-name
+namingResources.envEntryLookupValue=环境参数 [{0}] 指定查询名称和值
+namingResources.mbeanDestroyFail=失败的销毁命名资源[{0}]为MBean
+namingResources.resourceTypeFail=名为[{0}]的JNDI资源是类型[{1}],但是该类型与为该资源配置的注入目标的类型不一致
diff --git a/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties b/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..13bd995
--- /dev/null
+++ b/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
@@ -0,0 +1,35 @@
+# 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.
+
+corsFilter.invalidPreflightMaxAge=无法解析 preflightMaxAge
+corsFilter.nullRequest=HttpServletRequest 对象为空
+corsFilter.nullRequestType=CORSRequestType对象为空(null)
+corsFilter.onlyHttp=CORS不支持非HTTP请求或响应
+
+csrfPrevention.invalidRandomClass=不能使用class [{0}]创建随机源.
+
+expiresFilter.noExpirationConfiguredForContentType=没有为 content-type [{0}] 找到过期配置
+expiresFilter.startingPointInvalid=在指令[{1}]中无效的起点(访问|现在|修改|a<秒>|m<秒>)[{0}]
+expiresFilter.unsupportedStartingPoint=不支持的起始点 [{0}]
+expiresFilter.useMatchingConfiguration=对内容类型[{2}]返回[{3}]使用[{0}]匹配[{1}]
+
+http.403=禁止访问指定资源 [{0}] 。
+
+httpHeaderSecurityFilter.clickjack.invalid=\n\
+\ 为防咔嗒顶部标题指定了无效值[{0}]
+
+remoteCidrFilter.noRemoteIp=客户端没有 IP 地址。请求被拒绝。
+
+requestFilter.deny=基于属性:[{1}],[{0}]的请求被拒绝。
diff --git a/java/org/apache/catalina/ha/authenticator/LocalStrings_zh_CN.properties b/java/org/apache/catalina/ha/authenticator/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..f4f5ddf
--- /dev/null
+++ b/java/org/apache/catalina/ha/authenticator/LocalStrings_zh_CN.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.
+
+clusterSingleSignOn.clusterLoad.fail=在集群加载时, 集群单点登录异常
diff --git a/java/org/apache/catalina/ha/deploy/LocalStrings_zh_CN.properties b/java/org/apache/catalina/ha/deploy/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..4cc5075
--- /dev/null
+++ b/java/org/apache/catalina/ha/deploy/LocalStrings_zh_CN.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.
+
+farmWarDeployer.hostOnly=FarmWarDeployer 只有做为 host cluster 的子元素是才生效
+farmWarDeployer.modInstall=从 [{1}] 安装 webapp [{0}]
+farmWarDeployer.modInstallFail=无法安装 WAR 文件
+farmWarDeployer.msgIoe=无法读取服务器场部署文件消息。
+farmWarDeployer.msgRxUndeploy=从路径[{0}]接收未部署群集
+farmWarDeployer.removeFailRemote=本地从[{0}]删除失败,其他经理有app在服务!
+farmWarDeployer.removeLocalFail=无法移除WAR文件
+farmWarDeployer.servicingUndeploy=正在处理应用程序[{0}],无法从备份群集节点中删除它
+farmWarDeployer.undeployEnd=从[{0}]取消部署完成。
+farmWarDeployer.undeployLocal=不能部署本地上下文[{0}]
+
+warWatcher.cantListWatchDir=无法列出WatchDir文件夹 [{0}] 中的文件:检查该路径是否为目录且应用具有读取权限。
+warWatcher.checkingWar=检查 WAR 文件 [{0}]
diff --git a/java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties b/java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..3f73ff4
--- /dev/null
+++ b/java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties
@@ -0,0 +1,37 @@
+# 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.stopped=管理者[{0}]正在停止。
+
+deltaManager.createSession.newSession=用id[{0}]创建一个扩展会话(DeltaSession),总数为 [{1}]
+deltaManager.foundMasterMember=复制主master 成员在上下文中被发现.\n
+deltaManager.loading.cnfe=加载持久化会话 [{0}] 时出现ClassNotFoundException
+deltaManager.loading.ioe=加载持久 session 时出现 IOException:[{0}]
+deltaManager.noSessionState=管理者[{0}]:没有收到[{1}]发送的会话状态,在[{2}]毫秒之后超时。
+deltaManager.receiveMessage.allSessionDataAfter=Manager [{0}]: session 状态反序列化
+deltaManager.receiveMessage.allSessionDataBegin=管理者[{0}]:接收到所有会话数据状态
+deltaManager.receiveMessage.delta.unknown=管理器[{0}]:未知会话的接收会话增量[{1}]
+deltaManager.receiveMessage.expired=管理器[{0}]: 接收到的会话 [{1}] 已过期。
+deltaManager.receiveMessage.unloadingBegin=管理器[{0}]: 开始卸载会话
+deltaManager.sendMessage.newSession=\ 管理器 [{0}] 发送新的会话 [{1}]
+deltaManager.unableSerializeSessionID=无法序列化会话ID [{0}]
+deltaManager.unloading.ioe=当保存永久回话:[{0}] 时,抛出 IOException
+
+deltaRequest.removeUnable=不能移除元素
+deltaRequest.showPrincipal=Principal [{0}] 和session [{1}]产生关联。
+deltaRequest.wrongPrincipalClass=ClusterManager仅支持GenericPrincipal。 你的Realm使用的Principal类为[{0}]。
+
+jvmRoute.notFoundManager=没有在 [{0}] 找到Cluster Manager
diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings_zh_CN.properties b/java/org/apache/catalina/ha/tcp/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..1e06d3e
--- /dev/null
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings_zh_CN.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.
+
+ReplicationValve.filter.failure=无法编译 filter = [{0}]
+ReplicationValve.session.found=上下文[{0}]:找到会话[{1}]但它不是ClusterSession。
+
+simpleTcpCluster.clustermanager.notImplement=连接器 [{0}] 不能继承 ClusterManager,除非集群被停止。
+simpleTcpCluster.member.addFailed=无法连接到复制系统。
+simpleTcpCluster.member.disappeared=收到成员消失:[{0}]
+simpleTcpCluster.member.removeFailed=无法从复制系统中移除集群节点
+simpleTcpCluster.stopUnable=无法停止集群
diff --git a/java/org/apache/catalina/loader/LocalStrings_zh_CN.properties b/java/org/apache/catalina/loader/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..9140be0
--- /dev/null
+++ b/java/org/apache/catalina/loader/LocalStrings_zh_CN.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.
+
+webappClassLoader.addTransformer=将类文件转换器[{0}]添加到Web应用程序[{1}]。
+webappClassLoader.checkThreadLocalsForLeaks.badValue=无法确定类型为 [{0}] 的值的字符串表示形式
+webappClassLoader.checkThreadLocalsForLeaks.unknown=:)未知
+webappClassLoader.checkThreadLocalsForLeaksNone=web应用程序 [{0}] 创建了1个ThreadLocal变量(键:[{2}] (类型[{1}]) ,值:[{4}](类型[{3}]) )。键仅被ThreadLocal Map弱引用,所以不是内存泄露。
+webappClassLoader.clearJdbc=Web应用程序 [{0}] 注册了JDBC驱动程序 [{1}],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
+webappClassLoader.clearReferencesResourceBundlesCount=从Web应用[{1}]的缓存中删除了[{0}] ResourceBundle引用
+webappClassLoader.clearReferencesResourceBundlesFail=无法清除Web应用程序 [{0}] 的ResourceBundle引用
+webappClassLoader.jarsRemoved=一个或多个 JAR 已被从 Web 应用程序 [{0}] 中删除
+webappClassLoader.jdbcRemoveFailed=Web应用程序 [{0}] 的JDBC驱动程序注销失败
+webappClassLoader.readError=资源读取错误:不能加载 [{0}].
+webappClassLoader.superCloseFail=调用父类的close()方法出现异常。
+webappClassLoader.validationErrorJarPath=无法验证名称为 [{0}] 的 JAR 条目
+webappClassLoader.wrongVersion=(无法载入的.类 [{0}])
+
+webappLoader.copyFailure=无法复制资源
+webappLoader.mkdirFailure=无法创建目标目录以复制资源
+webappLoader.setContext.ise=当加载器启动的时候设置上下文是不被允许的
diff --git a/java/org/apache/catalina/manager/LocalStrings_zh_CN.properties b/java/org/apache/catalina/manager/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..427d327
--- /dev/null
+++ b/java/org/apache/catalina/manager/LocalStrings_zh_CN.properties
@@ -0,0 +1,77 @@
+# 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.appsTasks=命令
+htmlManagerServlet.configReloadButton=重复读
+htmlManagerServlet.configSslHostName=TLS 主机名字(可选)
+htmlManagerServlet.configSslReloadTitle=重新读取 TLS 配置文件
+htmlManagerServlet.connectorStateBytesSent=发送.字节:
+htmlManagerServlet.connectorStateProcessingTime=处理时间:
+htmlManagerServlet.connectorStateTableTitleClientForw=客户端(转发)
+htmlManagerServlet.connectorStateTableTitleRequest=请求
+htmlManagerServlet.connectorStateTableTitleTime=时间
+htmlManagerServlet.connectorStateTableTitleVHost=虚拟主机
+htmlManagerServlet.connectorStateThreadCount=当前线程数:
+htmlManagerServlet.deployButton=:)部署
+htmlManagerServlet.deployServer=服务器上.部署的目录或WAR文件
+htmlManagerServlet.deployTitle=部署
+htmlManagerServlet.deployUploadNoFile=失败 - 文件上传失败,没有文件
+htmlManagerServlet.deployUploadWarExists=失败 - War文件 [{0}] 已存在于服务器上
+htmlManagerServlet.deployWar=WAR文件或文件夹路径:
+htmlManagerServlet.diagnosticsLeak=检查Web应用程序是否在停止、重新加载或取消部署时导致内存泄漏
+htmlManagerServlet.diagnosticsSslConnectorCertsText=列出已配置的TLS虚拟主机以及各自的证书链
+htmlManagerServlet.diagnosticsSslConnectorCipherButton=密.码
+htmlManagerServlet.diagnosticsTitle=诊断
+htmlManagerServlet.expire.unit=分钟
+htmlManagerServlet.helpHtmlManager=HTML管理器帮助
+htmlManagerServlet.jvmFreeMemory=剩余内存:
+htmlManagerServlet.jvmTableTitleMaximum=最大.值
+htmlManagerServlet.jvmTableTitleMemoryPool=内存.池
+htmlManagerServlet.jvmTotalMemory=总内存
+htmlManagerServlet.manager=管理器
+htmlManagerServlet.noManager=-
+htmlManagerServlet.noVersion=未指定
+htmlManagerServlet.serverHostname=主机名
+htmlManagerServlet.serverIPAddress=IP地址
+htmlManagerServlet.serverJVMVersion=JVM.版本
+htmlManagerServlet.serverOSName=OS.名称
+htmlManagerServlet.serverTitle=服务器信息
+htmlManagerServlet.serverVersion=Tomcat.版本
+
+managerServlet.alreadyContext=失败 - 应用程序已存在于路径 [{0}]
+managerServlet.deployFailed=FAIL - 在上下文路径[{0}]下部署应用失败
+managerServlet.deployed=OK - 以应用path [{0}] 部署应用
+managerServlet.findleaksNone=OK - 没有发现内存泄漏
+managerServlet.mkdirFail=失败 - 无法创建目录 [{0}]
+managerServlet.noCommand=失败 - 未指定命令
+managerServlet.noGlobal=失败 - 没有可用的全局 JNDI 资源
+managerServlet.notSslConnector=不允许SSL连接
+managerServlet.objectNameFail=FAIL - 不能将为Manager Servlet 注册 object name  [{0}]
+managerServlet.postCommand=失败 - 尝试通过GET请求使用命令[{0}],但需要POST
+managerServlet.resourcesAll=OK - 列出所有类型的全部资源
+managerServlet.resourcesType=OK - [{0}]类型全局资源列入清单
+managerServlet.saveFail=失败 - 配置保存失败:[{0}]
+managerServlet.sslConnectorCiphers=OK - Connector/SSL 密码.信息
+managerServlet.sslReloadFail=FAIL - 重新加载TLS配制失败
+managerServlet.trustedCertsNotConfigured=没有为此虚拟主机配置受信任的证书
+managerServlet.undeployed=OK - 未部署的应用位于上下文路径[{0}]
+managerServlet.unknownCommand=FAIL - 未知命令 [{0}]
+managerServlet.vminfo=OK - VM信息
diff --git a/java/org/apache/catalina/manager/host/LocalStrings_zh_CN.properties b/java/org/apache/catalina/manager/host/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..d5b2c0b
--- /dev/null
+++ b/java/org/apache/catalina/manager/host/LocalStrings_zh_CN.properties
@@ -0,0 +1,57 @@
+# 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.addFailed=失败 - 添加主机 [{0}] 失败
+hostManagerServlet.addSuccess=确定-添加主机[{0}]
+hostManagerServlet.alreadyStarted=失败 - Host[{0}]已经启动。
+hostManagerServlet.configBaseCreateFail=失败 - 无法识别主机[{0}]的基础配置
+hostManagerServlet.listed=OK - 已列出Host
+hostManagerServlet.listitem=[{0}]:[{1}]
+hostManagerServlet.managerXml=FAIL - 无法安装manager.xml
+hostManagerServlet.noCommand=失败 - 未指定命令
+hostManagerServlet.persist=持久化: 正在持久化当前配置
+hostManagerServlet.persistFailed=失败 - 无法持久化配置
+hostManagerServlet.persisted=OK - 配置持久化了.
+hostManagerServlet.remove=移除:正在移除主机 [{0}]
+hostManagerServlet.removeFailed=失败 - 无法移除主机 [{0}]
+hostManagerServlet.removeSuccess=确定-已删除主机[{0}]
+hostManagerServlet.startFailed=失败 - 无法启动主机 [{0}]
+hostManagerServlet.started=OK - 主机 [{0}] 已启动
+hostManagerServlet.stopFailed=失败 - 无法停止主机 [{0}]
+hostManagerServlet.stopped=OK - 主机 [{0}] 已停止
+hostManagerServlet.unknownCommand=FAIL - 未知命令 [{0}]
+
+htmlHostManagerServlet.addAppBase=应用程序库:
+htmlHostManagerServlet.addAutoDeploy=自动.部署
+htmlHostManagerServlet.addCopyXML=拷贝XML
+htmlHostManagerServlet.addDeployOnStartup=启动.部署
+htmlHostManagerServlet.addHost=主机
+htmlHostManagerServlet.addManager=管理 App
+htmlHostManagerServlet.addTitle=添加.虚拟主机
+htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
+htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
+htmlHostManagerServlet.hostAliases=主机别名
+htmlHostManagerServlet.hostName=主机名
+htmlHostManagerServlet.hostsPersist=持久化
+htmlHostManagerServlet.hostsRemove=移除
+htmlHostManagerServlet.hostsStop=停止
+htmlHostManagerServlet.manager=主机.管理器
+htmlHostManagerServlet.persistTitle=持久化配置
+htmlHostManagerServlet.serverOSArch=OS 架构
+htmlHostManagerServlet.serverTitle=服务器信息
+htmlHostManagerServlet.title=Tomcat虚拟主机管理员
+
+statusServlet.complete=服务器全部状态
+statusServlet.title=服务器状态
diff --git a/java/org/apache/catalina/mapper/LocalStrings_zh_CN.properties b/java/org/apache/catalina/mapper/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..bfacd5b
--- /dev/null
+++ b/java/org/apache/catalina/mapper/LocalStrings_zh_CN.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.
+
+mapper.addHostAlias.success=为虚拟主机 [{1}] 注册了别名 [{0}]
+
+mapperListener.pauseContext=根据服务需要,注册内容[{0}]已经重新加载
+mapperListener.registerWrapper=为服务Service[{2}]在上下文Context[{1}]注册Wrapper[{0}]
+mapperListener.unregisterHost=在域[{1}]中.,不能注册主机[{0}]为服务[{2}]
diff --git a/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties b/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..fc4e09a
--- /dev/null
+++ b/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
@@ -0,0 +1,49 @@
+# 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.authFail=无法使用域[{1}]对用户[{0}]进行身份验证
+
+dataSourceRealm.getPassword.exception=获取用户名[{0}]对应的密码失败。
+dataSourceRealm.getRoles.exception=:)检索角色[{0}]异常
+
+jaasCallback.username=返回用户名 [{0}]
+
+jaasRealm.authenticateSuccess=用户名 [{0}] 已被成功认证为身份 [{1}] -- 主体也已创建
+jaasRealm.failedLogin=由于登录失败,用户名 [{0}] 无法授权
+jaasRealm.loginContextCreated=为用户名创建的JAAS 登陆上下文[{0}]
+jaasRealm.loginException=登录异常,认证用户名  [{0}]
+
+jndiRealm.authenticateFailure=用户名[{0}]没有成功认证
+jndiRealm.authenticateSuccess=用户名[{0}]成功认证
+jndiRealm.cipherSuites=启用 [{0}] 作为 TLS 连接的加密套件。
+jndiRealm.exception=执行认证异常
+jndiRealm.open=打开目录服务器链接异常
+
+lockOutRealm.authLockedUser=尝试对锁定的用户[{0}]进行身份验证
+
+memoryRealm.loadExist=内存数据库文件[{0}]无法读取
+memoryRealm.loadPath=从内存数据库文件 [{0}] 加载用户
+memoryRealm.readXml=读取内存数据库文件时出现异常
+
+pbeCredentialHandler.invalidKeySpec=无法生成基于密码的密钥
+
+realmBase.authenticateFailure=用户名 [{0}] 认证失败
+realmBase.createUsernameRetriever.ClassCastException=类[{0}] 不是一个X509UsernameRetriever.
+realmBase.digest=对用户凭证摘要发生错误
+realmBase.forbidden=已拒绝访问所请求的资源
+realmBase.hasRoleFailure=用户[{0}]没有角色[{1}]
+realmBase.hasRoleSuccess=用户名[{0}] 有角色[{1}]
+
+userDatabaseRealm.noDatabase=未找到key[{0}]对应的UserDatabase组件。
diff --git a/java/org/apache/catalina/security/LocalStrings_zh_CN.properties b/java/org/apache/catalina/security/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..53f7274
--- /dev/null
+++ b/java/org/apache/catalina/security/LocalStrings_zh_CN.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.
+
+SecurityListener.checkUmaskSkip=无法确定权限。这表示 Tomcat 正在 Windows 上运行,所以跳过权限检查。
diff --git a/java/org/apache/catalina/servlets/LocalStrings_zh_CN.properties b/java/org/apache/catalina/servlets/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..3b8cf09
--- /dev/null
+++ b/java/org/apache/catalina/servlets/LocalStrings_zh_CN.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.
+
+cgiServlet.expandFail=在路径[{0}] 到[{1}] 展开脚本失败.
+cgiServlet.find.location=在 [{0}] 查找文件
+cgiServlet.runHeaderReaderFail=I/O 问题关闭请求头读操作
+cgiServlet.runInvalidStatus=无效状态 [{0}]
+cgiServlet.runOutputStreamFail=关闭输出流时发生I/O问题
+cgiServlet.runReaderInterrupt=对于标准错误的读线程,中断并等待。
+
+defaultServlet.blockExternalSubset=用名称[{0}]和baseURI[{1}]阻止对外部子集的访问
+
+directory.filename=文件名
+directory.size=大小
+
+webdavservlet.jaxpfailed=JAXP 初始化失败
diff --git a/java/org/apache/catalina/session/LocalStrings_zh_CN.properties b/java/org/apache/catalina/session/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..6aa9503
--- /dev/null
+++ b/java/org/apache/catalina/session/LocalStrings_zh_CN.properties
@@ -0,0 +1,42 @@
+# 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.missingDataSourceName=没有给出有效的 JNDI 名称。
+JDBCStore.saving=保存Session [{0}] 到数据库 [{1}]
+
+fileStore.deleteFailed=无法删除阻止创建会话存储位置的文件 [{0}]
+
+managerBase.contextNull=使用 Manager 之前,必须将 Context 设置为非 null 值
+managerBase.createSession.ise=createSession:活跃session过多
+
+persistentManager.deserializeError=错误反序列化会话[{0}]: [{1}]
+persistentManager.storeKeysException=不能从 session存储中获取session ID 的列表,假设存储为空
+persistentManager.storeSizeException=无法确定 session 存储区的会话数,假定存储区为空
+persistentManager.swapIn=在表单存储中,交换会话[{0}]
+persistentManager.swapMaxIdle=交换会话[{0}]以存储,空闲为[{1}]秒
+persistentManager.swapTooManyActive=太多活跃会话,替换闲置 [{1}] 秒的会话 [{0}]
+
+standardManager.loading.exception=加载持久化会话时发生异常
+standardManager.managerLoad=从持久化存储加载会话发生异常
+standardManager.managerUnload=卸载会话到持久存储的异常
+
+standardSession.getIdleTime.ise=getIdleTime: 已失效的会话
+standardSession.getLastAccessedTime.ise=getLastAccessedTime: 会话已失效
+standardSession.getValueNames.ise=getValueNames:会话已经失效
+standardSession.logoutfail=当回话将过期登出用户异常
+standardSession.notDeserializable=无法反序列化会话 [{1}] 的属性 [{0}]
+standardSession.notSerializable=不能序列化会话[{1}]的属性[{0}]
+standardSession.removeAttribute.ise=删除属性:会话已失效
+standardSession.sessionEvent=会话时间监听抛出异常
diff --git a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..cf2586f
--- /dev/null
+++ b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
@@ -0,0 +1,72 @@
+# 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.serverStartFail=所必需的服务组件启动失败,所以无法启动Tomcat
+
+contextConfig.altDDNotFound=未找到 alt-dd 文件 [{0}]
+contextConfig.applicationStart=正在解析应用程序 web.xml 文件 [{0}]
+contextConfig.applicationUrl=无法确定应用程序 web.xml 的URL
+contextConfig.authenticatorConfigured=为方法 [{0}] 配置了验证器
+contextConfig.authenticatorMissing=不能配置一个认证为方法[{0}]
+contextConfig.badUrl=不能处理上下文描述符[{0}]
+contextConfig.cce=生命周期事件数据对象[{0}] 不是一个上下文
+contextConfig.contextMissing=缺少 context.xml:[{0}]
+contextConfig.defaultMissing=未找到全局 web.xml
+contextConfig.defaultPosition=发生在 [{0}] 行 [{1}] 列
+contextConfig.fixDocBase=上下文[{0}]的异常修复docBase
+contextConfig.init=上下文配置: 正在初始化
+contextConfig.inputStreamWebResource=不能处理注释的Web资源[{0}]
+contextConfig.jspFile.error=JSP文件[{0}]必须以''/''开头。
+contextConfig.processAnnotationsDir.debug=使用注解 [{0}]扫描目录中的类文件
+contextConfig.processAnnotationsWebDir.debug=扫描 web 应用程序目录下含有 [{0}] 注解的 class 文件
+contextConfig.role.auth=在标签<auth-constraint>的子标签<security-role>中没有定义角色名[{0}]
+contextConfig.role.runas=<run-as> 中使用的安全角色名 [{0}],未在 <security-role> 中定义
+
+engineConfig.cce=生命周期事件数据对象[{0}]不是一个引擎(Engine)
+engineConfig.stop=配置引擎,处理进程停止。
+
+expandWar.copy=错误的拷贝[{0}] to [{1}]
+expandWar.createFailed=无法创建文件夹[{0}]。
+expandWar.deleteFailed=[{0}] 无法被彻底删除。其余残留文件可能会导致问题
+expandWar.deleteOld=发现一个展开的目录[{0}],它的最后修改时间与关联的WAR不一致.它将被删除.
+expandWar.missingJarEntry=无法获得 JarEntry [{0}] 的输入流 - WAR 文件是否已损坏?
+
+hostConfig.appBase=主机[{0}]的应用程序基础[{1}]不存在或不是目录。deployOnStartUp和autoDebug已设置为false,以防止部署错误。其他错误仍然可能发生。
+hostConfig.deployDir=把web 应用程序部署到目录 [{0}]
+hostConfig.deployWar.error=部署 Web 应用程序 archive [{0}] 时出错
+hostConfig.docBaseUrlInvalid=所提供的部署目录无法用URL来表示
+hostConfig.expanding=扩展已发现的 web 应用程序 archive
+hostConfig.stop=:)Host配置:停止处理
+
+tomcat.addWebapp.conflictChild=无法在[{0}]处部署到上下文路径[{1}],因为存在上下文[{2}]
+tomcat.addWebapp.conflictFile=由于现有文件[{2}]的存在,无法在[{0}]将战争部署到上下文路径[{1}]
+tomcat.homeDirMakeFail=无法创建用作主目录的目录 [{0}]
+
+userConfig.database=加载用户数据库异常
+userConfig.deploying=正在部署用户 web 应用程序
+userConfig.error=为用户 [{0}]部署web应用发生错误
+userConfig.start=用户配置:处理开始
+
+versionLoggerListener.catalina.home=CATALINA_HOME:         {0}
+versionLoggerListener.java.home=Java 环境变量:             {0}
+versionLoggerListener.os.arch=结.造:          {0}
+versionLoggerListener.os.version=OS.版本:            {0}
+versionLoggerListener.prop=系统属性:       {0} = {1}
+versionLoggerListener.serverInfo.server.built=Server.构建:          {0}
+versionLoggerListener.serverInfo.server.version=Server.服务器版本:        {0}
+versionLoggerListener.vm.vendor=JVM.供应商:            {0}
+versionLoggerListener.vm.version=JVM 版本:           {0}
+
+webAnnotationSet.invalidInjection=方法资源注入注解无效。
diff --git a/java/org/apache/catalina/tribes/group/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/group/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..0ed42a4
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/LocalStrings_zh_CN.properties
@@ -0,0 +1,18 @@
+# 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.
+
+channelCoordinator.invalid.startLevel=启动级别无效,有效级别为:SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ
+
+groupChannel.listener.alreadyExist=侦听器已存在:[{0}][{1}]
diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..7ce09fc
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_zh_CN.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.
+
+domainFilterInterceptor.member.refused=成员被拒绝加入集群 cluster[{0}]
+domainFilterInterceptor.message.refused=从集群[{0}]中接收的消息被拒绝
+
+encryptInterceptor.decrypt.error.short-message=解密消息失败: 结尾消息提前结束
+encryptInterceptor.encrypt.failed=无法加密信息
+encryptInterceptor.tcpFailureDetector.ordering=加密拦截器必须位于TCP故障检测器的上游。请重新订购加密拦截器,将其列在通道拦截器管道中的TCP故障检测器之前。
+
+messageDispatchInterceptor.queue.full=异步队列已满,达到 [{0}] 字节的限制,当前:[{1}] 字节
+messageDispatchInterceptor.unableAdd.queue=无法将消息添加到异步队列,队列 bug?
+messageDispatchInterceptor.warning.optionflag=警告!你正在覆盖异步选项标志,这将禁用其它程序可能用到的 Channel.SEND_OPTIONS_ASYNCHRONOUS。
+
+nonBlockingCoordinator.memberAlive.failed=无法执行成员活动检查,猜测成员下线。
+nonBlockingCoordinator.processCoordinationMessage.failed=处理协调消息时出错。 可能是致命的。
+
+staticMembershipInterceptor.no.failureDetector=没有TcpFailureDetector。 自动检测静态成员无法正常工作。 通过在TcpFailureDetector下定义StaticMembershipInterceptor,可以自动检测静态成员。
+staticMembershipInterceptor.no.pingInterceptor=在没有TcpPingInterceptor的情况下,静态成员的健康检查不会正常工作。只有定义了TcpPingInterceptor,才能使健康检查正常进行。
+staticMembershipInterceptor.sendShutdown.failed=关闭通知失败。
+
+tcpFailureDetector.failureDetection.failed=无法进行失败监测,假定成员宕机。[{0}]
+tcpFailureDetector.heartbeat.failed=TCP心跳检测器无法执行心跳
+tcpFailureDetector.still.alive=验证完成。成员 [{0}] 仍然存活
+
+tcpPingInterceptor.ping.failed=无法发送 TCP ping
+tcpPingInterceptor.pingFailed.pingThread=不能从ping 线程发送ping
+
+throughputInterceptor.report=吞吐量拦截器 报告[\n\
+\   传输消息: {0} 消息数.\n\
+\   发送: {1} MB(总共)\n\
+\   发送: {2} MB (应用)\n\
+\   耗时: {3} 秒\n\
+\   传输速率: {4}MB/sec (总共)\n\
+\   传输速率: {5}MB/sec (应用)\n\
+\  错误消息: {6}\n\
+\  接收消息: {7} 消息数\n\
+\  接收速率: {8} MB/sec (从第一个消息开始)\n\
+\  收到: {9}MB]
+
+twoPhaseCommitInterceptor.heartbeat.failed=无法在两阶段提交拦截器上执行心跳。
diff --git a/java/org/apache/catalina/tribes/io/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/io/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..b21c8b7
--- /dev/null
+++ b/java/org/apache/catalina/tribes/io/LocalStrings_zh_CN.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.
+
+objectReader.retrieveFailed.socketReceiverBufferSize=无法检索套接字接收器缓冲区大小,设置为默认43800字节。
+
+replicationStream.conflict=和非公开接口类加载器冲突
+
+xByteBuffer.no.package=XByteBuffer中不存在数据包
+xByteBuffer.size.larger.buffer=大小比现有缓冲区大。
+xByteBuffer.unableCreate=不能创建数据包, buffer 太小
+xByteBuffer.wrong.class=消息对应类不符合要求。 它应该实现Serializable,而不是:[{0}]。
diff --git a/java/org/apache/catalina/tribes/jmx/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/jmx/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..15bf911
--- /dev/null
+++ b/java/org/apache/catalina/tribes/jmx/LocalStrings_zh_CN.properties
@@ -0,0 +1,17 @@
+# 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.
+
+jmxRegistry.no.domain=未指定JMX域
+jmxRegistry.registerJmx.failed=无法注册名称为 [{1}] 的对象 [{0}]
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..669640b
--- /dev/null
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.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.
+
+mcastService.missing.property=McastService:缺少必需属性 [{0}]。
+
+mcastServiceImpl.invalid.startLevel=无效的启动级别。只接受以下级别:Channel.MBR_RX_SEQ或 Channel.MBR_TX_SEQ
+mcastServiceImpl.recovery=家族成员,运行恢复线程,广播不是功能。
+mcastServiceImpl.recovery.stopFailed=恢复线程未能停止成员服务。
+mcastServiceImpl.send.running=McastService.send已经运行
+mcastServiceImpl.unable.join=无法加入多播组,请确保你的系统已启用多播。
+mcastServiceImpl.unableReceive.broadcastMessage=无法接收广播消息。
+
+memberImpl.large.payload=负载太大对于处理许多...
+memberImpl.notEnough.bytes=成员包中的字节不够。
+
+staticMember.invalid.uuidLength=UUID必须正好是16个字节,而不是:[{0}]
diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..d3dad73
--- /dev/null
+++ b/java/org/apache/catalina/tribes/tipis/LocalStrings_zh_CN.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.
+
+abstractReplicatedMap.broadcast.noReplies=广播收到0回复,可能是超时了。
+abstractReplicatedMap.leftOver.ignored=消息[{0}]被忽略
+abstractReplicatedMap.transferState.noReplies=传输状态,0响应,也许是超时。
+abstractReplicatedMap.unable.get=无法复制 AbstractReplicatedMap.get 操作的数据
+abstractReplicatedMap.unableSend.startMessage=无法发送map启动消息。
+
+lazyReplicatedMap.unableReplicate.proxy=不能复制proxy key:[{0}]到备份:[{1}]. 原因是:[{2}]
+
+mapMessage.deserialize.error.value=MapMessage.value的反序列化误差
+
+replicatedMap.relocate.complete=map 条目的重定位在 [{0}] ms内完成。
+replicatedMap.unable.relocate=不能为一个新的备份节点重启定位[{0}]
diff --git a/java/org/apache/catalina/tribes/transport/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/transport/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..ad0dcc5
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/LocalStrings_zh_CN.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.
+
+PooledSender.senderDisconnectFail=与 sender 断开连接失败
+
+receiverBase.bind.failed=对内容类型[{2}]返回[{3}]使用[{0}]匹配[{1}]
+receiverBase.socket.bind=服务器套接字接收器绑定到:[{0}]
+receiverBase.unable.bind=无法绑定套接字端口:{{0}},出现异常
diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..31947bd
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_zh_CN.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.
+
+bioReceiver.socket.closeFailed=socket.关闭失败
+bioReceiver.threadpool.fail=线程池可以初始化。侦听器未启动
+
+bioReplicationTask.messageDataReceived.error=错误抛出,来自于消息数据收到
+bioReplicationTask.reader.closeFailed=无法关闭reader
+bioReplicationTask.socket.closeFailed=无法关闭套接字
+bioReplicationTask.unable.service=不能服务bio套接字
+
+bioSender.ack.missing=不能读确认表格:[{0}] {1,number,integer}] in {2,number,integer} 毫秒, 失去socket连接, 重试连接.
+bioSender.ack.wrong=在本地端口[{0}:{1,number,integer}]读取10个字节后丢失正确的ACK
+bioSender.send.again=再次发送数据到 [{0}:{1,number,integer}]
diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..3a87d15
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_zh_CN.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.
+
+nioReceiver.alreadyStarted=ServerSocketChannel已经被启动
+nioReceiver.cleanup.fail=无法清除关闭的选择器
+nioReceiver.clientDisconnect=复制客户端已断开连接,轮询密钥时出错。忽略客户端。
+nioReceiver.run.fail=不能允许复制监听器
+nioReceiver.start.fail=无法启动集群接收器
+nioReceiver.stop.fail=无法关闭集群接收的选择器
+nioReceiver.threadpool.fail=ThreadPool 无法初始化。 监听器未启动。
+
+nioReplicationTask.error.register.key=错误的注册key被读取了
+nioReplicationTask.process.clusterMsg.failed=处理集群消息失败
+nioReplicationTask.unable.ack=不能通过channel发送ack,channel已经断开?[{0}]
+
+nioSender.unknown.state=数据处于未知状态。readyOps = [{0}]
+
+parallelNioSender.send.failed=并行的NIO.发送失败。
+parallelNioSender.sendFailed.attempt=发送失败,尝试: [{0}] 最大: [{1}]
+
+pooledParallelSender.sender.disconnected=sender 未连接。
diff --git a/java/org/apache/catalina/tribes/util/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/util/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..6a1fa8e
--- /dev/null
+++ b/java/org/apache/catalina/tribes/util/LocalStrings_zh_CN.properties
@@ -0,0 +1,18 @@
+# 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.
+
+arrays.keyoffset.outOfBounds=key的偏移.超出了界限。
+
+executorFactory.not.running=执行器没有运行,无法强制把命令送入队列
diff --git a/java/org/apache/catalina/users/LocalStrings_zh_CN.properties b/java/org/apache/catalina/users/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..1a72890
--- /dev/null
+++ b/java/org/apache/catalina/users/LocalStrings_zh_CN.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.
+
+memoryUserDatabase.fileClose=关闭 [{0}] 失败
+memoryUserDatabase.fileDelete=无法删除 [{0}]
+memoryUserDatabase.notPersistable=用户数据库不可持久化 - 对目录没有写入权限
+memoryUserDatabase.nullRole=指定的角色名为Null或着长度为0。角色将被忽略,
+memoryUserDatabase.readOnly=用户数据库已被设为只读。修改无法保存
+memoryUserDatabase.reloadError=从更新后的源 [{1}] 重新加载内存用户数据库 [{0}] 时出错
+memoryUserDatabase.renameNew=无法将新文件重命名为 [{0}]
+memoryUserDatabase.renameOld=原文件无法改名为[{0}]
+memoryUserDatabase.restoreOrig=无法往原始文件中保存[{0}]
diff --git a/java/org/apache/catalina/util/LocalStrings_zh_CN.properties b/java/org/apache/catalina/util/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..34a3987
--- /dev/null
+++ b/java/org/apache/catalina/util/LocalStrings_zh_CN.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.
+
+customObjectInputStream.logRequired=使用日志记录进行类名过滤需要一个有效的日志记录器
+customObjectInputStream.nomatch=类不能匹配合适的表达式,因为类被允许反序列化
+
+extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: 请求的拓展[{2}]未找到。
+extensionValidator.web-application-manifest=web 应用程序清单
+
+introspection.classLoadFailed=加载 class [{0}] 失败
+
+lifecycleBase.initFail=初始化组件[{0}]失败。
+
+netmask.cidrNegative=CIDR [{0}]为负数。
+netmask.invalidAddress=地址 [{0}] 无效
+
+sessionIdGeneratorBase.randomProvider=使用程序提供的初始化随机数生成器异常[{0}]
diff --git a/java/org/apache/catalina/valves/LocalStrings_zh_CN.properties b/java/org/apache/catalina/valves/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..ccbedc6
--- /dev/null
+++ b/java/org/apache/catalina/valves/LocalStrings_zh_CN.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.
+
+accessLogValve.closeFail=关闭访问日志文件失败
+accessLogValve.invalidLocale=无法将区域设置设为 [{0}]
+accessLogValve.invalidPortType=端口类型 [{0}] 无效,使用服务器(本地)端口
+accessLogValve.openFail=无法打开访问日志文件[{0}]。
+accessLogValve.rotateFail=失败的循环切割访问日志.
+
+errorReportValve.description=描述
+errorReportValve.exceptionReport=异常报告
+errorReportValve.message=消息
+errorReportValve.rootCauseInLogs=主要问题的全部 stack 信息可以在 server logs 里查看
+errorReportValve.unknownReason=未知的原因
+
+http.400.reason=错误的请求
+http.401.reason=未经授权的
+http.402.desc=这个状态码时为未来使用预留的.
+http.403.desc=服务器理解该请求但拒绝授权。
+http.403.reason=被禁止
+http.404.reason=未找到
+http.405.desc=请求行中接收的方法由源服务器知道,但目标资源不支持
+http.407.reason=代理需要认证
+http.412.desc=在服务器上测试时,请求头字段中给出的一个或多个条件被评估为false。
+http.412.reason=前置条件失败
+http.413.reason=有效载荷过大
+http.415.desc=源服务器拒绝服务请求,因为有效负载的格式在目标资源上此方法不支持。
+http.415.reason=不支持的媒体类型
+http.416.reason=范围不满足
+http.417.reason=期望的失败
+http.421.desc=请求被定向到一台无法响应的服务器
+http.423.desc=源或目标资源的方法被锁
+http.423.reason=已锁定
+http.426.reason=需要升级
+http.428.desc=原始服务器要求请求是有条件的。
+http.429.reason=请求过多
+http.431.reason=请求头的字段太大
+http.500.desc=服务器遇到一个意外的情况,阻止它完成请求。
+http.502.desc=服务器在充当网关或代理时, 在尝试完成请求时, 从它访问的入站服务器收到无效响应。
+http.503.desc=由于临时过载或计划维护,服务器当前无法处理请求,这可能会在一些延迟后得到缓解。
+http.505.reason=HTTP 版本不支持
+http.507.reason=存储空间.不足
+http.510.reason=没有.扩展
+http.511.desc=客户端需要进行身份验证才能获得网络访问权限。
+
+remoteCidrValve.noRemoteIp=客户端没有IP地址。请求被拒绝。
+
+requestFilterValve.deny=根据[{1}]配置拒绝[{0}]的请求
diff --git a/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..acbf500
--- /dev/null
+++ b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.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.
+
+cache.addFail=无法将位于[{0}]的资源添加到Web应用程序[{1}]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间。
+
+extractingRoot.targetFailed=无法为提取的 JAR 文件创建目录 [{0}]
+
+fileResource.getUrlFail=不能决定一个url 为资源[{0}]
+
+jarResource.getUrlFail=无法确定JAR[{1}]中的资源[{0}]的URL
+
+standardRoot.checkStateNotStarted=如果当前未启动资源,则可能无法访问这些资源
+standardRoot.createUnknownType=无法为未知类型[{0}]创建WebResourceSet。
+standardRoot.noContext=尚未为WebResourceRoot配置上下文
+standardRoot.startInvalidMain=指定的主资源集 [{0}] 无效
diff --git a/java/org/apache/coyote/LocalStrings_zh_CN.properties b/java/org/apache/coyote/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..e83ba61
--- /dev/null
+++ b/java/org/apache/coyote/LocalStrings_zh_CN.properties
@@ -0,0 +1,31 @@
+# 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.ioexception.debug=正常的 IOException,忽略
+abstractConnectionHandler.processorPop=从缓存中弹出的处理器[{0}]
+
+abstractProcessor.fallToDebug=注意:进一步出现的请求解析错误将在DEBUG级别进行记录。
+abstractProcessor.hostInvalid=[{0}] 是无效主机
+abstractProcessor.httpupgrade.notsupported=此协议不支持HTTP升级(upgrade)。
+abstractProcessor.socket.ssl=获取SSL属性异常
+
+abstractProtocolHandler.destroy=正在摧毁协议处理器 [{0}]
+abstractProtocolHandler.init=初始化协议处理器 [{0}]
+abstractProtocolHandler.start=开始协议处理句柄[{0}]
+
+asyncStateMachine.invalidAsyncState=调用[{0}]对于具有异步状态[{1}]的请求无效
+
+response.notNonBlocking=当响应尚未进入非阻塞模式时,调用 isReady() 无效
+response.writeListenerSet=非阻塞的写监听已经被设置.
diff --git a/java/org/apache/coyote/ajp/LocalStrings_zh_CN.properties b/java/org/apache/coyote/ajp/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..d028884
--- /dev/null
+++ b/java/org/apache/coyote/ajp/LocalStrings_zh_CN.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.
+
+ajpmessage.null=不能赋空值
+ajpmessage.overflow=在缓冲区[{1}]位置添加[{0}]字节时发生溢出错误
+
+ajpprocessor.failedsend=失败的发送AJP消息
+ajpprocessor.header.error=头部信息解析失败
+
+ajpprotocol.noUpgrade=AJP 不支持升级。[{0}] 的升级协议配置被忽略。
diff --git a/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..87091e8
--- /dev/null
+++ b/java/org/apache/coyote/http11/LocalStrings_zh_CN.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.
+
+http11processor.header.parse=解析 HTTP 请求 header 错误
+http11processor.request.inconsistentHosts=请求行中指定的主机与主机头不一致。
+http11processor.request.invalidUserInfo=HTTP 请求包含带有无效 userinfo 的绝对 URI
+http11processor.request.prepare=准备请求时出错
+http11processor.request.process=错误的处理请求
+http11processor.response.finish=错误完成相应
+http11processor.socket.info=获取socket信息异常
+
+iib.available.readFail=尝试确定数据是否可用时,非阻塞读取失败
+iib.eof.error=套接字读取到意外的EOF
+iib.filter.npe=你不能添加空过滤器(null)
+iib.invalidheader=HTTP header行 [{0}] 不符合RFC 7230并且已被忽略。
+iib.invalidmethod=在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
+iib.readtimeout=从套接字读取数据超时
+
+iob.failedwrite=写入.失败
+iob.illegalreset=response 在提交后不允许被重置
diff --git a/java/org/apache/coyote/http11/filters/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http11/filters/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..39528a8
--- /dev/null
+++ b/java/org/apache/coyote/http11/filters/LocalStrings_zh_CN.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.
+
+chunkedInputFilter.eos=读取请求主体时流的意外结束
+chunkedInputFilter.eosTrailer=读取 trailer 头时出现意外的流结束
+chunkedInputFilter.error=没有数据可用由于先前的错误
+chunkedInputFilter.invalidCrlfCRCR=无效的结束的行序列(CRCR)
+chunkedInputFilter.invalidCrlfNoCR=无效的行尾结束符序列(LF前缺少CR)
+chunkedInputFilter.maxExtension=超过最大扩展数
+chunkedInputFilter.maxTrailer=超过最大数
+
+inputFilter.maxSwallow=最大吞咽数据大小超出异常
diff --git a/java/org/apache/coyote/http11/upgrade/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http11/upgrade/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..c87178b
--- /dev/null
+++ b/java/org/apache/coyote/http11/upgrade/LocalStrings_zh_CN.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.
+
+upgrade.sis.isFinished.ise=当 ServletInputStream 不处于非阻塞模式时调用 isFinished() 是非法的(即必须首先调用 setReadListener())
+upgrade.sis.read.closed=InputStream 已被关闭
+upgrade.sis.readListener.set=在同一个upgraded连接上调用多次setReadListener()函数是非法的
+upgrade.sos.write.closed=输出流已被关闭
+upgrade.sos.writeListener.null=对setWriteListener()传递null是非法的
+
+upgradeProcessor.unexpectedState=因传入套接字状态为[{0}]而意外关闭升级连接
diff --git a/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..86c7d28
--- /dev/null
+++ b/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
@@ -0,0 +1,55 @@
+# 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.
+
+abstractStream.windowSizeInc=连接 [{0}], 流 [{1}], 增加流量控制窗口[{2}] 到 [{3}]
+
+connectionPrefaceParser.mismatch=请求了新的远程流ID[{0}],但所有远程流都必须使用奇数标识符。
+
+connectionSettings.debug=连接[{0}],参数类型[{1}]设置为[{2}]
+connectionSettings.headerTableSizeLimit=连接 [{0}],尝试将 header 表大小设置为 [{1}],但限制为 16k
+connectionSettings.maxFrameSizeInvalid=连接[{0}],请求的最大帧大小[{1}]在[{2}]到[{3}]的允许范围之外
+
+hpack.invalidCharacter=代码点[{1}]处的Unicode字符[{0}]无法编码,因为它超出了允许的0到255范围。
+
+hpackdecoder.tableSizeUpdateNotAtStart=任何表大小的更新都必须在头块开始时发送。
+
+http2Parser.headers.wrongStream=连接[{0}], 头部信息对于流[{1}]正在进行但对于流[{2}]的一帧已经收到了。
+http2Parser.nonZeroPadding=连接[{0}],流[{1}],非零填充
+http2Parser.processFrameData.window=连接[{0}],客户端发送的数据比流窗口允许的多
+http2Parser.processFrameHeaders.decodingDataLeft=数据在HPACK解码后依然保留 - 它本应该被消费掉
+http2Parser.processFramePriority.invalidPayloadSize=以[{0}]无效的有效负载大小接收的优先级帧(应该是5)
+http2Parser.processFramePushPromise=请求了新的远程流ID[{0}],但所有远程流都必须使用奇数标识符\n\
+\n
+
+stream.inputBuffer.readTimeout=等待从客户端读取数据超时
+stream.inputBuffer.reset=流.重置
+stream.writeTimeout=等待客户端增加流控制窗口以允许写入流数据的超时
+
+streamProcessor.cancel=连接到[{0}],Stream [{1}],
+streamProcessor.service.error=请求处理期间出错
+
+streamStateMachine.invalidReset=连接[{0}],流[{1}],状态[{2}],在这种状态下不允许重置
+
+upgradeHandler.ioerror=连接[{0}]
+upgradeHandler.pingFailed=对客户端发送ping 链接失败.
+upgradeHandler.socketCloseFailed=关闭 socket 错误
+upgradeHandler.stream.even=\ 请求了新的远程流ID[{0}],但所有远程流都必须使用奇数标识符\n\
+\n
+upgradeHandler.tooMuchOverhead=连接[{0}],开销过大,连接将关闭
+upgradeHandler.upgrade=连接[{0}], HTTP/1.1 升级到流[1]
+upgradeHandler.writeBody=连接 [{0}],数据流[{1}], 数据长度[{2}]
+upgradeHandler.writeHeaders=连接 [{0}],流 [{1}]
+
+writeStateMachine.ise=处于 [{1}] 状态时调用 [{0}()] 方法是非法的
diff --git a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..313c485
--- /dev/null
+++ b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
@@ -0,0 +1,135 @@
+# 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.attempt_to_clear_flushed_buffer=错误:尝试清空已刷新的缓冲区
+jsp.error.attribute.deferredmix=不能在同一属性值中同时使用 ${} 和 #{} EL 表达式
+jsp.error.attribute.noequal=期望的符号是等号
+jsp.error.attribute.noescape=属性值[{0}]引用[{1}],在值内使用时必须被转义。
+jsp.error.attribute.nowhitespace=JSP 规范要求一个属性名字前有空格
+jsp.error.bad.scratch.dir=你指定的 scratchDir:[{0}] 不可用。
+jsp.error.bad_attribute=属性[{0}]无效为tag[{1}] 通过TLD
+jsp.error.beans.noproperty=在[{1}]类型bean中找不到任何有关属性[{0}]的信息
+jsp.error.beans.nullbean=尝试获取一个bean 操作在一个空对象上.
+jsp.error.compiler=没有可用的Java编译器
+jsp.error.corresponding.servlet=生成的servlet错误:\n
+jsp.error.could.not.add.taglibraries=不能增加一个或者多个tag 库.
+jsp.error.data.file.processing=处理文件 [{0}] 错误
+jsp.error.el.template.deferred=#{...} 不允许出现在模板文本中
+jsp.error.fallback.invalidUse=jsp:fallback必须是jsp:plugin的直接子代
+jsp.error.file.cannot.read=无法读取文件 [{0}]
+jsp.error.file.not.found=文.件[{0}] 未找到
+jsp.error.include.exception=无法包含[{0}]
+jsp.error.include.tag=无效的jsp:include标签
+jsp.error.internal.filenotfound=内部错误:找不到文件 [{0}]
+jsp.error.invalid.tagdir=标签文件目录 [{0}] 不以"/WEB-INF/tags"开头
+jsp.error.invalid.version=为标签 [{0}] 定义了无效的 JSP 版本号
+jsp.error.ise_on_clear=当缓存大小等于0时调用clear()函数是非法的
+jsp.error.jspbody.emptybody.only=标签[{}]的标签体内智能包含jsp:attribute
+jsp.error.jspbody.required=如果使用 jsp:attribute,则必须使用 jsp:body 为 [{0}] 指定标记正文。
+jsp.error.jspelement.missing.name=XML强制性约束:属性name缺失。
+jsp.error.jspoutput.doctypenamesystem=&lt;jsp:output&gt;: 'doctype-root-element' 和 'doctype-system' 必须一起出现
+jsp.error.jsproot.version.invalid=版本号 [{0}] 无效,版本号必须是"1.2"、"2.0"、"2.1"、"2.2"、"2.3"中的一个
+jsp.error.lastModified=无法确定文件 [{0}] 的最后修改日期
+jsp.error.loadclass.taghandler=无法为TAG [{1}]加载标记处理程序类[{0}]
+jsp.error.location=行.: [{0}], 列: [{1}]
+jsp.error.mandatory.attribute=[{0}]: 强制性属性 [{1}] 缺失。
+jsp.error.nested.jspbody=JSP:体标准动作不能嵌套在另一个jsp:body 或者 jsp:属性标准动作中
+jsp.error.nested_jsproot=嵌套的&lt;jsp:root&gt;
+jsp.error.no.scratch.dir=JSP引擎未配置scratch文件夹。\n\
+请在对应上下文Context的servlets.properties文件中添加"jsp.initparams=scratchdir=<dir-name>"。
+jsp.error.no.scriptlets=脚本( &lt;%!, &lt;jsp声明, &lt;%=, &lt;jsp表达式, &lt;%, &lt;jsp脚本变量 )不允许出现在这里
+jsp.error.noFunction=无法使用指定的前缀找到函数[{0}]
+jsp.error.not.in.template=在模板文本体中, [{0}] 是不允许的.
+jsp.error.outputfolder=无输出目录
+jsp.error.overflow=错误:JSP缓冲区溢出
+jsp.error.page.conflict.errorpage=页指令:不同值的多次出现“errorPage”的非法值(旧:[{0}],新:[{1}])
+jsp.error.page.invalid.deferredsyntaxallowedasliteral=页面指令:deferredSyntaxAllowedAsLiteral的值无效
+jsp.error.page.invalid.iselignored=页面指令:忽略的无效值
+jsp.error.page.invalid.session=页面提示:session值无效
+jsp.error.page.multi.pageencoding=页指令不能有多次出现的页编码
+jsp.error.param.invalidUse=jsp:param 不能在jsp:include、jsp:forward或jsp:params等元素外使用
+jsp.error.paramexpected=使用“name”和“value”属性期望“jsp:param”标准操作
+jsp.error.parse.xml=无法解析 XML 文件 [{0}]
+jsp.error.parse.xml.invalidPublicId=无效的 PUBLIC ID: [{0}]
+jsp.error.plugin.wrongRootElement=[{0}] 中的根元素的名称与 [{1}] 的不同
+jsp.error.prolog_pagedir_encoding_mismatch=指定在XML语言[{0}]的网页编码是不同于指定在网页的指令[{1}]。
+jsp.error.quotes.unterminated=未终结的引号
+jsp.error.scripting.variable.missing_name=无法从属性[{0}]确定脚本变量名称
+jsp.error.simpletag.badbodycontent=对于一下简单的标记符,用于类[{0}]的标记描述符指定了一个无效的body内容(JSP)中
+jsp.error.single.line.number=JSP文件:[{1}] 的第 [{0}] 行发生了一个错误
+jsp.error.stream.close.failed=流.关闭失败
+jsp.error.stream.closed=流.关闭
+jsp.error.tag.invalid.trimdirectivewhitespaces=TAG指令:trimDirectiveWhitespaces的值无效
+jsp.error.tagfile.nameFrom.badAttribute=\n\
+\ 属性指令(在行[{1}]中声明并且其name属性为[{0}],此name-from-attribute属性的值)必须是java.lang.String类型,是“required”而不是一个“rtexprvalue”。
+jsp.error.taglibDirective.absUriCannotBeResolved=无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[{0}]
+jsp.error.taglibDirective.missing.location='uri'和'tagdir' 属性均未指定。
+jsp.error.taglibDirective.uriInvalid=为标签库[{0}]提供的URI不是有效的URI
+jsp.error.teiclass.instantiation=无法加载或实例化TagExtraInfo类:[{0}]。
+jsp.error.tld.mandatory.element.missing=TLD [{1}] 中强制 TLD 元素 [{0}] 不存在或为空
+jsp.error.unable.deleteClassFile=无法删除class文件
+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.unknown_attribute_type=\n\
+\ 属性[{0}]的未知属性类型[{1}]。
+jsp.error.unsupported.encoding=不支持的编码:[{0}]
+jsp.error.variable.either.name=必须在变量指令中指定 name-given 或 name-from-attribute 属性
+jsp.error.xml.badStandardAction=无效、标准的action: [{0}]
+jsp.exception=在 [{1}] 行处理 [{0}] 时发生异常
+jsp.info.ignoreSetting=因为 SecurityManager 被启用,忽略 [{1}] 的 [{0}] 的设置
+jsp.message.jsp_added=增加JSP 为路径[{0}]为上下文[{1}]的队列
+jsp.message.jsp_queue_update=在上下文[{1}]队列中更新路径为[{0}]的JSP
+jsp.message.jsp_removed_excess=从上下文[{1}]的队列中移除额外在路径[{0}]中JSP,
+jsp.message.jsp_unload_check=在context[{0}]中检查未加载的jsp,jsp总共:[{1}]队列长度[{2}]
+jsp.tldCache.noTldSummary=至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
+jsp.tldCache.tldInDir=在目录 [{0}]中找到了TLD文件。
+jsp.warning.compiler.classfile.delete.fail.unknown=删除生成的class文件失败
+jsp.warning.displaySourceFragment=警告:displaySourceFragment初始化参数时参数值无效,将使用默认的值“true”
+jsp.warning.dumpSmap=警告:初始化堆内存的值无效。将使用“false”的默认值
+jsp.warning.enablePooling=警告:initParam enablePooling的值无效。将使用默认值“true”
+jsp.warning.fork=警告:initParam的值无效。将使用“true”的默认值
+
+jspc.delete.fail=无法删除文件 [{0}]
+jspc.error.fileDoesNotExist=文件参数 [{0}] 不存在
+jspc.webfrg.footer=\n\
+</web-fragment>\n\
+\n
+jspc.webinc.footer=\n\
+<!--\n\
+由Apache Tomcat JSPC自动创建的内容结束。\n\
+-->\n\
+\n
+jspc.webinc.header=\n\
+<!--\n\
+由 Apache Tomcat JspC 自动生成。\n\
+-->\n\
+\n
+jspc.webinc.insertEnd=<!-- JSPC servlet 映射结束 -->
+jspc.webinc.insertStart=<!-- JSPC servlet 映射开始 -->
+jspc.webxml.footer=\n\
+</web-app>\n\
+\n
+
+org.apache.jasper.compiler.TldCache.servletContextNull=提供的 ServletContext 为 null
+org.apache.jasper.servlet.TldScanner.webxmlAdd=从资源路径[{0} ]加载URI[{1}]的TLD
+org.apache.jasper.servlet.TldScanner.webxmlFailPathDoesNotExist=无法使用路径 [{0}] 和 URI [{1}] 处理TLD。指定的路径不存在。
+
+xmlParser.skipBomFail=解析XML输入流时,跳过BOM失败。
diff --git a/java/org/apache/naming/LocalStrings_zh_CN.properties b/java/org/apache/naming/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..6c651d2
--- /dev/null
+++ b/java/org/apache/naming/LocalStrings_zh_CN.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.
+
+contextBindings.unknownContext=未知.上下文名:[{0}]
+
+namingContext.contextExpected=上下文Context未绑定名称name
+namingContext.failResolvingReference=解析引用时意外异常
+
+selectorContext.methodUsingName=用[{1}]的name属性调用方法[{0}]
diff --git a/java/org/apache/naming/factory/LocalStrings_zh_CN.properties b/java/org/apache/naming/factory/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..e98790a
--- /dev/null
+++ b/java/org/apache/naming/factory/LocalStrings_zh_CN.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.
+
+resourceLinkFactory.nullType=引用全局资源 [{1}] 的本地资源链接 [{0}] 未指定所需的属性类型
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..d981065
--- /dev/null
+++ b/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_zh_CN.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.
+
+poolableConnection.validate.fastFail=此连接上预先抛出了致命的 SQLException。
+
+poolingDataSource.factoryConfig=PoolableConnectionFactory 未连接到连接池。请调用 setPool() 修复此配置。
+
+swallowedExceptionLogger.onSwallowedException=一个内部对象池吞并了一个异常。
diff --git a/java/org/apache/tomcat/util/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..9e68c80
--- /dev/null
+++ b/java/org/apache/tomcat/util/LocalStrings_zh_CN.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.
+
+diagnostics.threadDumpTitle=打印全部线程
+diagnostics.vmInfoClassCompilation=:)class汇编
+diagnostics.vmInfoClassLoading=类加载中
+diagnostics.vmInfoLogger=日志记录器(Logger)信息
+diagnostics.vmInfoOs=操作系统信息
+diagnostics.vmInfoRuntime=运行时信息
+diagnostics.vmInfoSystem=系统.属性
+diagnostics.vmInfoThreadCounts=线程数
diff --git a/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..94a1a52
--- /dev/null
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.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.
+
+uDecoder.convertHexDigit.notHex=[{0}] 不是十六进制数字
diff --git a/java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..c37fc6f
--- /dev/null
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.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.
+
+jreCompat.noApplicationProtocol=Java 运行时不支持 SSLEngine.getApplicationProtocol()。要使用该功能你必须使用 Java 9。
diff --git a/java/org/apache/tomcat/util/descriptor/web/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..df1fe90
--- /dev/null
+++ b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_zh_CN.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.
+
+filterDef.invalidFilterName=过滤器定义中的<filter-name> [{0}] 无效。
+
+webRuleSet.nameCount=<name>元素只能出现1次
+webRuleSet.postconstruct.duplicate=class [{0}] 有重复的 post 构造方法声明
+
+webXml.duplicateFilter=重复的过滤器名称 [{0}]
+webXml.duplicateServletMapping=名为 [{0}]和 [{1}] 的servlet不能映射为一个url模式(url-pattern) [{2}]
+webXml.mergeConflictDisplayName=显示名称在多个片段中被定义,这些片段包含不同的值,包括位于[{1}]的[{0}]的片段。
+webXml.mergeConflictSessionCookieName=会话cookie名称在多个具有不同值的片段中定义不一致,包括位于 [{1}] 的片段 [{0}]
+webXml.mergeConflictSessionTimeout=会话超时以不同值的多个片段不一致地定义,这些片段包括位于[{1}]的具有名称[{0}]的片段。
+webXml.mergeConflictSessionTrackingMode=会话跟踪模式在多个片段中定义不一致,包括位于[{1}]的名称为[{0}]的片段
+webXml.version.unknown=未知版本字符串 [{0}]。将使用默认版本。
diff --git a/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..fa98acf
--- /dev/null
+++ b/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.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.
+
+digester.failedToUpdateAttributes=属性[{0}]更新失败,旧数据为[{1}]
diff --git a/java/org/apache/tomcat/util/http/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/http/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..7bd2e38
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/LocalStrings_zh_CN.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.
+
+cookies.invalidCookieToken=Cookie:cookie无效。值不是令牌或引用值
+cookies.invalidSpecial=Cookies:未知特殊的Cookie
+
+parameters.copyFail=无法创建以调试日志记录为目的的原始参数值的副本
+parameters.decodeFail.debug=字符解码失败.参数 [{0}]和值 [{1}]被忽略
+parameters.fallToDebug=注:将在DEBUG级别记录更多参数错误。
+parameters.maxCountFail.fallToDebug=注意:更多的错误信息只在debug级别日志中记录
+
+rfc6265CookieProcessor.invalidPath=这个cookie被指定了一个无效的路径 [{0}]
diff --git a/java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..636751f
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.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.
+
+cookie.valueNotPresent=<不存在>
+
+http.illegalCharacterIpv4=字符[{0}]为非法的IPv4地址。
+http.illegalCharacterIpv6=字符[{0}]为非法的IPv6地址。
+http.invalidHextet=hextet无效。 hextet必须包含4个或更少的十六进制字符。
+http.invalidLeadingZero=非零的IPv4字符可能不包含前导零。
+http.invalidOctet=无效字符[{0}].IPv4字符的有效范围为0~255。
+http.noClosingBracket=ipv6 地址缺失一个闭合的圆括号
+http.singleColonEnd=IPv6地址不能以单个“.”结尾。
+http.singleColonStart=一个IPv6地址也许不是以单个冒号":"开头的。
+http.tooManyColons=IPv6地址不能包含超过2个连续冒号字符。
+http.tooManyDoubleColons=一个IPv6地址只能包含一个 '::' 序列。
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..f370f95
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
@@ -0,0 +1,67 @@
+# 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.
+
+channel.nio.ssl.closing=频道处于正在关闭(closing)的状态
+channel.nio.ssl.foundHttp=找到一个明文HTTP请求,它应该是一个加密的TLS连接
+channel.nio.ssl.invalidCloseState=无效的关闭状态,不会发送网络数据。
+channel.nio.ssl.sniDefault=无法缓冲足够的数据来确定请求的SNI主机名。使用默认值
+channel.nio.ssl.sniHostName=连接 [{0}]
+channel.nio.ssl.timeoutDuringHandshake=握手期间超时。
+channel.nio.ssl.unwrapFail=无法解包数据,无效状态 [{0}]
+channel.nio.ssl.unwrapFailResize=由于缓冲区太小无法解包数据,无效状态 [{0}]
+
+endpoint.apr.applyConf=正将OpenSSLConfCmd应用在SSL Context上。
+endpoint.apr.checkConf=检查配置OpenSSLConf
+endpoint.apr.errApplyConf=不能对SSL上下文应用OpenSSLConf  配置
+endpoint.apr.errMakeConf=无法创建OpenSSLConf 上下文
+endpoint.apr.pollAddInvalid=无效企图向一个轮询器中添加一个套接字[{0}]
+endpoint.apr.tooManyCertFiles=证书文件配置超过了
+endpoint.debug.channelCloseFail=关闭频道失败
+endpoint.debug.destroySocket=将销毁socket [{0}]
+endpoint.debug.socket=socket [{0}]
+endpoint.debug.socketCloseFail=关闭 socket 失败
+endpoint.debug.unlock.localNone=无法解除 [{0}] 的接受器,因为本地地址不可用
+endpoint.err.close=抓住异常试图关闭socket
+endpoint.err.unexpected=处理套接字时意外错误
+endpoint.init.notavail=APR.不可用
+endpoint.invalidJmxNameSslHostCert=对于SSLHostConfigCertificate关联的主机[{0}]和证书类型[{1}],无法生成有效的XML对象名称
+endpoint.nio.stopLatchAwaitInterrupted=在等待轮询器停止时,该线程被中断
+endpoint.nio.timeoutCme=处理超时异常. 这段代码已经被重复检查并且没有并发修改发现。如果你能重现这个错误,请提交一个tomcat bug, 提供重现步骤.
+endpoint.noSslHostConfig=没有找到带有hostName[{0}]的SSLHostConfig元素,以匹配连接器[{1}]的默认SSLHostConfigName
+endpoint.noSslHostName=SSL主机中没有被提供主机名
+endpoint.process.fail=分配 socket 处理器出错
+endpoint.processing.fail=运行.套接字处理器出错
+endpoint.removeDefaultSslHostConfig=默认SSLHostConfig(名为[{0}])可能未被移除
+endpoint.sendfile.addfail=发送文件(Sendfile)失败: [{0}] [{1}]
+endpoint.sendfile.error=未知的sendfile异常。
+endpoint.serverSocket.closeFailed=无法为 [{0}] 关闭服务器 socket
+endpoint.setAttribute=设置. [{0}] 到 [{1}]
+endpoint.timeout.err=处理套接字超时出错
+endpoint.warn.incorrectConnectionCount=连接数不正确,在同一个套接字上调用多个socket.close。
+endpoint.warn.noLocalAddr=无法确定套接字 [{0}] 的本地地址
+endpoint.warn.noLocalName=无法确定 socket [{0}] 的本地主机名
+endpoint.warn.noLocalPort=无法确定套接字 [{0}] 的本地端口
+endpoint.warn.noRemotePort=无法确定 socket [{0}] 的远程端口
+
+jsse.ssl3=SSLv3 已显式启用。 已知该协议是不安全。
+
+socket.apr.closed=与该链接所关联的 socket [{0}] 被关闭
+
+sslHostConfig.certificate.notype=指定了多个证书,并且至少有一个证书缺少必需的属性类型
+sslHostConfig.fileNotFound=配置文件 [{0}] 不存在
+
+sslImplementation.cnfe=无法为类 [{0}] 创建SSLImplementation
+
+sslUtilBase.noneSupported=SSL引擎不支持指定的[{0}]:[{1}]
diff --git a/java/org/apache/tomcat/util/net/jsse/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/net/jsse/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..514bc76
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/jsse/LocalStrings_zh_CN.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.
+
+jsse.exceptionOnClose=无法关闭套接字
+jsse.invalid_ssl_conf=SSL configuration i无效,原因为 [{0}]。
+jsse.noDefaultCiphers=无法确定 [{0}] 的密码默认值。 设置显式值以确保连接器可以启动。
+jsse.pemParseError=无法从 [{0}] 解析 key
+
+jsseSupport.certTranslationError=错误的转换证书[{0}]
+jsseSupport.clientCertError=尝试从客户端获取证书时出错
diff --git a/java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..aaeda54
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.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.
+
+engine.ciphersFailure=获取密码列表失败
+engine.emptyCipherSuite=空密码套件
+engine.engineClosed=引擎已经关闭
+engine.handshakeFailure=握手失败:[{0}]
+engine.noSession=SSL会话ID不可用
+engine.openSSLError=OpenSSL 错误:[{0}] 信息: [{1}]
+engine.writeToSSLFailed=写入SSL失败,返回:[{0}]
+
+keyManager.nullCertificateChain=证书链.为空
+
+openssl.X509FactoryError=获取X509工厂实例时出错
+openssl.addedClientCaCert=添加了客户端 CA 证书:[{0}]
+openssl.errMakeConf=无法创建OpenSSLConf上下文
+openssl.trustManagerMissing=没有找到.信任管理者
+
+opensslconf.checkFailed=检查OpenSSLConf时失败。
+opensslconf.finishFailed=OpenSSLConf 配置失败结果为 [{0}]
+
+sessionContext.nullTicketKeys=Null keys
diff --git a/java/org/apache/tomcat/util/scan/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/scan/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..ec2638d
--- /dev/null
+++ b/java/org/apache/tomcat/util/scan/LocalStrings_zh_CN.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.
+
+jarScan.classloaderFail=在多级类加载器中扫描[{0}]失败
+jarScan.classloaderJarNoScan=跳过classpath路径[{0}]下的jar包扫描。
+jarScan.classloaderStart=在类加载器层次结构中扫描JAR
+jarScan.jarUrlStart=正在扫描URL [{0}] 上的JAR文件
+jarScan.webinfclassesFail=无法扫描/WEB-INF/classes
+jarScan.webinflibJarNoScan=没有扫描到/WEB-INF/lib目录下的JAR [{0}]
+jarScan.webinflibStart=扫描./WEB-INF/lib 中的JARs
diff --git a/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..19ea675
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
@@ -0,0 +1,56 @@
+# 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.
+
+asyncChannelWrapperSecure.eof=意外的流结尾
+
+caseInsensitiveKeyMap.nullKey=不允许 Key 是 Null
+
+perMessageDeflate.deflateFailed=无法压缩这个WebSocket压缩结构
+
+util.notToken=一个非法的扩展参数被指定为名称[{0}]和值[{0}]
+util.unknownDecoderType=无法识别该解码器类型[{0}]
+
+wsFrame.byteToLongFail=提供了太多字节([{0}]),转换成一个长的字节。
+wsFrame.closed=在一个关闭的控制帧后受到了一个新的帧.
+wsFrame.controlFragmented=接收到分段的控制帧,但控制帧可能不被分割。
+wsFrame.controlNoFin=发送一个没有设置的控制帧。控制帧不允许使用连续帧。
+wsFrame.partialHeaderComplete=接收到WebSocket帧. fin [{0}], rsv [{1}], OpCode [{2}], payload 长度 [{3}]
+wsFrame.sessionClosed=无法处理客户端数据,因为会话已被关闭
+wsFrame.wrongRsv=对于具有opCode [{1}]的消息,客户端帧将保留位设置为[{0}],此端点不支持
+
+wsHandshakeRequest.invalidUri=字符串  [{0}] 不能用来组成一个有效的URI
+
+wsRemoteEndpoint.acquireTimeout=当前消息没有在指定的超时内完全发送
+wsRemoteEndpoint.changeType=发送分段消息时,所有片段必须是相同类型的。
+wsRemoteEndpoint.closed=由于 WebSocket session 已关闭,消息将不会被发送
+wsRemoteEndpoint.closedDuringMessage=因为 WebSocket session 被关闭,消息的剩余部分将不会被送达
+wsRemoteEndpoint.flushOnCloseFailed=会话关闭后仍然启用批处理消息。无法刷新剩余的批量消息
+wsRemoteEndpoint.noEncoder=没有为类 [{0}] 的对象指定编码器
+wsRemoteEndpoint.nullData=无效空的data 参数
+wsRemoteEndpoint.tooMuchData=ping或pong不应该发送超过125字节
+wsRemoteEndpoint.wrongState=远程 endpoint 处于 [{0}] 状态,是被调用方法的无效状态
+
+wsSession.created=创建WebSocket session [{0}]。
+wsSession.doClose=关闭 WebSocket session [{1}]
+wsSession.duplicateHandlerText=已配置文本消息处理器
+wsSession.instanceNew=endpoint 实例注册失败
+
+wsWebSocketContainer.asynchronousSocketChannelFail=无法打开与服务器的连接
+wsWebSocketContainer.missingLocationHeader=处理HTTP响应码 [{0}] 失败。响应头缺少Location
+wsWebSocketContainer.missingWWWAuthenticateHeader=无法处理HTTP响应代码[{0}]。 缺少WWW-Authenticate标头作为响应
+wsWebSocketContainer.pathNoHost=URI中未指定主机
+wsWebSocketContainer.sessionCloseFail=ID 为 [{0}] 的session 没有彻底关闭
+wsWebSocketContainer.shutdown=web应用程序正在停止
+wsWebSocketContainer.sslEngineFail=无法创建SSLEngine以支持SSL/TLS连接
diff --git a/java/org/apache/tomcat/websocket/pojo/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/websocket/pojo/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..370535e
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/pojo/LocalStrings_zh_CN.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.
+
+pojoEndpointServer.getPojoInstanceFail=创建类型为 [{0}] 的 POJO 实例失败
+
+pojoMessageHandlerWhole.decodeIoFail=解码消息时出现IO错误
+
+pojoMethodMapping.duplicateAnnotation=类[{1}]上存在的重复注释[{0}]
+pojoMethodMapping.duplicateLastParam=用OnMessage注释的类[{1}]的方法[{0}]上存在多个布尔参数(最后的)
+pojoMethodMapping.invalidDecoder=这个特定类型的解码器[{0}]无法被实例化
+pojoMethodMapping.noDecoder=在用onMessage注释的类[{1}]的方法[{0}]上找不到消息参数的解码器。
+
+pojoPathParam.wrongType=不允许将类型[{0}]作为路径参数。用@PathParam注释的参数只能是字符串、Java原语或盒装版本。
diff --git a/java/org/apache/tomcat/websocket/server/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/websocket/server/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..7f65c7e
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/server/LocalStrings_zh_CN.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.
+
+serverContainer.failedDeployment=由于以前的部署失败,不允许将WebSocket终结点部署到主机[{1}]中路径为[{0}]的Web应用程序
+serverContainer.pojoDeploy=POJO 类 [{0}] 在 ServletContext [{2}] 中部署到路径 [{1}]
+serverContainer.servletContextMissing=没有指定ServletContext
+
+upgradeUtil.incompatibleRsv=指定扩展名具有不兼容的RSV位使用
+
+uriTemplate.invalidPath=路径 [{0}] 无效。
+
+wsFrameServer.bytesRead=将[{0}]个字节读入输入缓冲区,准备进行处理
+wsFrameServer.onDataAvailable=进入方法
diff --git a/res/maven/mvn-pub.xml b/res/maven/mvn-pub.xml
index 03f0f23..ef99aea 100644
--- a/res/maven/mvn-pub.xml
+++ b/res/maven/mvn-pub.xml
@@ -303,7 +303,7 @@
     <doMavenDeployNoSrc artifactId="tomcat-i18n-ja"/>
     <doMavenDeployNoSrc artifactId="tomcat-i18n-ko"/>
     <doMavenDeployNoSrc artifactId="tomcat-i18n-ru"/>
-
+    <doMavenDeployNoSrc artifactId="tomcat-i18n-zh-CN"/>
     <!-- Extras jars -->
     <doMavenDeploy artifactId="tomcat-catalina-jmx-remote"
         groupId="org.apache.tomcat.extras"
diff --git a/res/maven/tomcat-i18n-zh-CN.pom b/res/maven/tomcat-i18n-zh-CN.pom
new file mode 100644
index 0000000..de53ab5
--- /dev/null
+++ b/res/maven/tomcat-i18n-zh-CN.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-zh-CN</artifactId>
+  <version>@MAVEN.DEPLOY.VERSION@</version>
+  <description>Simplified Chinese 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 c8279f7..96e92c2 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -75,6 +75,10 @@
       <add>
         Add Korean translations to the standard Tomcat distribution. (markt)
       </add>
+      <add>
+        Add Simplifed Chinese translations to the standard Tomcat distribution.
+        (markt)
+      </add>
     </changelog>
   </subsection>
 </section>
diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_zh_CN.properties b/webapps/examples/WEB-INF/classes/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000..694b3fd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_zh_CN.properties
@@ -0,0 +1,38 @@
+# 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.make-cookie=创建一个发送到你的浏览器的cookie
+cookies.name=名.称:
+cookies.no-cookies=你的浏览器未发送任何cookie
+cookies.set=你刚刚将以下cookie发送到你的浏览器:
+
+helloworld.title=你好,世界.
+
+requestheader.title=请求 Header 示例
+
+requestinfo.label.method=方法:
+requestinfo.label.protocol=协议:
+requestinfo.label.remoteaddr=远程地址:
+requestinfo.title=请求信息范例
+
+requestparams.firstname=姓:
+requestparams.no-params=没有参数,请输入一些
+requestparams.params-in-req=参数在请求中.
+requestparams.title=请求参数示例
+
+sessions.adddata=将数据添加到你的会话中
+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


[tomcat] 01/02: Add Korean translations to standard Tomcat distribution

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b2d767e191c2fa940966f454973daeeb3f9906b1
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 14:52:52 2019 +0100

    Add Korean translations to standard Tomcat distribution
---
 build.xml                                          |  10 +
 java/javax/el/LocalStrings_ko.properties           |  52 ++++
 java/javax/servlet/LocalStrings_ko.properties      |  23 ++
 java/javax/servlet/http/LocalStrings_ko.properties |  27 ++
 .../authenticator/LocalStrings_ko.properties       |  72 +++++
 .../jaspic/LocalStrings_ko.properties              |  30 ++
 .../catalina/connector/LocalStrings_ko.properties  |  89 ++++++
 .../catalina/core/LocalStrings_ko.properties       | 262 +++++++++++++++++
 .../catalina/deploy/LocalStrings_ko.properties     |  25 ++
 .../catalina/filters/LocalStrings_ko.properties    |  65 +++++
 .../ha/authenticator/LocalStrings_ko.properties    |  17 ++
 .../catalina/ha/context/LocalStrings_ko.properties |  19 ++
 .../catalina/ha/deploy/LocalStrings_ko.properties  |  52 ++++
 .../catalina/ha/session/LocalStrings_ko.properties |  90 ++++++
 .../catalina/ha/tcp/LocalStrings_ko.properties     |  42 +++
 .../catalina/loader/LocalStrings_ko.properties     |  71 +++++
 .../catalina/manager/LocalStrings_ko.properties    | 177 ++++++++++++
 .../manager/host/LocalStrings_ko.properties        |  91 ++++++
 .../catalina/mapper/LocalStrings_ko.properties     |  31 ++
 .../catalina/mbeans/LocalStrings_ko.properties     |  23 ++
 .../catalina/realm/LocalStrings_ko.properties      | 104 +++++++
 .../catalina/security/LocalStrings_ko.properties   |  22 ++
 .../catalina/servlets/LocalStrings_ko.properties   |  55 ++++
 .../catalina/session/LocalStrings_ko.properties    |  83 ++++++
 .../catalina/startup/LocalStrings_ko.properties    | 162 +++++++++++
 .../storeconfig/LocalStrings_ko.properties         |  22 ++
 .../tribes/group/LocalStrings_ko.properties        |  28 ++
 .../group/interceptors/LocalStrings_ko.properties  |  83 ++++++
 .../catalina/tribes/io/LocalStrings_ko.properties  |  27 ++
 .../catalina/tribes/jmx/LocalStrings_ko.properties |  21 ++
 .../tribes/membership/LocalStrings_ko.properties   |  56 ++++
 .../tribes/tipis/LocalStrings_ko.properties        |  53 ++++
 .../tribes/transport/LocalStrings_ko.properties    |  24 ++
 .../transport/bio/LocalStrings_ko.properties       |  40 +++
 .../transport/nio/LocalStrings_ko.properties       |  57 ++++
 .../tribes/util/LocalStrings_ko.properties         |  25 ++
 .../catalina/users/LocalStrings_ko.properties      |  30 ++
 .../catalina/util/LocalStrings_ko.properties       |  53 ++++
 .../catalina/valves/LocalStrings_ko.properties     | 142 ++++++++++
 .../valves/rewrite/LocalStrings_ko.properties      |  20 ++
 .../webresources/LocalStrings_ko.properties        |  59 ++++
 java/org/apache/coyote/LocalStrings_ko.properties  |  54 ++++
 .../apache/coyote/ajp/LocalStrings_ko.properties   |  34 +++
 .../coyote/http11/LocalStrings_ko.properties       |  53 ++++
 .../http11/filters/LocalStrings_ko.properties      |  27 ++
 .../http11/upgrade/LocalStrings_ko.properties      |  36 +++
 .../apache/coyote/http2/LocalStrings_ko.properties | 168 +++++++++++
 .../jasper/resources/LocalStrings_ko.properties    | 313 +++++++++++++++++++++
 java/org/apache/naming/LocalStrings_ko.properties  |  30 ++
 .../naming/factory/LocalStrings_ko.properties      |  32 +++
 .../factory/webservices/LocalStrings_ko.properties |  16 ++
 .../tomcat/dbcp/dbcp2/LocalStrings_ko.properties   |  26 ++
 .../apache/tomcat/util/LocalStrings_ko.properties  |  30 ++
 .../tomcat/util/buf/LocalStrings_ko.properties     |  28 ++
 .../util/codec/binary/LocalStrings_ko.properties   |  19 ++
 .../tomcat/util/compat/LocalStrings_ko.properties  |  19 ++
 .../util/descriptor/LocalStrings_ko.properties     |  21 ++
 .../util/descriptor/tld/LocalStrings_ko.properties |  16 ++
 .../util/descriptor/web/LocalStrings_ko.properties |  66 +++++
 .../util/digester/LocalStrings_ko.properties       |  17 ++
 .../tomcat/util/http/LocalStrings_ko.properties    |  41 +++
 .../util/http/parser/LocalStrings_ko.properties    |  40 +++
 .../tomcat/util/net/LocalStrings_ko.properties     | 154 ++++++++++
 .../util/net/jsse/LocalStrings_ko.properties       |  39 +++
 .../util/net/openssl/LocalStrings_ko.properties    |  66 +++++
 .../net/openssl/ciphers/LocalStrings_ko.properties |  16 ++
 .../tomcat/util/scan/LocalStrings_ko.properties    |  25 ++
 .../util/threads/res/LocalStrings_ko.properties    |  16 ++
 .../tomcat/websocket/LocalStrings_ko.properties    | 132 +++++++++
 .../websocket/pojo/LocalStrings_ko.properties      |  45 +++
 .../websocket/server/LocalStrings_ko.properties    |  43 +++
 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 ++++
 75 files changed, 4143 insertions(+)

diff --git a/build.xml b/build.xml
index 70e6d84..863f2be 100644
--- a/build.xml
+++ b/build.xml
@@ -889,6 +889,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..6d0fae9
--- /dev/null
+++ b/java/javax/el/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.
+
+beanNameELResolver.beanReadOnly=Bean 이름 [{0}]은(는) 읽기 전용입니다.
+
+elProcessor.defineFunctionInvalidClass=클래스 [{0}]은(는) public 클래스가 아닙니다.
+elProcessor.defineFunctionInvalidMethod=클래스 [{1}]의 메소드 [{0}]은(는) public static 메소드가 아닙니다.
+elProcessor.defineFunctionInvalidParameterList=클래스 [{2}]의 메소드 [{1}]을(를) 위한 파라미터 목록 [{0}]이(가) 유효하지 않습니다.
+elProcessor.defineFunctionInvalidParameterTypeName=클래스 [{2}]의 메소드 [{1}]을(를) 위한 파라미터 타입 [{0}]은(는) 유효하지 않습니다.
+elProcessor.defineFunctionNoMethod=클래스 [{1}]에서 public static 메소드 [{0}]을(를) 찾을 수 없었습니다.
+elProcessor.defineFunctionNullParams=하나 이상의 입력 파라미터들이 널이었습니다.
+
+expressionFactory.cannotCreate=타입 [{0}]의 ExpressionFactory를 생성할 수 없습니다.
+expressionFactory.cannotFind=타입 [{0}]의 ExpressionFactory를 찾을 수 없습니다.
+expressionFactory.readFailed=[{0}]을(를) 읽지 못했습니다.
+
+importHandler.ambiguousImport=이미 임포트된 [{1}]와(과) 충돌하기에, 클래스 [{0}]은(는) 임포트될 수 없었습니다.
+importHandler.ambiguousStaticImport=정적 임포트 [{0}]은(는), 이미 임포트된 [{1}]와(과) 충돌하기 때문에 처리될 수 없었습니다.
+importHandler.classNotFound=클래스 [{0}]을(를) 찾을 수 없어서 임포트될 수 없습니다.
+importHandler.invalidClass=클래스 [{0}]은(는), 반드시 public이어야 하고 abstract가 아니어야 하며 인터페이스가 아니어야 합니다.
+importHandler.invalidClassName=임포트할 클래스 이름 [{0}]은(는) 반드시 패키지를 포함해야 합니다.
+importHandler.invalidClassNameForStatic=정적 임포트 [{1}]을(를) 위해 지정된 클래스 [{0}]은(는) 유효하지 않습니다.
+importHandler.invalidStaticName=임포트할 정적 메소드나 필드의 이름은, 반드시 클래스를 포함해야 합니다: [{0}]
+importHandler.staticNotFound=임포트 [{2}]을(를) 위한 클래스 [{1}] 내에서, 정적 임포트 [{0}]을(를) 찾을 수 없습니다.
+
+lambdaExpression.tooFewArgs=적어도 [{1}]개의 아규먼트들을 요구하는 람다 표현식에, 단지 [{0}]개의 아규먼트들만이 제공되었습니다.
+
+objectNotAssignable=타입 [{0}]의 객체를, 타입 [{1}]의 객체 배열에 추가할 수 없습니다.
+propertyNotFound=타입 [{0}]에서 프로퍼티 [{1}]을(를) 찾을 수 없습니다.
+propertyNotReadable=타입 [{0}]에서 프로퍼티 [{1}]을(를) 읽을 수 없습니다.
+propertyNotWritable=타입 [{0}]에서 쓰기 가능하지 않은 프로퍼티 [{1}]
+propertyReadError=타입 [{0}]에서 [{1}]을(를) 읽는 중 오류 발생
+propertyWriteError=타입 [{0}]에 [{1}]을(를) 쓰는 중 오류 발생
+
+staticFieldELResolver.methodNotFound=클래스 [{1}]에 [{0}](이)라는 이름의 public static 메소드가 발견되지 않습니다.
+staticFieldELResolver.notFound=클래스 [{1}]에, [{0}](이)라는 이름의 public static 필드가 없습니다.
+staticFieldELResolver.notWriteable=정적 필드들에 대해 쓰기는 허용되지 않습니다 (이번 경우는 클래스 [{1}]의 필드 [{0}]).
+
+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..8ee069e
--- /dev/null
+++ b/java/javax/servlet/http/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.
+
+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에 의해 지원되지 않습니다.
+http.non_http=HTTP 요청이 아니거나, HTTP 응답이 아닙니다.
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..4288368
--- /dev/null
+++ b/java/org/apache/catalina/authenticator/LocalStrings_ko.properties
@@ -0,0 +1,72 @@
+# 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.jaspicCleanSubjectFail=JASPIC subject를 제거하지 못했습니다.
+authenticator.jaspicSecureResponseFail=JASPIC 처리 중 응답을 보안처리 하지 못했습니다.
+authenticator.jaspicServerAuthContextFail=JASPIC ServerAuthContext 인스턴스를 획득하지 못했습니다.
+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.serviceLoginFail=서비스 Principal로서 로그인 할 수 없습니다.
+spnegoAuthenticator.ticketValidateFail=클라이언트에 의해 제공된 티켓이 유효한지를 확인하지 못했습니다.
diff --git a/java/org/apache/catalina/authenticator/jaspic/LocalStrings_ko.properties b/java/org/apache/catalina/authenticator/jaspic/LocalStrings_ko.properties
new file mode 100644
index 0000000..10a28dd
--- /dev/null
+++ b/java/org/apache/catalina/authenticator/jaspic/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.
+
+authConfigFactoryImpl.load=[{0}](으)로부터 persistent provider 등록 사항들을 로드합니다.
+authConfigFactoryImpl.registerClass=레이어 [{1}]와(과) 애플리케이션 컨텍스트 [{2}]을(를) 위한 클래스 [{0}]을(를) 등록합니다.
+authConfigFactoryImpl.registerInstance=레이어 [{1}]와(과) 애플리케이션 컨텍스트 [{2}]을(를) 위한 타입 [{0}]의 인스턴스를 등록합니다.
+authConfigFactoryImpl.zeroLengthAppContext=애플리케이션 컨텍스트 이름의 길이가 0으로, 이는 유효하지 않습니다.
+authConfigFactoryImpl.zeroLengthMessageLayer=길이가 0인 메시지 레이어 이름은 유효하지 않습니다.
+
+callbackHandlerImpl.jaspicCallbackMissing=타입이 [{0}]인 지원되지 않는 JASPIC 콜백을 받았는데, 이는 무시됩니다.
+
+jaspicAuthenticator.authenticate=[{0}]을(를) 위한 요청을 JASPIC를 통하여 인증합니다.
+
+persistentProviderRegistrations.deleteFail=임시 파일 [{0}]을(를) 삭제할 수 없습니다.
+persistentProviderRegistrations.existsDeleteFail=임시 파일 [{0}]이(가) 이미 존재하며 삭제될 수 없습니다.
+persistentProviderRegistrations.moveFail=[{0}]을(를) [{1}](으)로 이동시키지 못했습니다.
+
+simpleServerAuthConfig.noModules="ServerAuthModule이 설정되지 않음"
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..ee5c308
--- /dev/null
+++ b/java/org/apache/catalina/connector/LocalStrings_ko.properties
@@ -0,0 +1,89 @@
+# 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.invalidEncoding=인코딩 [{0}]은(는) JRE에 의해 인식되지 않습니다. Connector는 [{1}]을(를) 계속 사용할 것입니다.
+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=프로토콜 핸들러를 중지시키지 못했습니다.
+
+coyoteInputStream.nbNotready=Non-blocking 모드에서는, 이전의 데이터 읽기가 완료되고 isReady()가 true를 반환하기 전까지는, ServletInputStream으로부터 데이터를 읽을 수 없습니다.
+
+coyoteOutputStream.nbNotready=Non-blocking 모드에서는, 이전의 쓰기가 완료되고 isReady()가 true를 반환할 때까지는, ServletOutputStream에 쓸 수 없습니다.
+
+coyoteRequest.alreadyAuthenticated=해당 요청은 이미 인증되었습니다.
+coyoteRequest.attributeEvent=속성 이벤트 리스너에 의해 예외 발생
+coyoteRequest.authenticate.ise=응답이 커밋된 후에는 authenticate()를 호출할 수 없습니다.
+coyoteRequest.changeSessionId=세션 ID를 변경할 수 없습니다. 이 요청과 연관된 세션이 없습니다.
+coyoteRequest.chunkedPostTooLarge=포스트된 데이터의 크기가 너무 커서 파라미터들이 파싱되지 않았습니다. 이 요청은 chunked request였기 때문에 더 이상 처리될 수 없었습니다. 만일 애플리케이션이 매우 큰 포스트 데이터를 받아들여야 한다면, Connector의 maxPostSize 속성을 사용하여 이 문제를 해결하십시오.
+coyoteRequest.filterAsyncSupportUnknown=어떤 필터들이 비동기 처리를 지원하지 않는지 여부를 결정할 수 없습니다.
+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.noAsync=요청 처리 체인 내의 다음 클래스들이 비동기 모드를 지원하지 않기 때문에, 비동기 모드를 시작할 수 없습니다: [{0}]
+coyoteRequest.noMultipartConfig=어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.
+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.encoding.invalid=인코딩 [{0}]은(는) JRE에 의해 인식되지 않는 것입니다.
+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.requiresNonBlocking=Non blocking 모드에서는 가용하지 않습니다.
+inputBuffer.streamClosed=스트림이 닫혔습니다.
+
+outputBuffer.writeNull=write(String,int,int) 메소드에 전달되는 String 아규먼트는 널일 수 없습니다.
+
+request.asyncNotSupported=현재 체인의 필터 또는 서블릿이, 비동기 오퍼레이션들을 지원하지 않습니다.
+request.fragmentInDispatchPath=디스패치 경로 [{0}](으)로부터 URI fragment를 제거했습니다.
+request.illegalWrap=요청 wrapper는 반드시 getRequest()로부터 얻어진 요청을 wrap해야 합니다.
+request.notAsync=만일 현재의 쓰레드가 비동기 모드에 있지 않다면, 이 메소드를 호출하는 것은 불허됩니다. (즉, isAsyncStarted()가 false를 반환하는 경우)
+
+requestFacade.nullRequest=요청 객체가 이미 참조 해제 되었고, 더 이상 이 facade와 연관되지 않습니다.
+
+response.illegalWrap=응답 wrapper는, 반드시 getResponse()로부터 얻어진 응답 객체를 wrap한 것이어야 합니다.
+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..50a7792
--- /dev/null
+++ b/java/org/apache/catalina/core/LocalStrings_ko.properties
@@ -0,0 +1,262 @@
+# 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.addJspFile.iae=JSP 파일 [{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.setRequestEncoding.ise=컨텍스트가 이미 초기화되었기에, 요청된 인코딩은 컨텍스트 [{0}]을(를) 위해 설정될 수 없습니다.
+applicationContext.setResponseEncoding.ise=컨텍스트가 이미 초기화되었으므로, 컨텍스트 [{0}]을(를) 위한 응답 인코딩을 설정할 수 없습니다.
+applicationContext.setSessionTimeout.ise=컨텍스트 [{0}]이(가) 이미 초기화되었기에, 세션 제한시간이 설정할 수 없습니다.
+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를 제거했습니다.
+
+applicationPushBuilder.methodInvalid=PUSH 요청을 위한 HTTP 메소드는 반드시 캐시 가능하고 안전해야 하는데, [{0}]은(는) 그렇지 않습니다.
+applicationPushBuilder.methodNotToken=HTTP 메소드들은 토큰들이어야 하지만, [{0}]은(는) 토큰이 아닌 문자를 포함하고 있습니다.
+
+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.config=APR/OpenSSL 설정: useAprConnector [{0}], useOpenSSL [{1}]
+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}]을(를) 바인딩 해제하지 못했습니다.
+naming.wsdlFailed=wsdl 파일을 찾지 못했습니다: [{0}]
+
+noPluggabilityServletContext.notAllowed=Servlet 3.0 스펙의 4.4 장에 따르면, web.xml 또는 web-fragment.xml 파일에 정의되지 않거나 @WebListener로 annotate되지 않은, ServletContextListener에서 이 메소드를 호출하는 것은 허용되지 않습니다.
+
+pushBuilder.noPath=경로를 설정하기 전에 push()를 호출하는 것은 불허됩니다.
+
+standardContext.applicationListener=클래스 [{0}]의 애플리케이션 리스너를 설정하는 중 오류 발생
+standardContext.applicationSkipped=이전 오류(들)로 인하여, 애플리케이션 리스너들을 설치하는 것을 건너뛰었습니다.
+standardContext.backgroundProcess.instanceManager=인스턴스 매니저 [{0}]을(를) 백그라운드 프로세스에서 처리 중 예외 발생
+standardContext.backgroundProcess.loader=로더 [{0}]을(를) 백그라운드 프로세스로 처리 중 예외 발생
+standardContext.backgroundProcess.manager=매니저 [{0}]을(를) 백그라운드 프로세스로 처리하는 중 예외 발생
+standardContext.backgroundProcess.resources=리소스 [{0}]을(를) 백그라운드 프로세스로 처리하는 중 예외 발생
+standardContext.cluster.noManager=매니저가 발견되지 않습니다. 클러스터 매니저가 사용되어야 하는지 점검합니다. 설정된 클러스터: [{0}], 배포할 수 있는 애플리케이션: [{1}]
+standardContext.configurationFail=하나 이상의 구성요소(들)이, 해당 컨텍스트가 올바로 설정되지 않았다고 표시했습니다.
+standardContext.cookieProcessor.null=컨텍스트를 위한 CookieProcessor를 널로 설정하는 것은 허용되지 않습니다.
+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.threadBindingListenerError=컨텍스트 [{0}]을(를) 위해 설정된 쓰레드 바인딩 리스너에서 오류가 발생했습니다.
+standardContext.unknownCookieEncoding=알 수 없는 인코딩 [{0}]이(가) setCookieEncoding(String)을 위해 지정되었으므로, 기본 인코딩인 UTF-8이 대신 사용될 것입니다.
+standardContext.urlPattern.patternWarning=경고: Servlet 2.4에서 URL 패턴 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
+standardContext.webappClassLoader.missingProperty=해당 프로퍼티가 존재하지 않기에, 웹 애플리케이션 클래스로더 프로퍼티 [{0}]을(를) [{1}](으)로 설정할 수 없습니다.
+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=셧다운 포트를 통해 유효한 셧다운 명령을 받았습니다. 서버 인스턴스를 중지시킵니다.
+standardServer.storeConfig.notAvailable=[{0}](이)라는 이름의 MBean으로서 StoreConfig 구현 객체가 등록되지 않았으므로, 어떤 설정도 저장될 수 없었습니다. 보통 StoreConfigLifecycleListener을 통하여 적절한 MBean이 등록됩니다.
+
+standardService.engine.startFailed=연관된 엔진을 시작하지 못했습니다.
+standardService.engine.stopFailed=연관된 엔진을 중지시키지 못했습니다.
+standardService.mapperListener.startFailed=연관된 MapperListener를 시작하지 못했습니다.
+standardService.mapperListener.stopFailed=연관된 MapperListener를 중지시키지 못했습니다.
+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/authenticator/LocalStrings_ko.properties b/java/org/apache/catalina/ha/authenticator/LocalStrings_ko.properties
new file mode 100644
index 0000000..b1bcc4c
--- /dev/null
+++ b/java/org/apache/catalina/ha/authenticator/LocalStrings_ko.properties
@@ -0,0 +1,17 @@
+# 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.
+
+clusterSingleSignOn.clusterLoad.fail=ClusterSingleSignOn에서 clusterLoad 오퍼레이션 수행 중 예외 발생
+clusterSingleSignOn.nocluster=ClusterSingleSignOn을 위한 클러스터가 없습니다.
diff --git a/java/org/apache/catalina/ha/context/LocalStrings_ko.properties b/java/org/apache/catalina/ha/context/LocalStrings_ko.properties
new file mode 100644
index 0000000..48f99ef
--- /dev/null
+++ b/java/org/apache/catalina/ha/context/LocalStrings_ko.properties
@@ -0,0 +1,19 @@
+# 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.setAttribute.namenull=이름이 널일 수 없습니다.
+
+replicatedContext.startFailed=ReplicatedContext를 시작하지 못했습니다: [{0}]
+replicatedContext.startUnable=ReplicatedContext [{0}]을(를) 시작할 수 없습니다.
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..664746b9
--- /dev/null
+++ b/java/org/apache/catalina/ha/session/LocalStrings_ko.properties
@@ -0,0 +1,90 @@
+# 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}]이(가) 중지되고 있습니다.
+
+clusterSessionListener.noManager=컨텍스트 매니저가 존재하지 않습니다: [{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.invalidAttributeInfoType=유효하지 않은 AttributeInfo 타입=[{0}]
+deltaRequest.removeUnable=클러스터 엘리먼트를 제거할 수 없습니다:
+deltaRequest.showPrincipal=Principal [{0}]이(가) 세션 [{1}]에 설정되었습니다.
+deltaRequest.ssid.mismatch=세션 ID가 일치하지 않아, 델타 요청을 실행하지 않습니다.
+deltaRequest.ssid.null=setSessionId를 위한 세션 ID가 널입니다.
+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..0194309
--- /dev/null
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings_ko.properties
@@ -0,0 +1,42 @@
+# 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}] 밀리초)
+
+simpleTcpCluster.clustermanager.cloneFailed=클러스터 매니저를 복제할 수 없습니다. 기본 값인 org.apache.catalina.ha.session.DeltaManager를 사용합니다.
+simpleTcpCluster.clustermanager.notImplement=매니저 [{0}]이(가) ClusterManager 인터페이스를 구현하지 않습니다. 클러스터에 추가하려는 시도는 중단됩니다.
+simpleTcpCluster.member.addFailed=복제 시스템에 연결할 수 없습니다.
+simpleTcpCluster.member.added=복제 멤버가 추가됨: [{0}]
+simpleTcpCluster.member.disappeared=멤버 사라짐 메시지를 수신했습니다: [{0}]
+simpleTcpCluster.member.removeFailed=복제 시스템으로부터 클러스터 노드를 제거할 수 없습니다.
+simpleTcpCluster.sendFailed=클러스터 sender를 통해 메시지를 보낼 수 없습니다.
+simpleTcpCluster.start=클러스터가 막 시작하려 합니다.
+simpleTcpCluster.startUnable=클러스터를 시작할 수 없습니다.
+simpleTcpCluster.stopUnable=클러스터를 중지시킬 수 없습니다.
+simpleTcpCluster.unableSend.localMember=로컬 멤버 [{0}]에게 메시지를 보낼 수 없습니다.
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..6c1a0f3
--- /dev/null
+++ b/java/org/apache/catalina/loader/LocalStrings_ko.properties
@@ -0,0 +1,71 @@
+# 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.addPermisionNoCanonicalFile=URL [{0}](으)로부터 canonical 파일 경로를 얻을 수 없습니다.
+webappClassLoader.addPermisionNoProtocol=URL [{1}] 내의 프로토콜 [{0}]은(는) 지원되지 않으므로, 이 URL의 리소스에 대한 읽기가 승인되지 않았습니다.
+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.jarsAdded=하나 이상의 JAR들이 웹 애플리케이션 [{0}]에 추가됐습니다.
+webappClassLoader.jarsModified=웹 애플리케이션 [{0}]에서 하나 이상의 JAR 파일(들)이 변경되었습니다.
+webappClassLoader.jarsRemoved=하나 이상의 JAR들이 웹 애플리케이션 [{0}](으)로부터 제거되었습니다.
+webappClassLoader.javaseClassLoaderNull=j2seClassLoader 속성이 널이어서는 안됩니다.
+webappClassLoader.jdbcRemoveFailed=웹 애플리케이션 [{0}]을(를) 위한 JDBC 드라이버의 등록을 제거하지 못했습니다.
+webappClassLoader.loadedByThisOrChildFail=컨텍스트 [{1}]에서 잠재적 메모리 누수를 방지하기 위해, [{0}] 클래스의 인스턴스 내에 있는 엔트리들을 모두 점검하려는 시도가 실패했습니다.
+webappClassLoader.readError=리소스 읽기 오류 : [{0}]을(를) 로드할 수 없었습니다.
+webappClassLoader.removeTransformer=웹 애플리케이션 [{1}](으)로부터 클래스 파일 Transformer [{0}]을(를) 제거했습니다.
+webappClassLoader.resourceModified=리소스 [{0}]이(가) 변경된 적이 있습니다. 최종 변경 시간이 [{1}]이었는데, 이제 [{2}](으)로 바뀌었습니다.
+webappClassLoader.stackTrace=웹 애플리케이션 [{0}]이(가) [{1}](이)라는 이름의 쓰레드를 시작시킨 것으로 보이지만, 해당 쓰레드를 중지시키지 못했습니다. 이는 메모리 누수를 유발할 가능성이 큽니다. 해당 쓰레드의 스택 트레이스:{2}
+webappClassLoader.stackTraceRequestThread=웹 애플리케이션 [{0}]이(가) 여전히 완료되지 않은 요청을 처리하고 있습니다. 이는 메모리 누수를 유발할 가능성이 높습니다. 표준 컨텍스트 구현의 unloadDelay 속성을 이용하여, 요청 완료 허용 시간을 통제할 수 있습니다. 요청 처리 쓰레드의 스택 트레이스:[{2}]
+webappClassLoader.stopThreadFail=웹 애플리케이션 [{1}]을 위한, [{0}](이)라는 이름의 쓰레드를 종료시키지 못했습니다.
+webappClassLoader.stopTimerThreadFail=웹 애플리케이션 [{1}]을(를) 위한, [{0}](이)라는 이름의 TimerThread를 종료시키지 못했습니다.
+webappClassLoader.stopped=불허되는 접근: 이 웹 애플리케이션 인스턴스는 이미 중지되었습니다. [{0}]을(를) 로드할 수 없습니다. 디버그 목적 및 불허되는 접근을 발생시킨 해당 쓰레드를 종료시키기 위한 시도로서, 다음 스택 트레이스가 생성됩니다.
+webappClassLoader.superCloseFail=부모 클래스의 close() 호출 시 실패 발생
+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.readFailure=리소스 [{0}]을(를) 읽을 수 없습니다.
+webappLoader.reloadable=reloadable 프로퍼티를 [{0}](으)로 설정할 수 없습니다.
+webappLoader.setContext.ise=웹 애플리케이션 로더가 시작되고 있는 동안, 컨텍스트를 설정하는 것은 허용되지 않습니다.
+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..1167620
--- /dev/null
+++ b/java/org/apache/catalina/manager/LocalStrings_ko.properties
@@ -0,0 +1,177 @@
+# 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.configReloadButton=다시 읽기
+htmlManagerServlet.configSslHostName=TLS 호스트 이름 (선택 사항)
+htmlManagerServlet.configSslReloadTitle=TLS 설정 파일들을 다시 읽습니다.
+htmlManagerServlet.configTitle=설정
+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.diagnosticsSsl=TLS Connector 설정 진단
+htmlManagerServlet.diagnosticsSslConnectorCertsButton=인증서들
+htmlManagerServlet.diagnosticsSslConnectorCertsText=설정된 TLS 가상 호스트들과 그들 각각의 인증서 체인의 목록
+htmlManagerServlet.diagnosticsSslConnectorCipherButton=Cipher들
+htmlManagerServlet.diagnosticsSslConnectorCipherText=설정된 TLS 가상 호스트들과 각각을 위한 cipher들의 목록을 표시합니다.
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=신뢰되는 인증서들
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=설정된 TLS 가상 호스트들과 각각을 위한 신뢰되는 인증서들의 목록을 표시합니다.
+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.certsNotAvailable=이 Connector로부터, 인증서 정보를 런타임에 구할 수 없습니다.
+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.notSslConnector=SSL이 이 connector를 위해 사용 가능 상태가 아닙니다.
+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.sslConnectorCerts=OK - Connector / 인증서 체인 정보
+managerServlet.sslConnectorCiphers=OK - Connector / SSL Cipher 정보
+managerServlet.sslConnectorTrustedCerts=OK - Connector / 신뢰되는 인증서 정보
+managerServlet.sslReload=OK - [{0}]을(를) 위해 TLS 설정을 다시 로드했습니다.
+managerServlet.sslReloadAll=OK - 모든 TLS 가상 호스트들을 위한 TLS 설정을 다시 로드했습니다.
+managerServlet.sslReloadFail=실패 - TLS 설정을 다시 로드하지 못했습니다.
+managerServlet.startFailed=실패 - 컨텍스트 경로 [{0}]의 애플리케이션이 시작될 수 없었습니다.
+managerServlet.started=OK - 컨텍스트 경로 [{0}]의 애플리케이션이 시작되었습니다.
+managerServlet.stopped=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 중지시켰습니다.
+managerServlet.storeConfig.invalidMBean=실패 - StoreConfig Mbean을 찾을 수 없습니다. [{0}]은(는) MBean을 위한 유효한 이름이 아닙니다.
+managerServlet.storeConfig.noMBean=실패 - [{0}]에서 등록된 StoreConfig MBean이 없습니다. 보통 StoreConfigLifecycleListener에 의해 등록이 수행됩니다.
+managerServlet.threaddump=OK - JVM 쓰레드 덤프
+managerServlet.trustedCertsNotConfigured=이 가상 호스트를 위한 신뢰되는 인증서들이 설정되어 있지 않습니다.
+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..31c6bf3
--- /dev/null
+++ b/java/org/apache/catalina/manager/host/LocalStrings_ko.properties
@@ -0,0 +1,91 @@
+# 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.persist=저장: 현재 설정을 저장합니다.
+hostManagerServlet.persistFailed=실패 - 설정을 저장하지 못했습니다.
+hostManagerServlet.persisted=OK - 설정이 저장되었습니다.
+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.hostsPersist=저장
+htmlHostManagerServlet.hostsRemove=제거
+htmlHostManagerServlet.hostsStart=시작
+htmlHostManagerServlet.hostsStop=중지
+htmlHostManagerServlet.list=가상 호스트들의 목록을 표시
+htmlHostManagerServlet.manager=호스트 관리자
+htmlHostManagerServlet.messageLabel=메시지:
+htmlHostManagerServlet.persistAll=현재 설정을 (가상 호스트들 포함) server.xml과 각 웹 애플리케이션의 context.xml 파일들에 저장합니다.
+htmlHostManagerServlet.persistAllButton=전부
+htmlHostManagerServlet.persistTitle=저장 환경 설정
+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/mapper/LocalStrings_ko.properties b/java/org/apache/catalina/mapper/LocalStrings_ko.properties
new file mode 100644
index 0000000..c1776fc
--- /dev/null
+++ b/java/org/apache/catalina/mapper/LocalStrings_ko.properties
@@ -0,0 +1,31 @@
+# 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.
+
+mapper.addHost.sameHost=동일한 호스트 [{0}]을(를) 중복하여 등록을 시도했는데, 이는 무시됩니다.
+mapper.addHost.success=등록된 호스트 [{0}]
+mapper.addHostAlias.sameHost=동일한 호스트 [{1}]을(를) 위한 별칭 [{0}]이(가) 중복해서 등록 시도 되었는데, 이는 무시됩니다.
+mapper.addHostAlias.success=호스트 [{1}]을(를) 위해 별칭 [{0}]이(가) 등록되었습니다.
+mapper.duplicateHost=중복된 호스트 [{0}]. 해당 이름은 이미 호스트 [{1}]에 의해 사용되고 있습니다. 이 호스트는 무시될 것입니다.
+mapper.duplicateHostAlias=호스트 [{1}] 내에 중복된 호스트 별칭 [{0}]. 해당 이름이 이미 호스트 [{2}]에 의해 사용되고 있습니다. 이 별칭은 무시될 것입니다.
+mapper.removeWrapper=경로 [{1}]의 컨텍스트 [{0}](으)로부터 wapper를 제거합니다.
+
+mapperListener.pauseContext=컨텍스트 [{0}]을(를), 서비스 [{1}]을(를) 위해 다시 로드되고 있는 것으로 등록합니다.
+mapperListener.registerContext=서비스 [{1}]을(를) 위한 컨텍스트 [{0}]을(를) 등록합니다.
+mapperListener.registerHost=서비스 [{2}]을(를) 위해 도메인 [{1}]에 있는 호스트 [{0}]을(를) 등록합니다.
+mapperListener.registerWrapper=서비스 [{2}]을(를) 위한 컨텍스트 [{1}]에서 Wrapper [{0}]을(를) 등록합니다.
+mapperListener.unknownDefaultHost=서비스 [{1}]을(를) 위해, 알 수 없는 기본 호스트 [{0}]. Tomcat은 호스트 이름을 지정하지 않은 HTTP/1.0 요청들을 처리할 수 없을 것입니다.
+mapperListener.unregisterContext=서비스 [{1}]을(를) 위한 컨텍스트 [{0}]에 대한 등록을 제거합니다.
+mapperListener.unregisterHost=서비스 [{2}]을(를) 위한 도메인 [{1}]에서 호스트 [{0}]의 등록을 제거합니다.
+mapperListener.unregisterWrapper=서비스 [{2}]을(를) 위한 컨텍스트 [{1}] 내의 Wrapper [{0}]에 대한 등록을 제거합니다.
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..9a02e1a
--- /dev/null
+++ b/java/org/apache/catalina/mbeans/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.
+
+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}]에 서버를 설정했습니다.
+
+mBeanFactory.managerContext=매니저 구성요소들은 컨텍스트들에만 추가될 수 있습니다.
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..7023a65
--- /dev/null
+++ b/java/org/apache/catalina/realm/LocalStrings_ko.properties
@@ -0,0 +1,104 @@
+# 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의 메소드에 예기치 않은 호출이었습니다.
+
+credentialHandler.invalidStoredCredential=사용자가 제공한 credentials과 부합하는지 검사하기 위하여, 유효하지 않은 저장된 credentials 문자열 [{0}]이(가), Realm에 의해 제공되었습니다.
+credentialHandler.unableToMutateUserCredential=사용자가 제공한 credentials에 변경을 가하지 못했습니다. 이는 보통 CredentialHandler 설정이 유효하지 않음을 의미합니다.
+
+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}]초 후에 실패 사용자 캐시로부터 제거했습니다.
+
+mdCredentialHandler.unknownEncoding=인코딩 [{0}]이(가) 지원되지 않아서, 현 설정 [{1}]이(가) 계속 사용될 것입니다.
+
+memoryRealm.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+memoryRealm.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+memoryRealm.loadExist=메모리 데이터베이스 파일 [{0}]을(를) 읽을 수 없습니다.
+memoryRealm.loadPath=메모리 데이터베이스 파일 [{0}](으)로부터 사용자들을 로드합니다.
+memoryRealm.readXml=메모리 데이터베이스 파일을 읽는 중 예외 발생
+memoryRealm.xmlFeatureEncoding=XML 파일들에서 자바 인코딩 이름들을 허용하기 위해 digester를 설정하는 중 예외 발생. 오직 IANA 인코딩 이름들만 지원될 것입니다.
+
+pbeCredentialHandler.invalidKeySpec=비밀번호 기반의 키를 생성할 수 없습니다.
+
+realmBase.algorithm=유효하지 않은 메시지 Digest 알고리즘 [{0}]이(가) 지정되었습니다.
+realmBase.authenticateFailure=사용자명 [{0}]이(가) 성공적으로 인증되지 못했습니다.
+realmBase.authenticateSuccess=사용자명 [{0}]이(가) 성공적으로 인증되었습니다.
+realmBase.cannotGetRoles=Principal [{0}](으)로부터 역할들을 얻을 수 없습니다.
+realmBase.createUsernameRetriever.ClassCastException=클래스 [{0}]이(가) X509UsernameRetriever 타입이 아닙니다.
+realmBase.createUsernameRetriever.newInstance=타입이 [{0}]인 객체를 생성할 수 없습니다.
+realmBase.credentialHandler.customCredentialHandler=커스텀 CredentialHandler가 설정되어 있기에, 프로퍼티 [{0}]을(를) 값 [{1}](으)로 설정할 수 없습니다.
+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..3a02021
--- /dev/null
+++ b/java/org/apache/catalina/servlets/LocalStrings_ko.properties
@@ -0,0 +1,55 @@
+# 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.readerCloseFailed=Reader를 닫지 못했습니다.
+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.inputstreamclosefail=[{0}]의 입력 스트림을 닫지 못했습니다.
+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..f03b53f
--- /dev/null
+++ b/java/org/apache/catalina/session/LocalStrings_ko.properties
@@ -0,0 +1,83 @@
+# 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.container.noop=컨텍스트들이 아닌, 컨테이너들에 추가된 매니저들은 전혀 사용되지 않을 것입니다.
+managerBase.contextNull=매니저가 사용되기 전에, 컨텍스트가 반드시 널이 아닌 값으로 설정되어야 합니다.
+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.loading.exception=저장된 세션들을 로드하는 중 예외 발생
+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.getIdleTime.ise=getIdleTime: 세션이 이미 무효화 되었습니다.
+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..18db899
--- /dev/null
+++ b/java/org/apache/catalina/startup/LocalStrings_ko.properties
@@ -0,0 +1,162 @@
+# 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 시그널을 통해 서버를 셧다운합니다. 서버는 아직 셧다운되지 않았습니다.
+
+connector.noSetExecutor=Connector [{0}]은(는) 외부 Executor들을 지원하지 않습니다. 메소드 setExecutor(java.util.concurrent.Executor)를 찾을 수 없습니다.
+connector.noSetSSLImplementationName=Connector [{0}]은(는) SSL 구현을 변경하는 것을 지원하지 않습니다. setSslImplementationName(String) 메소드를 찾을 수 없습니다.
+
+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.inputStreamWebResource=Annotation들을 위해 웹 리소스 [{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.createFileFailed=파일 [{0}]을(를) 생성할 수 없습니다.
+expandWar.deleteFailed=[{0}]이(가) 완전히 삭제될 수 없었습니다. 남아있는 파일들의 존재는 문제들을 일으킬 수 있습니다.
+expandWar.deleteOld=압축이 풀려진 디렉토리 [{0}]의 최종 변경 시간이, 연관된 WAR의 최종 변경 시간과 부합하지 않습니다. 해당 디렉토리는 삭제될 것입니다.
+expandWar.illegalPath=아카이브 [{0}]에 문제가 있어 무시될 것입니다: 엔트리가 불허되는 경로 [{1}]을(를) 포함하고 있고, 그 경로가 정의된 docBase [{3}] 외부에 존재하기 때문에, [{2}]에 압축을 풀지 않았습니다.
+expandWar.lastModifiedFailed=[{0}]을(를) 위해, 최종 변경 시간을 설정할 수 없습니다.
+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}](으)로 배치할 수 없습니다.
+tomcat.homeDirMakeFail=홈 디렉토리로 사용할 디렉토리 [{0}]을(를) 생성할 수 없습니다.
+
+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/storeconfig/LocalStrings_ko.properties b/java/org/apache/catalina/storeconfig/LocalStrings_ko.properties
new file mode 100644
index 0000000..f0f2dd8
--- /dev/null
+++ b/java/org/apache/catalina/storeconfig/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.
+
+config.storeContextError=컨텍스트 [{0}]을(를) 저장하는 중 오류 발생
+config.storeServerError=서버를 중지시키는 중 오류 발생
+
+factory.storeNoDescriptor=엘리먼트 클래스 [{0}]을(를) 위한 descriptor가 설정되지 않았습니다!
+factory.storeTag=태그 [{0}]을(를) 저장합니다. ( 객체: [{1}] )
+
+storeConfigListener.notServer=서버가 아닌 다른 구성요소에 리스너가 추가되었으므로, 이 리스너는 무시될 것입니다.
diff --git a/java/org/apache/catalina/tribes/group/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/group/LocalStrings_ko.properties
new file mode 100644
index 0000000..0a22e9f
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/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.
+
+channelCoordinator.alreadyStarted=채널이 이미 레벨 [{0}](으)로 시작되었습니다.
+channelCoordinator.invalid.startLevel=유요하지 않은 시작 레벨입니다. 유효한 레벨은 SND_RX_SEQ, SND_TX_SEQ, MBR_TX_SEQ, MBR_RX_SEQ입니다.
+
+groupChannel.listener.alreadyExist=리스너가 이미 존재합니다: [{0}][{1}]
+groupChannel.noDestination=그룹 채널에서 전송 대상 멤버가 없습니다.
+groupChannel.nullMessage=널 메시지를 전송할 수 없습니다.
+groupChannel.optionFlag.conflict=인터셉터 옵션 플래그가 충돌합니다: [{0}]
+groupChannel.receiving.error=메시지 수신 중 오류 발생
+groupChannel.sendFail.noRpcChannelReply=RPC 채널을 찾을 수 없습니다. NoRpcChannelReply을 보내지 못했습니다.
+groupChannel.unable.deserialize=메시지를 역직렬화할 수 없습니다:[{0}]
+groupChannel.unable.sendHeartbeat=Tribes 인터셉터 스택을 통해 heartbeat를 보낼 수 없습니다. 다시 sleep을 시도할 것입니다.
+
+rpcChannel.replyFailed=RpcChannel에서 응답을 되돌려 보낼 수 없습니다.
diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ko.properties
new file mode 100644
index 0000000..02d4d28
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ko.properties
@@ -0,0 +1,83 @@
+# 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.
+
+domainFilterInterceptor.member.refused=멤버 [{0}]이(가) 클러스터에 참가하는 것이 거부되었습니다.
+domainFilterInterceptor.message.refused=클러스터 [{0}](으)로부터 받은 메시지가 거부되었습니다.
+
+encryptInterceptor.algorithm.required=암호화 알고리즘을 완전하게 지정해야 합니다. 예) AES/CBC/PKCS5Padding.
+encryptInterceptor.algorithm.unsupported-mode=EncryptInterceptor가 블록 cipher 모드 [{0}]을(를) 지원하지 않습니다.
+encryptInterceptor.decrypt.error.short-message=메시지를 해독하지 못했습니다: 메시지가 너무 일찍 끝났습니다 (premature end-of-message).
+encryptInterceptor.decrypt.failed=메시지를 해독하지 못했습니다.
+encryptInterceptor.encrypt.failed=메시지를 암호화하지 못했습니다.
+encryptInterceptor.init.failed=EncryptInterceptor를 초기화하지 못했습니다.
+encryptInterceptor.key.required=암호화 키가 필수적입니다.
+encryptInterceptor.tcpFailureDetector.ordering=EncryptInterceptor는 반드시 TcpFailureDetector 보다 먼저 위치해야 합니다. 채널 인터셉터 파이프라인 내에서, EncryptInterceptor가 TcpFailureDetector 보다 먼저 위치하도록 조정하십시오.
+
+fragmentationInterceptor.fragments.missing=Fragment들이 없습니다.
+fragmentationInterceptor.heartbeat.failed=FragmentationInterceptor에서 heartbeat를 clean up 할 수 없습니다.
+
+gzipInterceptor.compress.failed=바이트 컨텐트들을 압축할 수 없습니다.
+gzipInterceptor.decompress.failed=바이트 컨텐트들의 압축을 풀 수 없습니다.
+
+messageDispatchInterceptor.AsyncMessage.failed=비동기 메시지를 처리하는 중 오류 발생
+messageDispatchInterceptor.completeMessage.failed=완료된 메시지를 되돌려 보고할 수 없습니다.
+messageDispatchInterceptor.errorMessage.failed=오류 메시지를 되돌려 보고할 수 없습니다.
+messageDispatchInterceptor.queue.full=비동기 큐가 꽉 차서 한계값인 [{0}] 바이트에 도달했습니다. 현재 값: [{1}] 바이트.
+messageDispatchInterceptor.unableAdd.queue=비동기 큐에 메시지를 추가할 수 없습니다. 큐의 버그일까요?
+messageDispatchInterceptor.warning.optionflag=경고: 귀하는 비동기 옵션 플래그를 오버라이드하고 있는데, 이는 다른 애플리케이션들이 사용할 수도 있는 Channel.SEND_OPTIONS_ASYNCHRONOUS 옵션을 사용 불능 상태로 만들 것입니다.
+
+nonBlockingCoordinator.electionMessage.sendfailed=Election 메시지를 [{0}]에 보낼 수 없습니다.
+nonBlockingCoordinator.heartbeat.failed=Heartbeat를 수행할 수 없습니다.
+nonBlockingCoordinator.heartbeat.inconsistency=Heartbeat가 일관되지 않은 상태로 발견되었습니다. Election을 다시 시작합니다.
+nonBlockingCoordinator.memberAdded.failed=멤버가 추가되었을 때, election을 시작할 수 없었습니다.
+nonBlockingCoordinator.memberAlive.failed=멤버가 살아있는지 점검할 수 없습니다. 아마도 해당 멤버가 다운된 것 같습니다.
+nonBlockingCoordinator.memberDisappeared.failed=멤버가 제거되었을 때, election을 시작할 수 없었습니다.
+nonBlockingCoordinator.processCoordinationMessage.failed=CoordinationMessage 처리 중 오류 발생. 치명적인 오류일 수 있습니다.
+
+orderInterceptor.messageAdded.sameCounter=추가된 메시지가 동일한 카운터를 가지고 있습니다. 동기화 결함입니다. OrderInterceptor를 사용불능 상태로 설정하십시오.
+
+staticMembershipInterceptor.no.failureDetector=TcpFailureDetector가 없습니다. 정적 멤버들에 대한 자동 탐지가 정상 동작하지 않을 것입니다. TcpFailureDetector 아래에 StaticMembershipInterceptor를 정의하게 되면, 정적 멤버들에 대한 자동 탐지가 정상 동작할 것입니다.
+staticMembershipInterceptor.no.pingInterceptor=TcpPingInterceptor가 존재하지 않습니다. 정적 멤버들에 대한 heath check는 제대로 동작하지 않을 것입니다. TcpPingInterceptor를 정의함으로써, 정적 멤버들에 대한 health check가 정상 동작할 것입니다.
+staticMembershipInterceptor.sendLocalMember.failed=로컬 멤버 통지 실패
+staticMembershipInterceptor.sendShutdown.failed=시스템을 셧다운하기 위한 통지가 실패했습니다.
+
+tcpFailureDetector.already.disappeared=검증 완료. 멤버가 이미 사라졌습니다: [{0}]
+tcpFailureDetector.failureDetection.failed=멤버에 대한 실패 탐지 점검을 수행할 수 없습니다. 아마도 해당 멤버 [{0}]이(가) 다운된 것 같습니다.
+tcpFailureDetector.heartbeat.failed=TcpFailureDetector에서 heartbeat 점검을 수행할 수 없습니다.
+tcpFailureDetector.member.disappeared=검증 완료. 멤버가 사라졌습니다: [{0}]
+tcpFailureDetector.memberDisappeared.verify=멤버 사라짐 메시지를 받았습니다: [{0}]. 이를 검증할 것입니다.
+tcpFailureDetector.performBasicCheck.memberAdded=통지 받지는 못했지만, 멤버가 추가되었습니다: [{0}]
+tcpFailureDetector.still.alive=검증 완료. 멤버가 아직 살아 있습니다: [{0}]
+tcpFailureDetector.suspectMember.alive=의심 멤버 서버가 살아 있음을 확인했습니다. [{0}]
+tcpFailureDetector.suspectMember.dead=의심 멤버가 다운된 것으로 확인됨: [{0}]
+
+tcpPingInterceptor.ping.failed=TCP ping을 보낼 수 없습니다.
+tcpPingInterceptor.pingFailed.pingThread=TCP ping 쓰레드로부터, ping을 전송할 수 없습니다.
+
+throughputInterceptor.report=ThroughputInterceptor의 보고 [\n\
+\tTx Msg:{0} 메시지(들)\n\
+\tSent:{1} MB (전체)\n\
+\tSent:{2} MB (애플리케이션)\n\
+\tTime:{3} 초\n\
+\tTx Speed:{4} MB/sec (전체)\n\
+\tTx Speed:{5} MB/sec (애플리케이션)\n\
+\tError Msg:{6}\n\
+\tRx Msg:{7} 메시지\n\
+\tRx Speed:{8} MB/sec (첫번째 메시지 이후로)\n\
+\tReceived:{9} MB]\n\
+\n
+
+twoPhaseCommitInterceptor.heartbeat.failed=해당 TwoPhaseCommit 인터셉터에서 heartbeat를 수행할 수 없습니다.
+twoPhaseCommitInterceptor.originalMessage.missing=확인 플래그를 받았지만, 원본 메시지가 없습니다. ID:[{0}]
diff --git a/java/org/apache/catalina/tribes/io/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/io/LocalStrings_ko.properties
new file mode 100644
index 0000000..fbdf7e2
--- /dev/null
+++ b/java/org/apache/catalina/tribes/io/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.
+
+bufferPool.created=타입이 [{1}](이)고 최대 크기가 [{0}] 바이트를 사용하여 버퍼 풀을 생성했습니다.
+
+objectReader.retrieveFailed.socketReceiverBufferSize=소켓 receiver의 버퍼 크기를 알 수 없습니다. 기본 값인 43800 바이트로 설정합니다.
+
+replicationStream.conflict=해당 클래스의 클래스로더와, 그 클래스의 특정 non-public 인터페이스의 클래스로더가 일치하지 않아 충돌합니다.
+
+xByteBuffer.discarded.invalidHeader=유효하지 않은 헤더로 인해 패키지를 폐기했습니다.
+xByteBuffer.no.package=XByteBuffer에 어떤 패키지도 존재하지 않습니다.
+xByteBuffer.size.larger.buffer=크기가 기존 버퍼의 길이보다 큽니다.
+xByteBuffer.unableCreate=데이터 패키지를 생성할 수 없습니다. 버퍼가 너무 작습니다.
+xByteBuffer.unableTrim=가용한 버퍼 크기보다 더 많은 바이트들을 잘라낼 수는 없습니다. 버퍼 길이:[{0}], 잘라낼 길이:[{1}]
+xByteBuffer.wrong.class=메시지가 Serializable 인터페이스를 구현하지 않은 클래스입니다. 클래스는 [{0}]입니다.
diff --git a/java/org/apache/catalina/tribes/jmx/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/jmx/LocalStrings_ko.properties
new file mode 100644
index 0000000..3ce14ce
--- /dev/null
+++ b/java/org/apache/catalina/tribes/jmx/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.
+
+jmxRegistry.no.domain=JMX 도메인이 지정되지 않았습니다.
+jmxRegistry.objectName.failed=요청된 ObjectName [{0}]은(는) 유효하지 않습니다.
+jmxRegistry.registerJmx.failed=[{1}](이)라는 이름으로 객체 [{0}]을(를) 등록하지 못했습니다.
+jmxRegistry.registerJmx.notCompliant=요청된 객체 [{0}]은(는) JMX 스펙과 호환되지 않습니다.
+jmxRegistry.unregisterJmx.failed=[{0}](이)라는 이름의 MBean에 대한 등록을 제거하지 못했습니다.
+jmxRegistry.unregisterJmx.notFound=요청된 객체[{0}]는 MBeanServer에 등록되지 않았습니다.
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/membership/LocalStrings_ko.properties
new file mode 100644
index 0000000..e5e6c59
--- /dev/null
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings_ko.properties
@@ -0,0 +1,56 @@
+# 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.
+
+McastService.domain=도메인 변경 메시지를 보낼 수 없습니다.
+McastService.parseSoTimeout=SoTimeout을 파싱할 수 없습니다: [{0}]
+McastService.parseTTL=TTL을 파싱할 수 없습니다: [{0}]
+McastService.payload=Payload 변경 메시지를 보낼 수 없습니다.
+McastService.stopFail=멀티캐스트 서비스를 중단시킬 수 없습니다. 레벨: [{0}]
+
+mcastService.exceed.maxPacketSize=패킷 길이 [{0}]이(가), 최대 패킷 크기인 [{1}] 바이트를 초과합니다.
+mcastService.missing.property=McastService: 필수 프로퍼티 [{0}]이(가) 없습니다.
+mcastService.noStart=멀티캐스트 전송이 시작되지 않았거나 사용가능 상태가 아닙니다.
+
+mcastServiceImpl.bind=멀티캐스트 소켓을 [{0}:{1}](으)로 바인딩하려 시도 중
+mcastServiceImpl.bind.failed=멀티캐스트 주소로 바인딩하지 못했습니다. 포트로만 바인딩합니다.
+mcastServiceImpl.error.receiving=멀티캐스트 패키지를 받는 중 오류 발생. 500 밀리초 동안 잠에 들겠습니다.
+mcastServiceImpl.invalid.startLevel=유효하지 않은 시작 레벨. 허용되는 레벨들은 Channel.MBR_RX_SEQ와 Channel.MBR_TX_SEQ 뿐입니다.
+mcastServiceImpl.invalid.stopLevel=유효하지 않은 중지 레벨. 허용 레벨들은 Channel.MBR_RX_SEQ와 Channel.MBR_TX_SEQ입니다.
+mcastServiceImpl.memberDisappeared.failed=멤버 사라짐 메시지를 처리할 수 없습니다.
+mcastServiceImpl.packet.tooLong=수신된 멀티캐스트 패킷이 너무 깁니다. 패키지를 무시합니다: [{0}]
+mcastServiceImpl.receive.running=McastService.receive가 이미 실행 중입니다.
+mcastServiceImpl.recovery=Tribes 멤버십을 복구하려고, 별도의 쓰레드에서 멀티캐스팅을 시도하고 있습니다.
+mcastServiceImpl.recovery.failed=복구 시도가 [{0}]회 실패했습니다. [{1}] 초 후에 다시 시도 하겠습니다.
+mcastServiceImpl.recovery.startFailed=복구 쓰레드가 멤버십 서비스를 시작하지 못했습니다.
+mcastServiceImpl.recovery.stopFailed=복구 쓰레드가 멤버십 서비스를 중지시키지 못했습니다.
+mcastServiceImpl.recovery.successful=멤버십 복구가 성공적이었습니다.
+mcastServiceImpl.send.failed=멀티캐스트 메시지를 보낼 수 없습니다.
+mcastServiceImpl.send.running=McastService.send가 이미 실행 중입니다.
+mcastServiceImpl.setInterface=멀티홈 멀티캐스트 인터페이스를 [{0}]에 설정합니다.
+mcastServiceImpl.setSoTimeout=클러스터 멀티캐스트의 soTimeout을 [{0}](으)로 설정합니다.
+mcastServiceImpl.setTTL=클러스터 멀티캐스트 TTL을 [{0}](으)로 설정합니다.
+mcastServiceImpl.unable.join=멀티캐스트 그룹에 참가할 수 없습니다. 귀하의 시스템이 멀티캐스팅을 사용 가능하도록 설정되었는지 확인하십시오.
+mcastServiceImpl.unableReceive.broadcastMessage=브로드캐스트 메시지를 수신할 수 없습니다.
+mcastServiceImpl.waitForMembers.done=잠들기가 끝났습니다. 멤버십이 확립되었고, 시작 레벨은 [{0}]입니다.
+mcastServiceImpl.waitForMembers.start=클러스터 멤버십을 확립하기 위해, [{0}] 밀리초 동안 잠에 듭니다. 시작 레벨: [{1}]
+
+memberImpl.invalid.package.begin=유효하지 않은 패키지입니다. [{0}](으)로 시작해야 합니다.
+memberImpl.invalid.package.end=유효하지 않은 패키지. [{0}](으)로 끝나야 합니다.
+memberImpl.large.payload=Payload가 너무 커서 tribe들이 처리할 수 없습니다.
+memberImpl.notEnough.bytes=멤버 데이터 바이트 배열에 충분한 데이터가 존재하지 않습니다.
+memberImpl.package.small=멤버 패키지가 너무 작아서, 유효한지 확인할 수 없습니다.
+memberImpl.unableParse.hostname=호스트 이름을 파싱할 수 없습니다.
+
+staticMember.invalid.uuidLength=UUID는 정확히 16 바이트여야만 합니다. [{0}]이어서는 안됩니다.
diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings_ko.properties
new file mode 100644
index 0000000..8144318
--- /dev/null
+++ b/java/org/apache/catalina/tribes/tipis/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.
+
+abstractReplicatedMap.broadcast.noReplies=broadcast 메소드가 0개의 응답을 받았습니다. 아마도 제한 시간 초과인 듯 합니다.
+abstractReplicatedMap.heartbeat.failed=AbstractReplicatedMap.ping 메시지를 보낼 수 없습니다.
+abstractReplicatedMap.init.completed=AbstractReplicatedMap[{0}] 초기화가 [{1}] 밀리초 내에 완료되었습니다.
+abstractReplicatedMap.init.start=컨텍스트 이름 [{0}]을(를) 사용하여 AbstractReplicatedMap을 초기화합니다.
+abstractReplicatedMap.leftOver.ignored=메시지 [{0}]은(는) 무시됩니다.
+abstractReplicatedMap.leftOver.pingMsg=PING 메시지가 제한 시간을 초과하여 수신되었습니다. 해당 map 멤버 [{0}]은(는), map 멤버십으로부터 이미 제거되었을 수 있습니다.
+abstractReplicatedMap.mapMember.unavailable=멤버 [{0}]은(는) 아직 가용하지 않습니다.
+abstractReplicatedMap.mapMemberAdded.added=Map 멤버가 추가되었습니다:[{0}]
+abstractReplicatedMap.mapMemberAdded.nullMember=통지된 멤버는 멤버십에 등록되어 있지 않습니다: [{0}]
+abstractReplicatedMap.member.disappeared=멤버 [{0}]이(가) 사라졌습니다. 관련 Map 엔트리들은 새 노드로 다시 위치시킬 것입니다.
+abstractReplicatedMap.ping.stateTransferredMember=멤버 [{0}]이(가), 상태가 이전된 상태이지만, 아직 가용하지 않습니다.
+abstractReplicatedMap.ping.timeout=Map [{1}] 내의 멤버 [{0}]은(는) ping 처리 중에 제한 시간 초과되었습니다.
+abstractReplicatedMap.relocate.complete=Map 엔트리들을 재위치시키는 작업이 [{0}] 밀리초에 완료되었습니다.
+abstractReplicatedMap.transferState.noReplies=transferState에서 응답이 하나도 없었습니다. 아마도 제한 시간 초과된 듯합니다.
+abstractReplicatedMap.unable.deserialize.MapMessage=MapMessage를 역직렬화할 수 없습니다.
+abstractReplicatedMap.unable.diffObject=객체에 대한 diff를 생성할 수 없습니다. 대신 전체 객체를 복제하겠습니다.
+abstractReplicatedMap.unable.get=AbstractReplicatedMap.get 오퍼레이션에서, 데이터를 복제하여 반환할 수 없습니다.
+abstractReplicatedMap.unable.put=AbstractReplicatedMap.put 오퍼레이션을 위한 데이터를 외부로 복제할 수 없습니다.
+abstractReplicatedMap.unable.relocate=[{0}]을(를) 새로운 백업 노드로 재위치시킬 수 없습니다.
+abstractReplicatedMap.unable.remove=AbstractReplicatedMap.remove 오퍼레이션에서, 복제를 위한 데이터를 전송할 수 없습니다.
+abstractReplicatedMap.unable.replicate=데이터를 복제할 수 없습니다.
+abstractReplicatedMap.unable.retrieve=키 [{0}]을(를) 위한 원격 객체를 검색할 수 없습니다.
+abstractReplicatedMap.unable.transferState=AbstractReplicatedMap 상태를 전이시킬 수 없습니다.
+abstractReplicatedMap.unableApply.diff=키 [{0}]에 diff를 적용할 수 없습니다.
+abstractReplicatedMap.unableSelect.backup=백업 노드를 선택할 수 없습니다.
+abstractReplicatedMap.unableSend.startMessage=Map 시작 메시지를 전송할 수 없습니다.
+abstractReplicatedMap.unableStart=ReplicatedMap을 시작할 수 없습니다.
+
+lazyReplicatedMap.unableReplicate.backup=백업 키 [{0}]을(를) 백업 [{1}]에 복제할 수 없습니다. 사유:[{2}]
+lazyReplicatedMap.unableReplicate.proxy=프록시 키 [{0}]을(를) 백업인 [{1}](으)로 복제할 수 없습니다. 사유: [{2}]
+
+mapMessage.deserialize.error.key=MapMessage.key()에서 역직렬화에 실패했습니다.
+mapMessage.deserialize.error.value=MapMessage 값을 역직렬화하지 못했습니다.
+
+replicatedMap.member.disappeared=멤버 [{0}]이(가) 사라졌습니다. 관련 Map의 엔트리들은 새 노드로 다시 위치시킬 것입니다.
+replicatedMap.relocate.complete=Map의 엔트리들 모두 다시 위치시켰습니다. 소요시간: [{0}] 밀리초.
+replicatedMap.unable.relocate=멤버 [{0}]에 새로운 백업 노드를 다시 지정할 수 없습니다.
+replicatedMap.unableReplicate.completely=백업 키 [{0}]을(를) 복제할 수 없습니다. 성공 노드들: [{1}]. 실패 노드들: [{2}]
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..122a7ea
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/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.
+
+PooledSender.senderDisconnectFail=Sender의 연결을 끊지 못했습니다.
+
+pooledSender.closed.queue=큐가 닫힌 상태입니다.
+
+receiverBase.bind.failed=복제 리스너를 어드레스 [{0}]에 바인딩하지 못했습니다.
+receiverBase.socket.bind=Receiver 서버 소켓이 [{0}]에 바인딩 되었습니다.
+receiverBase.udp.bind=UDP 수신 서버 소켓이 [{0}]에 바인딩 됨.
+receiverBase.unable.bind=서버 소켓을 바인드 할 수 없습니다: [{0}]에서 오류 발생.
+receiverBase.unable.bind.udp=오류 발생으로 인해 UDP 소켓을 [{0}]에 바인딩할 수 없습니다.
diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties
new file mode 100644
index 0000000..37bc523
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/bio/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.
+
+bioReceiver.already.started=ServerSocket이 이미 시작되었습니다.
+bioReceiver.run.fail=복제 리스너를 실행할 수 없습니다.
+bioReceiver.socket.closeFailed=소켓을 닫지 못했습니다.
+bioReceiver.start.fail=클러스터 Receiver를 시작할 수 없습니다.
+bioReceiver.threadpool.fail=쓰레드풀이 초기화될 수 없습니다. 리스너가 시작되지 않았습니다.
+bioReceiver.threads.busy=모든 BIO 서버 복제 쓰레드들이 작업 중입니다. 유휴 쓰레드가 하나라도 생기기 전에는, 더 이상 요청을 처리할 수 없습니다.
+
+bioReplicationTask.messageDataReceived.error=messageDataReceived로부터 오류 발생
+bioReplicationTask.reader.closeFailed=Reader를 닫지 못했습니다.
+bioReplicationTask.socket.closeFailed=소켓을 닫지 못했습니다.
+bioReplicationTask.unable.sendAck=채널을 통해 ACK을 되돌려 보낼 수 없습니다. 채널의 연결이 끊겼나요?: [{0}]
+bioReplicationTask.unable.service=BIO 소켓을 서비스할 수 없습니다.
+
+bioSender.ack.eof=로컬 포트 [{0}:{1,number,integer}]에서 EOF에 도달했습니다.
+bioSender.ack.missing=[{0}:{1,number,integer}](으)로부터 ACK을 {2,number,integer} 밀리초 내에 읽을 수 없습니다. 소켓 연결을 끊고, 다시 시도합니다.
+bioSender.ack.wrong=10 바이트들을 로컬 포트 [{0}]에서 읽고 난 후 올바른 ACK를 받지 못했습니다: {1,number,integer}]
+bioSender.closeSocket=Sender가 소켓 닫기 메시지를 [{0}:{1,number,integer}]에 전송합니다. (전송 회수:  {2,number,integer})
+bioSender.disconnect=Sender가 [{0}:{1,number,integer}](으)로부터 연결을 끊습니다. (연결 끊기 회수: {2,number,integer})
+bioSender.fail.AckReceived=실패한 ACK을 받았습니다: org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA
+bioSender.openSocket=Sender가 [{0}:{1,number,integer}]을(를) 향해 소켓을 엽니다. (연 소켓 개수: {2,number,integer})
+bioSender.openSocket.failure=Sender 소켓 [{0}:{1,number,integer}]을(를) 열지 못했습니다! (열기 실패 회수: {2,number,integer})
+bioSender.send.again=데이터를 [{0}:{1,number,integer}](으)로 다시 전송합니다.
+
+pooledMultiSender.retrieve.fail=Sender 풀로부터 sender를 검색할 수 없습니다.
+pooledMultiSender.unable.retrieve.sender=데이터 sender를 조회할 수 없습니다. 제한 시간 초과 ([{0}] 밀리초) 오류 발생.
diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ko.properties
new file mode 100644
index 0000000..070cd1c
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ko.properties
@@ -0,0 +1,57 @@
+# 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.
+
+nioReceiver.alreadyStarted=ServerSocketChannel이 이미 시작되었습니다.
+nioReceiver.cleanup.fail=selector close 시에 cleanup을 할 수 없습니다.
+nioReceiver.clientDisconnect=복제 클라이언트가 연결이 끊겼습니다. 키를 poll할 때, 오류가 발생했습니다. 해당 클라이언트는 무시됩니다.
+nioReceiver.requestError=NioReceiver에서 요청을 처리할 수 없습니다.
+nioReceiver.run.fail=복제 리스너를 실행할 수 없습니다.
+nioReceiver.start.fail=클러스터 receiver를 시작 할 수 없습니다.
+nioReceiver.stop.fail=클러스터 receiver selector를 닫을 수 없습니다.
+nioReceiver.stop.threadRunning=NioReceiver 쓰레드가 적절한 시간 내에 중지되지 않았습니다. Selector가 닫힐 때에 오류들이 발견될 수 있습니다.
+nioReceiver.threadpool.fail=쓰레드풀을 초기화할 수 없습니다. 리스너가 시작되지 못했습니다.
+nioReceiver.threadsExhausted=채널 키가 등록되지만, 마지막 [{0}] 밀리초 동안에 어떠한 interest 오퍼레이션도 없었습니다 (취소 여부: [{1}]). 키:[{2}], 최종 접근 시간:[{3}], 있을 법한 사유: 모든 쓰레드들이 사용 중이고, 쓰레드 덤프 수행.
+
+nioReplicationTask.error.register.key=읽기를 위한 키 등록 중 오류 발생: [{0}]
+nioReplicationTask.exception.drainChannel=TcpReplicationThread.drainChannel에서 예외 발생
+nioReplicationTask.process.clusterMsg.failed=클러스터 메시지 처리가 실패했습니다.
+nioReplicationTask.unable.ack=채널을 통해 ACK을 되돌려 전송할 수 없습니다. 채널이 단절되었나요?: [{0}]
+nioReplicationTask.unable.drainChannel.ioe=복제 worker에서 IOException이 발생했으며, 채널을 깨끗이 비울 수 없습니다. 있음직한 사유: Keep alive 소켓이 닫히는 경우. [{0}]
+
+nioSender.already.connected=NioSender가 이미 연결된 상태에 있습니다.
+nioSender.datagram.already.established=데이터그램 채널이 이미 확립되어 있습니다. 연결이 진행 중인 상태일 수 있습니다.
+nioSender.key.inValid=키가 유효하지 않습니다. 이는 필시 이미 취소되었던 키일 것입니다.
+nioSender.not.connected=NioSender가 연결되어 있지 않습니다. 이는 일어나서는 안될 일입니다.
+nioSender.receive.failedAck=실패한 ACK: org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA를 받았습니다.
+nioSender.sender.disconnected=Sender가 연결이 끊어진 상태입니다. SelectionKey를 처리할 수 없습니다.
+nioSender.socketChannel.already.established=소켓 채널이 이미 확립되어 있습니다. 혹시 연결이 진행 중일 수 있습니다.
+nioSender.unable.disconnect=NioSender의 연결을 끊을 수 없습니다. 메시지=[{0}]
+nioSender.unable.receive.ack=Ack 메시지를 받을 수 없습니다. 소켓 채널에서 EOF에 도달했습니다.
+nioSender.unknown.state=데이터가 알 수 없는 상태에 있습니다. readyOps=[{0}]
+
+parallelNioSender.error.keepalive=Sender [{0}]을(를) 위해 keepalive 검사 중 오류 발생
+parallelNioSender.operation.timedout=오퍼레이션이 제한 시간 초과되었습니다 (제한 시간: [{0}] 밀리초).
+parallelNioSender.send.fail=멤버에 대한 전송이 실패하고 있습니다: [{0}]; 의심 멤버로 설정합니다.
+parallelNioSender.send.fail.retrying=멤버로 전송이 실패했습니다: [{0}]. 의심 멤버로 설정하고 다시 시도합니다.
+parallelNioSender.send.failed=병렬 NIO 전송 실패.
+parallelNioSender.sendFailed.attempt=전송 실패, 총시도회수:[{0}] 최대시도회수:[{1}]
+parallelNioSender.sender.disconnected.notRetry=[{0}]을(를) 위해 다시 전송 시도를 하지 않습니다. Sender가 연결이 끊겼습니다.
+parallelNioSender.sender.disconnected.sendFailed=전송이 실패했으며 sender가 연결이 끊겼습니다. 재시도는 하지 않습니다.
+parallelNioSender.unable.setup.NioSender=NioSender를 셋업할 수 없습니다.
+
+pooledParallelSender.sender.disconnected=Sender가 연결되어 있지 않습니다.
+pooledParallelSender.unable.open=NIO selector를 열 수 없습니다.
+pooledParallelSender.unable.retrieveSender=Sender를 해당 sender 풀로부터 얻을 수 없습니다.
+pooledParallelSender.unable.retrieveSender.timeout=데이터 sender를 조회할 수 없습니다. 제한 시간 초과 ([{0}] 밀리초) 오류.
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..c8e6694
--- /dev/null
+++ b/java/org/apache/catalina/tribes/util/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.
+
+arrays.keyoffset.outOfBounds=keyoffset이 범위를 초과합니다.
+arrays.length.outOfBounds=키 내에 충분한 데이터 엘리먼트들이 존재하지 않습니다. 길이가 범위 밖에 있습니다.
+arrays.malformed.arrays=바이트 배열은 반드시 ''{1,3,4,5,6}''과 같이 표현되어야 합니다.
+arrays.srcoffset.outOfBounds=srcoffset이 범위 밖입니다.
+
+executorFactory.not.running=Executor가 실행 중이 아닙니다. 명령을 강제로 큐에 넣을 수 없습니다.
+executorFactory.queue.full=큐의 용량이 꽉 찼습니다.
+
+uuidGenerator.createRandom=[{0}]을(를) 사용하여, UUID 생성을 위한 SecureRandom 인스턴스를 생성하는 데에, [{1}] 밀리초가 소요됐습니다.
+uuidGenerator.unable.fit=[{0}] 바이트를 해당 배열에 맞출 수 없습니다. 길이:[{1}], 요구되는 길이:[{2}]
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..0ac2f1a
--- /dev/null
+++ b/java/org/apache/catalina/users/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.
+
+memoryUserDatabase.fileClose=[{0}]을(를) 닫지 못했습니다.
+memoryUserDatabase.fileDelete=[{0}]을(를) 삭제하지 못했습니다.
+memoryUserDatabase.fileNotFound=지정된 사용자 데이터베이스 [{0}]을(를) 찾을 수 없었습니다.
+memoryUserDatabase.notPersistable=사용자 데이터베이스에 저장할 수 없습니다 - 디렉토리에 쓰기 권한이 없음.
+memoryUserDatabase.nullGroup=널 또는 길이가 0인 그룹 이름이 지정되었습니다. 해당 그룹은 무시될 것입니다.
+memoryUserDatabase.nullRole=널이거나 길이가 0인 문자열로, 역할 이름이 지정되었습니다. 해당 역할은 무시됩니다.
+memoryUserDatabase.nullUser=사용자 이름에 널이거나 길이가 0인 문자열이 지정되었습니다. 이 사용자는 무시될 것입니다.
+memoryUserDatabase.readOnly=사용자 데이터베이스는 읽기 전용으로 설정되어 있습니다. 변경 사항들이 저장될 수 없습니다.
+memoryUserDatabase.reload=변경된 소스 [{1}](으)로부터 메모리 사용자 데이터베이스 [{0}]을(를) 다시 로드합니다.
+memoryUserDatabase.reloadError=메모리 사용자 데이터베이스 [{0}]을(를), 변경된 원본 [{1}](으)로부터 다시 로드하는 중 오류 발생
+memoryUserDatabase.renameNew=새 파일을 [{0}](으)로 이름을 변경할 수 없습니다.
+memoryUserDatabase.renameOld=원본 파일을 [{0}](으)로 이름을 변경할 수 없습니다.
+memoryUserDatabase.restoreOrig=[{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..db2437d
--- /dev/null
+++ b/java/org/apache/catalina/valves/LocalStrings_ko.properties
@@ -0,0 +1,142 @@
+# 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}](으)로 설정하지 못했습니다. 시스템 기본 문자셋을 사용할 것입니다.
+accessLogValve.writeFail=다음 로그 메시지를 쓰지 못했습니다: [{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=알 수 없는 사유
+
+extendedAccessLogValve.badXParam=유효하지 않은 x 파라미터 포맷. 포맷은 'x-#(...) 이어야 합니다.
+extendedAccessLogValve.badXParamValue=서블릿 요청을 위해 유효하지 않은 x 파라미터 값: [{0}]
+extendedAccessLogValve.decodeError=[{0}](으)로 시작하는 문자들의 나머지 부분을 디코드할 수 없습니다.
+extendedAccessLogValve.emptyPattern=패턴이 그저 빈 문자열이었거나, 공백 문자로만 채워진 문자열이었습니다.
+extendedAccessLogValve.noClosing=디코드된 접근 로그 행에서 닫는 중괄호, '')'', 가 없습니다.
+extendedAccessLogValve.patternParseError=패턴 [{0}]을(를) 파싱하는 중 오류 발생
+
+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/catalina/valves/rewrite/LocalStrings_ko.properties b/java/org/apache/catalina/valves/rewrite/LocalStrings_ko.properties
new file mode 100644
index 0000000..2161de4
--- /dev/null
+++ b/java/org/apache/catalina/valves/rewrite/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.
+
+rewriteValve.closeError=설정 리소스의 스트림을 닫는 중 오류 발생
+rewriteValve.invalidFlags=[{0}] 내에 유효하지 않은 플래그입니다 (플래그들: [{1}]).
+rewriteValve.invalidLine=유효하지 않은 행 [{0}]
+rewriteValve.invalidMapClassName=유효하지 않은 Map 클래스 이름: [{0}]
+rewriteValve.readError=설정을 읽는 도중 오류 발생
diff --git a/java/org/apache/catalina/webresources/LocalStrings_ko.properties b/java/org/apache/catalina/webresources/LocalStrings_ko.properties
new file mode 100644
index 0000000..f80d190
--- /dev/null
+++ b/java/org/apache/catalina/webresources/LocalStrings_ko.properties
@@ -0,0 +1,59 @@
+# 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.
+
+abstractArchiveResourceSet.setReadOnlyFalse=JAR 파일들에 기반한 것들과 같은 아카이브 기반 WebResourceSet들은, 읽기 전용으로 하드코드되어 있으며, 읽기 및 쓰기 용으로 설정될 수 없습니다.
+
+abstractResource.getContentFail=[{0}]을(를) 바이트 배열로 반환할 수 없습니다.
+abstractResource.getContentTooLarge=리소스의 크기가 [{1}] 바이트로서, 이는 바이트 배열 최대 크기보다 크기 때문에, [{0}]을(를) 바이트 배열로서 반환할 수 없습니다.
+
+abstractResourceSet.checkPath=요청된 경로 [{0}]은(는) 유효하지 않습니다. 반드시 "/"로 시작해야 합니다.
+
+cache.addFail=[{0}]에 위치한 리소스를 웹 애플리케이션 [{1}]을(를) 위한 캐시에 추가할 수 없습니다. 왜냐하면 만료된 캐시 엔트리들을 없애버린 이후에도 여유 공간이 충분하지 않기 때문입니다. 캐시의 최대 크기를 증가시키는 것을 고려해 보십시오.
+cache.backgroundEvictFail=백그라운드 캐시 퇴거 (cache eviction) 프로세스가, 컨텍스트 [{1}]을(를) 위한 캐시의 [{0}] 퍼센트를 해제시킬 수 없었습니다. 캐시의 최대 크기를 증가시킬 것을 고려해 보십시오. 캐시 퇴거 작업 이후, 대략 [{2}] KB의 데이터가 캐시에 남아 있습니다.
+cache.objectMaxSizeTooBig=objectMaxSize를 위한 값 [{0}]kB이, maxSize/20인 최대한계값 보다 커서, [{1}]kB로 줄여졌습니다.
+cache.objectMaxSizeTooBigBytes=[{0}]kB를 캐시하기 위해, 최대 객체 크기로서 지정된 값이 Integer.MAX_VALUE 바이트보다 큰데, Integer.MAX_VALUE는 캐시될 수 있는 최대 크기입니다. 한계 값을 Integer.MAX_VALUE 바이트로 설정하겠습니다.
+
+classpathUrlStreamHandler.notFound=쓰레드 컨텍스트 클래스로더 또는 현재 클래스의 클래스로더를 사용하여, 리소스 [{0}]을(를) 로드할 수 없습니다.
+
+dirResourceSet.manifestFail=[{0}](으)로부터 manifest를 읽지 못했습니다.
+dirResourceSet.notDirectory=base와 internal path [{0}]{1}[{2}](으)로 지정된 디렉토리가 존재하지 않습니다.
+dirResourceSet.writeNpe=입력 스트림이 널일 수는 없습니다.
+
+extractingRoot.jarFailed=JAR 파일 [{0}]을(를) 추출하지 못했습니다.
+extractingRoot.targetFailed=JAR 파일들의 압축을 풀기 위한 디렉토리 [{0}]을(를) 생성할 수 없습니다.
+
+fileResource.getCanonicalPathFail=리소스 [{0}]에 대한 canonical 경로를 결정할 수 없습니다.
+fileResource.getCreationFail=리소스 [{0}]의 생성 시간을 결정할 수 없습니다.
+fileResource.getUrlFail=리소스 [{0}]을(를) 위한 URL을 결정할 수 없습니다.
+
+fileResourceSet.notFile=base와 내부 경로 [{0}]{1}[{2}]에 의해 지정된 파일이 존재하지 않습니다.
+
+jarResource.getInputStreamFail=JAR [{1}] 내의 리소스 [{0}]을(를) 위한 InputStream을 얻을 수 없습니다.
+jarResource.getUrlFail=JAR [{1}] 내에 위치한 리소스 [{0}]을(를) 위한 URL을 결정할 수 없습니다.
+
+jarResourceRoot.invalidWebAppPath=이 리소스는 언제나 디렉토리를 가리켜서, 제공된 webAppPath가 반드시 ''/'' 로 끝나야 하지만, 제공된 webAppPath는 [{0}]이었습니다.
+
+jarWarResourceSet.codingError=코딩 오류
+
+standardRoot.checkStateNotStarted=현재 시작되어 있는 상태가 아니라면, 리소스들은 접근될 수 없습니다.
+standardRoot.createInvalidFile=[{0}](으)로부터 WebResourceSet을 생성할 수 없습니다.
+standardRoot.createNoFileResourceSet=FileResourceSet 기능들이 아직 구현되지 않았습니다.
+standardRoot.createUnknownType=알 수 없는 타입 [{0}]의 WebResourceSet을 생성할 수 없습니다.
+standardRoot.invalidPath=리소스 경로 [{0}]은(는) 유효하지 않습니다.
+standardRoot.invalidPathNormal=리소스 경로 [{0}]이(가) [{1}](으)로 정규화되어 있는데, 이는 유효하지 않습니다.
+standardRoot.lockedFile=웹 애플리케이션 [{0}]이(가) 파일 [{1}]을(를) 닫지 못했습니다. 해당 파일은 다음과 같은 스택 트레이스 내에서 열렸었습니다.
+standardRoot.noContext=컨텍스트가 이 WebResourceRoot를 위해 설정되지 않았습니다.
+standardRoot.startInvalidMain=지정된 주요 리소스셋 [{0}]은(는) 유효하지 않습니다.
+standardRoot.unsupportedProtocol=URL 프로토콜 [{0}]은(는), 이 웹 리소스 구현에 의해 지원되지 않습니다.
diff --git a/java/org/apache/coyote/LocalStrings_ko.properties b/java/org/apache/coyote/LocalStrings_ko.properties
new file mode 100644
index 0000000..e9d18ca
--- /dev/null
+++ b/java/org/apache/coyote/LocalStrings_ko.properties
@@ -0,0 +1,54 @@
+# 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.connectionsGet=소켓 [{1}]을(를) 위한 프로세서 [{0}]을(를) 발견했습니다.
+abstractConnectionHandler.error=요청을 읽는 중 오류 발생. 무시합니다.
+abstractConnectionHandler.ioexception.debug=IOException들은 정상적이므로, 무시합니다.
+abstractConnectionHandler.negotiatedProcessor.fail=Negotiate된 프로토콜 [{0}]을(를) 위한 프로세서를 생성하지 못했습니다.
+abstractConnectionHandler.process=상태가 [{1}]인 소켓 [{0}]을(를) 처리합니다.
+abstractConnectionHandler.processorPop=캐시로부터 프로세서 [{0}]을(를) 추출했습니다.
+abstractConnectionHandler.protocolexception.debug=ProtocolException들은 정상적이므로, 무시합니다.
+abstractConnectionHandler.socketexception.debug=SocketException들은 정상적인 상태이므로 무시되었습니다.
+abstractConnectionHandler.upgradeCreate=소켓 wrapper [{1}]을(를) 위한 업그레이드 프로세서 [{0}]을(를) 생성했습니다.
+
+abstractProcessor.fallToDebug=\n\
+비고: 요청에 대한 파싱 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+abstractProcessor.hostInvalid=호스트 [{0}]은(는) 유효하지 않습니다.
+abstractProcessor.httpupgrade.notsupported=HTTP 업그레이드는 이 프로토콜에 의해 지원되지 않습니다.
+abstractProcessor.nonContainerThreadError=컨테이너 쓰레드가 아닌 쓰레드에서, 처리 도중 오류가 발생했습니다. 연결을 즉시 닫을 것입니다.
+abstractProcessor.pushrequest.notsupported=이 프로토콜은 서버 push 요청들을 지원하지 않습니다.
+abstractProcessor.socket.ssl=SSL 속성들을 얻으려는 중 예외 발생
+
+abstractProtocol.mbeanDeregistrationFailed=MBean 서버 [{1}](으)로부터, [{0}](이)라는 이름의 MBean의 등록을 제거하지 못했습니다.
+
+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}]을(를) 호출하는 것은 유효하지 않습니다.
+
+request.notAsync=오직 비동기 처리 또는 HTTP 업그레이드 처리 시에만, Non-blocking IO로의 전환이 유효합니다.
+request.nullReadListener=setReadListener()에 전달된 리스너는 널일 수 없습니다.
+request.readListenerSet=Non-blocking 읽기 리스너가 이미 설정되어 있습니다.
+
+response.encoding.invalid=인코딩 [{0}]은(는) JRE에 의해 인식되지 않습니다.
+response.notAsync=오직 비동기 처리 중 또는 HTTP 업그레이드 처리 중일 때에만, non-blocking IO로 전환하려는 것이 유효합니다.
+response.notNonBlocking=응답이 non-blocking 모드 내에 있지 않을 때, isReady()를 호출하는 것은 유효하지 않습니다.
+response.nullWriteListener=setWriteListener()에 전달되는 리스너가 널이이서는 안됩니다.
+response.writeListenerSet=Non-blocking 쓰기 리스너가 이미 설정되었습니다.
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..9088c3e
--- /dev/null
+++ b/java/org/apache/coyote/ajp/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.
+
+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.readtimeout=소켓으로부터 데이터를 읽으려는 시도가 제한 시간 초과되었습니다.
+ajpprocessor.request.prepare=요청을 준비하는 중 오류 발생
+ajpprocessor.request.process=요청 처리 중 오류 발생
+
+ajpprotocol.noSSL=AJP와 함께 SSL은 지원되지 않습니다. [{0}]을(를) 위한 SSL 호스트 설정은 무시되었습니다.
+ajpprotocol.noUpgrade=AJP에서 프로토콜 업그레이드는 지원되지 않습니다. [{0}]을(를) 위한 UpgradeProtocol 설정은 무시됩니다.
+ajpprotocol.noUpgradeHandler=AJP를 사용할 때, 업그레이드는 지원되지 않습니다. HttpUpgradeHandler [{0}]은(는) 처리될 수 없습니다.
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..235c194
--- /dev/null
+++ b/java/org/apache/coyote/http11/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.
+
+abstractHttp11Protocol.alpnConfigured=[{0}] connector는 ALPN을 통해 [{1}](으)로 negotiation을 지원하도록 설정되었습니다.
+abstractHttp11Protocol.alpnWithNoAlpn=[{1}]을(를) 위한 업그레이드 핸들러 [{0}]은(는) 오직 ALPN을 통한 업그레이드만 지원합니다만, 해당 업그레이드 핸들러가 ALPN을 지원하지 않는 [{2}] Connector를 위해 설정되어 있습니다.
+abstractHttp11Protocol.httpUpgradeConfigured=[{0}] connector가, [{1}](으)로 HTTP 업그레이드를 지원하도록 설정되어 있습니다.
+
+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.available.readFail=데이터가 가용한지 결정하려 시도하는 동안, non-blocking 읽기가 실패했습니다.
+iib.eof.error=소켓에서 예기치 않은 EOF를 읽었습니다.
+iib.failedread.apr=APR/native 오류 코드 [{0}]와(과) 함께, 읽기가 실패했습니다.
+iib.filter.npe=널인 필터를 추가할 수 없습니다.
+iib.invalidHttpProtocol=HTTP 프로토콜에서 유효하지 않은 문자가 발견되었습니다.
+iib.invalidRequestTarget=요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.
+iib.invalidheader=HTTP 헤더 행 [{0}]이(가) RFC 7230을 준수하지 않아, 무시되었습니다.
+iib.invalidmethod=메소드 이름에 유효하지 않은 문자가 발견되었습니다. HTTP 메소드 이름은 유효한 토큰이어야 합니다.
+iib.parseheaders.ise.error=예기치 않은 상태: 헤더들이 이미 파싱되었습니다. 버퍼가 참조 해제되지 않았었나요?
+iib.readtimeout=소켓으로부터 데이터를 읽으려 시도하는 중 제한 시간 초과
+iib.requestheadertoolarge.error=요청 헤더가 너무 큽니다.
+iib.socketClosed=소켓이 다른 쓰레드에서 이미 닫혔습니다.
+
+iob.failedwrite=쓰기 실패
+iob.failedwrite.ack=HTTP 100 continue 응답을 보내지 못했습니다.
+iob.illegalreset=응답이 한번 커밋되면, 응답에 대한 재설정(reset)은 허용되지 않습니다.
+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..043b197
--- /dev/null
+++ b/java/org/apache/coyote/http11/upgrade/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.
+
+upgrade.sis.errorCloseFail=이전 오류 발생 이후, InputStream을 깨끗하게 닫지 못했습니다.
+upgrade.sis.isFinished.ise=ServletInputStream이 non-blocking 모드 안에 있지 않을 때, isFinished()를 호출하는 것은 불허됩니다. (즉, setReadListener()가 먼저 호출되어야만 합니다.)
+upgrade.sis.isReady.ise=ServletInputStream이 non-blocking 모드 안에 있지 않을 때, isReady()를 호출하는 것은 불허됩니다. (즉 setReadListener()가 반드시 먼저 호출되어야 합니다.)
+upgrade.sis.onErrorFail=등록된 ReadListener를 위한 onError 처리가 더많은 오류를 유발시켰습니다. 이 추가 오류는 별도로 표출되지 않습니다.
+upgrade.sis.read.closed=InputStream은 이미 닫혀 있습니다.
+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.errorCloseFail=이전 오류 발생 이후, OutputStream을 깨끗하게 닫지 못했습니다.
+upgrade.sos.onErrorFail=등록된 WriteListener를 위한 onError 처리가 이 오류를 더 유발시켰습니다. 이 추가 오류는 별도로 표출되지 않습니다.
+upgrade.sos.write.closed=OutputStream이 이미 닫혀 있습니다.
+upgrade.sos.write.ise=Non-blocking 모드에서는, 먼저 isReady()를 호출하여 공간이 남아있는지 점검하지 않고, 어떤 종류의 write() 메소드들을 호출하는 것은 불허됩니다.
+upgrade.sos.writeListener.null=setWriteListener() 호출 시, 널을 넘기는 것은 불허됩니다.
+upgrade.sos.writeListener.set=동일한 업그레이드된 연결에 대하여, setWriteListener()를 두번 이상 호출하는 것은 불허됩니다.
+
+upgradeProcessor.isCloseFail=업그레이드된 연결과 연관된 입력 스트림을 닫지 못했습니다.
+upgradeProcessor.osCloseFail=업그레이드된 연결과 연관된 출력 스트림을 닫지 못했습니다.
+upgradeProcessor.requiredClose=스트림들의 closeRequired 상태로 인하여, 업그레이드된 연결을 닫습니다: 입력 [{0}], 출력 [{1}]
+upgradeProcessor.stop=Incoming 소켓의 상태가 STOP임에 따라, 업그레이드된 연결을 닫습니다.
+upgradeProcessor.unexpectedState=Incoming 소켓의 상태가 [{0}](이)라서, 업그레이드된 연결을 예기치 않게 종료합니다.
diff --git a/java/org/apache/coyote/http2/LocalStrings_ko.properties b/java/org/apache/coyote/http2/LocalStrings_ko.properties
new file mode 100644
index 0000000..5d04078
--- /dev/null
+++ b/java/org/apache/coyote/http2/LocalStrings_ko.properties
@@ -0,0 +1,168 @@
+# 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.
+
+abstractStream.windowSizeDec=연결 [{0}], 스트림 [{1}], flow control 윈도우를 [{2}] 만큼 줄여 [{3}]에 이르게 합니다.
+abstractStream.windowSizeInc=연결 [{0}], 스트림 [{1}]: Flow control 윈도우를 [{2}] 만큼 증가시켜 윈도우 크기가 [{3}]이(가) 되도록 합니다.
+abstractStream.windowSizeTooBig=연결 [{0}], 스트림 [{1}], 윈도우 크기를 [{2}] 만큼 증가시켜 [{3}](으)로 만들었으나, 이는 허용된 최대값을 초과했습니다.
+
+connectionPrefaceParser.eos=개시되는 클라이언트 preface 바이트 시퀀스를 읽는 동안, 예기치 않은 스트림의 끝. 단지 [{0}] 바이트만을 읽음.
+connectionPrefaceParser.ioError=개시되는 클라이언트 preface 바이트 시퀀스를 읽지 못했습니다.
+connectionPrefaceParser.mismatch=해당 client preface [{0}]의 시작 부분에서 예기치 않은 바이트 시퀀스를 받았습니다.
+
+connectionSettings.debug=연결 [{0}]: 파라미터 타입 [{1}]을(를) [{2}](으)로 설정함.
+connectionSettings.enablePushInvalid=연결 [{0}], enablePush를 위해 요청된 값 [{1}]은(는), 허용된 값들(0 또는 1) 중의 하나가 아닙니다.
+connectionSettings.headerTableSizeLimit=연결 [{0}]: 헤더 테이블 크기로 [{1}]을(를) 설정하려 시도했으나, 한계값은 16k입니다.
+connectionSettings.maxFrameSizeInvalid=연결 [{0}]: [{1}]의 요청된 최대 프레임 크기가 허용된 범위([{2}] - [{3}])의 바깥에 존재합니다.
+connectionSettings.unknown=연결 [{0}]: 식별자가 [{1}](이)고 값이 [{2}]인 알 수 없는 설정이 무시되었습니다.
+connectionSettings.windowSizeTooBig=연결 [{0}]: 요청된 윈도우 크기 [{1}]이(가) 최대 허용치 [{2}] 보다 큽니다.
+
+frameType.checkPayloadSize=Payload의 크기 [{0}]은(는) 프레임 타입 [{1}]을(를) 위해 유효하지 않습니다.
+frameType.checkStream=유효하지 않은 프레임 타입 [{0}]
+
+hpack.integerEncodedOverTooManyOctets=HPACK 가변 길이 정수가 너무 많은 옥텟(octet)들로 인코딩되어 있습니다. 최대 길이는 [{0}]입니다.
+hpack.invalidCharacter=code point [{1}]에 위치한 유니코드 문자 [{0}]은(는), 0에서 255까지의 허용 범위 바깥에 있으므로 인코딩될 수 없습니다.
+
+hpackEncoder.encodeHeader=인코딩 헤더 [{0}]와(과) 그의 값 [{1}]
+
+hpackdecoder.headerTableIndexInvalid=[{1}]개의 정적 엔트리들과 [{2}]개의 동적 엔트리들이 존재하기에, 헤더 테이블 인덱스 [{0}]은(는) 유효하지 않습니다.
+hpackdecoder.maxMemorySizeExceeded=헤더 테이블 크기 [{1}]이(가) 최대 크기 [{1}]을(를) 초과합니다.
+hpackdecoder.notImplemented=아직 구현 안됨
+hpackdecoder.nullHeader=인덱스가 [{0}]인 위치에 널 헤더가 존재합니다.
+hpackdecoder.tableSizeUpdateNotAtStart=테이블 크기 변경은, 반드시 헤더 블록의 시작 시에 전송되어야만 합니다.
+hpackdecoder.zeroNotValidHeaderTableIndex=0은 유효한 헤더 테이블 인덱스가 아닙니다.
+
+hpackhuffman.huffmanEncodedHpackValueDidNotEndWithEOS=HPACK 헤더들 내의 Huffman 알고리즘으로 인코딩된 값이, EOS padding으로 끝나지 않았습니다.
+hpackhuffman.stringLiteralTooMuchPadding=Huffman 알고리즘으로 인코딩된 문자열의 끝에 7 비트를 초과한 EOS padding입니다.
+
+http2Parser.headerLimitCount=연결 [{0}], 스트림 [{1}], 너무 많은 헤더들이 있음
+http2Parser.headerLimitSize=연결 [{0}], 스트림 [{1}], 전체 헤더 크기가 너무 큽니다.
+http2Parser.headers.wrongFrameType=연결 [{0}], 스트림 [{1}]을(를) 위한 헤더들이 진행중이지만, 타입 [{2}]의 프레임을 받았습니다.
+http2Parser.headers.wrongStream=연결 [{0}]: 스트림 [{1}]의 헤더들을 처리하는 과정에서, 스트림 [{2}]의 프레임을 받았습니다.
+http2Parser.nonZeroPadding=연결 [{0}], 스트림 [{1}], 0이 아닌 padding을 받았습니다.
+http2Parser.payloadTooBig=Payload의 길이가 [{0}]바이트이지만, 최대 프레임 크기는 [{1}]입니다.
+http2Parser.preface.invalid=유효하지 않은 연결 preface 이(가) 제공되었습니다.
+http2Parser.preface.io=연결 preface를 읽을 수 없습니다.
+http2Parser.processFrame=연결 [{0}], 스트림 [{1}], 프레임 타입 [{2}], 플래그들 [{3}], Payload 크기 [{4}]
+http2Parser.processFrame.tooMuchPadding=연결 [{0}], 스트림 [{1}], padding 길이 [{2}]은(는) payload [{3}]을(를) 위해 너무 큽니다.
+http2Parser.processFrame.unexpectedType=프레임 타입 [{0}]이(가) 요구되었으나, 프레임 타입 [{1}]을(를) 받았습니다.
+http2Parser.processFrameContinuation.notExpected=연결 [{0}]: 헤더들이 아무 것도 진행되지 않은 상태에서, 스트림 [{1}]을(를) 위한 Continuation 프레임을 받았습니다.
+http2Parser.processFrameData.lengths=연결 [{0}], 스트림 [{1}], 데이터 길이, [{2}], Padding 길이 [{3}]
+http2Parser.processFrameData.window=연결 [{0}]: 클라이언트가 스트림 윈도우가 허용하는 데이터 크기보다 더 많은 데이터를 전송했습니다.
+http2Parser.processFrameGoaway.payloadTooSmall=연결 [{0}]: Goaway payload 크기가 [{1}]였는데, 이는 최소값인 8보다 적습니다.
+http2Parser.processFrameHeaders.decodingDataLeft=HPACK 디코딩 후 남아있는 데이터 - 반드시 소비되었어야 합니다.
+http2Parser.processFrameHeaders.decodingFailed=HTTP 헤더들의 HPACK 디코딩 과정에서 오류가 있었습니다.
+http2Parser.processFrameHeaders.payload=연결 [{0}], 스트림 [{1}], 크기가 [{2}]인 헤더들의 payload를 처리합니다.
+http2Parser.processFramePing.invalidPayloadSize=유효하지 않은 payload 크기 [{0}]의 Settings 프레임을 받았습니다. (크기는 8이어야 합니다.)
+http2Parser.processFramePriority.invalidParent=연결 [{0}], 스트림 [{1}], 스트림이 그 자신을 의존할 수는 없습니다.
+http2Parser.processFramePriority.invalidPayloadSize=유효하지 않은 payload 크기 [{0}]와(과) 함께 Priority 프레임을 받았습니다. (5이어야 합니다.)
+http2Parser.processFramePushPromise=연결 [{0}], 스트림 [{1}], Push promise 프레임들이 클라이언트에 의해 전송되어서는 안됩니다.
+http2Parser.processFrameSettings.ackWithNonZeroPayload=ACK 플래그가 설정되고 payload가 존재하는, Settings 프레임을 받았습니다.
+http2Parser.processFrameSettings.invalidPayloadSize=Payload 크기가, 6의 배수가 아니라, [{0}]인 Settings 프레임을 받았습니다.
+http2Parser.processFrameWindowUpdate.debug=연결 [{0}], 스트림 [{1}], 윈도우 크기를 [{2}] 만큼 증가 시킵니다.
+http2Parser.processFrameWindowUpdate.invalidIncrement=유효하지 않은 증분 크기인 [{0}]와(과) 함께, 윈도우 변경 프레임을 받았습니다.
+http2Parser.processFrameWindowUpdate.invalidPayloadSize=유효하지 않은 크기([{0}])의 payload를 가진 윈도우 변경 프레임을 받았습니다.
+http2Parser.swallow.debug=연결 [{0}], 스트림 [{1}], [{2}] 바이트를 처리하지 않고 건너뛰었습니다.
+
+pingManager.roundTripTime=연결 [{0}]: 라운드 트립 시간이 [{1}] 나노초(ns)로 측정되었습니다.
+
+stream.closed=연결 [{0}], 스트림 [{1}], 한번 닫힌 스트림에 쓰기를 할 수 없습니다.
+stream.header.case=연결 [{0}], 스트림 [{1}], HTTP 헤더 이름 [{2}]은(는) 반드시 소문자여야 합니다.
+stream.header.connection=연결 [{0}], 스트림 [{1}], HTTP 헤더 [connection]은 HTTP/2 요청에서 허용되지 않습니다.
+stream.header.contentLength=연결 [{0}], 스트림 [{1}], 해당 Content-Length 헤더 값 [{2}]은(는) 수신된 데이터의 크기 [{3}]와(과) 일치하지 않습니다.
+stream.header.debug=연결 [{0}], 스트림 [{1}], HTTP 헤더: [{2}], 값: [{3}]
+stream.header.duplicate=연결 [{0}], 스트림 [{1}], 여러 개의 [{3}] 헤더들을 받았습니다.
+stream.header.invalid=연결 [{0}], 스트림 [{1}], 헤더 [{2}]이(가) 유효하지 않은 값을 포함했습니다: [{3}]
+stream.header.noPath=연결 [{0}], 스트림 [{1}], [:path] 가상 헤더가 비어 있었습니다.
+stream.header.required=연결 [{0}], 스트림 [{1}], 하나 이상의 필수 헤더들이 없습니다.
+stream.header.te=연결 [{0}], 스트림 [{1}], HTTP/2 요청에서, HTTP 헤더 [te]이(가) 값 [{2}]을(를) 갖는 것은 허용되지 않습니다.
+stream.header.unexpectedPseudoHeader=연결 [{0}], 스트림 [{1}], 정규 헤더 다음에 가상 헤더 [{2}]을(를) 받았습니다.
+stream.header.unknownPseudoHeader=연결 [{0}], 스트림 [{1}], 알 수 없는 가상 헤더 [{2}]을(를) 받았습니다.
+stream.inputBuffer.copy=[{0}] 바이트를 inBuffer에서 outBuffer로 복사합니다.
+stream.inputBuffer.dispatch=readInterest가 등록될 때, 데이터가 inBuffer에 추가되었습니다. 읽기 디스패치를 개시합니다.
+stream.inputBuffer.empty=스트림의 입력 버퍼가 비어 있습니다. 더 많은 데이터를 기다립니다.
+stream.inputBuffer.readTimeout=클라이언트로부터 데이터를 읽기를 일정 시간 동안 기다리는 중입니다.
+stream.inputBuffer.reset=스트림이 재설정(reset)되었습니다.
+stream.inputBuffer.signal=읽기 쓰레드가 대기하는 동안 inBuffer에 데이터가 추가되었습니다. 해당 쓰레드가 읽기를 계속하도록 시그널을 보냅니다.
+stream.notWritable=연결 [{0}], 스트림 [{1}], 이 스트림은 쓰기 가능하지 않습니다.
+stream.outputBuffer.flush.debug=연결 [{0}], 스트림 [{1}], 위치 [{2}]의 버퍼를 출력으로 배출합니다. 쓰기 진행 중 여부: [{3}],닫힘 여부: [{4}]
+stream.reprioritisation.debug=연결 [{0}], 스트림 [{1}], 배타성 [{2}], 부모 [{3}], 가중치 [{4}]
+stream.reset.fail=연결 [{0}], 스트림 [{1}], 스트림을 재설정(reset)하지 못했습니다.
+stream.reset.receive=연결 [{0}], 스트림 [{1}], [{2}](으)로 인해 재설정(reset)을 받았습니다.
+stream.reset.send=연결 [{0}], 스트림 [{1}], [{2}](으)로 인하여 재설정(reset)이 전송되었음.
+stream.trailerHeader.noEndOfStream=연결 [{0}], 스트림 [{1}], Trailer 헤더들이 스트림의 끝 플래그를 포함하지 않았습니다.
+stream.writeTimeout=스트림 데이터가 쓰여지도록 허용하기 위한 흐름 제어 (flow control) 윈도우를, 클라이언트가 증가시키기를 일정 시간 동안 기다리는 중입니다.
+
+streamProcessor.cancel=연결 [{0}], 스트림 [{1}], 요청의 body가 완전히 읽히지 않고 남아 있어, 더 이상 데이터는 불필요합니다.
+streamProcessor.error.connection=연결 [{0}], 스트림 [{1}]: 처리 중 해당 연결에 심각한 오류 발생
+streamProcessor.error.stream=연결 [{0}], 스트림 [{1}], 처리 중 스트림에 치명적인 오류가 발생했습니다.
+streamProcessor.flushBufferedWrite.entry=연결 [{0}], 스트림 [{1}], 버퍼에 쓰여진 데이터를 배출합니다.
+streamProcessor.service.error=요청 처리 중 오류 발생
+
+streamStateMachine.debug.change=연결 [{0}], 스트림 [{1}], 상태가 [{2}]에서 [{3}](으)로 변경됨.
+streamStateMachine.invalidFrame=연결 [{0}], 스트림 [{1}], 상태 [{2}], 프레임 타입 [{3}]
+streamStateMachine.invalidReset=연결 [{0}], 스트림 [{1}], 상태 [{2}], 이 상태에서 재설정(reset)은 허용되지 않습니다.
+
+upgradeHandler.allocate.debug=연결 [{0}], 스트림 [{1}], [{2}] 바이트를 할당함.
+upgradeHandler.allocate.left=연결 [{0}], 스트림 [{1}], [{2}] 바이트들이 할당 해제되었습니다 - 자식들에 할당하려 시도합니다.
+upgradeHandler.allocate.recipient=연결 [{0}], 스트림 [{1}], 가중치 [{3}]의 잠재적 수신자 [{2}]
+upgradeHandler.connectionError=연결 오류
+upgradeHandler.dependency.invalid=연결 [{0}], 스트림 [{1}], 스트림들은 자기 자신들에 의존해서는 안됩니다.
+upgradeHandler.goaway.debug=연결 [{0}], Goaway, 마지막 스트림 [{1}], 오류 코드 [{2}], 디버그 데이터 [{3}]
+upgradeHandler.init=연결 [{0}], 상태 [{1}]
+upgradeHandler.initialWindowSize.invalid=연결 [{0}]: 값 [{1}]은(는), 초기 윈도우 크기로서 불허되므로, 무시됩니다.
+upgradeHandler.invalidPreface=연결 [{0}]: 유효하지 않은 연결 preface
+upgradeHandler.ioerror=연결 [{0}]
+upgradeHandler.noAllocation=연결 [{0}], 스트림 [{1}], 연결 할당을 위해 대기하는 중 제한 시간 초과 되었습니다.
+upgradeHandler.noNewStreams=연결 [{0}], 스트림 [{1}], 이 연결에는 새로운 스트림들이 허용되지 않기에, 스트림이 무시되었습니다.
+upgradeHandler.pause.entry=연결 [{0}]이(가) 일시 정지 중
+upgradeHandler.pingFailed=연결 [{0}]: 클라이언트에 ping 메시지를 보내지 못했습니다.
+upgradeHandler.prefaceReceived=연결 [{0}]: 연결 preface를 클라이언트로부터 받았습니다.
+upgradeHandler.pruneIncomplete=연결 [{0}]: 스트림들이 Priority tree에서 활성화되어 있거나 사용되고 있기 때문에, 해당 연결을 완전히 제거하지 못했습니다. 너무 많은 스트림들이 존재합니다: [{2}].
+upgradeHandler.pruneStart=연결 [{0}]: 이전 스트림들에 대한 가지치기를 시작합니다. 한계값은 [{1}] + 10%이고, 현재 [{2}]개의 스트림들이 존재합니다.
+upgradeHandler.pruned=연결 [{0}]이(가) 완료된 스트림 [{1}]을(를) 제거했습니다.
+upgradeHandler.prunedPriority=연결 [{0}]이(가) 사용되지 않는 스트림 [{1}]을(를) 제거합니다. 해당 스트림은 priority tree의 일부였을 수 있습니다.
+upgradeHandler.releaseBacklog=연결 [{0}], 스트림 [{1}]이(가) 백로그로부터 해제되었습니다.
+upgradeHandler.rst.debug=연결 [{0}], 스트림 [{1}], 오류 [{2}], 메시지 [{3}],  RST (스트림을 닫습니다)
+upgradeHandler.sendPrefaceFail=연결 [{0}]: 클라이언트에 preface를 전송하지 못했습니다.
+upgradeHandler.socketCloseFailed=소켓을 닫는 중 오류 발생
+upgradeHandler.stream.closed=스트림 [{0}]이(가) 얼마 동안 이미 닫혀 있었습니다.
+upgradeHandler.stream.even=[{0}]의 새로운 원격 스트림 ID가 요청되었으나, 모든 원격 스트림은 반드시 홀수의 ID를 사용해야 합니다.
+upgradeHandler.stream.notWritable=연결 [{0}], 스트림 [{1}], 이 스트림은 쓰기 가능하지 않습니다.
+upgradeHandler.stream.old=새로운 원격 스트림 ID [{0}]이(가) 요청되었지만, 가장 최근의 스트림은 [{1}]이었습니다.
+upgradeHandler.tooManyRemoteStreams=클라이언트가, 활성화된 스트림들을 [{0}]개를 초과하여 사용하려 시도했습니다.
+upgradeHandler.tooMuchOverhead=연결 [{0}]: 너무 많은 오버헤드로 인하여 연결이 닫힐 것입니다.
+upgradeHandler.unexpectedAck=연결 [{0}], 스트림 [{1}], 예기치 않은 상황에서 settings acknowledgement를 받았습니다.
+upgradeHandler.unexpectedEos=예기치 않은 스트림의 끝
+upgradeHandler.upgrade=연결 [{0}]: HTTP/1.1이 스트림 [1](으)로 업그레이드됩니다.
+upgradeHandler.upgrade.fail=연결 [{0}], HTTP/1.1 업그레이드 실패
+upgradeHandler.upgradeDispatch.entry=엔트리, 연결 [{0}], SocketStatus [{1}]
+upgradeHandler.upgradeDispatch.exit=Exit, 연결 [{0}], SocketState [{1}]
+upgradeHandler.windowSizeReservationInterrupted=연결 [{0}], 스트림 [{1}], 예비하려 한 바이트 크기: [{2}]
+upgradeHandler.windowSizeTooBig=연결 [{0}], 스트림 [{1}], 윈도우 크기가 너무 큽니다.
+upgradeHandler.writeBody=연결 [{0}], 스트림 [{1}], 데이터 길이 [{2}]
+upgradeHandler.writeHeaders=연결 [{0}], 스트림 [{1}]
+upgradeHandler.writePushHeaders=연결 [{0}], 스트림 [{1}], Push된 스트림 [{2}], EndOfStream [{3}]
+
+windowAllocationManager.dispatched=연결 [{0}], 스트림 [{1}]에 디스패치됩니다.
+windowAllocationManager.notified=연결 [{0}], 스트림 [{1}]에 통지됩니다.
+windowAllocationManager.notify=연결 [{0}], 스트림 [{1}], 대기 타입 [{2}], 통지 타입 [{3}]
+windowAllocationManager.waitFor.connection=연결 [{0}], 스트림 [{1}], 제한 시간 [{2}] 내에서, 연결 흐름 제어 윈도우(blocking)를 대기합니다.
+windowAllocationManager.waitFor.ise=연결 [{0}], 스트림 [{1}], 이미 대기 중입니다.
+windowAllocationManager.waitFor.stream=연결 [{0}], 스트림 [{1}], 제한 시간 [{2}] 내에서, 스트림 흐름 제어 윈도우(blocking)를 대기합니다.
+windowAllocationManager.waitForNonBlocking.connection=연결 [{0}], 스트림 [{1}], 연결 흐름 제어 윈도우(non-blocking)를 대기합니다.
+windowAllocationManager.waitForNonBlocking.stream=연결 [{0}], 스트림 [{1}], 스트림 흐름 제어 윈도우(non-blocking)를 대기합니다.
+
+writeStateMachine.endWrite.ise=쓰기가 한번 완료되고 나면, 새로운 상태를 위해 [{0}]을(를) 지정하는 것은 불허됩니다.
+writeStateMachine.ise=[{1}]인 상태에서 [{0}()]을(를) 호출하는 것은 불허됩니다.
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..fbac6f0
--- /dev/null
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -0,0 +1,313 @@
+# 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.engine.info=Jasper JSP 2.3 엔진
+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.jsproot.version.invalid=유효하지 않은 버전: [{0}]. 반드시 다음 중 하나여야 합니다: "1.2", "2.0", "2.1", "2.2", "2.3"
+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.taglibDirective.uriInvalid=태그 라이브러리를 위해 제공된 URI [{0}]이(가) 유효한 URI가 아닙니다.
+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=URI [{1}]을(를) 위한 태그라이브러리 [{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.noTldInDir=디렉토리 [{0}] 내에서 TLD 파일들이 발견되지 않았습니다.
+jsp.tldCache.noTldInJar=[{0}]에서 TLD 파일들을 찾을 수 없습니다. CATALINA_BASE/conf/catalina.properties 파일 내의 tomcat.util.scan.StandardJarScanFilter.jarsToSkip 프로퍼티에, 해당 JAR를 추가하는 것을 고려하십시오.
+jsp.tldCache.noTldInResourcePath=리소스 경로 [{0}]에서 TLD 파일들을 찾을 수 없습니다.
+jsp.tldCache.noTldSummary=적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다.
+jsp.tldCache.tldInDir=TLD 파일들이 디렉토리 [{0}] 내에서 발견되었습니다.
+jsp.tldCache.tldInJar=JAR [{0}] 내에서 TLD 파일들을 찾지 못했습니다.
+jsp.tldCache.tldInResourcePath=리소스 경로 [{0}]에서 TLD 파일들이 발견되었습니다.
+jsp.warning.bad.urlpattern.propertygroup=web.xml 내 url-pattern 하위 엘리먼트에 잘못된 값: [{0}]
+jsp.warning.checkInterval=경고: initParam인 checkInterval에 유효하지 않은 값. 기본 값인 "300" 초를 사용할 것입니다.
+jsp.warning.classDebugInfo=경고: initParam인 classdebuginfo에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
+jsp.warning.classpathUrl=클래스패스 내에 유효하지 않은 URL이 발견됨. 이 URL은 무시될 것입니다.
+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.strictQuoteEscaping=경고: initParam인 strictQuoteEscaping에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
+jsp.warning.suppressSmap=경고: initParam인 suppressSmap에 유효하지 않은 값. 기본값인 "false"를 사용할 것입니다.
+jsp.warning.tagPreDestroy=[{0}]의 태그 인스턴스에 대하여, preDestroy를 처리 중 오류 발생
+jsp.warning.tagRelease=[{0}]의 태그 인스턴스에 대해 release를 처리하는 중 오류 발생
+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.error.invalidFragment=웹 fragment들 내의 오류들로 인하여, 사전 컴파일을 중단합니다.
+jspc.error.invalidWebXml=web.xml 내의 오류들로 인해, 사전 컴파일을 중단합니다.
+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될 수 있습니다.
+org.apache.jasper.compiler.TldCache.servletContextNull=제공된 ServletContext가 널이었습니다.
+org.apache.jasper.servlet.JasperInitializer.onStartup=컨텍스트 [{0}]을(를) 위한 Jasper를 초기화합니다.
+org.apache.jasper.servlet.TldScanner.webxmlAdd=리소스 경로 [{0}](으)로부터 URL [{1}]을(를) 위한 TLD를 로드합니다.
+org.apache.jasper.servlet.TldScanner.webxmlFailPathDoesNotExist=경로가 [{0}]이고 URI가 [{1}]인 TLD를 처리하지 못했습니다. 지정된 경로가 존재하지 않습니다.
+org.apache.jasper.servlet.TldScanner.webxmlSkip=이미 <jsp-config>에 정의되었기 때문에, URI [{1}]을(를) 위한 TLD를, 리소스 경로 [{0}](으)로부터 로드하는 것을 건너뜁니다.
+
+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/dbcp/dbcp2/LocalStrings_ko.properties b/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_ko.properties
new file mode 100644
index 0000000..724e0ea
--- /dev/null
+++ b/java/org/apache/tomcat/dbcp/dbcp2/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.
+
+connectionFactory.lifetimeExceeded=해당 연결의 존속시간 [{0}] 밀리초가, 최대 허용치인 [{1}] 밀리초를 초과합니다.
+
+pool.close.fail=데이터베이스 연결 풀을 닫을 수 없습니다.
+
+poolableConnection.validate.fastFail=이 연결에서, 심각한 SQLException이 이전에 발생했습니다.
+
+poolableConnectionFactory.validateObject.fail=Poolable connection이 유효한지 확인하지 못했습니다.
+
+poolingDataSource.factoryConfig=PoolableConnectionFactory가 풀에 연결되지 않았습니다. setPool()을 호출하여 이 설정 문제를 해결합니다.
+
+swallowedExceptionLogger.onSwallowedException=내부 객체 풀이 예외 발생을 무시했습니다.
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..9d2db60
--- /dev/null
+++ b/java/org/apache/tomcat/util/buf/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.
+
+asn1Parser.lengthInvalid=입력 데이터의 바이트 길이가 [{1}]인데, 유효하지 않은 바이트 길이 [{0}](이)가 보고되었습니다.
+asn1Parser.tagMismatch=[{0}] 값이 기대 되었는데, [{1}] 값이 발견되었습니다.
+
+b2cConverter.unknownEncoding=문자 인코딩 [{0}]은(는) 지원되지 않습니다.
+
+byteBufferUtils.cleaner=직접적인 ByteBuffer cleaner를 사용할 수 없습니다. 메모리 누수가 발생할 수 있습니다.
+
+hexUtils.fromHex.nonHex=입력은 오직 16진수 숫자로만 이루어져야 합니다.
+hexUtils.fromHex.oddDigits=입력은 반드시 짝수 개의 16진수 숫자들로 이루어져야 합니다.
+
+uDecoder.convertHexDigit.notHex=[{0}]은(는) 16진수 숫자가 아닙니다.
+uDecoder.urlDecode.conversionError=문자셋 [{1}]을(를) 사용하여 [{0}]을(를) 디코드하지 못했습니다.
+uDecoder.urlDecode.missingDigit=% 문자 뒤에 두 개의 16진수 숫자들이 이어져야 하기 때문에, [{0}]을(를) 디코드하지 못했습니다.
diff --git a/java/org/apache/tomcat/util/codec/binary/LocalStrings_ko.properties b/java/org/apache/tomcat/util/codec/binary/LocalStrings_ko.properties
new file mode 100644
index 0000000..7bdc2bb
--- /dev/null
+++ b/java/org/apache/tomcat/util/codec/binary/LocalStrings_ko.properties
@@ -0,0 +1,19 @@
+# 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.
+
+base64.impossibleModulus=불가능한 계수 [{0}]
+base64.inputTooLarge=입력 배열이 너무 큽니다. 출력 배열의 크기 [{0}]이(가), 지정된 최대 크기 [{1}] 보다 큰 값입니다.
+base64.lineSeparator=행 구분문자 [{0}]은(는) Base64 문자들을 포함해서는 안됩니다.
+base64.nullEncodeParameter=정수를 위한 파라미터가 널이라서 인코딩할 수 없습니다.
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..d2c02eb
--- /dev/null
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_ko.properties
@@ -0,0 +1,19 @@
+# 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로 변환될 수 없습니다.
+
+jreCompat.noApplicationProtocol=자바 런타임이 SSLEngine.getApplicationProtocol()을 지원하지 않습니다. 이 기능을 사용하려면 Java 9를 사용해야 합니다.
+jreCompat.noApplicationProtocols=자바 런타임이 SSLParameters.setApplicationProtocols()을 지원하지 않습니다. 이 기능을 사용하려면 Java 9를 사용해야 합니다.
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/descriptor/tld/LocalStrings_ko.properties b/java/org/apache/tomcat/util/descriptor/tld/LocalStrings_ko.properties
new file mode 100644
index 0000000..c835c97
--- /dev/null
+++ b/java/org/apache/tomcat/util/descriptor/tld/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.
+
+implicitTldRule.elementNotAllowed=implicit.tld 파일 내에서, 엘리먼트 [{0}]은(는) 허용되지 않습니다.
diff --git a/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ko.properties b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ko.properties
new file mode 100644
index 0000000..a9862d4
--- /dev/null
+++ b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ko.properties
@@ -0,0 +1,66 @@
+# 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.
+
+filterDef.invalidFilterName=유효하지 않은 <filter-name>. [{0}]이(가) 필터 정의에 포함되어 있습니다.
+
+securityConstraint.uncoveredHttpMethod=URL 패턴 [{0}]와(과) 함께 설정되는 security constraint들에 대해, HTTP 메소드들 [{1}]만이 커버됩니다. 다른 모든 메소드들은 커버되지 않습니다.
+securityConstraint.uncoveredHttpMethodFix=[{1}] 중의 하나가 아닌, 커버될 수 없는 HTTP 메소드들을 사용한 접근을 거부하기 위하여, URL 패턴이 [{0}]인 security constraint들을 추가합니다.
+securityConstraint.uncoveredHttpOmittedMethod=URL 패턴 [{0}]와(과) 함께 설정된 security constraint들에 대하여, HTTP 메소드들 [{1}]은(는) 커버되지 않습니다.
+securityConstraint.uncoveredHttpOmittedMethodFix=커버될 수 없는 HTTP 메소드들 [{1}]에 대한 접근을 거부하기 위하여, URL 패턴 [{0}]와(과) 함께 security constraint를 추가합니다.
+
+servletDef.invalidServletName=서블릿 정의에서 유효하지 않은 <servlet-name> [{0}]
+
+webRuleSet.absoluteOrdering=<absolute-ordering> 엘리먼트는 web-fragment.xml 내에서 유효하지 않으므로, 무시될 것입니다.
+webRuleSet.absoluteOrderingCount=<absolute-ordering> 엘리먼트는 1회만 나타나도록 제한됩니다.
+webRuleSet.nameCount=<name> 엘리먼트는 단 한번만 나타나도록 제한됩니다.
+webRuleSet.postconstruct.duplicate=클래스 [{0}]에 PostConstruct 메소드가 중복 정의되어 있습니다.
+webRuleSet.predestroy.duplicate=클래스 [{0}]에 중복된 @PreDestroy 메소드 정의
+webRuleSet.relativeOrdering=web.xml 내에서 유효하지 않아서, 해당 <ordering> 엘리먼트는 무시될 것입니다.
+webRuleSet.relativeOrderingCount=<ordering> 엘리먼트는 오직 한번만 나타나도록 제한됩니다.
+
+webXml.duplicateEnvEntry=중복된 env-entry 이름 [{0}]
+webXml.duplicateFilter=중복된 필터 이름: [{0}]
+webXml.duplicateFragment=이름이 [{0}]인, 둘 이상의 fragment들이 발견되었습니다. 이는 상대적 순서배열에서 불허됩니다. 상세 정보는 서블릿 스펙 8.2.2 2c 장을 참조하십시오. 절대적 순서배열을 사용하는 것을 고려해 보십시오.
+webXml.duplicateMessageDestination=중복된 message-destination 이름 [{0}]
+webXml.duplicateMessageDestinationRef=중복된 message-destination-ref 이름 [{0}]
+webXml.duplicateResourceEnvRef=중복된 resource-env-ref 이름 [{0}]입니다.
+webXml.duplicateResourceRef=중복된 resource-ref 이름: [{0}]
+webXml.duplicateServletMapping=이름이 [{0}]과 [{1}]인 두 서블릿들 모두 url-pattern [{2}]에 매핑되어 있는데, 이는 허용되지 않습니다.
+webXml.duplicateTaglibUri=중복된 태그 라이브러리 URI [{0}]
+webXml.mergeConflictDisplayName=표시 이름이, 위치가 [{1}]이고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에 다른 값들로 정의되었습니다.
+webXml.mergeConflictFilter=필터 [{0}]이(가), [{2}]에 위치한 [{1}](이)라는 이름을 가진 fragment를 포함하여, 여러 개의 fragment들에서 일관되지 않게 정의되었습니다.
+webXml.mergeConflictLoginConfig=LoginConfig가, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에 일관되지 않게 정의되었습니다.
+webXml.mergeConflictOrder=Fragment의 상대적 순서들이 순환 참조를 포함하고 있습니다. 이 문제는 web.xml에서 절대 순서를 사용함으로써 해결될 수 있습니다.
+webXml.mergeConflictResource=리소스 [{0}]은(는), 이름이 [{1}](이)고 [{2}]에 위치한 fragment를 포함하여, 여러 개의 fragment들에서 일관되지 않게 정의되었습니다.
+webXml.mergeConflictServlet=서블릿 [{0}]이(가), [{2}]에 위치하고 [{1}](이)라는 이름을 가진 fragment를 포함하여, 여러 개의 fragment들에서 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookieComment=세션 쿠키 주석이, [{1}]에 위치하고 [{0}](이)라는 이름의 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 비일관되게 정의되었습니다.
+webXml.mergeConflictSessionCookieDomain=세션 쿠키 도메인이, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookieHttpOnly=세션 쿠키의 http-only 플래그가, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookieMaxAge=세션 쿠키의 max-age가, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookieName=세션 쿠키 이름이, [{1}]에 위치하고 [{0}](이)라는 이름을 가진 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookiePath=세션 쿠기 경로가, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionCookieSecure=세션 쿠키의 secure 플래그가, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에서 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionTimeout=세션 제한 시간 초과 값이, [{1}]에 위치하고 이름이 [{0}]인 fragment를 포함하여, 여러 개의 fragment들에 다른 값들로 일관되지 않게 정의되었습니다.
+webXml.mergeConflictSessionTrackingMode=세션 트랙킹 모드 설정들이, [{1}]에 위치하고 [{0}](이)라는 이름의 fragment를 포함하여, 여러 fragment들에 일관되지 않게 정의되었습니다.
+webXml.mergeConflictString=이름이 [{1}]인 [{0}]이(가), [{3}]에 위치하고 이름이 [{2}]인 fragment를 포함하여, 여러 개의 fragment들에서 일관되지 않게 정의되었습니다.
+webXml.multipleOther=<ordering> 엘리먼트 안에 내재된, 여러 개의 <others> 엔트리들
+webXml.reservedName=예약된 이름 [{0}]을(를) 사용한 web.xml이 탐지되었습니다. name 엘리먼트는 이 fragment를 위해 무시될 것입니다.
+webXml.unrecognisedPublicId=public ID [{0}]이(가), web.xml 파일들을 위해 알려진 public ID들 중 어떤 것과도 부합되지 않아, 해당 버전을 알아낼 수 없습니다.
+webXml.version.unknown=알 수 없는 버전 문자열 [{0}]. 기본 버전이 사용될 것입니다.
+webXml.wrongFragmentName=web.xml의 absolute-ordering 태그에서 잘못된 fragment 이름, [{0}]이(가) 사용되었습니다!
+
+webXmlParser.applicationParse=[{0}]에 위치한 애플리케이션 web.xml 내에서 파싱 오류 발생
+webXmlParser.applicationPosition=행 [{0}], 열 [{1}]에서 발생했음
+webXmlParser.applicationStart=[{0}]에 위치한 애플리케이션 web.xml을 파싱합니다.
diff --git a/java/org/apache/tomcat/util/digester/LocalStrings_ko.properties b/java/org/apache/tomcat/util/digester/LocalStrings_ko.properties
new file mode 100644
index 0000000..762e5a9
--- /dev/null
+++ b/java/org/apache/tomcat/util/digester/LocalStrings_ko.properties
@@ -0,0 +1,17 @@
+# 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.
+
+digester.failedToUpdateAttributes=속성 [{0}]을(를) 변경하지 못하여, [{1}](으)로 유지합니다.
+digester.failedToUpdateSystemProperty=시스템 프로퍼티 [{0}]을(를) 변경하지 못했으며, 해당 프로퍼티는 [{1}] 값으로 남습니다.
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..f2b226e
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/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.
+
+cookies.fallToDebug=\n\
+\ 비고: 쿠키 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+cookies.invalidCookieToken=쿠키들: 유효하지 않은 쿠키입니다. 유효한 토큰 또는 인용부호로 처리된 값이 아닙니다.
+cookies.invalidSameSiteCookies=알 수 없는 설정 값: [{0}]. 반드시 다음 중 하나여야 합니다: none, lax, strict. 기본 값은 none입니다.
+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}]인 파라미터 다음에, ''='' 문자가 뒤따르지 않습니다.
+
+rfc6265CookieProcessor.invalidCharInValue=쿠키 값에 유효하지 않은 문자 [{0}]이(가) 있습니다.
+rfc6265CookieProcessor.invalidDomain=이 쿠키를 위해, 유효하지 않은 도메인 [{0}]이(가) 지정되었습니다.
+rfc6265CookieProcessor.invalidPath=이 쿠키를 위해 유효하지 않은 경로가 설정되었습니다: [{0}]
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..5dec1d2
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/parser/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.
+
+cookie.fallToDebug=\n\
+비고: 이 오류가 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
+cookie.invalidCookieValue=유효하지 않은 쿠키가 포함된 쿠키 헤더 [{0}]을(를) 받았습니다. 이 쿠키는 무시될 것입니다.
+cookie.invalidCookieVersion=인식되지 않는 쿠키 버전 [{0}]을(를) 사용한 쿠키 헤더를 받았습니다. 해당 헤더와 그에 포함된 쿠키들은 무시될 것입니다.
+cookie.valueNotPresent=<not present>
+
+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/net/LocalStrings_ko.properties b/java/org/apache/tomcat/util/net/LocalStrings_ko.properties
new file mode 100644
index 0000000..58840c4
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/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.
+
+channel.nio.interrupted=현재 쓰레드가 중단되었습니다.
+channel.nio.ssl.appInputNotEmpty=애플리케이션 입력 버퍼가 여전히 데이터를 포함하고 있습니다. 데이터를 잃을 뻔했습니다.
+channel.nio.ssl.appOutputNotEmpty=애플리케이션 출력 버퍼가 여전히 데이터를 포함하고 있습니다. 데이터를 잃을 뻔했습니다.
+channel.nio.ssl.closeSilentError=이미 예상했던대로, 연결을 깨끗하게 닫으려 시도하던 중 예외 발생이 있었습니다.
+channel.nio.ssl.closing=채널이 닫는 중 상태에 있습니다.
+channel.nio.ssl.eofDuringHandshake=Handshake 하는 동안 EOF 발생
+channel.nio.ssl.expandNetInBuffer=네트워크 입력 버퍼를 [{0}] 바이트 크기로 확장합니다.
+channel.nio.ssl.expandNetOutBuffer=네트워크 출력 버퍼를 [{0}] 바이트 크기로 확장합니다.
+channel.nio.ssl.foundHttp=암호화된 TLS 연결이어야 하는 곳에서, plain 텍스트 HTTP 요청이 발견되었습니다.
+channel.nio.ssl.handshakeError=Handshake 오류
+channel.nio.ssl.incompleteHandshake=Handshake가 완료되지 않았습니다. 데이터를 읽기 전 반드시 handshake를 완료해야 합니다.
+channel.nio.ssl.invalidCloseState=유효하지 않은, 닫힘 상태입니다. 네트워크 데이터를 보내지 않을 것입니다.
+channel.nio.ssl.invalidStatus=예기치 않은 상태 [{0}].
+channel.nio.ssl.netInputNotEmpty=네트워크 입력 버퍼가 여전히 데이터를 포함하고 있습니다. Handshake가 실패할 것입니다.
+channel.nio.ssl.netOutputNotEmpty=네트워크 출력 버퍼가 여전히 데이터를 포함하고 있습니다. Handshake는 실패할 것입니다.
+channel.nio.ssl.notHandshaking=Handshake 중 NOT_HANDSHAKING 발생
+channel.nio.ssl.pendingWriteDuringClose=쓰기가 진행 중이어서, 네트워크 버퍼에 데이터가 남아 있습니다. SSL 닫기 메시지를 보낼 수 없습니다. close(true)를 대신 사용하여 강제로 닫을 것입니다.
+channel.nio.ssl.remainingDataDuringClose=네트워크 버퍼에 데이터가 남아 있어, SSL 닫기 메시지를 보낼 수 없습니다. close(true)를 대신 사용하여 강제로 닫으려 합니다.
+channel.nio.ssl.sniDefault=요청된 SNI 호스트 이름을 결정하기 위한 버퍼를 충분히 채울 수 없습니다. 기본 값을 사용합니다.
+channel.nio.ssl.sniHostName=연결 [{0}]을(를) 위해 추출된 SNI 호스트 이름은 [{1}]입니다.
+channel.nio.ssl.timeoutDuringHandshake=Handshake 도중 제한 시간 초과
+channel.nio.ssl.unexpectedStatusDuringUnwrap=Handshake UNWRAP 처리 중 예기치 않은 상태: [{0}]
+channel.nio.ssl.unexpectedStatusDuringWrap=WRAP을 위해 handshake 수행 중 예기치 않은 상태 [{0}]입니다.
+channel.nio.ssl.unwrapFail=데이터를 unwrap할 수 없습니다. 유효하지 상태: [{0}]
+channel.nio.ssl.unwrapFailResize=버퍼가 너무 작아서 데이터를 unwrap할 수 없습니다. 유효하지 않은 상태 [{0}]
+channel.nio.ssl.wrapException=Wrap하는 중 handshake가 실패했습니다.
+channel.nio.ssl.wrapFail=데이터를 wrap할 수 없습니다. 유효하지 않은 상태 [{0}]
+
+endpoint.accept.fail=소켓 accept 실패
+endpoint.alpn.fail=[{0}]을(를) 사용하여 ALPN을 위한 엔드포인트를 설정하지 못했습니다.
+endpoint.alpn.negotiated=ALPN을 사용하여 [{0}] 프로토콜로 negotiate 했습니다.
+endpoint.apr.applyConf=OpenSSLConfCmd를 SSL 컨텍스트에 적용합니다.
+endpoint.apr.assignConf=SSL 컨텍스트를 OpenSSLConfCmd 컨텍스트로 설정합니다.
+endpoint.apr.checkConf=OpenSSLConf를 점검합니다.
+endpoint.apr.errApplyConf=OpenSSLConf를 SSL 컨텍스트에 적용할 수 없었습니다.
+endpoint.apr.errCheckConf=OpenSSLConf 점검 중 오류 발생
+endpoint.apr.errMakeConf=OpenSSLConf 컨텍스트를 생성할 수 없었습니다.
+endpoint.apr.failSslContextMake=SSLContext를 생성할 수 없습니다. AprLifecycleListener에서 SSLEngine이 사용가능 상태로 설정되었는지, AprLifecycleListener가 올바로 초기화되었는지, 그리고 유효한 SSLProtocol이 지정되었는지 점검하십시오.
+endpoint.apr.invalidSslProtocol=SSLProtocol 속성을 위해 유효하지 않은 값 [{0}]이(가) 제공되었습니다.
+endpoint.apr.makeConf=OpenSSLConf 컨텍스트를 생성합니다.
+endpoint.apr.maxConnections.running=APR 엔드포인트는 실행 중 maxConnections 설정을 지원하지 않습니다. 기존 값인 [{0}]이(가) 계속해서 사용될 것입니다.
+endpoint.apr.maxConnections.unlimited=APR 엔드포인트는 무제한 연결들을 지원하지 않습니다. 기존 값 [{0}]이(가) 계속해서 사용될 것입니다.
+endpoint.apr.noSendfileWithSSL=SSL이 사용가능 상태로 설정되어 있을 때에는, APR/native connector를 위한 sendfile이 지원되지 않습니다.
+endpoint.apr.pollAddInvalid=소켓 [{0}]을(를) poller에 추가하려는, 유효하지 않은 시도입니다.
+endpoint.apr.pollError=Poller가 다음 오류와 함께 실패했습니다. [{0}] : [{1}]
+endpoint.apr.pollMergeEvents=병합 이벤트 [{2}]을(를) 생성하기 위해, 소켓 [{0}]을(를) 위한 poller 이벤트 [{1}]을(를) 병합합니다.
+endpoint.apr.pollUnknownEvent=인식되지 않는 이벤트 [{0}]와(과) 함께, 소켓이 poller로 부터 반환되었습니다.
+endpoint.apr.remoteport=APR 소켓 [{0}]이(가) 원격 포트 [{1}](으)로 열렸습니다.
+endpoint.apr.tooManyCertFiles=AprEndpoint가 처리할 수 있는 것 보다 더 많은 인증서 파일들이 설정되었습니다.
+endpoint.debug.channelCloseFail=채널을 닫지 못했습니다.
+endpoint.debug.destroySocket=소켓 [{0}]을(를) 소멸시킵니다.
+endpoint.debug.pollerAdd=addList에 추가합니다: 소켓 [{0}], 제한시간 [{1}], 플래그들 [{2}]
+endpoint.debug.pollerAddDo=Poller에 소켓 [{0}]을(를) 추가합니다.
+endpoint.debug.pollerProcess=다음 이벤트(들)을 위해 소켓 [{0}]을(를) 처리합니다: [{1}]
+endpoint.debug.pollerRemove=Poller로부터 [{0}]을(를) 제거하려 시도 중
+endpoint.debug.pollerRemoved=Poller로부터 [{0}]을(를) 제거했습니다.
+endpoint.debug.socket=소켓 [{0}]
+endpoint.debug.socketCloseFail=소켓을 닫지 못했습니다.
+endpoint.debug.socketTimeout=제한 시간 초과로 처리합니다: [{0}]
+endpoint.debug.unlock.fail=포트 [{0}]에 대한 accept의 잠금을 풀고자 시도하는 중 예외 발생
+endpoint.debug.unlock.localFail=[{0}]을(를) 위한 로컬 주소를 결정할 수 없습니다.
+endpoint.debug.unlock.localNone=로컬 주소가 가용하지 않기 때문에, [{0}]을(를) 위한 acceptor의 잠금 상태를 풀지 못했습니다.
+endpoint.duplicateSslHostName=호스트 이름 [{0}]을(를) 위해 여러 개의 SSLHostConfig 엘리먼트들이 제공되었습니다. 호스트 이름들은 반드시 유일해야 합니다.
+endpoint.err.close=소켓을 닫으려 시도하는 중 예외 발생
+endpoint.err.handshake=Handshake가 실패했습니다.
+endpoint.err.unexpected=소켓 처리 중 예기치 않은 오류 발생
+endpoint.executor.fail=Executor가 소켓 [{0}]을(를) 처리하기를 거부했습니다.
+endpoint.getAttribute=[{0}]의 값은 [{1}]입니다.
+endpoint.init.bind=소켓 바인딩 실패: [{0}] [{1}]
+endpoint.init.bind.inherited=Connector가 상속된 채널을 사용하도록 설정되었는데, 상속된 채널이 없습니다.
+endpoint.init.listen=소켓 listen 실패: [{0}] [{1}]
+endpoint.init.notavail=APR이 가용하지 않음
+endpoint.invalidJmxNameSslHost=호스트 [{0}]와(과) 연관된 SSLHostConfig를 위한, 유효한 JMX 객체 이름을 생성할 수 없습니다.
+endpoint.invalidJmxNameSslHostCert=호스트가 [{0}]이고 인증서 타입이 [{1}]인 SSLHostConfigCertificate을 위한, 유효한 JMX 객체 이름을 생성할 수 없습니다.
+endpoint.jmxRegistrationFailed=JMX 객체를 [{0}](이)라는 이름으로 등록시키지 못했습니다.
+endpoint.jsse.noSslContext=호스트 이름 [{0}]을(를) 위한 SSLContext를 찾을 수 없습니다.
+endpoint.launch.fail=새로운 Runnable을 시작하지 못했습니다.
+endpoint.nio.registerFail=Poller로부터의 selector와 함께, 소켓을 등록하지 못했습니다.
+endpoint.nio.selectorCloseFail=Poller를 닫을 때, selector를 닫지 못했습니다.
+endpoint.nio.stopLatchAwaitFail=Poller들이 요구되는 시간 내에 중지되지 않았습니다.
+endpoint.nio.stopLatchAwaitInterrupted=이 쓰레드는 poller들이 중지되기를 기다리는 동안 중단되었습니다.
+endpoint.nio.timeoutCme=제한 시간 초과들을 처리하는 동안 예외 발생. 해당 코드는 반복해서 점검되어 왔고 ConcurrentModificationException이 발생하지 않아 왔습니다. 이 오류를 재현할 수 있다면, Tomcat 버그 티켓을 여시고 오류 재현 과정들을 제공해 주십시오.
+endpoint.nio2.exclusiveExecutor=NIO2 Connector가 셧다운 시에 정상적으로 동작하기 위해서는, 배타적인 Executor가 필수적으로 요구됩니다.
+endpoint.noSslHostConfig=호스트 이름 [{0}]을(를) 사용하여, Connector [{1}]을(를) 위한 defaultSSLHostConfigName과 부합하는 SSLHostConfig 엘리먼트를 찾지 못했습니다.
+endpoint.noSslHostName=SSL 호스트 설정을 위한 호스트 이름이 제공되지 않았습니다.
+endpoint.poll.error=예기치 않은 poller 오류 발생
+endpoint.poll.fail=심각한 poller 실패 (poller를 재시작합니다): [{0}] [{1}]
+endpoint.poll.initfail=Poller 생성이 실패했습니다.
+endpoint.poll.limitedpollsize=지정된 크기 [{0}]로 poller를 생성하지 못했습니다.
+endpoint.process.fail=소켓 프로세서를 할당하는 중 오류 발생
+endpoint.processing.fail=소켓 프로세서 실행 중 오류 발생
+endpoint.removeDefaultSslHostConfig=기본 SSLHostConfig(이름: [{0}])는 제거될 수 없습니다.
+endpoint.sendfile.addfail=Sendfile 실패: [{0}] [{1}]
+endpoint.sendfile.error=예기치 않은 sendfile 오류
+endpoint.serverSocket.closeFailed=엔드포인트 [{0}]을(를) 위한 서버 소켓을 닫지 못했습니다.
+endpoint.setAttribute=[{1}]에 [{0}]을(를) 설정합니다.
+endpoint.timeout.err=소켓 제한 시간 초과 처리 중 오류 발생
+endpoint.unknownSslHostName=SSL 호스트 이름 [{0}]은(는), 이 엔드포인트를 위해 인식되지 않는 이름입니다.
+endpoint.warn.executorShutdown=쓰레드 풀 [{0}]와(과) 연관된 해당 Executor는 완전히 종료되지 않았습니다. 일부 애플리케이션 쓰레드들이 여전히 실행 중일 수 있습니다.
+endpoint.warn.incorrectConnectionCount=잘못된 연결 개수. 동일한 소켓에 여러 번의 socket.close가 호출되었음.
+endpoint.warn.noLocalAddr=소켓 [{0}]을(를) 위한 로컬 주소를 결정할 수 없습니다.
+endpoint.warn.noLocalName=소켓 [{0}]을(를) 위한 로컬 호스트 이름을 결정할 수 없습니다.
+endpoint.warn.noLocalPort=소켓 [{0}]을(를) 위한 로컬 포트를 결정할 수 없습니다.
+endpoint.warn.noRemoteAddr=소켓 [{0}]을(를) 위한 원격 주소를 결정할 수 없습니다.
+endpoint.warn.noRemoteHost=소켓 [{0}]을(를) 위한 원격 호스트 이름을 결정할 수 없습니다.
+endpoint.warn.noRemotePort=소켓 [{0}]을(를) 위한 원격 포트를 결정할 수 없습니다.
+endpoint.warn.noSendfileWithSSL=SSL이 사용가능 상태일 때에는, sendfile이 Connector를 위해 지원되지 않습니다.
+endpoint.warn.unlockAcceptorFailed=Acceptor 쓰레드 [{0}]이(가) 잠금을 풀지 못했습니다. 강제로 소켓을 셧다운합니다.
+
+jsse.invalid_truststore_password=Trust 저장소를 잠금을 풀거나 유효한지 확인하는 용도로, 제공된 Trust 저장소 비밀번호를 사용할 수 없었습니다. 널 비밀번호를 사용하여, 해당 Trust 저장소에 대한 접근을 다시 시도합니다. 이는 유효한지 확인하는 작업을 건너뛸 것입니다.
+jsse.keystore_load_failed=[{2}](으)로 인하여, 경로 [{1}]에 있고 타입이 [{0}]인 키 저장소를 로드하지 못했습니다.
+jsse.ssl3=SSLv3이 명시적으로 사용 가능 상태로 설정되었습니다. 이 프로토콜은 안전하지 않은 것으로 알려져 있습니다.
+jsse.tls13.auth=JSSE TLS 1.3 구현이 초기 handshake 이후의 인증을 지원하지 않음에 따라, 선택사항인 클라이언트 인증과 호환되지 않습니다.
+
+sniExtractor.clientHelloInvalid=ClientHello 메시지가 정확히 포맷되지 않았습니다.
+sniExtractor.clientHelloTooBig=ClientHello가 단일 TLS 레코드에 존재하지 않았기에, SNI 정보를 추출할 수 없었습니다.
+
+socket.apr.clientAbort=클라이언트가 연결을 중단했습니다.
+socket.apr.closed=이 연결과 연관된 소켓 [{0}]이(가) 이미 닫혀 있습니다.
+socket.apr.read.error=Wrapper [{2}]을(를) 사용하여, APR/native 소켓 [{1}]으로부터 데이터를 읽는 중, 예기치 않은 오류 발생: [{0}]
+socket.apr.write.error=Wrapper [{2}]을(를) 가지고 APR/native 소켓 [{1}]에 데이터를 쓰는 중, 예기치 않은 오류 발생: [{0}]
+socket.closed=이 연결과 연관된 해당 소켓은 이미 닫혔습니다.
+socket.sslreneg=SSL 연결을 re-negotiate하는 동안 예외 발생
+
+sslHostConfig.certificate.notype=여러 개의 인증서들이 지정되었는데, 적어도 하나의 인증서에 필수 속성 타입이 없습니다.
+sslHostConfig.certificateVerificationInvalid=인증서 검증 값 [{0}]은(는) 인식되지 않는 값입니다.
+sslHostConfig.fileNotFound=설정된 파일 [{0}]이(가) 존재하지 않습니다.
+sslHostConfig.mismatch=[{1}](이)라는 이름의 SSLHostConfig에 프로퍼티 [{0}]이(가) 설정되었는데, 이 프로퍼티는 [{2}] 설정 문법을 위한 것이나, 해당 SSLHostConfig은 [{3}] 설정 문법으로 사용되고 있습니다.
+sslHostConfig.opensslconf.alreadyset=또 다른 OpenSSLConf을 설정하려는 시도는 무시되었습니다.
+sslHostConfig.opensslconf.null=널인 OpenSSLConf를 설정하려는 시도가 무시되었습니다.
+sslHostConfig.prefix_missing=프로토콜 [{0}]이(가) [{1}](이)라는 이름을 가진 SSLHostConfig의 프로토콜 목록에 추가되어 있습니다. +/- prefix가 누락되었는지 점검하십시오.
+
+sslHostConfigCertificate.mismatch=프로퍼티 [{0}]이(가) [{1}](이)라는 이름의 SSLHostConfigCertificate에 설정되었고, 이는 인증서 저장소 타입 [{2}]을(를) 위한 것이지만, 인증서가 타입 [{3}]의 인증서 저장소와 함께 사용되고 있습니다.
+
+sslImplementation.cnfe=클래스 [{0}]의 SSLImplementation 객체를 생성할 수 없습니다.
+
+sslUtilBase.active=활성화 된 [{0}]은(는) 다음과 같습니다: [{1}]
+sslUtilBase.noneSupported=지정된 [{0}]의 어느 것도 SSL 엔진에 의해 지원되지 않습니다: [{1}]
+sslUtilBase.skipped=지정된 [{0}]의 일부가 SSL 엔진에 의해 지원되지 않아 건너뜁니다: [{1}]
diff --git a/java/org/apache/tomcat/util/net/jsse/LocalStrings_ko.properties b/java/org/apache/tomcat/util/net/jsse/LocalStrings_ko.properties
new file mode 100644
index 0000000..b5abc6a
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/jsse/LocalStrings_ko.properties
@@ -0,0 +1,39 @@
+# 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.
+
+jsse.alias_no_key_entry=별칭 이름 [{0}]을(를) 사용하여 키 엔트리를 식별해낼 수 없습니다.
+jsse.enableable_ciphers=지원되고 사용 가능한, 지정된 SSL cipher들: [{0}]
+jsse.exceptionOnClose=소켓 닫기 실패
+jsse.excludeProtocol=이 JRE에서 지원되는 해당 SSL 프로토콜 [{0}]이(가), Tomcat의 가용 프로토콜 목록에서 제외되어 있습니다.
+jsse.invalidTrustManagerClassName=trustManagerClassName에 의해 제공된 클래스 [{0}]은(는) javax.net.ssl.TrustManager를 구현하지 않았습니다.
+jsse.invalid_ssl_conf=SSL 설정이 [{0}](으)로 인하여 유효하지 않습니다.
+jsse.noCertFile=SSLHostConfig의 속성인 certificateFile은, 반드시 SSL connector를 사용할 때에만 정의되어야 합니다.
+jsse.noDefaultCiphers=[{0}]을(를) 위한 기본 cipher들을 결정할 수 없습니다. Connector가 시작될 수 있도록 명시적으로 값을 지정하십시오.
+jsse.noDefaultProtocols=sslEnabledProtocols의 기본값을 결정할 수 없습니다. Connector가 제대로 시작되는지 보증하려면 명시적으로 값을 설정하십시오.
+jsse.noKeys=개인 키들에 대한 별칭들이 키 저장소에 없습니다.
+jsse.openssl.effectiveCiphers=사용되는 Cipher들: [{0}]
+jsse.openssl.unknownElement=Cipher 문자열에 알 수 없는 엘리먼트: [{0}]
+jsse.pemParseError=[{0}](으)로부터 키를 파싱할 수 없습니다.
+
+jsseSupport.certTranslationError=인증서 [{0}]에 대한 인증서 변환을 하는 중 오류 발생
+jsseSupport.clientCertError=클라이언트로부터 인증서를 구하려 시도하는 중 오류 발생
+
+jsseUtil.invalidTrustCert=Trust 저장소 내의 [{0}]을(를) 위한 인증서가 유효하지 않아, 클라이언트에 전송되는 인증서 목록에서 제외되었습니다.
+jsseUtil.noCrlSupport=truststoreProvider [{0}]은(는) certificateRevocationFile 설정 옵션을 지원하지 않습니다.
+jsseUtil.noVerificationDepth=truststoreProvider [{0}]은(는) certificateVerificationDepth 설정 옵션을 지원하지 않습니다.
+jsseUtil.trustedCertNotChecked=인증서가 알 수 없는 타입이라서, 별칭이 [{0}]인 신뢰되는 인증서의 유효일자들이 점검되지 않았습니다.
+jsseUtil.trustedCertNotValid=별칭이 [{0}](이)고 DN이 [{1}]인 해당 신뢰받는 인증서는 [{2}](으)로 인하여 유효하지 않습니다. 이 신뢰되는 인증서에 의해 서명된 인증서들은 받아들여질 것입니다.
+
+pemFile.noMultiPrimes=해당 PKCS#1 인증서는 multi-prime 포맷으로 되어 있는데, 자바는 해당 포맷으로부터 RSA 개인 키 객체를 생성할 API를 제공하지 않습니다.
diff --git a/java/org/apache/tomcat/util/net/openssl/LocalStrings_ko.properties b/java/org/apache/tomcat/util/net/openssl/LocalStrings_ko.properties
new file mode 100644
index 0000000..d28af63
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/openssl/LocalStrings_ko.properties
@@ -0,0 +1,66 @@
+# 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.
+
+engine.ciphersFailure=Cipher들의 목록을 얻지 못했습니다.
+engine.emptyCipherSuite=CipherSuite 이름이 존재하지 않습니다.
+engine.engineClosed=엔진이 닫혀 있습니다.
+engine.failedCipherSuite=Cipher suite [{0}]을(를) 사용가능 상태로 설정하지 못했습니다.
+engine.handshakeFailure=Handshake 실패: [{0}]
+engine.inboundClose=Peer의 close_notify를 받기 전에, Inbound가 닫혔습니다.
+engine.invalidBufferArray=offset: [{0}], 길이: [{1}] (요구사항: offset <= offset + length <= srcs.length [{2}])
+engine.noSSLContext=SSL 컨텍스트가 없음.
+engine.noSession=SSL 세션 ID가 존재하지 않습니다.
+engine.nullBuffer=널 버퍼
+engine.nullBufferInArray=배열 내에 널 버퍼임
+engine.nullCipherSuite=널 cipher suite
+engine.nullName=name이 널입니다.
+engine.nullValue=널 값
+engine.openSSLError=OpenSSL 오류: [{0}], 메시지: [{1}]
+engine.oversizedPacket=암호화된 패킷이 너무 큽니다.
+engine.renegotiationUnsupported=Renegotiation은 지원되지 않습니다.
+engine.unsupportedCipher=지원되지 않는 cipher suite: [{0}] [{1}]
+engine.unsupportedProtocol=프로토콜 [{0}]은(는) 지원되지 않습니다.
+engine.unverifiedPeer=검증되지 않은 Peer
+engine.writeToSSLFailed=SSL에 쓰기 실패, 반환 값: [{0}]
+
+keyManager.nullCertificateChain=널 인증서 체인입니다.
+keyManager.nullPrivateKey=개인 키가 널임
+
+openssl.X509FactoryError=X509 팩토리 인스턴스를 얻는 중 오류 발생
+openssl.addedClientCaCert=클라이언트 CA 인증서를 추가했습니다: [{0}]
+openssl.applyConf=OpenSSLConfCmd를 SSL 컨텍스트에 적용합니다.
+openssl.certificateVerificationFailed=인증서 검증에 실패했습니다.
+openssl.checkConf=OpenSSLConf를 점검합니다.
+openssl.doubleInit=SSL 컨텍스트가 이미 초기화되어 있으므로, 초기화 호출을 무시합니다.
+openssl.errApplyConf=SSL 컨텍스트에 OpenSSLConf를 적용할 수 없었습니다.
+openssl.errCheckConf=OpenSSLConf 점검 중 오류 발생
+openssl.errMakeConf=OpenSSLConf 컨텍스트를 생성할 수 없었습니다.
+openssl.errorSSLCtxInit=SSL 컨텍스트를 초기화 하는 중 오류 발생
+openssl.keyManagerMissing=키 매니저를 찾을 수 없습니다.
+openssl.makeConf=OpenSSLConf 컨텍스트를 생성합니다.
+openssl.nonJsseCertficate=인증서 [{0}] 또는 그것의 개인 키 [{1}]이(가) JSSE 키 매니저를 사용하여 처리되지 못하였으므로, OpenSSL에 직접 전달할 것입니다.
+openssl.nonJsseChain=해당 인증서 체인 [{0}]이(가) 지정되지 않았거나 유효하지 않으며, JSSE는 유효한 인증서 체인을 요구하므로, OpenSSL을 직접 사용하려 시도합니다.
+openssl.trustManagerMissing=Trust 매니저를 찾을 수 없습니다.
+
+opensslconf.applyCommand=OpenSSLConf이 명령을 적용합니다 (이름 [{0}], 값 [{1}]).
+opensslconf.applyFailed=OpenSSLConf를 SSL 컨텍스트에 적용하는 중 실패
+opensslconf.checkCommand=OpenSSLConf 점검 명령 (이름 [{0}], 값 [{1}])
+opensslconf.checkFailed=OpenSSLConf 점검 실패
+opensslconf.failedCommand=OpenSSLConf가 명령(이름: [{0}], 값: [{1}])을 처리하지 못했습니다 (결과: [{2}]). 이는 무시될 것입니다.
+opensslconf.finishFailed=OpenSSLConf의 완료가 실패했습니다 (결과 값: [{0}]).
+opensslconf.noCommandName=OpenSSLConf: 명령 이름이 없습니다 - 무시될 것입니다. (명령 값 [{0}])
+opensslconf.resultCommand=OpenSSLConf 명령(이름: [{0}], 값: [{1}])이 [{2}]을(를) 반환했습니다.
+
+sessionContext.nullTicketKeys=널 키들
diff --git a/java/org/apache/tomcat/util/net/openssl/ciphers/LocalStrings_ko.properties b/java/org/apache/tomcat/util/net/openssl/ciphers/LocalStrings_ko.properties
new file mode 100644
index 0000000..3a83e56
--- /dev/null
+++ b/java/org/apache/tomcat/util/net/openssl/ciphers/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.
+
+converter.mapping=Cipher suite 매핑: [{0}] => [{1}]
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..0685418
--- /dev/null
+++ b/java/org/apache/tomcat/util/scan/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.
+
+jarScan.classloaderFail=클래스로더 계층구조로부터 [{0}]을(를) 스캔하지 못했습니다.
+jarScan.classloaderJarNoScan=클래스패스로부터 파일 [{0}]에 대한 JAR 스캔을 수행하지 않습니다.
+jarScan.classloaderJarScan=클래스패스로부터 JAR [{0}]을(를) 스캔합니다.
+jarScan.classloaderStart=클래스로더 계층 구조에서 JAR들을 스캔합니다.
+jarScan.jarUrlStart=URL [{0}]에 위치한 JAR를 스캔합니다.
+jarScan.webinfclassesFail=/WEB-INF/classes를 스캔하지 못했습니다.
+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..3b36be5
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/LocalStrings_ko.properties
@@ -0,0 +1,132 @@
+# 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.check.notOk=TLS handshake가 예기치 않은 상태값 [{0}]을(를) 반환했습니다.
+asyncChannelWrapperSecure.check.unwrap=데이터를 읽는 동안, 바이트들이 출력으로 쓰여졌습니다.
+asyncChannelWrapperSecure.check.wrap=쓰기 작업을 하는 동안, 입력으로부터 바이트들이 소비되었습니다.
+asyncChannelWrapperSecure.closeFail=채널을 깨끗하게 닫지 못했습니다.
+asyncChannelWrapperSecure.concurrentRead=동시 발생적인 읽기 오퍼레이션들은 허용되지 않습니다.
+asyncChannelWrapperSecure.concurrentWrite=동시적인 쓰기 오퍼레이션들은 허용되지 않습니다.
+asyncChannelWrapperSecure.eof=예기치 않은 스트림의 끝
+asyncChannelWrapperSecure.notHandshaking=TLS handshake 과정 중 예기치 않은 상태 [NOT_HANDSHAKING]입니다.
+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.invalidState=유효하지 않은 상태
+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.alreadyResumed=메시지 수신이 이미 재개되었습니다.
+wsFrame.alreadySuspended=메시지 수신이 이미 일시 정지되었습니다.
+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.illegalReadState=예기치 않은 읽기 상태: [{0}]
+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.suspendRequested=메시지 수신의 일시 정지가 이미 요청되었습니다.
+wsFrame.textMessageTooBig=디코드된 텍스트 메시지가 출력 버퍼에 비해 너무 크며, 해당 엔드포인트는 partial 메시지들을 지원하지 않습니다.
+wsFrame.wrongRsv=클라이언트 프레임이, opCode [{1}]을(를) 포함한 메시지를 위해, reserved 비트들을 [{0}](으)로 설정했는데, 이는 이 엔드포인트에 의해 지원되지 않습니다.
+
+wsFrameClient.ioe=서버가 전송한 데이터를 읽는 중 실패
+
+wsHandshakeRequest.invalidUri=문자열 [{0}]은(는) 유효한 URI를 구성하는 데 사용될 수 없습니다.
+wsHandshakeRequest.unknownScheme=요청의 스킴 [{0}]이(가) 인식되지 않는 스킴입니다.
+
+wsRemoteEndpoint.acquireTimeout=지정된 제한 시간 내에, 현재 메시지가 완전히 전송되지 않았습니다.
+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.sendInterrupt=현재 쓰레드가, blocking 전송이 완료되기를 기다리던 중 중단되었습니다.
+wsRemoteEndpoint.tooMuchData=Ping 또는 pong은 125 바이트를 초과한 데이터를 보낼 수 없습니다.
+wsRemoteEndpoint.writeTimeout=Blocking 쓰기가 제한 시간 초과되었습니다.
+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..19e2eeb
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/server/LocalStrings_ko.properties
@@ -0,0 +1,43 @@
+# 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.illegalReadState=예기치 않은 읽기 상태 [{0}]
+wsFrameServer.onDataAvailable=메소드 엔트리
+
+wsHttpUpgradeHandler.closeOnError=오류 발생으로 인하여, 웹소켓 연결을 닫습니다.
+wsHttpUpgradeHandler.destroyFailed=웹소켓 HttpUpgradeHandler를 소멸시키는 중, WebConnection을 닫지 못했습니다.
+wsHttpUpgradeHandler.noPreInit=컨테이너가 init()을 호출하기 전에 웹소켓 HttpUpgradeHandler를 설정하기 위하여, preInit() 메소드가 반드시 호출되어야만 합니다. 통상 이는 WsHttpUpgradeHandler 인스턴스를 생성한 서블릿도 preInit()을 호출해야 함을 의미합니다.
+wsHttpUpgradeHandler.serverStop=서버가 중지되고 있는 중입니다.
+
+wsRemoteEndpointServer.closeFailed=해당 ServletOutputStream의 연결을 깨끗하게 닫지 못했습니다.
diff --git a/res/maven/mvn-pub.xml b/res/maven/mvn-pub.xml
index dbd1b24..03f0f23 100644
--- a/res/maven/mvn-pub.xml
+++ b/res/maven/mvn-pub.xml
@@ -301,6 +301,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 ec41c5a..c8279f7 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -72,6 +72,9 @@
         Back-port various corrections and improvements to the Russian i18n
         messages. (markt)
       </fix>
+      <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