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 11:19:07 UTC

[tomcat] branch 8.5.x updated (f11b95c -> bf05105)

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 f11b95c  8.5.44 vote cancelled
     new 1148ee7  Increment version number for next development cycle
     new 2bffa95  Copy and modify import code from 9.0.x to import i18n back-ports
     new bf05105  Back-port improvements and corrections to English messages

The 3 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.properties.default                           |   2 +-
 .../apache/catalina/core/LocalStrings.properties   |   2 +-
 .../catalina/ha/deploy/LocalStrings.properties     |   2 +-
 .../catalina/ha/session/LocalStrings.properties    |  38 +++---
 .../apache/catalina/ha/tcp/LocalStrings.properties |   4 +-
 .../catalina/manager/LocalStrings.properties       |  10 +-
 .../apache/catalina/mapper/LocalStrings.properties |   2 +-
 .../catalina/session/LocalStrings.properties       |   2 +-
 .../catalina/startup/LocalStrings.properties       |  16 +--
 .../catalina/tribes/group/LocalStrings.properties  |   2 +-
 .../group/interceptors/LocalStrings.properties     |   4 +-
 .../catalina/tribes/io/LocalStrings.properties     |   2 +-
 .../tribes/membership/LocalStrings.properties      |   6 +-
 .../catalina/tribes/tipis/LocalStrings.properties  |   4 +-
 .../tribes/transport/bio/LocalStrings.properties   |   4 +-
 .../tribes/transport/nio/LocalStrings.properties   |   4 +-
 .../apache/catalina/util/LocalStrings.properties   |   4 +-
 .../apache/catalina/valves/LocalStrings.properties |   2 +-
 .../apache/coyote/http11/LocalStrings.properties   |   2 +-
 .../apache/coyote/http2/LocalStrings.properties    |   8 +-
 .../tomcat/buildutil/translate/Constants.java      |  16 +--
 .../apache/tomcat/buildutil/translate/Import.java  | 133 +++++++++++++++++++
 .../apache/tomcat/buildutil/translate/Utils.java   | 145 +++++++++++++++++++++
 .../util/descriptor/web/LocalStrings.properties    |   4 +-
 .../tomcat/util/http/LocalStrings.properties       |   2 +-
 .../util/http/parser/LocalStrings.properties       |   5 +-
 .../apache/tomcat/util/net/LocalStrings.properties |   4 +-
 .../tomcat/util/net/jsse/LocalStrings.properties   |   2 +-
 .../tomcat/util/scan/LocalStrings.properties       |   4 +-
 res/maven/mvn.properties.default                   |   2 +-
 webapps/docs/changelog.xml                         |  12 +-
 31 files changed, 368 insertions(+), 81 deletions(-)
 copy webapps/examples/WEB-INF/classes/checkbox/CheckTest.java => java/org/apache/tomcat/buildutil/translate/Constants.java (66%)
 create mode 100644 java/org/apache/tomcat/buildutil/translate/Import.java
 create mode 100644 java/org/apache/tomcat/buildutil/translate/Utils.java


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


[tomcat] 02/03: Copy and modify import code from 9.0.x to import i18n back-ports

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 2bffa95a4c5f016f173241a565b7cadefbc85ca5
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 11:43:29 2019 +0100

    Copy and modify import code from 9.0.x to import i18n back-ports
---
 .../tomcat/buildutil/translate/Constants.java      |  29 +++++
 .../apache/tomcat/buildutil/translate/Import.java  | 133 +++++++++++++++++++
 .../apache/tomcat/buildutil/translate/Utils.java   | 145 +++++++++++++++++++++
 3 files changed, 307 insertions(+)

diff --git a/java/org/apache/tomcat/buildutil/translate/Constants.java b/java/org/apache/tomcat/buildutil/translate/Constants.java
new file mode 100644
index 0000000..403daa6
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/Constants.java
@@ -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.
+*/
+package org.apache.tomcat.buildutil.translate;
+
+public class Constants {
+
+    public static final String L10N_PREFIX = "LocalStrings";
+    public static final String L10N_SUFFIX = ".properties";
+
+    public static final String[] SEARCH_DIRS = new String[] { "java", "webapps" };
+
+    public static final String STORAGE_DIR = ".settings/translations";
+
+    public static final String END_PACKAGE_MARKER = ".zzz.";
+}
diff --git a/java/org/apache/tomcat/buildutil/translate/Import.java b/java/org/apache/tomcat/buildutil/translate/Import.java
new file mode 100644
index 0000000..f309217
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/Import.java
@@ -0,0 +1,133 @@
+/*
+* 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.
+*/
+package org.apache.tomcat.buildutil.translate;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Properties;
+
+public class Import {
+
+    public static void main(String... args) throws IOException {
+        File root = new File(Constants.STORAGE_DIR);
+
+        for (File f : root.listFiles()) {
+            // Not robust but good enough
+            if (f.isFile() && f.getName().startsWith(Constants.L10N_PREFIX)) {
+                processFile(f);
+            }
+        }
+    }
+
+
+    @SuppressWarnings("null")
+    private static void processFile(File f) throws IOException {
+        String language = Utils.getLanguage(f.getName());
+
+        // Unlike the master branch, don't skip the original so we can import
+        // updates to the English translations
+        Properties props = Utils.load(f);
+        Object[] objKeys = props.keySet().toArray();
+        Arrays.sort(objKeys);
+
+        String currentPkg = null;
+        Writer w = null;
+        String currentGroup = "zzz";
+
+        for (Object objKey : objKeys) {
+            String key = (String) objKey;
+            CompositeKey cKey = new CompositeKey(key);
+
+            if (!cKey.pkg.equals(currentPkg)) {
+                currentPkg = cKey.pkg;
+                if (w != null) {
+                    w.close();
+                }
+                File outFile = new File(currentPkg.replace('.', File.separatorChar), Constants.L10N_PREFIX + language + Constants.L10N_SUFFIX);
+                FileOutputStream fos = new FileOutputStream(outFile);
+                w = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
+                insertLicense(w);
+            }
+
+            if (!currentGroup.equals(cKey.group)) {
+                currentGroup = cKey.group;
+                w.write(System.lineSeparator());
+            }
+
+            w.write(cKey.key + "=" + Utils.formatValue(props.getProperty(key)));
+            w.write(System.lineSeparator());
+        }
+        if (w != null) {
+            w.close();
+        }
+    }
+
+
+    private static void insertLicense(Writer w) throws IOException {
+        w.write("# Licensed to the Apache Software Foundation (ASF) under one or more");
+        w.write(System.lineSeparator());
+        w.write("# contributor license agreements.  See the NOTICE file distributed with");
+        w.write(System.lineSeparator());
+        w.write("# this work for additional information regarding copyright ownership.");
+        w.write(System.lineSeparator());
+        w.write("# The ASF licenses this file to You under the Apache License, Version 2.0");
+        w.write(System.lineSeparator());
+        w.write("# (the \"License\"); you may not use this file except in compliance with");
+        w.write(System.lineSeparator());
+        w.write("# the License.  You may obtain a copy of the License at");
+        w.write(System.lineSeparator());
+        w.write("#");
+        w.write(System.lineSeparator());
+        w.write("#     http://www.apache.org/licenses/LICENSE-2.0");
+        w.write(System.lineSeparator());
+        w.write("#");
+        w.write(System.lineSeparator());
+        w.write("# Unless required by applicable law or agreed to in writing, software");
+        w.write(System.lineSeparator());
+        w.write("# distributed under the License is distributed on an \"AS IS\" BASIS,");
+        w.write(System.lineSeparator());
+        w.write("# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
+        w.write(System.lineSeparator());
+        w.write("# See the License for the specific language governing permissions and");
+        w.write(System.lineSeparator());
+        w.write("# limitations under the License.");
+        w.write(System.lineSeparator());
+    }
+    private static class CompositeKey {
+
+        public final String pkg;
+        public final String key;
+        public final String group;
+
+        public CompositeKey(String in) {
+            int posPkg = in.indexOf(Constants.END_PACKAGE_MARKER);
+            pkg = in.substring(0, posPkg);
+            key = in.substring(posPkg + Constants.END_PACKAGE_MARKER.length());
+            int posGroup = key.indexOf('.');
+            if (posGroup == -1) {
+                group = "";
+            } else {
+                group = key.substring(0, posGroup);
+            }
+        }
+    }
+}
diff --git a/java/org/apache/tomcat/buildutil/translate/Utils.java b/java/org/apache/tomcat/buildutil/translate/Utils.java
new file mode 100644
index 0000000..8b69c79
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/Utils.java
@@ -0,0 +1,145 @@
+/*
+* 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.
+*/
+package org.apache.tomcat.buildutil.translate;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+public class Utils {
+
+    private static final Pattern ADD_CONTINUATION = Pattern.compile("\\n", Pattern.MULTILINE);
+    private static final Pattern ESCAPE_LEADING_SPACE = Pattern.compile("^(\\s)", Pattern.MULTILINE);
+    private static final Pattern FIX_SINGLE_QUOTE = Pattern.compile("(?<!')'(?!')", Pattern.MULTILINE);
+
+    private Utils() {
+        // Utility class. Hide default constructor.
+    }
+
+
+    static String getLanguage(String name) {
+        return name.substring(Constants.L10N_PREFIX.length(), name.length() - Constants.L10N_SUFFIX.length());
+    }
+
+
+    static Properties load(File f) {
+        Properties props = new Properties();
+
+        try (FileInputStream fis = new FileInputStream(f);
+                Reader r = new InputStreamReader(fis, StandardCharsets.UTF_8)) {
+            props.load(r);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return props;
+    }
+
+
+    static String formatValue(String in) {
+        String result = ADD_CONTINUATION.matcher(in).replaceAll("\\\\n\\\\\n");
+        if (result.endsWith("\\\n")) {
+            result = result.substring(0, result.length() - 2);
+        }
+        result = ESCAPE_LEADING_SPACE.matcher(result).replaceAll("\\\\$1");
+
+        if (result.contains("\n\\\t")) {
+            result = result.replace("\n\\\t", "\n\\t");
+        }
+
+        if (result.contains("[{0}]")) {
+            result = FIX_SINGLE_QUOTE.matcher(result).replaceAll("''");
+        }
+        return result;
+    }
+
+
+    static void processDirectory(File root, File dir, Map<String,Properties> translations) throws IOException {
+        for (File f : dir.listFiles()) {
+            if (f.isDirectory()) {
+                processDirectory(root, f, translations);
+            } else if (f.isFile()) {
+                processFile(root, f, translations);
+            }
+        }
+    }
+
+
+    static void processFile(File root, File f, Map<String,Properties> translations) throws IOException {
+        String name = f.getName();
+
+        // non-l10n files
+        if (!name.startsWith(Constants.L10N_PREFIX)) {
+            return;
+        }
+
+        // Determine language
+        String language = Utils.getLanguage(name);
+
+        String keyPrefix = getKeyPrefix(root, f);
+        Properties props = Utils.load(f);
+
+        // Create a Map for the language if one does not exist.
+        Properties translation = translations.get(language);
+        if (translation == null) {
+            translation = new Properties();
+            translations.put(language, translation);
+        }
+
+        // Add the properties from this file to the combined file, prefixing the
+        // key with the package name to ensure uniqueness.
+        for (Object obj : props.keySet()) {
+            String key = (String) obj;
+            String value = props.getProperty(key);
+
+            translation.put(keyPrefix + key, value);
+        }
+    }
+
+
+    static String getKeyPrefix(File root, File f) throws IOException {
+        String prefix = f.getParentFile().getCanonicalPath();
+        prefix = prefix.substring(root.getCanonicalPath().length() + 1);
+        prefix = prefix.replace(File.separatorChar, '.');
+        prefix = prefix + Constants.END_PACKAGE_MARKER;
+        return prefix;
+    }
+
+
+    static void export(String language, Properties translation, File storageDir) {
+        File out = new File(storageDir, Constants.L10N_PREFIX + language + Constants.L10N_SUFFIX);
+        try (FileOutputStream fos = new FileOutputStream(out);
+                Writer w = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) {
+            String[] keys = translation.keySet().toArray(new String[0]);
+            Arrays.sort(keys);
+            for (Object key : keys) {
+                w.write(key + "=" + Utils.formatValue(translation.getProperty((String) key)) + "\n");
+            }
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        }
+    }
+}


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


[tomcat] 01/03: Increment version number for next development cycle

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 1148ee7366cf7092636ca5963e59218ea7734a8c
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Aug 14 23:39:19 2019 +0100

    Increment version number for next development cycle
---
 build.properties.default         | 2 +-
 res/maven/mvn.properties.default | 2 +-
 webapps/docs/changelog.xml       | 4 +++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/build.properties.default b/build.properties.default
index e067b36..563b0db 100644
--- a/build.properties.default
+++ b/build.properties.default
@@ -25,7 +25,7 @@
 # ----- Version Control Flags -----
 version.major=8
 version.minor=5
-version.build=45
+version.build=46
 version.patch=0
 version.suffix=-dev
 
diff --git a/res/maven/mvn.properties.default b/res/maven/mvn.properties.default
index 66a9337..ece9033 100644
--- a/res/maven/mvn.properties.default
+++ b/res/maven/mvn.properties.default
@@ -39,7 +39,7 @@ maven.asf.release.repo.url=https://repository.apache.org/service/local/staging/d
 maven.asf.release.repo.repositoryId=apache.releases.https
 
 # Release version info
-maven.asf.release.deploy.version=8.5.45
+maven.asf.release.deploy.version=8.5.46
 
 #Where do we load the libraries from
 tomcat.lib.path=../../output/build/lib
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 2d0cb26..47f9854 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -44,7 +44,9 @@
   They eventually become mixed with the numbered issues (i.e., numbered
   issues do not "pop up" wrt. others).
 -->
-<section name="Tomcat 8.5.45 (markt)" rtext="in development">
+<section name="Tomcat 8.5.46 (markt)" rtext="in development">
+</section>
+<section name="Tomcat 8.5.45 (markt)" rtext="release in progress">
   <subsection name="Coyote">
     <changelog>
       <scode>


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


[tomcat] 03/03: Back-port improvements and corrections to English messages

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 bf051059e5672d9bfe9d914f22bcb6e025c09ff7
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 12:18:12 2019 +0100

    Back-port improvements and corrections to English messages
---
 .../apache/catalina/core/LocalStrings.properties   |  2 +-
 .../catalina/ha/deploy/LocalStrings.properties     |  2 +-
 .../catalina/ha/session/LocalStrings.properties    | 38 +++++++++++-----------
 .../apache/catalina/ha/tcp/LocalStrings.properties |  4 +--
 .../catalina/manager/LocalStrings.properties       | 10 +++---
 .../apache/catalina/mapper/LocalStrings.properties |  2 +-
 .../catalina/session/LocalStrings.properties       |  2 +-
 .../catalina/startup/LocalStrings.properties       | 16 ++++-----
 .../catalina/tribes/group/LocalStrings.properties  |  2 +-
 .../group/interceptors/LocalStrings.properties     |  4 +--
 .../catalina/tribes/io/LocalStrings.properties     |  2 +-
 .../tribes/membership/LocalStrings.properties      |  6 ++--
 .../catalina/tribes/tipis/LocalStrings.properties  |  4 +--
 .../tribes/transport/bio/LocalStrings.properties   |  4 +--
 .../tribes/transport/nio/LocalStrings.properties   |  4 +--
 .../apache/catalina/util/LocalStrings.properties   |  4 +--
 .../apache/catalina/valves/LocalStrings.properties |  2 +-
 .../apache/coyote/http11/LocalStrings.properties   |  2 +-
 .../apache/coyote/http2/LocalStrings.properties    |  8 ++---
 .../util/descriptor/web/LocalStrings.properties    |  4 +--
 .../tomcat/util/http/LocalStrings.properties       |  2 +-
 .../util/http/parser/LocalStrings.properties       |  5 +--
 .../apache/tomcat/util/net/LocalStrings.properties |  4 +--
 .../tomcat/util/net/jsse/LocalStrings.properties   |  2 +-
 .../tomcat/util/scan/LocalStrings.properties       |  4 +--
 webapps/docs/changelog.xml                         |  8 +++++
 26 files changed, 78 insertions(+), 69 deletions(-)

diff --git a/java/org/apache/catalina/core/LocalStrings.properties b/java/org/apache/catalina/core/LocalStrings.properties
index 197cb49..8f943c5 100644
--- a/java/org/apache/catalina/core/LocalStrings.properties
+++ b/java/org/apache/catalina/core/LocalStrings.properties
@@ -186,7 +186,7 @@ standardContext.parameter.required=Both parameter name and parameter value are r
 standardContext.pathInvalid=A context path must either be an empty string or start with a ''/'' and do not end with a ''/''. The path [{0}] does not meet these criteria and has been changed to [{1}]
 standardContext.postconstruct.duplicate=Duplicate post construct method definition for class [{0}]
 standardContext.postconstruct.required=Both fully qualified class name and method name are required
-standardContext.predestroy.duplicate=Duplicate pre destroy method definition for class [{0}]
+standardContext.predestroy.duplicate=Duplicate @PreDestroy method definition for class [{0}]
 standardContext.predestroy.required=Both fully qualified class name and method name are required
 standardContext.reloadingCompleted=Reloading Context with name [{0}] is completed
 standardContext.reloadingStarted=Reloading Context with name [{0}] has started
diff --git a/java/org/apache/catalina/ha/deploy/LocalStrings.properties b/java/org/apache/catalina/ha/deploy/LocalStrings.properties
index b8b68e7..400593e 100644
--- a/java/org/apache/catalina/ha/deploy/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/deploy/LocalStrings.properties
@@ -19,7 +19,7 @@ farmWarDeployer.deployEnd=Deployment from [{0}] finished.
 farmWarDeployer.fileCopyFail=Unable to copy from [{0}] to [{1}]
 farmWarDeployer.hostOnly=FarmWarDeployer can only work as host cluster subelement!
 farmWarDeployer.hostParentEngine=FarmWarDeployer can only work if parent of [{0}] is an engine!
-farmWarDeployer.mbeanNameFail=Can''t construct MBean object name for engine [{0}] and host [{1}]
+farmWarDeployer.mbeanNameFail=Cannot construct MBean object name for engine [{0}] and host [{1}]
 farmWarDeployer.modInstall=Installing webapp [{0}] from [{1}]
 farmWarDeployer.modInstallFail=Unable to install WAR file
 farmWarDeployer.modRemoveFail=No removal
diff --git a/java/org/apache/catalina/ha/session/LocalStrings.properties b/java/org/apache/catalina/ha/session/LocalStrings.properties
index eb58879..406a2cc 100644
--- a/java/org/apache/catalina/ha/session/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/session/LocalStrings.properties
@@ -20,14 +20,14 @@ backupManager.stopped=Manager [{0}] is stopping
 
 clusterSessionListener.noManager=Context manager doesn''t exist:[{0}]
 
-deltaManager.createMessage.access=Manager [{0}]: create session message [{1}] access.
-deltaManager.createMessage.accessChangePrimary=Manager [{0}]: create session message [{1}] access to change primary.
-deltaManager.createMessage.allSessionData=Manager [{0}] send all session data.
-deltaManager.createMessage.allSessionTransfered=Manager [{0}] send all session data transfered
-deltaManager.createMessage.delta=Manager [{0}]: create session message [{1}] delta request.
-deltaManager.createMessage.expire=Manager [{0}]: create session message [{1}] expire.
+deltaManager.createMessage.access=Manager [{0}]: create session access message for session [{1}]
+deltaManager.createMessage.accessChangePrimary=Manager [{0}]: create change primary node message for session [{1}]
+deltaManager.createMessage.allSessionData=Manager [{0}] sent all session data.
+deltaManager.createMessage.allSessionTransfered=Manager [{0}] sent all session data transferred
+deltaManager.createMessage.delta=Manager [{0}]: create delta request message for session [{1}]
+deltaManager.createMessage.expire=Manager [{0}]: create session expire message for session [{1}]
 deltaManager.createMessage.unableCreateDeltaRequest=Unable to serialize delta request for sessionid [{0}]
-deltaManager.createSession.newSession=Created a DeltaSession with Id [{0}] Total count=[{1}]
+deltaManager.createSession.newSession=Created a new DeltaSession with Id [{0}] Total count=[{1}]
 deltaManager.dropMessage=Manager [{0}]: Drop message [{1}] inside GET_ALL_SESSIONS sync phase start date [{2}] message date [{3}]
 deltaManager.expireSessions=Manager [{0}] expiring sessions upon shutdown
 deltaManager.foundMasterMember=Found for context [{0}] the replication master member [{1}]
@@ -36,26 +36,26 @@ deltaManager.loading.existing.session=overload existing session [{0}]
 deltaManager.loading.ioe=IOException while loading persisted sessions: [{0}]
 deltaManager.managerLoad=Exception loading sessions from persistent storage
 deltaManager.noCluster=Starting... no cluster associated with this context: [{0}]
-deltaManager.noContextManager=Manager [{0}]: No context manager send at [{1}] received in [{2}] ms.
+deltaManager.noContextManager=Manager [{0}]: In reply to the ''Get all session data'' message sent at [{1}], a ''No matching context manager'' message was received after [{2}] ms.
 deltaManager.noMasterMember=Starting... with no other member for context [{0}] at domain [{1}]
 deltaManager.noMembers=Manager [{0}]: skipping state transfer. No members active in cluster group.
-deltaManager.noSessionState=Manager [{0}]: No session state send at [{1}] received, timing out after [{2}] ms.
-deltaManager.receiveMessage.accessed=Manager [{0}]: received session [{1}] accessed.
-deltaManager.receiveMessage.allSessionDataAfter=Manager [{0}]: session state deserialized
-deltaManager.receiveMessage.allSessionDataBegin=Manager [{0}]: received session state data
-deltaManager.receiveMessage.createNewSession=Manager [{0}]: received session [{1}] created.
-deltaManager.receiveMessage.delta=Manager [{0}]: received session [{1}] delta.
-deltaManager.receiveMessage.delta.unknown=Manager [{0}]: received unknown session [{1}] delta.
+deltaManager.noSessionState=Manager [{0}]: No session state sent at [{1}] received, timing out after [{2}] ms.
+deltaManager.receiveMessage.accessed=Manager [{0}]: received session accessed message for session [{1}]
+deltaManager.receiveMessage.allSessionDataAfter=Manager [{0}]: all session state deserialized
+deltaManager.receiveMessage.allSessionDataBegin=Manager [{0}]: received all session state data
+deltaManager.receiveMessage.createNewSession=Manager [{0}]: received session created message for session [{1}]
+deltaManager.receiveMessage.delta=Manager [{0}]: received session delta message for session [{1}]
+deltaManager.receiveMessage.delta.unknown=Manager [{0}]: received session delta for unknown session [{1}]
 deltaManager.receiveMessage.error=Manager [{0}]: Unable to receive message through TCP channel
 deltaManager.receiveMessage.eventType=Manager [{0}]: Received SessionMessage of type=[{1}] from [{2}]
-deltaManager.receiveMessage.expired=Manager [{0}]: received session [{1}] expired.
+deltaManager.receiveMessage.expired=Manager [{0}]: received session expired message for session [{1}]
 deltaManager.receiveMessage.noContextManager=Manager [{0}] received from node [{1}:{2}] no context manager.
 deltaManager.receiveMessage.transfercomplete=Manager [{0}] received from node [{1}:{2}] session state transfered.
 deltaManager.receiveMessage.unloadingAfter=Manager [{0}]: unloading sessions complete
 deltaManager.receiveMessage.unloadingBegin=Manager [{0}]: start unloading sessions
 deltaManager.registerCluster=Register manager [{0}] to cluster element [{1}] with name [{2}]
 deltaManager.sendMessage.newSession=Manager [{0}] send new session [{1}]
-deltaManager.sessionReceived=Manager [{0}]; session state send at [{1}] received in [{2}] ms.
+deltaManager.sessionReceived=Manager [{0}]; session state sent at [{1}] received in [{2}] ms.
 deltaManager.startClustering=Starting clustering manager at [{0}]
 deltaManager.stopped=Manager [{0}] is stopping
 deltaManager.unableSerializeSessionID=Unable to serialize sessionID [{0}]
@@ -69,11 +69,11 @@ deltaRequest.ssid.mismatch=Session id mismatch, not executing the delta request
 deltaRequest.ssid.null=Session Id is null for setSessionId
 deltaRequest.wrongPrincipalClass=ClusterManager only support GenericPrincipal. Your realm used principal class [{0}].
 
-deltaSession.notifying=Notifying cluster of expiration primary=[{0}] sessionId [{1}]
+deltaSession.notifying=Notifying cluster of session expiration: primary=[{0}], sessionId [{1}]
 deltaSession.readSession=readObject() loading session [{0}]
 deltaSession.writeSession=writeObject() storing session [{0}]
 
-jvmRoute.cannotFindSession=Can''t find session [{0}]
+jvmRoute.cannotFindSession=Cannot find session [{0}]
 jvmRoute.changeSession=Changed session from [{0}] to [{1}]
 jvmRoute.failover=Detected a failover with different jvmRoute - orginal route: [{0}] new one: [{1}] at session id [{2}]
 jvmRoute.foundManager=Found Cluster Manager [{0}] at [{1}]
diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings.properties b/java/org/apache/catalina/ha/tcp/LocalStrings.properties
index c380e26..2214450 100644
--- a/java/org/apache/catalina/ha/tcp/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings.properties
@@ -25,9 +25,9 @@ ReplicationValve.resetDeltaRequest=Cluster is standalone: reset Session Request
 ReplicationValve.send.failure=Unable to perform replication request.
 ReplicationValve.send.invalid.failure=Unable to send session [id={0}] invalid message over cluster.
 ReplicationValve.session.found=Context [{0}]: Found session [{1}] but it isn''t a ClusterSession.
-ReplicationValve.session.indicator=Context [{0}]: Primarity of session [{0}] in request attribute [{1}] is [{2}].
+ReplicationValve.session.indicator=Context [{0}]: Primarity of session [{1}] in request attribute [{2}] is [{3}].
 ReplicationValve.session.invalid=Context [{0}]: Requested session [{1}] is invalid, removed or not replicated at this node.
-ReplicationValve.stats=Average request time= [{0}] ms for Cluster overhead time=[{1}] ms for [{2}] requests [{3}] filter requests [{4}] send requests [{5}] cross context requests (Request=[{6}] ms Cluster=[{7}] ms).
+ReplicationValve.stats=Average request time=[{0}] ms with cluster overhead time=[{1}] ms for [{2}] requests, [{3}] send requests, [{4}] cross context requests, and [{5}] filter requests (Total request=[{6}] ms, total cluster request=[{7}] ms).
 
 simpleTcpCluster.clustermanager.cloneFailed=Unable to clone cluster manager, defaulting to org.apache.catalina.ha.session.DeltaManager
 simpleTcpCluster.clustermanager.notImplement=Manager [{0}] does not implement ClusterManager, addition to cluster has been aborted.
diff --git a/java/org/apache/catalina/manager/LocalStrings.properties b/java/org/apache/catalina/manager/LocalStrings.properties
index 6588bea..e41c483 100644
--- a/java/org/apache/catalina/manager/LocalStrings.properties
+++ b/java/org/apache/catalina/manager/LocalStrings.properties
@@ -38,18 +38,18 @@ htmlManagerServlet.connectorStateMaxProcessingTime=Max processing time:
 htmlManagerServlet.connectorStateMaxThreads=Max threads:
 htmlManagerServlet.connectorStateProcessingTime=Processing time:
 htmlManagerServlet.connectorStateRequestCount=Request count:
-htmlManagerServlet.connectorStateTableTitleBRecv=B Recv
-htmlManagerServlet.connectorStateTableTitleBSent=B Sent
+htmlManagerServlet.connectorStateTableTitleBRecv=Bytes Recv
+htmlManagerServlet.connectorStateTableTitleBSent=Bytes Sent
 htmlManagerServlet.connectorStateTableTitleClientAct=Client (Actual)
 htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwarded)
 htmlManagerServlet.connectorStateTableTitleRequest=Request
 htmlManagerServlet.connectorStateTableTitleStage=Stage
 htmlManagerServlet.connectorStateTableTitleTime=Time
 htmlManagerServlet.connectorStateTableTitleVHost=VHost
-htmlManagerServlet.connectorStateThreadBusy=Current thread busy:
+htmlManagerServlet.connectorStateThreadBusy=Current threads busy:
 htmlManagerServlet.connectorStateThreadCount=Current thread count:
 htmlManagerServlet.deployButton=Deploy
-htmlManagerServlet.deployConfig=XML Configuration file URL:
+htmlManagerServlet.deployConfig=XML Configuration file path:
 htmlManagerServlet.deployPath=Context Path (required):
 htmlManagerServlet.deployServer=Deploy directory or WAR file located on server
 htmlManagerServlet.deployTitle=Deploy
@@ -60,7 +60,7 @@ htmlManagerServlet.deployUploadInServerXml=FAIL - War file [{0}] cannot be uploa
 htmlManagerServlet.deployUploadNoFile=FAIL - File upload failed, no file
 htmlManagerServlet.deployUploadNotWar=FAIL - File uploaded [{0}] must be a .war
 htmlManagerServlet.deployUploadWarExists=FAIL - War file [{0}] already exists on server
-htmlManagerServlet.deployWar=WAR or Directory URL:
+htmlManagerServlet.deployWar=WAR or Directory path:
 htmlManagerServlet.diagnosticsLeak=Check to see if a web application has caused a memory leak on stop, reload or undeploy
 htmlManagerServlet.diagnosticsLeakButton=Find leaks
 htmlManagerServlet.diagnosticsLeakWarning=This diagnostic check will trigger a full garbage collection. Use it with extreme caution on production systems.
diff --git a/java/org/apache/catalina/mapper/LocalStrings.properties b/java/org/apache/catalina/mapper/LocalStrings.properties
index b3574fa..74e5b46 100644
--- a/java/org/apache/catalina/mapper/LocalStrings.properties
+++ b/java/org/apache/catalina/mapper/LocalStrings.properties
@@ -25,7 +25,7 @@ mapperListener.pauseContext=Register Context [{0}] as being reloaded for service
 mapperListener.registerContext=Register Context [{0}] for service [{1}]
 mapperListener.registerHost=Register host [{0}] at domain [{1}] for service [{2}]
 mapperListener.registerWrapper=Register Wrapper [{0}] in Context [{1}] for service [{2}]
-mapperListener.unknownDefaultHost=Unknown default host [{0}] for service [{1}]
+mapperListener.unknownDefaultHost=Unknown default host [{0}] for service [{1}]. Tomcat will not be able process HTTP/1.0 requests that do not specify a host name.
 mapperListener.unregisterContext=Unregister Context [{0}] for service [{1}]
 mapperListener.unregisterHost=Unregister host [{0}] at domain [{1}] for service [{2}]
 mapperListener.unregisterWrapper=Unregister Wrapper [{0}] in Context [{1}] for service [{2}]
diff --git a/java/org/apache/catalina/session/LocalStrings.properties b/java/org/apache/catalina/session/LocalStrings.properties
index 0b573e9..e98748b 100644
--- a/java/org/apache/catalina/session/LocalStrings.properties
+++ b/java/org/apache/catalina/session/LocalStrings.properties
@@ -41,7 +41,7 @@ managerBase.sessionTimeout=Invalid session timeout setting [{0}]
 managerBase.setContextNotNew=It is illegal to call setContext() to change the Context associated with a Manager if the Manager is not in the NEW state
 
 persistentManager.backupMaxIdle=Backing up session [{0}] to Store, idle for [{1}] seconds
-persistentManager.deserializeError=Error deserializing Session [{0}]: [{1}]
+persistentManager.deserializeError=Error deserializing Session [{0}]
 persistentManager.loading=Loading [{0}] persisted sessions
 persistentManager.serializeError=Error serializing Session [{0}]: [{1}]
 persistentManager.storeKeysException=Unable to determine the list of session IDs for sessions in the session store, assuming that the store is empty
diff --git a/java/org/apache/catalina/startup/LocalStrings.properties b/java/org/apache/catalina/startup/LocalStrings.properties
index 8b1a617..306b35e 100644
--- a/java/org/apache/catalina/startup/LocalStrings.properties
+++ b/java/org/apache/catalina/startup/LocalStrings.properties
@@ -18,7 +18,7 @@ catalina.noCluster=Cluster RuleSet not found due to [{0}]. Cluster configuration
 catalina.serverStartFail=The required Server component failed to start so Tomcat is unable to start.
 catalina.shutdownHookFail=The shutdown hook experienced an error while trying to stop the server
 catalina.stopServer=No shutdown port configured. Shut down server through OS signal. Server not shut down.
-catalina.stopServer.connectException=Could not contact [{0}:[{1}]]. Tomcat may not be running.
+catalina.stopServer.connectException=Could not contact [{0}:{1}]. Tomcat may not be running.
 
 connector.noSetExecutor=Connector [{0}] does not support external executors. Method setExecutor(java.util.concurrent.Executor) not found.
 connector.noSetSSLImplementationName=Connector [{0}] does not support changing the SSL implementation. Method setSslImplementationName(String) not found.
@@ -103,12 +103,12 @@ hostConfig.context.remove=Error while removing context [{0}]
 hostConfig.context.restart=Error during context [{0}] restart
 hostConfig.createDirs=Unable to create directory for deployment: [{0}]
 hostConfig.deploy.error=Exception while deploying web application directory [{0}]
-hostConfig.deployDescriptor=Deploying configuration descriptor [{0}]
+hostConfig.deployDescriptor=Deploying deployment descriptor [{0}]
 hostConfig.deployDescriptor.blocked=The web application with context path [{0}] was not deployed because it contained a deployment descriptor [{1}] which may include configuration necessary for the secure deployment of the application but processing of deployment descriptors is prevented by the deployXML setting of this host. An appropriate descriptor should be created at [{2}] to deploy this application.
-hostConfig.deployDescriptor.error=Error deploying configuration descriptor [{0}]
-hostConfig.deployDescriptor.finished=Deployment of configuration descriptor [{0}] has finished in [{1}] ms
+hostConfig.deployDescriptor.error=Error deploying deployment descriptor [{0}]
+hostConfig.deployDescriptor.finished=Deployment of deployment descriptor [{0}] has finished in [{1}] ms
 hostConfig.deployDescriptor.localDocBaseSpecified=A docBase [{0}] inside the host appBase has been specified, and will be ignored
-hostConfig.deployDescriptor.threaded.error=Error waiting for multi-thread deployment of context descriptors to complete
+hostConfig.deployDescriptor.threaded.error=Error waiting for multi-thread deployment of deployment descriptors to complete
 hostConfig.deployDir=Deploying web application directory [{0}]
 hostConfig.deployDir.error=Error deploying web application directory [{0}]
 hostConfig.deployDir.finished=Deployment of web application directory [{0}] has finished in [{1}] ms
@@ -128,7 +128,7 @@ hostConfig.illegalWarName=The war name [{0}] is invalid. The archive will be ign
 hostConfig.jmx.register=Register context [{0}] failed
 hostConfig.jmx.unregister=Unregister context [{0}] failed
 hostConfig.reload=Reloading context [{0}]
-hostConfig.resourceNotAbsolute=Unable to remove resource from context [{0}] since [{1}] is not absolute
+hostConfig.resourceNotAbsolute=Unable to remove resource from context [{0}] since [{1}] is not an absolute path
 hostConfig.start=HostConfig: Processing START
 hostConfig.stop=HostConfig: Processing STOP
 hostConfig.undeploy=Undeploying context [{0}]
@@ -158,8 +158,8 @@ versionLoggerListener.os.name=OS Name:               {0}
 versionLoggerListener.os.version=OS Version:            {0}
 versionLoggerListener.prop=System property:       {0} = {1}
 versionLoggerListener.serverInfo.server.built=Server built:          {0}
-versionLoggerListener.serverInfo.server.number=Server number:         {0}
-versionLoggerListener.serverInfo.server.version=Server version:        {0}
+versionLoggerListener.serverInfo.server.number=Server version number: {0}
+versionLoggerListener.serverInfo.server.version=Server version name:   {0}
 versionLoggerListener.vm.vendor=JVM Vendor:            {0}
 versionLoggerListener.vm.version=JVM Version:           {0}
 
diff --git a/java/org/apache/catalina/tribes/group/LocalStrings.properties b/java/org/apache/catalina/tribes/group/LocalStrings.properties
index 3b22f09..315e095 100644
--- a/java/org/apache/catalina/tribes/group/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/group/LocalStrings.properties
@@ -18,7 +18,7 @@ channelCoordinator.invalid.startLevel=Invalid start level, valid levels are:SND_
 
 groupChannel.listener.alreadyExist=Listener already exists:[{0}][{1}]
 groupChannel.noDestination=No destination given
-groupChannel.nullMessage=Can't send a NULL message
+groupChannel.nullMessage=Cannot send a NULL message
 groupChannel.optionFlag.conflict=Interceptor option flag conflict: [{0}]
 groupChannel.receiving.error=Error receiving message:
 groupChannel.sendFail.noRpcChannelReply=Unable to find rpc channel, failed to send NoRpcChannelReply.
diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
index 3a1170d..854dfca 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-domainFilterInterceptor.member.refused=Member was refused to join cluster[{0}]
+domainFilterInterceptor.member.refused=Member [{0}] was refused to join cluster
 domainFilterInterceptor.message.refused=Received message from cluster[{0}] was refused.
 
 encryptInterceptor.algorithm.required=Encryption algorithm is required, fully-specified e.g. AES/CBC/PKCS5Padding
@@ -72,7 +72,7 @@ throughputInterceptor.report=ThroughputInterceptor Report[\n\
 \tSent:{2} MB (application)\n\
 \tTime:{3} seconds\n\
 \tTx Speed:{4} MB/sec (total)\n\
-\tTxSpeed:{5} MB/sec (application)\n\
+\tTx Speed:{5} MB/sec (application)\n\
 \tError Msg:{6}\n\
 \tRx Msg:{7} messages\n\
 \tRx Speed:{8} MB/sec (since 1st msg)\n\
diff --git a/java/org/apache/catalina/tribes/io/LocalStrings.properties b/java/org/apache/catalina/tribes/io/LocalStrings.properties
index 4d84cc4..f7ef725 100644
--- a/java/org/apache/catalina/tribes/io/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/io/LocalStrings.properties
@@ -23,5 +23,5 @@ xByteBuffer.discarded.invalidHeader=Discarded the package, invalid header
 xByteBuffer.no.package=No package exists in XByteBuffer
 xByteBuffer.size.larger.buffer=Size is larger than existing buffer.
 xByteBuffer.unableCreate=Unable to create data package, buffer is too small.
-xByteBuffer.unableTrim=Can''t trim more bytes than are available. length:[{0}] trim:[{1}]
+xByteBuffer.unableTrim=Cannot trim more bytes than are available. length:[{0}] trim:[{1}]
 xByteBuffer.wrong.class=Message has the wrong class. It should implement Serializable, instead it is:[{0}]
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings.properties b/java/org/apache/catalina/tribes/membership/LocalStrings.properties
index bd2742b..a4bd33a 100644
--- a/java/org/apache/catalina/tribes/membership/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings.properties
@@ -32,7 +32,7 @@ mcastServiceImpl.memberDisappeared.failed=Unable to process member disappeared m
 mcastServiceImpl.packet.tooLong=Multicast packet received was too long, dropping package:[{0}]
 mcastServiceImpl.receive.running=McastService.receive already running.
 mcastServiceImpl.recovery=Tribes membership, running recovery thread, multicasting is not functional.
-mcastServiceImpl.recovery.failed=Recovery attempt [{0}] failed, trying again in [{1}] seconds
+mcastServiceImpl.recovery.failed=Recovery attempt number [{0}] failed, trying again in [{1}] seconds
 mcastServiceImpl.recovery.startFailed=Recovery thread failed to start membership service.
 mcastServiceImpl.recovery.stopFailed=Recovery thread failed to stop membership service.
 mcastServiceImpl.recovery.successful=Membership recovery was successful.
@@ -48,9 +48,9 @@ mcastServiceImpl.waitForMembers.start=Sleeping for [{0}] milliseconds to establi
 
 memberImpl.invalid.package.begin=Invalid package, should start with:[{0}]
 memberImpl.invalid.package.end=Invalid package, should end with:[{0}]
-memberImpl.large.payload=Payload is to large for tribes to handle.
+memberImpl.large.payload=Payload is too large for tribes to handle.
 memberImpl.notEnough.bytes=Not enough bytes in member package.
-memberImpl.package.small=Member package to small to validate.
+memberImpl.package.small=Member package too small to validate.
 memberImpl.unableParse.hostname=Unable to parse hostname.
 
 staticMember.invalid.uuidLength=UUID must be exactly 16 bytes, not:[{0}]
diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings.properties
index 7c37535..5aff1d7 100644
--- a/java/org/apache/catalina/tribes/tipis/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/tipis/LocalStrings.properties
@@ -44,8 +44,8 @@ abstractReplicatedMap.unableStart=Unable to start replicated map.
 lazyReplicatedMap.unableReplicate.backup=Unable to replicate backup key:[{0}] to backup:[{1}]. Reason:[{2}]
 lazyReplicatedMap.unableReplicate.proxy=Unable to replicate proxy key:[{0}] to backup:[{1}]. Reason:[{2}]
 
-mapMessage.deserialize.error.key=Deserialization error of the MapMessage.key
-mapMessage.deserialize.error.value=Deserialization error of the MapMessage.value
+mapMessage.deserialize.error.key=Failed to deserialize MapMessage key
+mapMessage.deserialize.error.value=Failed to deserialize MapMessage value
 
 replicatedMap.member.disappeared=Member[{0}] disappeared. Related map entries will be relocated to the new node.
 replicatedMap.relocate.complete=Relocation of map entries was complete in [{0}] ms.
diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties
index 17b9231..089e44a 100644
--- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties
@@ -17,7 +17,7 @@ bioReceiver.already.started=ServerSocket already started
 bioReceiver.run.fail=Unable to run replication listener.
 bioReceiver.socket.closeFailed=Failed to close socket
 bioReceiver.start.fail=Unable to start cluster receiver
-bioReceiver.threadpool.fail=ThreadPool can initialized. Listener not started
+bioReceiver.threadpool.fail=ThreadPool cannot be initialized. Listener not started
 bioReceiver.threads.busy=All BIO server replication threads are busy, unable to handle more requests until a thread is freed up.
 
 bioReplicationTask.messageDataReceived.error=Error thrown from messageDataReceived.
@@ -37,4 +37,4 @@ bioSender.openSocket.failure=Open sender socket [{0}:{1,number,integer}] failure
 bioSender.send.again=Send data again to [{0}:{1,number,integer}]
 
 pooledMultiSender.retrieve.fail=Unable to retrieve a sender from the sender pool
-pooledMultiSender.unable.retrieve.sender=Unable to retrieve a data sender, time out[{0}] ms) error.
+pooledMultiSender.unable.retrieve.sender=Unable to retrieve a data sender, time out([{0}] ms) error.
diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties
index d161e12..d59e0d7 100644
--- a/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties
@@ -22,7 +22,7 @@ nioReceiver.start.fail=Unable to start cluster receiver
 nioReceiver.stop.fail=Unable to close cluster receiver selector
 nioReceiver.stop.threadRunning=The NioReceiver thread did not stop in a timely manner. Errors may be observed when the selector is closed.
 nioReceiver.threadpool.fail=ThreadPool cannot be initialized. Listener not started.
-nioReceiver.threadsExhausted=Channel key is registered, but has had no interest ops for the last [{0}] ms. (cancelled: [{1}]):[{2}] last access:[{3} Possible cause: all threads used, perform thread dump
+nioReceiver.threadsExhausted=Channel key is registered, but has had no interest ops for the last [{0}] ms. (cancelled: [{1}]):[{2}] last access:[{3}] Possible cause: all threads used, perform thread dump
 
 nioReplicationTask.error.register.key=Error registering key for read:[{0}]
 nioReplicationTask.exception.drainChannel=Exception caught in TcpReplicationThread.drainChannel.
@@ -35,7 +35,7 @@ nioSender.datagram.already.established=Datagram channel has already been establi
 nioSender.key.inValid=Key is not valid, it must have been cancelled.
 nioSender.not.connected=NioSender is not connected, this should not occur.
 nioSender.receive.failedAck=Received a failed ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA
-nioSender.sender.disconnected=Sender has been disconnected, can't selection key.
+nioSender.sender.disconnected=Sender has been disconnected, can't process selection key.
 nioSender.socketChannel.already.established=Socket channel has already been established. Connection might be in progress.
 nioSender.unable.disconnect=Unable to disconnect NioSender. msg=[{0}]
 nioSender.unable.receive.ack=Unable to receive an ack message. EOF on socket channel has been reached.
diff --git a/java/org/apache/catalina/util/LocalStrings.properties b/java/org/apache/catalina/util/LocalStrings.properties
index 18ecbef..bd26cdb 100644
--- a/java/org/apache/catalina/util/LocalStrings.properties
+++ b/java/org/apache/catalina/util/LocalStrings.properties
@@ -19,7 +19,7 @@ customObjectInputStream.logRequired=A valid logger is required for class name fi
 customObjectInputStream.nomatch=The class [{0}] did not match the regular expression [{1}] for classes allowed to be deserialized
 
 extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: Required extension [{2}] not found.
-extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Failure to find [{1}] required extension(s).
+extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Failed to find [{1}] required extension(s).
 extensionValidator.failload=Failure loading extension [{0}]
 extensionValidator.web-application-manifest=Web Application Manifest
 
@@ -32,7 +32,7 @@ lifecycleBase.alreadyDestroyed=The destroy() method was called on component [{0}
 lifecycleBase.alreadyStarted=The start() method was called on component [{0}] after start() had already been called. The second call will be ignored.
 lifecycleBase.alreadyStopped=The stop() method was called on component [{0}] after stop() had already been called. The second call will be ignored.
 lifecycleBase.destroyFail=Failed to destroy component [{0}]
-lifecycleBase.destroyStopFail=Calling stop() on failed component [{0}] to trigger clean-up did not complete.
+lifecycleBase.destroyStopFail=Called stop() on failed component [{0}] to trigger clean-up but it failed too
 lifecycleBase.initFail=Failed to initialize component [{0}]
 lifecycleBase.invalidTransition=An invalid Lifecycle transition was attempted ([{0}]) for component [{1}] in state [{2}]
 lifecycleBase.setState=Setting state for [{0}] to [{1}]
diff --git a/java/org/apache/catalina/valves/LocalStrings.properties b/java/org/apache/catalina/valves/LocalStrings.properties
index 07a7d68..8165455 100644
--- a/java/org/apache/catalina/valves/LocalStrings.properties
+++ b/java/org/apache/catalina/valves/LocalStrings.properties
@@ -113,7 +113,7 @@ http.504.desc=The server, while acting as a gateway or proxy, did not receive a
 http.504.reason=Gateway Timeout
 http.505.desc=The server does not support, or refuses to support, the major version of HTTP that was used in the request message.
 http.505.reason=HTTP Version Not Supported
-http.506.desc=The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is thereforenot a proper end point in the negotiation process.
+http.506.desc=The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.
 http.506.reason=Variant Also Negotiates
 http.507.desc=The method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request.
 http.507.reason=Insufficient Storage
diff --git a/java/org/apache/coyote/http11/LocalStrings.properties b/java/org/apache/coyote/http11/LocalStrings.properties
index 187b954..f39bb91 100644
--- a/java/org/apache/coyote/http11/LocalStrings.properties
+++ b/java/org/apache/coyote/http11/LocalStrings.properties
@@ -18,7 +18,7 @@ abstractHttp11Protocol.alpnWithNoAlpn=The upgrade handler [{0}] for [{1}] only s
 abstractHttp11Protocol.httpUpgradeConfigured=The [{0}] connector has been configured to support HTTP upgrade to [{1}]
 
 http11processor.fallToDebug=\n\
-\ Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
+\ Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
 http11processor.header.parse=Error parsing HTTP request header
 http11processor.neverused=This method should never be used
 http11processor.request.finish=Error finishing request
diff --git a/java/org/apache/coyote/http2/LocalStrings.properties b/java/org/apache/coyote/http2/LocalStrings.properties
index b4f9925..f18a7ca 100644
--- a/java/org/apache/coyote/http2/LocalStrings.properties
+++ b/java/org/apache/coyote/http2/LocalStrings.properties
@@ -53,7 +53,7 @@ http2Parser.headers.wrongFrameType=Connection [{0}], headers in progress for str
 http2Parser.headers.wrongStream=Connection [{0}], headers in progress for stream [{1}] but a frame for stream [{2}] was received
 http2Parser.nonZeroPadding=Connection [{0}], Stream [{1}], Non-zero padding received
 http2Parser.payloadTooBig=The payload is [{0}] bytes long but the maximum frame size is [{1}]
-http2Parser.preface.invalid=Invalid connection preface [{0}] presented
+http2Parser.preface.invalid=Invalid connection preface presented
 http2Parser.preface.io=Unable to read connection preface
 http2Parser.processFrame=Connection [{0}], Stream [{1}], Frame type [{2}], Flags [{3}], Payload size [{4}]
 http2Parser.processFrame.tooMuchPadding=Connection [{0}], Stream [{1}], The padding length [{2}] was too big for the payload [{3}]
@@ -64,7 +64,7 @@ http2Parser.processFrameData.window=Connection [{0}], Client sent more data than
 http2Parser.processFrameGoaway.payloadTooSmall=Connection [{0}]: Goaway payload size was [{1}] which is less than the minimum 8
 http2Parser.processFrameHeaders.decodingDataLeft=Data left over after HPACK decoding - it should have been consumed
 http2Parser.processFrameHeaders.decodingFailed=There was an error during the HPACK decoding of HTTP headers
-http2Parser.processFrameHeaders.payload=Connection [{0}], Stream [{1}], Processing headers payload size [{2}]
+http2Parser.processFrameHeaders.payload=Connection [{0}], Stream [{1}], Processing headers payload of size [{2}]
 http2Parser.processFramePing.invalidPayloadSize=Settings frame received with an invalid payload size of [{0}] (should be 8)
 http2Parser.processFramePriority.invalidParent=Connection [{0}], Stream [{1}], A stream may not depend on itself
 http2Parser.processFramePriority.invalidPayloadSize=Priority frame received with an invalid payload size of [{0}] (should be 5)
@@ -159,9 +159,9 @@ upgradeHandler.writePushHeaders=Connection [{0}], Stream [{1}], Pushed stream [{
 windowAllocationManager.dispatched=Connection [{0}], Stream [{1}], Dispatched
 windowAllocationManager.notified=Connection [{0}], Stream [{1}], Notified
 windowAllocationManager.notify=Connection [{0}], Stream [{1}], Waiting type [{2}], Notify type [{3}]
-windowAllocationManager.waitFor.connection=Connection [{0}], Stream [{1}], Waiting for Connection flow control window (blocking) with timeout [{3}]
+windowAllocationManager.waitFor.connection=Connection [{0}], Stream [{1}], Waiting for Connection flow control window (blocking) with timeout [{2}]
 windowAllocationManager.waitFor.ise=Connection [{0}], Stream [{1}], Already waiting
-windowAllocationManager.waitFor.stream=Connection [{0}], Stream [{1}], Waiting for Stream flow control window (blocking) with timeout [{3}]
+windowAllocationManager.waitFor.stream=Connection [{0}], Stream [{1}], Waiting for Stream flow control window (blocking) with timeout [{2}]
 windowAllocationManager.waitForNonBlocking.connection=Connection [{0}], Stream [{1}], Waiting for Connection flow control window (non-blocking)
 windowAllocationManager.waitForNonBlocking.stream=Connection [{0}], Stream [{1}], Waiting for Stream flow control window (non-blocking)
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties b/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
index d5153fd..cd74378 100644
--- a/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
@@ -26,7 +26,7 @@ webRuleSet.absoluteOrdering=<absolute-ordering> element not valid in web-fragmen
 webRuleSet.absoluteOrderingCount=<absolute-ordering> element is limited to 1 occurrence
 webRuleSet.nameCount=<name> element is limited to 1 occurrence
 webRuleSet.postconstruct.duplicate=Duplicate post construct method definition for class [{0}]
-webRuleSet.predestroy.duplicate=Duplicate pre destroy method definition for class [{0}]
+webRuleSet.predestroy.duplicate=Duplicate @PreDestroy method definition for class [{0}]
 webRuleSet.relativeOrdering=<ordering> element not valid in web.xml and will be ignored
 webRuleSet.relativeOrderingCount=<ordering> element is limited to 1 occurrence
 
@@ -55,7 +55,7 @@ webXml.mergeConflictSessionCookieSecure=The session cookie secure flag was defin
 webXml.mergeConflictSessionTimeout=The session timeout was defined inconsistently in multiple fragments with different values including fragment with name [{0}] located at [{1}]
 webXml.mergeConflictSessionTrackingMode=The session tracking modes were defined inconsistently in multiple fragments including fragment with name [{0}] located at [{1}]
 webXml.mergeConflictString=The [{0}] with name [{1}] was defined inconsistently in multiple fragments including fragment with name [{2}] located at [{3}]
-webXml.multipleOther=Multiple others entries in ordering
+webXml.multipleOther=Multiple <others> entries nested in <ordering> element
 webXml.reservedName=A web.xml file was detected using a reserved name [{0}]. The name element will be ignored for this fragment.
 webXml.unrecognisedPublicId=The public ID [{0}] did not match any of the known public ID''s for web.xml files so the version could not be identified
 webXml.version.unknown=Unknown version string [{0}]. Default version will be used.
diff --git a/java/org/apache/tomcat/util/http/LocalStrings.properties b/java/org/apache/tomcat/util/http/LocalStrings.properties
index 1cd1ac2..17211a3 100644
--- a/java/org/apache/tomcat/util/http/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/http/LocalStrings.properties
@@ -34,7 +34,7 @@ parameters.maxCountFail=More than the maximum number of request parameters (GET
 parameters.maxCountFail.fallToDebug=\n\
 \ Note: further occurrences of this error will be logged at DEBUG level.
 parameters.multipleDecodingFail=Character decoding failed. A total of [{0}] failures were detected but only the first was logged. Enable debug level logging for this logger to log all failures.
-parameters.noequal=Parameter starting at position [{0}] and ending at position [{1}] with a value of [{0}] was not followed by an ''='' character
+parameters.noequal=Parameter starting at position [{0}] and ending at position [{1}] with a value of [{2}] was not followed by an ''='' character
 
 rfc6265CookieProcessor.invalidCharInValue=An invalid character [{0}] was present in the Cookie value
 rfc6265CookieProcessor.invalidDomain=An invalid domain [{0}] was specified for this cookie
diff --git a/java/org/apache/tomcat/util/http/parser/LocalStrings.properties b/java/org/apache/tomcat/util/http/parser/LocalStrings.properties
index c94685d..e4cc162 100644
--- a/java/org/apache/tomcat/util/http/parser/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings.properties
@@ -15,7 +15,8 @@
 
 authorization.unknownType=Unknown Type [{0}]
 
-cookie.fallToDebug=Note: further occurrences of this error will be logged at DEBUG level.
+cookie.fallToDebug=\n\
+\ Note: further occurrences of this error will be logged at DEBUG level.
 cookie.invalidCookieValue=A cookie header was received [{0}] that contained an invalid cookie. That cookie will be ignored.
 cookie.invalidCookieVersion=A cookie header was received using an unrecognised cookie version of [{0}]. The header and the cookies it contains will be ignored.
 cookie.valueNotPresent=<not present>
@@ -40,4 +41,4 @@ http.tooFewHextets=An IPv6 address must consist of 8 hextets but this address co
 http.tooManyColons=An IPv6 address may not contain more than 2 sequential colon characters.
 http.tooManyDoubleColons=An IPv6 address may only contain a single '::' sequence.
 http.tooManyHextets=The IPv6 address contains [{0}] hextets but a valid IPv6 address may not have more than 8.
-http.wrongOctetCount=An IPv4 address should have exactly 4 octets, not [{0}].>>>>>>> .merge-right.r1815790
+http.wrongOctetCount=An IPv4 address should have exactly 4 octets, not [{0}].
diff --git a/java/org/apache/tomcat/util/net/LocalStrings.properties b/java/org/apache/tomcat/util/net/LocalStrings.properties
index 74a6b7a..995f9d4 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/net/LocalStrings.properties
@@ -56,7 +56,7 @@ endpoint.apr.makeConf=Creating OpenSSLConf context
 endpoint.apr.maxConnections.running=The APR endpoint does not support the setting of maxConnections while it is running. The existing value of [{0}] will continue to be used.
 endpoint.apr.maxConnections.unlimited=The APR endpoint does not support unlimited connections. The existing value of [{0}] will continue to be used.
 endpoint.apr.noSendfileWithSSL=Sendfile is not supported for the APR/native connector when SSL is enabled
-endpoint.apr.pollAddInvalid=Invalid attempted to add a socket [{0}] to the poller
+endpoint.apr.pollAddInvalid=Invalid attempt to add a socket [{0}] to the poller
 endpoint.apr.pollError=Poller failed with error [{0}] : [{1}]
 endpoint.apr.pollMergeEvents=Merge poller event [{1}] for socket [{0}] to create merged event [{2}]
 endpoint.apr.pollUnknownEvent=A socket was returned from the poller with an unrecognized event [{0}]
@@ -113,7 +113,7 @@ endpoint.setAttribute=Set [{0}] to [{1}]
 endpoint.timeout.err=Error processing socket timeout
 endpoint.unknownSslHostName=The SSL host name [{0}] is not recognised for this endpoint
 endpoint.warn.executorShutdown=The executor associated with thread pool [{0}] has not fully shutdown. Some application threads may still be running.
-endpoint.warn.incorrectConnectionCount=Incorrect connection count, multiple socket.close called on the same socket.
+endpoint.warn.incorrectConnectionCount=Incorrect connection count, multiple calls to socket.close for the same socket.
 endpoint.warn.noLocalAddr=Unable to determine local address for socket [{0}]
 endpoint.warn.noLocalName=Unable to determine local host name for socket [{0}]
 endpoint.warn.noLocalPort=Unable to determine local port for socket [{0}]
diff --git a/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties b/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties
index 2bcb836..bae8f03 100644
--- a/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties
@@ -36,4 +36,4 @@ jsseUtil.noVerificationDepth=The truststoreProvider [{0}] does not support the c
 jsseUtil.trustedCertNotChecked=The validity dates of the trusted certificate with alias [{0}] were not checked as the certificate was of an unknown type
 jsseUtil.trustedCertNotValid=The trusted certificate with alias [{0}] and DN [{1}] is not valid due to [{2}]. Certificates signed by this trusted certificate WILL be accepted
 
-pemFile.noMultiPrimes=The PKCS#1 certificate is in multi-prime format and Java does not provide an API for constructing an RSA private key object from that format
\ No newline at end of file
+pemFile.noMultiPrimes=The PKCS#1 certificate is in multi-prime format and Java does not provide an API for constructing an RSA private key object from that format
diff --git a/java/org/apache/tomcat/util/scan/LocalStrings.properties b/java/org/apache/tomcat/util/scan/LocalStrings.properties
index 7e5cf06..3198626 100644
--- a/java/org/apache/tomcat/util/scan/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/scan/LocalStrings.properties
@@ -14,12 +14,12 @@
 # limitations under the License.
 
 jarScan.classloaderFail=Failed to scan [{0}] from classloader hierarchy
-jarScan.classloaderJarNoScan=Not scanning JAR [{0}] from classpath
+jarScan.classloaderJarNoScan=Not performing JAR scanning on file [{0}] from classpath
 jarScan.classloaderJarScan=Scanning JAR [{0}] from classpath
 jarScan.classloaderStart=Scanning for JARs in classloader hierarchy
 jarScan.jarUrlStart=Scanning JAR at URL [{0}]
 jarScan.webinfclassesFail=Failed to scan /WEB-INF/classes
 jarScan.webinflibFail=Failed to scan JAR [{0}] from /WEB-INF/lib
-jarScan.webinflibJarNoScan=Not scanning JAR [{0}] from /WEB-INF/lib
+jarScan.webinflibJarNoScan=Not performing JAR scanning on file [{0}] from /WEB-INF/lib
 jarScan.webinflibJarScan=Scanning JAR [{0}] from /WEB-INF/lib
 jarScan.webinflibStart=Scanning /WEB-INF/lib for JARs
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 47f9854..e40556e 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -45,6 +45,14 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 8.5.46 (markt)" rtext="in development">
+  <subsection name="Other">
+    <changelog>
+      <fix>
+        Back-port various corrections and improvements to the English versions
+        of the i18n messages. (markt)
+      </fix>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 8.5.45 (markt)" rtext="release in progress">
   <subsection name="Coyote">


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