Improvements to Russian translations by usmazat and remm
diff --git a/java/org/apache/catalina/connector/LocalStrings_ru.properties b/java/org/apache/catalina/connector/LocalStrings_ru.properties
index ded8982..5de1419 100644
--- a/java/org/apache/catalina/connector/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/connector/LocalStrings_ru.properties
@@ -22,5 +22,5 @@
 
 coyoteInputStream.nbNotready=В неблокирующем режиме невозможно читать из ServletInputStream до тех пор пока не завершится предыдущее чтение и IsReady() не вернёт true
 
-coyoteRequest.sendfileNotCanonical=Невозможно определить каноническок имя файла [{0}]] указанное для использования с sendfile
+coyoteRequest.sendfileNotCanonical=Невозможно определить каноническое имя файла [{0}] указанное для использования с sendfile
 coyoteRequest.sessionEndAccessFail=Исключение вызвало прекращение доступа к сессии при очистке запроса
diff --git a/java/org/apache/catalina/core/LocalStrings_ru.properties b/java/org/apache/catalina/core/LocalStrings_ru.properties
index 719b01b..3e04a3d 100644
--- a/java/org/apache/catalina/core/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/core/LocalStrings_ru.properties
@@ -22,15 +22,19 @@
 
 applicationDispatcher.specViolation.response=Оригинальный ServletResponse или обернутый оригинальный ServletResponse не передан в Request Dispatcher в нарушение SRV.8.2 и SRV.14.2.5.1
 
+applicationHttpRequest.sessionEndAccessFail=Исключение вызвало прекращение доступа к сессии при очистке запроса
+
 aprListener.initializingFIPS=Инициализируется режим FIPS...
 
 filterChain.filter=При выполнении фильтра выброшено исключение
 
+naming.unbindFailed=Ошибка при отвязывании объекта: [{0}]
 naming.wsdlFailed=wsdl файл не найден: [{0}]
 
 standardContext.filterStart=Ошибка при старте фильтра [{0}]
 standardContext.invalidWrapperClass=[{0}] не является подклассом StandardWrapper
 standardContext.parameter.duplicate=Дублированный параметр инициализации контекста [{0}]
+standardContext.predestroy.duplicate=Дублированное определение метода  @PreDestroy для класса [{0}]
 standardContext.securityConstraint.mixHttpMethod=Запрещено смешивать <http-method> и <http-method-omission> в одной и той же коллекции веб-ресурсов
 standardContext.startingContext=Ошибка запуска контекста с именем [{0}]
 
@@ -52,5 +56,5 @@
 standardWrapper.serviceExceptionRoot=Servlet.service() для сервлета [{0}] в контексте с путем [{1}] выбросил исключение [{2}] с первопричиной
 standardWrapper.unavailable=Выделенный сервлет [{0}] недоступен
 standardWrapper.unloadException=Сервлет [{0}] выбросил исключение unload()
-standardWrapper.unloading=Невозможно выделить сервлет [{0}] потому что он еще заугружается
+standardWrapper.unloading=Невозможно выделить сервлет [{0}] потому что он еще загружается
 standardWrapper.waiting=Ожидание для [{0}] экземпляра(ов) которые нужно освободить для сервлета [{1}]
diff --git a/java/org/apache/catalina/manager/LocalStrings_ru.properties b/java/org/apache/catalina/manager/LocalStrings_ru.properties
index 2cd1b6a..3bed140 100644
--- a/java/org/apache/catalina/manager/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/manager/LocalStrings_ru.properties
@@ -161,7 +161,7 @@
 managerServlet.startFailed=ОШИБКА - Приложение по контекстному пути [{0}] не запустилось
 managerServlet.started=OK - Запущено приложение по пути контекста [{0}]
 managerServlet.stopped=OK - Остановлено приложение по пути контекста [{0}]
-managerServlet.storeConfig.noMBean=ОШИБКА - Нет StoreConfig MBean, зарегистрированный на [{0}]
+managerServlet.storeConfig.noMBean=ОШИБКА - Нет StoreConfig MBean, зарегистрированного на [{0}]. Регистрация обычно проводится StoreConfigLifecycleListener.
 managerServlet.threaddump=OK - JVM thread dump
 managerServlet.trustedCertsNotConfigured=Для этого виртуального хоста не настроены доверенные сертификаты безопасности
 managerServlet.undeployed=OK - Удалено приложение по пути контекста [{0}]
diff --git a/java/org/apache/catalina/manager/host/LocalStrings_ru.properties b/java/org/apache/catalina/manager/host/LocalStrings_ru.properties
index d2691e4..8a9b557 100644
--- a/java/org/apache/catalina/manager/host/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/manager/host/LocalStrings_ru.properties
@@ -71,7 +71,7 @@
 htmlHostManagerServlet.hostsStart=Старт
 htmlHostManagerServlet.hostsStop=Стоп
 htmlHostManagerServlet.list=Список виртуальных серверов
-htmlHostManagerServlet.manager=Управление cервером
+htmlHostManagerServlet.manager=Управление сервером
 htmlHostManagerServlet.messageLabel=Сообщение:
 htmlHostManagerServlet.persistAll=Сохраняет текущие настройки (включая виртуальные хосты) в файл server.xml и в файлы context.xml для веб-приложений
 htmlHostManagerServlet.persistAllButton=Сохранить всё
diff --git a/java/org/apache/catalina/servlets/LocalStrings_ru.properties b/java/org/apache/catalina/servlets/LocalStrings_ru.properties
index 7e629da..dbdf381 100644
--- a/java/org/apache/catalina/servlets/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/servlets/LocalStrings_ru.properties
@@ -15,3 +15,5 @@
 
 cgiServlet.expandFail=Невозможно развернуть скрипт [{0}] в [{1}]
 cgiServlet.runInvalidStatus=Неверный статус [{0}]
+
+defaultServlet.skipfail=Чтение завершилось ошибкой, потому что только [{0}] байт было доступно, а требовалось пропустить [{1}] байт, чтобы достигнуть начала требуемоего диапазона
diff --git a/java/org/apache/catalina/session/LocalStrings_ru.properties b/java/org/apache/catalina/session/LocalStrings_ru.properties
index 2f43bf3..8ad4243 100644
--- a/java/org/apache/catalina/session/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/session/LocalStrings_ru.properties
@@ -16,3 +16,5 @@
 JDBCStore.connectError=Не возможно подключиться к базе данных [{0}]
 
 managerBase.contextNull=Перед использованием Менеджера контексту необходимо присвоить не пустое значение
+
+persistentManager.deserializeError=Ошибка десериализации Сессии [{0}]
diff --git a/java/org/apache/catalina/startup/LocalStrings_ru.properties b/java/org/apache/catalina/startup/LocalStrings_ru.properties
index bd56a68..ef37bf0 100644
--- a/java/org/apache/catalina/startup/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_ru.properties
@@ -32,7 +32,11 @@
 
 versionLoggerListener.catalina.base=CATALINA_BASE:         {0}
 versionLoggerListener.catalina.home=CATALINA_HOME:         {0}
+versionLoggerListener.java.home=Java Home:             {0}
 versionLoggerListener.os.arch=Архитектура:           {0}
 versionLoggerListener.os.version=Версия ОС:             {0}
+versionLoggerListener.serverInfo.server.built=Сервер собран:   {0}
+versionLoggerListener.serverInfo.server.number=Номер версии сервера: {0}
+versionLoggerListener.serverInfo.server.version=Имя версии сервера:   {0}
 versionLoggerListener.vm.vendor=Производитель JVM:     {0}
 versionLoggerListener.vm.version=Версия JVM:            {0}
diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ru.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ru.properties
index 340ee06..49fd7b1 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_ru.properties
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+domainFilterInterceptor.member.refused=Участнику [{0}] было отказано в присоединении к кластеру
+
 encryptInterceptor.decrypt.error.short-message=Невозможно расшифровать сообщение: слишком мало символов
 
 nonBlockingCoordinator.memberAlive.failed=Невозможно проверить участника, считаем что упал
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings_ru.properties b/java/org/apache/catalina/tribes/membership/LocalStrings_ru.properties
index 227ebba..1f331b8 100644
--- a/java/org/apache/catalina/tribes/membership/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings_ru.properties
@@ -15,4 +15,4 @@
 
 mcastServiceImpl.send.running=McastService.send уже запущен
 
-staticMembershipProvider.leftOver.ignored=Сообщение[{0}] проигнорированно.
+staticMembershipProvider.leftOver.ignored=Сообщение[{0}] проигнорировано.
diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings_ru.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings_ru.properties
index 6fede4e..bd15295 100644
--- a/java/org/apache/catalina/tribes/tipis/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/tribes/tipis/LocalStrings_ru.properties
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-abstractReplicatedMap.leftOver.ignored=Сообщение[{0}] проигнорированно.
+abstractReplicatedMap.leftOver.ignored=Сообщение[{0}] проигнорировано.
diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ru.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ru.properties
index 2520ddb..d552e11 100644
--- a/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ru.properties
+++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_ru.properties
@@ -13,4 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+nioReplicationTask.error.register.key=Ошибка регистрации ключа для чтения:[{0}]
+
 pooledParallelSender.sender.disconnected=Отправитель не подключен
diff --git a/java/org/apache/coyote/LocalStrings_ru.properties b/java/org/apache/coyote/LocalStrings_ru.properties
index 3a27f2b..31874ff 100644
--- a/java/org/apache/coyote/LocalStrings_ru.properties
+++ b/java/org/apache/coyote/LocalStrings_ru.properties
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+abstractConnectionHandler.processorPop=процессор [{0}] вынут из кэша
+
 abstractProcessor.httpupgrade.notsupported=Обновление HTTP не поддерживается данным протоколом
 
 abstractProtocolHandler.init=Инициализация ProtocolHandler [{0}]
diff --git a/java/org/apache/coyote/http11/LocalStrings_ru.properties b/java/org/apache/coyote/http11/LocalStrings_ru.properties
index 6f4579c..afb79f4 100644
--- a/java/org/apache/coyote/http11/LocalStrings_ru.properties
+++ b/java/org/apache/coyote/http11/LocalStrings_ru.properties
@@ -13,6 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+http11processor.request.invalidUri=HTTP запрос содержал некорректный URI
 http11processor.request.prepare=Ошибка при подготовке запроса
 http11processor.request.process=Ошибка при обработке запроса
 http11processor.socket.info=Ошибка при получении информации о сокете
diff --git a/java/org/apache/tomcat/util/LocalStrings_ru.properties b/java/org/apache/tomcat/util/LocalStrings_ru.properties
index 3b6867f..ea9ea5e 100644
--- a/java/org/apache/tomcat/util/LocalStrings_ru.properties
+++ b/java/org/apache/tomcat/util/LocalStrings_ru.properties
@@ -14,4 +14,4 @@
 # limitations under the License.
 
 diagnostics.threadDumpTitle=Полный дамп потоков
-diagnostics.vmInfoClassCompilation=Компиляция класа
+diagnostics.vmInfoClassCompilation=Компиляция класса
diff --git a/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ru.properties b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ru.properties
index 9fbd192..a4339ff 100644
--- a/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ru.properties
+++ b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_ru.properties
@@ -17,3 +17,4 @@
 
 webXml.duplicateFilter=Дублированное имя фильтра [{0}]
 webXml.duplicateServletMapping=Сервлеты названные [{0}] и [{1}] оба привязаны к URL-ратерну [{2}], что не разрешено
+webXml.multipleOther=Несколько элементов <others> вложено в элемент <ordering>
diff --git a/java/org/apache/tomcat/util/json/LocalStrings_ru.properties b/java/org/apache/tomcat/util/json/LocalStrings_ru.properties
new file mode 100644
index 0000000..e8e95d6
--- /dev/null
+++ b/java/org/apache/tomcat/util/json/LocalStrings_ru.properties
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+parser.expectedEOF=Ожидался  EOF, но всё еще имелось содержимое для разбора
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_ru.properties b/java/org/apache/tomcat/util/net/LocalStrings_ru.properties
index a290383..7b8ea54 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_ru.properties
+++ b/java/org/apache/tomcat/util/net/LocalStrings_ru.properties
@@ -13,6 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+channel.nio.ssl.closing=Канал в состоянии закрытия.
 channel.nio.ssl.sniHostName=Имя хоста SNI извлеченное для соединения [{0}] было [{1}]
 channel.nio.ssl.unwrapFail=Невозможно развернуть данные, некорректный статус [{0}]
 
diff --git a/java/org/apache/tomcat/websocket/LocalStrings_ru.properties b/java/org/apache/tomcat/websocket/LocalStrings_ru.properties
index 98ac9c8..e27c7a6 100644
--- a/java/org/apache/tomcat/websocket/LocalStrings_ru.properties
+++ b/java/org/apache/tomcat/websocket/LocalStrings_ru.properties
@@ -20,7 +20,7 @@
 perMessageDeflate.invalidState=Некорректное состояние
 
 wsFrame.bufferTooSmall=Нет поддержки асинхронных сообщений и буфере слишком мал. Размер буфера: [{0}], Размер сообщения:[{1}]
-wsFrame.byteToLongFail=Cлишком много байт ([{0}]) было предоставлено для преобразования в  long
+wsFrame.byteToLongFail=Слишком много байт ([{0}]) было предоставлено для преобразования в  long
 wsFrame.messageTooBig=Сообщение было длиной [{0}], но MessageHandler имеет предел равный [{1}] байт
 
 wsFrameClient.ioe=Ошибка чтения данных отправленных сервером
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 6bd0641..c60e4d6 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -168,6 +168,9 @@
         Improvements to Brazilian Portuguese translations by John William
         Vicente. (markt)
       </add>
+      <add>
+        Improvements to Russian translations by usmazat and remm. (markt)
+      </add>
     </changelog>
   </subsection>
 </section>
diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_ru.properties b/webapps/examples/WEB-INF/classes/LocalStrings_ru.properties
index dbf7e7b..b674ee5 100644
--- a/webapps/examples/WEB-INF/classes/LocalStrings_ru.properties
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_ru.properties
@@ -43,5 +43,5 @@
 sessions.dataname=Имя атрибута сессии:
 sessions.datavalue=Значение атрибута сессии:
 sessions.id=ID Сессии:
-sessions.lastaccessed=Последне обращение:
+sessions.lastaccessed=Последнее обращение:
 sessions.title=Пример сессий