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 2022/09/02 12:21:50 UTC

[tomcat] branch main updated: Improvements to Chinese translations. (lihan)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 17a8da7555 Improvements to Chinese translations. (lihan)
17a8da7555 is described below

commit 17a8da7555a4416ad8d44e7fd6b8867ce10fa03f
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Sep 2 13:21:38 2022 +0100

    Improvements to Chinese translations. (lihan)
---
 .../catalina/authenticator/LocalStrings_zh_CN.properties     |  9 ++++++---
 .../authenticator/jaspic/LocalStrings_zh_CN.properties       |  3 ++-
 java/org/apache/catalina/core/LocalStrings_zh_CN.properties  | 12 ++++++++----
 .../apache/catalina/filters/LocalStrings_zh_CN.properties    |  4 ++--
 .../apache/catalina/ha/session/LocalStrings_zh_CN.properties |  6 +++---
 java/org/apache/catalina/realm/LocalStrings_zh_CN.properties |  6 +++---
 java/org/apache/catalina/ssi/LocalStrings_zh_CN.properties   |  2 +-
 .../apache/catalina/startup/LocalStrings_zh_CN.properties    |  2 +-
 .../catalina/storeconfig/LocalStrings_zh_CN.properties       |  2 +-
 .../catalina/tribes/membership/LocalStrings_zh_CN.properties |  4 ++--
 .../catalina/webresources/LocalStrings_zh_CN.properties      |  2 +-
 java/org/apache/coyote/http11/LocalStrings_zh_CN.properties  |  6 +++---
 java/org/apache/coyote/http2/LocalStrings_zh_CN.properties   | 12 ++++++------
 .../apache/jasper/resources/LocalStrings_zh_CN.properties    |  2 +-
 java/org/apache/naming/factory/LocalStrings_zh_CN.properties |  6 ++++++
 .../org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties |  2 ++
 .../apache/tomcat/util/compat/LocalStrings_zh_CN.properties  |  2 ++
 .../tomcat/util/digester/LocalStrings_zh_CN.properties       |  4 ++--
 .../tomcat/util/http/parser/LocalStrings_zh_CN.properties    |  2 +-
 .../org/apache/tomcat/util/net/LocalStrings_zh_CN.properties |  7 +++++--
 .../tomcat/util/net/openssl/LocalStrings_zh_CN.properties    |  4 ++--
 .../apache/tomcat/websocket/LocalStrings_zh_CN.properties    |  6 +++---
 webapps/docs/changelog.xml                                   |  3 +++
 23 files changed, 66 insertions(+), 42 deletions(-)

diff --git a/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties b/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties
index f74c009e8b..17a8983c1e 100644
--- a/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/authenticator/LocalStrings_zh_CN.properties
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 authenticator.certificates=此请求中没有客户端证书链
-authenticator.changeSessionId=在身份验证时, 会话 ID 从 [{0} 更改为 [{1}]
+authenticator.changeSessionId=在身份验证时, 会话 ID 从 [{0}] 更改为 [{1}]
 authenticator.check.authorize=用户名[{0}]从连接器获得,并被信任为有效。从Tomcat领域获取此用户的角色。
 authenticator.check.authorizeFail=领域无法识别用户[{0}]。创建具有该名称且没有角色的主体。
 authenticator.check.found=已通过身份验证 [{0}]
@@ -43,7 +43,7 @@ formAuthenticator.noErrorPage=没有为上下文[{0}]中的表单身份验证定
 formAuthenticator.noLoginPage=在环境[{0}]中,未为FORM认证定义登录页面
 
 singleSignOn.debug.associate=SSO将应用程序会话[{1}]与SSO会话[{0}]关联
-singleSignOn.debug.associateFail=SSO无法关联应用程序会话{0},因为SSO会话{1}不存在。
+singleSignOn.debug.associateFail=SSO无法关联应用程序会话[{0}],因为SSO会话[{1}]不存在。
 singleSignOn.debug.cookieCheck=SSO检查SSO cookie
 singleSignOn.debug.cookieNotFound=SSO没有找到SSO cookie
 singleSignOn.debug.deregister=与SSO会话[{1}]关联的SSO过期应用程序会话[{0}]
@@ -52,7 +52,7 @@ singleSignOn.debug.deregisterNone=SSO注销了SSO会话[{0}],但未找到关
 singleSignOn.debug.hasPrincipal=找到以前经过身份验证的主体[{0}]
 singleSignOn.debug.invoke=SSO为[{0}]处理请求
 singleSignOn.debug.principalCheck=SSO为SSO会话[{0}]寻找缓存的Principal
-singleSignOn.debug.principalFound=SSO 找到了带着认证类型的缓存代理
+singleSignOn.debug.principalFound=SSO 找到了带着认证类型[{1}]的缓存Principal [{0}]
 singleSignOn.debug.principalNotFound=SSO未找到缓存的Principal,为会话[{0}]擦除SSO cookie
 singleSignOn.debug.register=使用身份验证类型[{2}]的用户[{1}]的SSO注册SSO会话[{0}]。
 singleSignOn.debug.removeSession=SSO 从 SSO session [{1}] 中删除应用程序会话 [{0}]
@@ -70,3 +70,6 @@ spnegoAuthenticator.authHeaderNoToken=客户端发送的协商授权 header 未
 spnegoAuthenticator.authHeaderNotNego=客户端发送的授权头不是以协商开始的。
 spnegoAuthenticator.serviceLoginFail=无法作为服务主体登录
 spnegoAuthenticator.ticketValidateFail=无法验证客户端提供的票证
+
+sslAuthenticatorValve.http2=虚拟主机 [{1}] 中的上下文 [{0}] 配置为使用 CLIENT-CERT 身份验证,并且 [{2}] 配置为支持 HTTP/2。使用 CLIENT-CERT 身份验证与使用 HTTP/2 不兼容。
+sslAuthenticatorValve.tls13=虚拟主机 [{1}] 中的上下文 [{0}] 配置为使用 CLIENT-CERT 身份验证,并且 [{2}] 配置为使用 JSSE 支持 TLS 1.3。使用 CLIENT-CERT 身份验证与使用 TLS 1.3 和 JSSE 不兼容。
diff --git a/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties b/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties
index c00919c149..3fe84f8cb2 100644
--- a/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/authenticator/jaspic/LocalStrings_zh_CN.properties
@@ -17,11 +17,12 @@ authConfigFactoryImpl.load=从[{0}]加载持久化提供者注册信息
 authConfigFactoryImpl.nullContext=提供的上下文对象不可为null
 authConfigFactoryImpl.registerClass=正在为层[{1}]和应用程序上下文[{2}]注册类[{0}]
 authConfigFactoryImpl.registerInstance=正在为层[{1}]和应用程序上下文[{2}]注册类型为[{0}]的实例
+authConfigFactoryImpl.unsupportedContextType=该实现只支持jakarta.servlet.ServletContext类型的上下文,但是提供的上下文类型为[{0}]
 authConfigFactoryImpl.zeroLengthAppContext=应用上下文名称的长度为0是无效的
 authConfigFactoryImpl.zeroLengthMessageLayer=零长度的消息层名称是无效的
 
 callbackHandlerImpl.containerMissing=类型[{0}]的JASPIC回调缺少容器,已被忽略
-callbackHandlerImpl.jaspicCallbackMissing=接收到不支持的类型为{0}的JASPIC回调,该回调被忽略
+callbackHandlerImpl.jaspicCallbackMissing=接收到不支持的类型为[{0}]的JASPIC回调,该回调被忽略
 callbackHandlerImpl.realmMissing=容器[{1}]中类型为[{0}]的JASPIC回调缺少realm,该realm已被忽略
 
 jaspicAuthenticator.authenticate=通过JASPIC验证[{0}]的请求
diff --git a/java/org/apache/catalina/core/LocalStrings_zh_CN.properties b/java/org/apache/catalina/core/LocalStrings_zh_CN.properties
index 4dff7a5a49..0558b35169 100644
--- a/java/org/apache/catalina/core/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/core/LocalStrings_zh_CN.properties
@@ -67,8 +67,9 @@ applicationPushBuilder.methodNotToken=HTTP方法必须是令牌(token),但 [{0
 applicationServletRegistration.setServletSecurity.iae=为部署到名为[{1}]的上下文的Servlet[{0}]指定的空约束
 applicationServletRegistration.setServletSecurity.ise=无法将安全性约束添加到已部署到名称为[{1}]的上下文的servlet [{0}]中,因为上下文已被初始化
 
-applicationSessionCookieConfig.ise=无法将属性{0}添加到上下文{1}的sessioncokieconfig中,因为该上下文已初始化
+applicationSessionCookieConfig.ise=无法将属性[{0}]添加到上下文[{1}]的sessioncokieconfig中,因为该上下文已初始化
 
+aprListener.FIPSProviderNotDefault=当 AprLifecycleListener 配置为 FIPS 模式 [{0}] 时,必须将 FIPS 提供程序配置为默认提供程序
 aprListener.aprDestroy=无法关闭基于APR的Apache Tomcat本机库
 aprListener.aprInit=在java.library.path:[{0}]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能
 aprListener.aprInitDebug=在java.library.path[{1}]上使用名称[{0}]找不到基于APR的ApacheTomcat本机库。报告的错误是[{2}]
@@ -82,12 +83,14 @@ aprListener.initializingFIPS=初始化FIPS模式...
 aprListener.requireNotInFIPSMode=AprLifecycleListener配置为要求库已处于FIPS模式,但它未处于FIPS模式
 aprListener.skipFIPSInitialization=已经处于FIPS模式,跳过FIPS初始化
 aprListener.sslInit=无法初始化SSLEngine
+aprListener.sslRequired=当使用版本 [{1}] 的 Tomcat 本机库时,[{0}] 不是 SSLEngine 的有效值,因为 2.x 及更高版本需要 SSL。
 aprListener.tcnInvalid=安装了不兼容的APR(基于Apache Tomcat原生库)版本[{0}],而Tomcat要求版本[{1}]
 aprListener.tcnValid=使用APR版本[{1}]加载了基于APR的Apache Tomcat本机库[{0}]。
 aprListener.tcnVersion=安装了基于APR的Apache Tomcat Native库的旧版本[{0}],而Tomcat建议使用[{1}]的最低版本
 aprListener.tooLateForFIPSMode=无法设置FIPSMode:SSL已初始化
 aprListener.tooLateForSSLEngine=无法设置引擎:SSL已初始化
 aprListener.tooLateForSSLRandomSeed=无法设置 SSLRandomSeed:SSL已经初始化
+aprListener.usingFIPSProvider=将 OpenSSL 与 FIPS 提供程序一起用作默认提供程序
 aprListener.wrongFIPSMode=AprLifecycleListener的FIPSMode选项的意外值:[{0}]
 
 asyncContextImpl.asyncDispatchError=异步调度时出错
@@ -122,6 +125,7 @@ containerBase.realm.stop=停止旧域时出错
 containerBase.threadedStartFailed=子容器启动失败
 containerBase.threadedStopFailed=停止期间子容器失败
 
+defaultInstanceManager.invalidAnnotation=无效注解[{0}]
 defaultInstanceManager.invalidInjection=方法资源注入注解无效
 defaultInstanceManager.postConstructNotFound=类[{1}]的后构造方法[{0}]已在部署描述符中声明,但找不到
 defaultInstanceManager.preDestroyNotFound=类[{1}]的预销毁方法[{0}]已在部署描述符中声明,但找不到
@@ -179,7 +183,7 @@ standardContext.filterFail=一个或多个筛选器启动失败。完整的详
 standardContext.filterMap.either=过滤器映射必须指定 <url-pattern> 或 <servlet-name>
 standardContext.filterMap.name=Filter mapping 指定了一个未知的 filter名称 [{0}]
 standardContext.filterMap.pattern=过滤器映射中的<url-pattern> [{0}] 无效
-standardContext.filterStart=启动过滤器异常
+standardContext.filterStart=启动过滤器异常[{0}]
 standardContext.invalidWrapperClass=[{0}] 不是StandardWrapper的子类
 standardContext.isUnavailable=此应用程序目前不可用
 standardContext.listenerFail=一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
@@ -204,7 +208,7 @@ standardContext.postconstruct.duplicate=类[{0}]的构造后方法定义重复
 standardContext.postconstruct.required=完全限定的类名和方法名都是必需的
 standardContext.predestroy.duplicate=类 [{0}] 的 @PreDestroy 方法定义重复
 standardContext.predestroy.required=完全合格的类名和方法名都是必需的
-standardContext.reloadingCompleted=已完成重新加载名为{0}的上下文
+standardContext.reloadingCompleted=已完成重新加载名为[{0}]的上下文
 standardContext.reloadingStarted=已开始重新加载名为[{0}]的上下文
 standardContext.requestListener.requestInit=向类[{0}]的侦听器实例发送请求初始化的生命周期事件的异常
 standardContext.resourcesInit=初始化静态变量错误
@@ -290,7 +294,7 @@ standardWrapper.notChild=Wrapper容器内部不允许有子容器。
 standardWrapper.notClass=未为servlet[{0}]指定servlet类
 standardWrapper.notContext=包装的父容器必须是上下文
 standardWrapper.notFound=Servlet [{0}] 不可用
-standardWrapper.notServlet=类{0}不是Servlet
+standardWrapper.notServlet=类[{0}]不是Servlet
 standardWrapper.serviceException=在路径为[{1}]的上下文中,servlet[{0}]的Servlet.service()引发异常
 standardWrapper.serviceExceptionRoot=在路径为{1}的上下文中,Servlet[{0}]的Servlet.service()引发了具有根本原因的异常{2}
 standardWrapper.unavailable=将servlet[{0}]标记为不可用
diff --git a/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties b/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
index 388d8f8f5f..b7225dc722 100644
--- a/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/filters/LocalStrings_zh_CN.properties
@@ -36,8 +36,8 @@ expiresFilter.noExpirationConfigured=请求[{0}],其响应状态为[{1}]内容
 expiresFilter.noExpirationConfiguredForContentType=没有为 content-type [{0}] 找到过期配置
 expiresFilter.numberError=分析逗号分隔列表[{1}中位置[{0}(基于零)处的数字时发生异常
 expiresFilter.responseAlreadyCommitted=请求[{0}],无法对已提交的响应应用ExpiresFilter。
-expiresFilter.setExpirationDate=请求{0},响应状态为{1},内容类型为{2},设置过期日期{3}
-expiresFilter.skippedStatusCode=请求{0},响应状态为{1},内容类型为{1},跳过给定状态的过期头生成。
+expiresFilter.setExpirationDate=请求[{0}],响应状态为[{1}],内容类型为[{2}],设置过期日期[{3}]
+expiresFilter.skippedStatusCode=请求[{0}],响应状态为[{1}],内容类型为[{1}],跳过给定状态的过期头生成。
 expiresFilter.startingPointInvalid=在指令[{1}]中无效的起点(访问|现在|修改|a<秒>|m<秒>)[{0}]
 expiresFilter.startingPointNotFound=起始点(access|now|modification|a<seconds>|m<seconds>)未在指令[{0}]中找到
 expiresFilter.unknownParameterIgnored=忽略值为[{1}]的未知参数[{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
index 655251bc6c..3fa4f594b4 100644
--- a/java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/ha/session/LocalStrings_zh_CN.properties
@@ -21,7 +21,7 @@ backupManager.stopped=管理者[{0}]正在停止。
 clusterSessionListener.noManager=上下文管理器不存在:[{0}]
 
 deltaManager.createMessage.access=管理器[{0}]:创建会话为会话[{1}]存取消息
-deltaManager.createMessage.accessChangePrimary=管理器{0}:为会话{1}创建更改主节点消息。
+deltaManager.createMessage.accessChangePrimary=管理器[{0}]:为会话[{1}]创建更改主节点消息。
 deltaManager.createMessage.allSessionData=管理器[{0}]将发送所有会话数据。
 deltaManager.createMessage.allSessionTransferred=管理器[{0}]发送了所有传输的会话数据
 deltaManager.createMessage.delta=管理器[{0}] ):为会话[{1}]创建增量请求消息
@@ -30,7 +30,7 @@ deltaManager.createMessage.unableCreateDeltaRequest=无法序列化sessionid[{0}
 deltaManager.createSession.newSession=用id[{0}]创建一个扩展会话(DeltaSession),总数为 [{1}]
 deltaManager.dropMessage=管理器[{0}]:将消息[{1}]放入GET_所有会话同步阶段开始日期[{2}]消息日期[{3}]。
 deltaManager.expireSessions=管理器[{0}]关闭时使会话过期
-deltaManager.foundMasterMember=复制主master 成员在上下文中被发现.\n
+deltaManager.foundMasterMember=复制主master成员[{1}]在上下文[{0}]中被发现.\n
 deltaManager.loading.cnfe=加载持久化会话 [{0}] 时出现ClassNotFoundException
 deltaManager.loading.existing.session=重载现有会话[{0}]。
 deltaManager.loading.ioe=加载持久 session 时出现 IOException:[{0}]
@@ -43,7 +43,7 @@ deltaManager.noSessionState=管理者[{0}]:没有收到[{1}]发送的会话状
 deltaManager.receiveMessage.accessed=管理器[{0}]:接收会话为会话[{1}]存取消息
 deltaManager.receiveMessage.allSessionDataAfter=Manager [{0}]: session 状态反序列化
 deltaManager.receiveMessage.allSessionDataBegin=管理者[{0}]:接收到所有会话数据状态
-deltaManager.receiveMessage.createNewSession=管理器{0}:已收到会话为会话{1}创建的消息
+deltaManager.receiveMessage.createNewSession=管理器[{0}]:已收到会话为会话[{1}]创建的消息
 deltaManager.receiveMessage.delta=管理器[{0}]:已收到会话[{1}的会话增量消息。
 deltaManager.receiveMessage.delta.unknown=管理器[{0}]:未知会话的接收会话增量[{1}]
 deltaManager.receiveMessage.error=管理器[{0}]:无法通过TCP通道接收消息
diff --git a/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties b/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
index 407936e98b..ff7cb33d46 100644
--- a/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/realm/LocalStrings_zh_CN.properties
@@ -48,7 +48,7 @@ jaasRealm.appName=设置JAAS应用程序名称[{0}]
 jaasRealm.authenticateFailure=用户 [{0}] 认证失败
 jaasRealm.authenticateSuccess=用户名 [{0}] 已被成功认证为身份 [{1}] -- 主体也已创建
 jaasRealm.beginLogin=使用应用程序[{1}的LoginContext为用户名[{0}]请求JAASRealm登录
-jaasRealm.checkPrincipal=正在检查主体[{0}[{1}]
+jaasRealm.checkPrincipal=正在检查主体[{0}][{1}]
 jaasRealm.classNotFound=找不到类 [{0}]
 jaasRealm.credentialExpired=由于凭据过期,用户名[{0}]未通过身份验证
 jaasRealm.failedLogin=由于登录失败,用户名 [{0}] 无法授权
@@ -79,7 +79,7 @@ jndiRealm.tlsClose=关闭tls响应时出现异常
 lockOutRealm.authLockedUser=尝试对锁定的用户[{0}]进行身份验证
 lockOutRealm.removeWarning=用户[{0}]在[{1}]秒后从失败的用户缓存中删除,以将缓存大小保持在限制集内
 
-mdCredentialHandler.unknownEncoding=不支持编码{0},因此仍将使用当前的设置{1}
+mdCredentialHandler.unknownEncoding=不支持编码[{0}],因此仍将使用当前的设置[{1}]
 
 memoryRealm.authenticateFailure=用户名[{0}]未成功通过身份验证
 memoryRealm.authenticateSuccess=用户名称[{0}]认证成功
@@ -95,7 +95,7 @@ realmBase.authenticateFailure=用户名 [{0}] 认证失败
 realmBase.authenticateSuccess=用户名[{0}]已成功通过身份验证
 realmBase.cannotGetRoles=无法从主体[{0}]获取角色
 realmBase.createUsernameRetriever.ClassCastException=类[{0}] 不是一个X509UsernameRetriever.
-realmBase.createUsernameRetriever.newInstance=无法创建类型为{0}的对象。
+realmBase.createUsernameRetriever.newInstance=无法创建类型为[{0}]的对象。
 realmBase.credentialNotDelegated=虽然已请求存储,但用户[{0}]的凭据尚未委派
 realmBase.delegatedCredentialFail=无法获取用户[{0}]的委派凭据。
 realmBase.digest=对用户凭证摘要发生错误
diff --git a/java/org/apache/catalina/ssi/LocalStrings_zh_CN.properties b/java/org/apache/catalina/ssi/LocalStrings_zh_CN.properties
index 062df485d8..69617f18e4 100644
--- a/java/org/apache/catalina/ssi/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/ssi/LocalStrings_zh_CN.properties
@@ -35,7 +35,7 @@ ssiMediator.unknownEncoding=未知编码[{0}]
 
 ssiServletExternalResolver.absoluteNonVirtualPath=非虚[{0}]路径不能是绝对路径
 ssiServletExternalResolver.noContext=没有将路径规范化为[{0}]的上下文
-ssiServletExternalResolver.noFile=找不到文件{0}
+ssiServletExternalResolver.noFile=找不到文件[{0}]
 ssiServletExternalResolver.noIncludeFile=未找到包含文件[{0}]
 ssiServletExternalResolver.noResource=上下文不包含资源[{0}]
 ssiServletExternalResolver.normalizationError=规范化为路径[{0}]返回了空值
diff --git a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
index 671b9c590a..2fbcd6a59b 100644
--- a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
@@ -151,7 +151,7 @@ passwdUserDatabase.readFail=无法从/etc/passwd获取完整的用户集
 
 tomcat.addWebapp.conflictChild=无法在[{0}]处部署到上下文路径[{1}],因为存在上下文[{2}]
 tomcat.addWebapp.conflictFile=由于现有文件[{2}]的存在,无法在[{0}]将war部署到上下文路径[{1}]
-tomcat.baseDirMakeFail=无法创建用作基本目录的目录{0}
+tomcat.baseDirMakeFail=无法创建用作基本目录的目录[{0}]
 tomcat.baseDirNotDir=基本目录指定的位置[{0}]不是一个目录
 tomcat.defaultMimeTypeMappingsFail=无法加载默认MIME类型
 tomcat.homeDirMakeFail=无法创建用作主目录的目录 [{0}]
diff --git a/java/org/apache/catalina/storeconfig/LocalStrings_zh_CN.properties b/java/org/apache/catalina/storeconfig/LocalStrings_zh_CN.properties
index c02f916995..6673d8f2b0 100644
--- a/java/org/apache/catalina/storeconfig/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/storeconfig/LocalStrings_zh_CN.properties
@@ -34,7 +34,7 @@ standardContextSF.storeContext=将上下文[{0}]配置分别存储在路径[{1}]
 standardContextSF.storeContextWithBackup=将上下文[{0}]配置与备份分别存储在路径[{1}]
 
 storeConfigListener.loadError=加载StoreConfig时出错
-storeConfigListener.notServer=侦听器已添加到服务器以外的组件,因此将被忽略
+storeConfigListener.notServer=侦听器必须嵌套在Server元素内,但是处于[{0}]中,忽略它
 storeConfigListener.registerError=注册StoreConfig MBean时出错
 
 storeFactory.noDescriptor=元素[{0}].[{1}]的描述符未配置
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties b/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties
index eea511ef67..6d3fc2e822 100644
--- a/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings_zh_CN.properties
@@ -46,8 +46,8 @@ mcastServiceImpl.unableReceive.broadcastMessage=无法接收广播消息。
 mcastServiceImpl.waitForMembers.done=休眠完毕,成员已连接,启动等级:[{0}]
 mcastServiceImpl.waitForMembers.start=休眠[{0}]毫秒后启动连接集群,启动登记:[{1}]
 
-memberImpl.invalid.package.begin=无效的包,应以“[{0}”开头。
-memberImpl.invalid.package.end=无效的包,应以“[{0}”结尾
+memberImpl.invalid.package.begin=无效的包,应以“[{0}]”开头。
+memberImpl.invalid.package.end=无效的包,应以“[{0}]”结尾
 memberImpl.large.payload=负载太大以至于难以处理
 memberImpl.notEnough.bytes=成员包中的字节不够。
 memberImpl.package.small=成员包太小以至于不能校验。
diff --git a/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
index c52f9c4fd4..c9123a281a 100644
--- a/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/webresources/LocalStrings_zh_CN.properties
@@ -29,7 +29,7 @@ cache.objectMaxSizeTooBigBytes=为要缓存的最大对象大小[{0}] kB指定
 
 cachedResource.invalidURL=无法创建CachedResourceURLStreamHandler实例,因为URL[{0}]畸形
 
-classpathUrlStreamHandler.notFound=无法使用线程上下文类加载器或当前类的类加载器加载资源{0}
+classpathUrlStreamHandler.notFound=无法使用线程上下文类加载器或当前类的类加载器加载资源[{0}]
 
 dirResourceSet.manifestFail=从[{0}]读取manifest失败
 dirResourceSet.notDirectory=基本和内部路径[{0}] {1} [{2}]指定的目录不存在。
diff --git a/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties
index d4f2f1d22a..76acc967fe 100644
--- a/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties
+++ b/java/org/apache/coyote/http11/LocalStrings_zh_CN.properties
@@ -42,11 +42,11 @@ iib.available.readFail=尝试确定数据是否可用时,非阻塞读取失败
 iib.eof.error=套接字读取到意外的EOF
 iib.failedread.apr=读取失败,APR/本机错误代码为[{0}]
 iib.filter.npe=你不能添加空过滤器(null)
-iib.invalidHttpProtocol=在HTTP协议中发现无效字符
+iib.invalidHttpProtocol=在HTTP协议中发现无效字符[{0}]
 iib.invalidPhase=无效的请求行解析阶段[{0}]
-iib.invalidRequestTarget=在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
+iib.invalidRequestTarget=在请求目标中找到无效字符[{0}]。有效字符在RFC 7230和RFC 3986中定义
 iib.invalidheader=HTTP header行 [{0}] 不符合RFC 7230并且已被忽略。
-iib.invalidmethod=在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
+iib.invalidmethod=在方法名称[{0}]中发现无效的字符串, HTTP 方法名必须是有效的符号.
 iib.parseheaders.ise.error=意外状态:已解析标头。 缓冲池不回收?
 iib.readtimeout=从套接字读取数据超时
 iib.requestheadertoolarge.error=请求头太大
diff --git a/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties b/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
index af678a7b45..35bdbb1a44 100644
--- a/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
+++ b/java/org/apache/coyote/http2/LocalStrings_zh_CN.properties
@@ -86,15 +86,15 @@ pingManager.roundTripTime=连接[{0}]往返时间测量为[{1}]ns
 stream.clientCancel=客户端在响应完成前重置了数据流
 stream.closed=连接[{0}],流[{1}],一旦关闭就无法写入流
 stream.header.case=连接[{0}],流[{1}],HTTP标头名称[{2}]必须小写
-stream.header.connection=HTTP/2请求中不允许连接{0}、流{1}、HTTP头[{2}]
-stream.header.contentLength=连接{0},流{1},内容长度头值{2}与接收的数据大小{3}不一致
+stream.header.connection=HTTP/2请求中不允许连接[{0}]、流[{1}]、HTTP头[连接]
+stream.header.contentLength=连接[{0}],流[{1}],内容长度头值[{2}]与接收的数据大小[{3}]不一致
 stream.header.debug=连接[{0}],流[{1}],HTTP标头[{2}],值[{3}]
 stream.header.duplicate=连接[{0}],流[{1}],收到多个[{2}]头
 stream.header.empty=连接[{0}],流[{1}],无效的空头名称
 stream.header.invalid=连接[{0}],流[{1}],头[{2}]包含无效值[{3}]
 stream.header.noPath=连接[{0}],流[{1}],[:path]伪标头为空
 stream.header.required=连接 [{0}], 流 [{1}], 缺少一个或多个必要的头文件
-stream.header.te=连接{0}、流{1}、HTTP头[te]在HTTP/2请求中不允许有值{2}
+stream.header.te=连接[{0}]、流[{1}]、HTTP头[te]在HTTP/2请求中不允许有值[{2}]
 stream.header.unexpectedPseudoHeader=连接[{0}],流[{1}],伪头[{2}]在常规头之后接收
 stream.header.unknownPseudoHeader=收到连接[{0}],流[{1}],未知伪标头[{2}]
 stream.inputBuffer.copy=正在将[{0}]字节从inBuffer复制到outBuffer
@@ -104,8 +104,8 @@ stream.inputBuffer.readTimeout=等待从客户端读取数据超时
 stream.inputBuffer.reset=流.重置
 stream.inputBuffer.signal=读线程在等待时,数据被添加到inBuffer中。 发信号通知该线程继续
 stream.inputBuffer.swallowUnread=先前读取到输入流缓冲区吞入了[{0}]个字节
-stream.notWritable=连接{0},流{1},此流不可写
-stream.outputBuffer.flush.debug=连接{0},流{1},用缓冲区在位置{2}刷新输出,writeInProgress[{3}]并关闭了[{4}]
+stream.notWritable=连接[{0}],流[{1}],此流不可写
+stream.outputBuffer.flush.debug=连接[{0}],流[{1}],用缓冲区在位置[{2}]刷新输出,writeInProgress[{3}]并关闭了[{4}]
 stream.recycle=连接[{0}],流[{1}]将被回收
 stream.reprioritisation.debug=连接[{0}],流[{1}],独占[{2}],父[{3}],权重[{4}]
 stream.reset.fail=连接[{0}],流[{1}],重置流失败
@@ -165,7 +165,7 @@ upgradeHandler.windowSizeTooBig=连接[{0}],流[{1}],窗口太大
 upgradeHandler.windowUpdateConnection=连接[{0}],向客户端发送了窗口更新,将窗口增加[{1}]字节
 upgradeHandler.windowUpdateStream=连接[{0}],流[{1}]向客户端发送了窗口更新,将窗口增加[{2}]字节
 upgradeHandler.writeBody=连接 [{0}],数据流[{1}], 数据长度[{2}]
-upgradeHandler.writeHeaders=连接 [{0}],流 [{1}]
+upgradeHandler.writeHeaders=连接[{0}],流[{1}],正在写入头信息,EndOfStream[{2}]
 upgradeHandler.writePushHeaders=连接{0}、流{1}、推送流{2}、EndOfStream{3}
 
 windowAllocationManager.dispatched=连接[{0}],流[{1}],已调度
diff --git a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
index d711882685..3afd804d30 100644
--- a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
@@ -48,7 +48,7 @@ jsp.error.bug48498=无法显示JSP提取。可能是由于XML解析器错误(
 jsp.error.cannotAddResolver=在第一次请求发生之后不能调用addELResolver
 jsp.error.classname=无法从.class文件确定类名
 jsp.error.coerce_to_type=无法将值[{2}]强制为属性[{0}]的类型[{1}]。
-jsp.error.compilation=编译文件时出错:[{0}[{1}]
+jsp.error.compilation=编译文件时出错:[{0}][{1}]
 jsp.error.compilation.dependent=加载类[{0}]失败
 jsp.error.compilation.jdt=编译错误
 jsp.error.compilation.jdtProblemError=处理JDT问题列表时出错
diff --git a/java/org/apache/naming/factory/LocalStrings_zh_CN.properties b/java/org/apache/naming/factory/LocalStrings_zh_CN.properties
index 4891b49614..b09003e564 100644
--- a/java/org/apache/naming/factory/LocalStrings_zh_CN.properties
+++ b/java/org/apache/naming/factory/LocalStrings_zh_CN.properties
@@ -13,6 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+beanFactory.classNotFound=未找到该类:[{0}]
+beanFactory.noForceString=为了安全期间,forceString 选项已被删除。相反,如果setter方法没有使用String(原始类型或原始包装类型),工厂将寻找一个与setter同名的接受String的方法,如果找到的话就使用该方法。
+beanFactory.noSetMethod=属性[{0}]未找到set方法
+beanFactory.noStringConversion=类型 [{1}] 的属性 [{0}] 的字符串转换不可用
+beanFactory.readOnlyProperty=属性[{0}]为只读
+
 dataSourceLinkFactory.badWrapper=不是类型[{0}]的包装
 
 factoryBase.factoryClassError=无法加载资源工厂类
diff --git a/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties
index 7434a083dc..8f937024bc 100644
--- a/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_zh_CN.properties
@@ -27,6 +27,8 @@ encodedSolidusHandling.invalid=值[{0}]未识别
 hexUtils.fromHex.nonHex=输入只能由十六进制数字组成
 hexUtils.fromHex.oddDigits=输入必须由偶数个十六进制数字组成
 
+messageBytes.illegalCharacter=代码点[{1}]处的Unicode字符[{0}]无法编码,因为它超出了允许的0到255范围。
+
 uDecoder.eof=文件结尾(EOF)
 uDecoder.noSlash=不允许使用编码的斜杠字符
 uDecoder.urlDecode.conversionError=使用编码[{1}]解码[{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
index d916aafd98..c7be88b3ae 100644
--- a/java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_zh_CN.properties
@@ -16,4 +16,6 @@
 jre16Compat.javaPre16=类未找到,因此假设代码在Java16之前的JVM上运行
 jre16Compat.unexpected=无法创建对Java16中类和方法的引用
 
+jre19Compat.javaPre19=该类未找到,因此推测当前代码运行在Java 19版本之前的虚拟机上
+
 jreCompat.noUnixDomainSocket=Java运行环境不支持Unix域名套接字。你必须使用Java16来运行该特性。
diff --git a/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties
index 0a4b817e33..c6a6e858bd 100644
--- a/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/digester/LocalStrings_zh_CN.properties
@@ -21,7 +21,7 @@ digester.error.begin=开始事件引发异常
 digester.error.body=正文事件引发异常
 digester.error.end=结束事件引发异常
 digester.error.finish=完成事件引发异常
-digester.errorLocation=行{0}列{1}]处出错:[{2}]
+digester.errorLocation=行[{0}]列[{1}]处出错:[{2}]
 digester.failedToUpdateAttributes=属性[{0}]更新失败,旧数据为[{1}]
 digester.failedToUpdateSystemProperty=系统属性[{0}]更新失败,仍为[{1}]
 digester.noLocator=没有定位器
@@ -32,5 +32,5 @@ digester.parseWarning=在第[{0}]行第[{1}]列处分析警告
 digester.propertySourceLoadError=加载属性源[{0}]时出错
 
 rule.createError=创建对象时出错:[{0}]
-rule.noClassName=没有为[{0}[{1}]指定类名
+rule.noClassName=没有为[{0}][{1}]指定类名
 rule.noProperty=Match[{0}]无法将属性[{1}]设置为[{2}]
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
index 5ee4117b14..8b44e84838 100644
--- a/java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings_zh_CN.properties
@@ -40,7 +40,7 @@ http.noClosingBracket=ipv6 地址缺失一个闭合的圆括号
 http.noOpeningBracket=IPv6地址缺少开括号(
 http.singleColonEnd=IPv6地址不能以单个“.”结尾。
 http.singleColonStart=一个IPv6地址也许不是以单个冒号":"开头的。
-http.tooFewHextets=一个IPv6地址必须包含8个16进制数,但是这个IP地址包含了[(0)]个16进制数,并且无“::”序列表示一个或多个0个16进制数
+http.tooFewHextets=一个IPv6地址必须包含8个16进制数,但是这个IP地址包含了[{0}]个16进制数,并且无“::”序列表示一个或多个0个16进制数
 http.tooManyColons=IPv6地址不能包含超过2个连续冒号字符。
 http.tooManyDoubleColons=一个IPv6地址只能包含一个 '::' 序列。
 http.tooManyHextets=IPv6地址包含[{0}]个十六进制数,但有效的IPv6地址不能超过8个。
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
index f06c775b51..59d5e29e86 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/net/LocalStrings_zh_CN.properties
@@ -65,7 +65,8 @@ endpoint.debug.unlock.localFail=无法确定[{0}]的本地地址
 endpoint.debug.unlock.localNone=无法解除 [{0}] 的接受器,因为本地地址不可用
 endpoint.duplicateSslHostName=为主机名[{0}]提供了多个SSLHostConfig元素。主机名必须唯一
 endpoint.err.close=抓住异常试图关闭socket
-endpoint.err.handshake=握手失败
+endpoint.err.duplicateAccept=检测到接受重复套接字. 这是一个已知的Linux内核BUG. 原始连接被正常处理,重复连接已被忽略. 客户端不受影响.将OS内核更新到5.10及以上版本应该可以修复这个问题.
+endpoint.err.handshake=来自IP地址[{0}]和端口[{1}]的客户端连接握手失败
 endpoint.err.unexpected=处理套接字时意外错误
 endpoint.executor.fail=执行器拒绝了用于处理的套接字[{0}]
 endpoint.getAttribute=[{0}] 是 [{1}]
@@ -137,6 +138,7 @@ socketWrapper.writeTimeout=写入超时
 
 sslHostConfig.certificate.notype=指定了多个证书,并且至少有一个证书缺少必需的属性类型
 sslHostConfig.certificateVerificationInvalid=证书认证值[{0}]未识别
+sslHostConfig.certificateVerificationWithHttp2=TLS虚拟主机[{0}]被配置为可选的证书验证,包围的连接器被配置为支持升级到h2。HTTP/2 over TLS不允许可选的证书验证。
 sslHostConfig.fileNotFound=配置文件 [{0}] 不存在
 sslHostConfig.invalid_truststore_password=提供的信任存储密码无法用于解锁和/或验证信任存储。正在重试使用空密码访问信任存储,该密码将跳过验证。
 sslHostConfig.mismatch=属性[{0}]是在名为[{1}]的SSLHostConfig 上设置的,用于[{2}]配置语法,但SSLHostConfig 正与[{3}]配置语法一起使用
@@ -152,7 +154,8 @@ sslUtilBase.active=活跃的[{0}]是:[{1}]
 sslUtilBase.aliasIgnored=FIPS已启用所以别名[{0}]将被忽略。如果key存储中的key大于一个,使用的key将取决于key存储的实现
 sslUtilBase.alias_no_key_entry=别名[{0}]不标识密钥项
 sslUtilBase.invalidTrustManagerClassName=提供的trustManagerClassName[{0}]未实现javax.net.ssl.TrustManager
-sslUtilBase.keystore_load_failed=由于{2},无法加载路径为{1}]的密钥库类型{0}]
+sslUtilBase.keystore_load_failed=由于[{2}],无法加载路径为[{1}]的密钥库类型[{0}]
+sslUtilBase.noCertFile=在使用SSL连接器时,必须定义SSLHostConfig的certificateFile属性
 sslUtilBase.noCrlSupport=truststoreProvider [{0}]不支持certificateRevocationFile配置选项
 sslUtilBase.noKeys=在密钥存储中找不到私钥的别名
 sslUtilBase.noVerificationDepth=truststoreProvider[{0}]不支持CertificationDepth配置选项
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
index 4b5e093d10..44f6798388 100644
--- a/java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/net/openssl/LocalStrings_zh_CN.properties
@@ -48,7 +48,7 @@ openssl.errMakeConf=无法创建OpenSSLConf上下文
 openssl.errorSSLCtxInit=初始化SSL上下文时出错
 openssl.keyManagerMissing=key管理器未找到
 openssl.makeConf=创建OpenSSLConf上下文
-openssl.nonJsseCertificate=无法使用JSSE密钥管理器处理证书{0}或其私钥{1},该证书将直接提供给OpenSSL
+openssl.nonJsseCertificate=无法使用JSSE密钥管理器处理证书[{0}]或其私钥[{1}],该证书将直接提供给OpenSSL
 openssl.nonJsseChain=证书链[{0}]未指定或无效,JSSE需要有效的证书链,因此尝试直接使用OpenSSL
 openssl.trustManagerMissing=没有找到.信任管理者
 
@@ -56,7 +56,7 @@ opensslconf.applyCommand=OpenSSLConf正在应用命令(name[{0}],value[{1}]
 opensslconf.applyFailed=将OpenSSLConf应用于SSL上下文时失败
 opensslconf.checkCommand=OpenSSLConf检查命令(name[{0}],value[{1}])
 opensslconf.checkFailed=检查OpenSSLConf时失败。
-opensslconf.failedCommand=OpenSSLConf失败的命令(名称为{0},值为{1}]),结果为{2}-将被忽略
+opensslconf.failedCommand=OpenSSLConf失败的命令(名称为[{0]},值为[{1}]),结果为[{2}]-将被忽略
 opensslconf.finishFailed=OpenSSLConf 配置失败结果为 [{0}]
 opensslconf.noCommandName=OpenSSLConf没有命令名-将被忽略(命令值[{0}])
 opensslconf.resultCommand=OpenSSLConf命令(name[{0}],value[{1}])返回了[{2}]
diff --git a/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties b/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
index eac229a48a..1a9cc4434b 100644
--- a/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/websocket/LocalStrings_zh_CN.properties
@@ -36,7 +36,7 @@ caseInsensitiveKeyMap.nullKey=不允许 Key 是 Null
 clientEndpointHolder.instanceCreationFailed=未能创建WebSocketEndpoint
 clientEndpointHolder.instanceRegistrationFailed=无法向InstanceManager注册Endpoint实例
 
-futureToSendHandler.timeout=等待[{0}[{1}]完成后操作超时。
+futureToSendHandler.timeout=等待[{0}][{1}]完成后操作超时。
 
 perMessageDeflate.alreadyClosed=转换器已经关闭且可能永远不会使用
 perMessageDeflate.deflateFailed=无法压缩这个WebSocket压缩结构
@@ -99,7 +99,7 @@ wsRemoteEndpoint.wrongState=远程 endpoint 处于 [{0}] 状态,是被调用
 
 wsSession.closed=WebSocket会话[{0}]已关闭,并且在关闭的会话上不能调用任何方法(除了close())
 wsSession.created=创建WebSocket session [{0}]。
-wsSession.doClose=关闭 WebSocket session [{1}]
+wsSession.doClose=关闭 WebSocket session [{0}]
 wsSession.duplicateHandlerBinary=已配置二进制消息处理程序
 wsSession.duplicateHandlerPong=已经配置了pong消息处理器
 wsSession.duplicateHandlerText=已配置文本消息处理器
@@ -121,7 +121,7 @@ wsWebSocketContainer.connect.entry=连接[{0}]类型的终端实例至[{1}]
 wsWebSocketContainer.connect.write=从本地地址[{2}]以[{1}]的限制从[{0}]开始从缓冲区写入HTTP升级请求
 wsWebSocketContainer.defaultConfiguratorFail=无法创建默认配置程序。
 wsWebSocketContainer.failedAuthentication=无法处理http响应代码[{0}]。服务器不接受身份验证头。
-wsWebSocketContainer.httpRequestFailed=启动WebSocket连接的HTTP请求失败
+wsWebSocketContainer.httpRequestFailed=发起与 [{0}] 的 WebSocket 连接的 HTTP 请求失败
 wsWebSocketContainer.invalidExtensionParameters=服务器用客户端无法支持的扩展参数响应
 wsWebSocketContainer.invalidHeader=无法分析HTTP头,因为在[{0}]中没有冒号来分隔头名称和头值。已跳过标题。
 wsWebSocketContainer.invalidStatus=来自服务器[{0}]的HTTP响应不允许HTTP升级到WebSocket
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cf9826e45c..849db08f01 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -283,6 +283,9 @@
         Ensure that zip archives use UTC for file modification times to ensure
         repeatable builds across time zones. (markt)
       </fix>
+      <add>
+        Improvements to Chinese translations. (lihan)
+      </add>
     </changelog>
   </subsection>
 </section>


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