eric7/i18n/eric7_ru.ts

branch
eric7
changeset 9109
d4810c927c7b
parent 9103
8ac26b4c4316
child 9118
9858a6c957f5
--- a/eric7/i18n/eric7_ru.ts	Tue May 31 10:49:02 2022 +0200
+++ b/eric7/i18n/eric7_ru.ts	Tue May 31 10:54:53 2022 +0200
@@ -2603,7 +2603,8 @@
     <message>
       <location filename="../UI/Browser.py" line="115" />
       <source>&lt;b&gt;The Browser Window&lt;/b&gt;&lt;p&gt;This allows you to easily navigate the hierarchy of directories and files on your system, identify the Python programs and open them up in a Source Viewer window. The window displays several separate hierarchies.&lt;/p&gt;&lt;p&gt;The first hierarchy is only shown if you have opened a program for debugging and its root is the directory containing that program. Usually all of the separate files that make up a Python application are held in the same directory, so this hierarchy gives you easy access to most of what you will need.&lt;/p&gt;&lt;p&gt;The next hierarchy is used to easily navigate the directories that are specified in the Python &lt;tt&gt;sys.path&lt;/tt&gt; variable.&lt;/p&gt;&lt;p&gt;The remaining hierarchies allow you navigate your system as a whole. On a UNIX system there will be a hierarchy with &lt;tt&gt;/&lt;/tt&gt; at its root and another with the user home directory. On a Windows system there will be a hierarchy for each drive on the system.&lt;/p&gt;&lt;p&gt;Python programs (i.e. those with a &lt;tt&gt;.py&lt;/tt&gt; file name suffix) are identified in the hierarchies with a Python icon. The right mouse button will popup a menu which lets you open the file in a Source Viewer window, open the file for debugging or use it for a test run.&lt;/p&gt;&lt;p&gt;The context menu of a class, function or method allows you to open the file defining this class, function or method and will ensure, that the correct source line is visible.&lt;/p&gt;&lt;p&gt;Qt-Designer files (i.e. those with a &lt;tt&gt;.ui&lt;/tt&gt; file name suffix) are shown with a Designer icon. The context menu of these files allows you to start Qt-Designer with that file.&lt;/p&gt;&lt;p&gt;Qt-Linguist files (i.e. those with a &lt;tt&gt;.ts&lt;/tt&gt; file name suffix) are shown with a Linguist icon. The context menu of these files allows you to start Qt-Linguist with that file.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Окно браузера&lt;/b&gt;&lt;p&gt;Помогает легко перемещаться по иерархии директорий и файлов вашей системы, находить программы на Python и открывать их в окне исходных текстов. Окно показывает несколько разных деревьев&lt;/p&gt;
+&lt;p&gt;Первое дерево показывается только тогда, когда вы отлаживаете программу и root-директория дерева является директорией, содержащей программу. Обычно все файлы, составляющие приложение на Python, находятся в одной директории, так что это дерево даёт почти всю необходимую информацию.&lt;/p&gt;&lt;p&gt;Следующее дерево используется для лёгкого перемещения по директориям, перечисленным в переменной Python &lt;tt&gt;sys.path&lt;/tt&gt;&lt;p&gt;Оставшиеся деревья позволяют перемещаться по системе в целом. В системах UNIX будут показаны 2 дерева: дерево с вершиной в root-директории (&lt;tt&gt;/&lt;/tt&gt;) и домашней директории пользователя. В Windows для каждого диска будет показано своё дерево.&lt;/p&gt;&lt;p&gt;Программы на Python (с расширением &lt;tt&gt;.py&lt;/tt&gt;) показываются с иконкой Python. Доступно контекстное меню, позволяющее открыть программу в редакторе, запустить её на отладку или протестировать с помощью unittest.&lt;/p&gt;&lt;p&gt;Контекстное меню на классе, функции или методе откроет файл и перейдёт на нужное место&lt;/p&gt;&lt;p&gt;Файлы описания интерфейса ( &lt;tt&gt;.ui&lt;/tt&gt;, отмеченные иконкой Designer) могут быть открыты Designer'ом через контекстное меню или по двойному щелчку&lt;/p&gt;&lt;p&gt;Файлы перевода (&lt;tt&gt;.ts&lt;/tt&gt;, отмеченные иконкой Linguist) могут быть отредактированы с помощью Linguist'а&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/Browser.py" line="217" />
@@ -2635,7 +2636,7 @@
     <message>
       <location filename="../UI/Browser.py" line="236" />
       <source>Run Test...</source>
-      <translation type="unfinished" />
+      <translation>Запустить тест...</translation>
     </message>
     <message>
       <location filename="../UI/Browser.py" line="565" />
@@ -2844,15 +2845,6 @@
       <source>Delete Files</source>
       <translation>Удалить файлы</translation>
     </message>
-    <message>
-      <source>&lt;b&gt;The Browser Window&lt;/b&gt;&lt;p&gt;This allows you to easily navigate the hierarchy of directories and files on your system, identify the Python programs and open them up in a Source Viewer window. The window displays several separate hierarchies.&lt;/p&gt;&lt;p&gt;The first hierarchy is only shown if you have opened a program for debugging and its root is the directory containing that program. Usually all of the separate files that make up a Python application are held in the same directory, so this hierarchy gives you easy access to most of what you will need.&lt;/p&gt;&lt;p&gt;The next hierarchy is used to easily navigate the directories that are specified in the Python &lt;tt&gt;sys.path&lt;/tt&gt; variable.&lt;/p&gt;&lt;p&gt;The remaining hierarchies allow you navigate your system as a whole. On a UNIX system there will be a hierarchy with &lt;tt&gt;/&lt;/tt&gt; at its root and another with the user home directory. On a Windows system there will be a hierarchy for each drive on the system.&lt;/p&gt;&lt;p&gt;Python programs (i.e. those with a &lt;tt&gt;.py&lt;/tt&gt; file name suffix) are identified in the hierarchies with a Python icon. The right mouse button will popup a menu which lets you open the file in a Source Viewer window, open the file for debugging or use it for a unittest run.&lt;/p&gt;&lt;p&gt;The context menu of a class, function or method allows you to open the file defining this class, function or method and will ensure, that the correct source line is visible.&lt;/p&gt;&lt;p&gt;Qt-Designer files (i.e. those with a &lt;tt&gt;.ui&lt;/tt&gt; file name suffix) are shown with a Designer icon. The context menu of these files allows you to start Qt-Designer with that file.&lt;/p&gt;&lt;p&gt;Qt-Linguist files (i.e. those with a &lt;tt&gt;.ts&lt;/tt&gt; file name suffix) are shown with a Linguist icon. The context menu of these files allows you to start Qt-Linguist with that file.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Окно браузера&lt;/b&gt;&lt;p&gt;Помогает легко перемещаться по иерархии директорий и файлов вашей системы, находить программы на Python и открывать их в окне исходных текстов. Окно показывает несколько разных деревьев&lt;/p&gt;
-&lt;p&gt;Первое дерево показывается только тогда, когда вы отлаживаете программу и root-директория дерева является директорией, содержащей программу. Обычно все файлы, составляющие приложение на Python, находятся в одной директории, так что это дерево даёт почти всю необходимую информацию.&lt;/p&gt;&lt;p&gt;Следующее дерево используется для лёгкого перемещения по директориям, перечисленным в переменной Python &lt;tt&gt;sys.path&lt;/tt&gt;&lt;p&gt;Оставшиеся деревья позволяют перемещаться по системе в целом. В системах UNIX будут показаны 2 дерева: дерево с вершиной в root-директории (&lt;tt&gt;/&lt;/tt&gt;) и домашней директории пользователя. В Windows для каждого диска будет показано своё дерево.&lt;/p&gt;&lt;p&gt;Программы на Python (с расширением &lt;tt&gt;.py&lt;/tt&gt;) показываются с иконкой Python. Доступно контекстное меню, позволяющее открыть программу в редакторе, запустить её на отладку или протестировать с помощью unittest.&lt;/p&gt;&lt;p&gt;Контекстное меню на классе, функции или методе откроет файл и перейдёт на нужное место&lt;/p&gt;&lt;p&gt;Файлы описания интерфейса ( &lt;tt&gt;.ui&lt;/tt&gt;, отмеченные иконкой Designer) могут быть открыты Designer'ом через контекстное меню или по двойному щелчку&lt;/p&gt;&lt;p&gt;Файлы перевода (&lt;tt&gt;.ts&lt;/tt&gt;, отмеченные иконкой Linguist) могут быть отредактированы с помощью Linguist'а&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Run unittest...</source>
-      <translation type="vanished">Запустить юниттест...</translation>
-    </message>
   </context>
   <context>
     <name>BrowserModel</name>
@@ -3555,12 +3547,12 @@
     <message>
       <location filename="../UI/ClearPrivateDataDialog.ui" line="0" />
       <source>Select to clear the test histories</source>
-      <translation type="unfinished" />
+      <translation>Разрешить очистку истории теста</translation>
     </message>
     <message>
       <location filename="../UI/ClearPrivateDataDialog.ui" line="0" />
       <source>Test histories</source>
-      <translation type="unfinished" />
+      <translation>Истории теста</translation>
     </message>
     <message>
       <location filename="../UI/ClearPrivateDataDialog.ui" line="0" />
@@ -3582,14 +3574,6 @@
       <source>Plug-in private data</source>
       <translation>Приватные данные плагинов</translation>
     </message>
-    <message>
-      <source>Select to clear the unittest histories</source>
-      <translation type="vanished">Разрешить очистку истории юниттест</translation>
-    </message>
-    <message>
-      <source>Unittest histories</source>
-      <translation type="vanished">Истории юниттест</translation>
-    </message>
   </context>
   <context>
     <name>Closehead</name>
@@ -4604,7 +4588,7 @@
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Progress</source>
-      <translation>Индикатор процесса</translation>
+      <translation>Индикатор выполнения</translation>
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
@@ -5479,17 +5463,13 @@
     <message>
       <location filename="../CondaInterface/Conda.py" line="707" />
       <source>conda did not finish within 3 seconds.</source>
-      <translation type="unfinished" />
+      <translation>conda не завершилась в течение 3 секунд.</translation>
     </message>
     <message>
       <location filename="../CondaInterface/Conda.py" line="710" />
       <source>conda could not be started.</source>
       <translation>conda не может быть запущен.</translation>
     </message>
-    <message>
-      <source>conda did not finish within 30 seconds.</source>
-      <translation type="vanished">conda не завершилась в течение 30 секунд.</translation>
-    </message>
   </context>
   <context>
     <name>CondaExecDialog</name>
@@ -16565,12 +16545,12 @@
     <message>
       <location filename="../EricNetwork/EricJsonStreamReader.py" line="130" />
       <source>JSON Protocol Error</source>
-      <translation type="unfinished">Ошибка протокола JSON</translation>
+      <translation>Ошибка протокола JSON</translation>
     </message>
     <message>
       <location filename="../EricNetwork/EricJsonStreamReader.py" line="131" />
       <source>&lt;p&gt;The data received from the writer could not be decoded. Please report this issue with the received data to the eric bugs email address.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;&lt;p&gt;Data:&lt;br/&gt;{1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;p&gt;Не удалось расшифровать данные, полученные от модуля записи. Сообщите об этой проблеме с полученными данными по адресу электронной почты eric bugs.&lt;/p&gt;&lt;p&gt;Ошибка: {0}&lt;/p&gt;&lt;p&gt;Данные:&lt;br/&gt;{1}&lt;/p&gt;</translation>
     </message>
   </context>
   <context>
@@ -16980,7 +16960,7 @@
     <message>
       <location filename="../Plugins/WizardPlugins/EricMessageBoxWizard/EricMessageBoxWizardDialog.ui" line="0" />
       <source>Modal Message Box</source>
-      <translation>Модальный окно сообщений</translation>
+      <translation>Модальное окно сообщений</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/EricMessageBoxWizard/EricMessageBoxWizardDialog.ui" line="0" />
@@ -31619,7 +31599,7 @@
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/HgClient.py" line="143" />
       <source>Received data on unexpected channel.</source>
-      <translation>Получены данные по неожиданному каналу.</translation>
+      <translation>Получены данные по непредвиденному каналу.</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/HgClient.py" line="148" />
@@ -40764,7 +40744,7 @@
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
       <source>Multiline Text</source>
-      <translation type="unfinished" />
+      <translation>Многострочный текст</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
@@ -40876,7 +40856,7 @@
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
       <source>Translate Default</source>
-      <translation type="unfinished" />
+      <translation>Перевод по умолчанию</translation>
     </message>
     <message>
       <location filename="../Plugins/WizardPlugins/InputDialogWizard/InputDialogWizardDialog.ui" line="0" />
@@ -46363,12 +46343,12 @@
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py" line="45" />
       <source>Executable Files (*.exe);;All Files (*)</source>
-      <translation type="unfinished" />
+      <translation>Исполняемые файлы (*.exe);;Все файлы (*)</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py" line="50" />
       <source>All Files (*)</source>
-      <translation type="unfinished">Все файлы (*)</translation>
+      <translation>Все файлы (*)</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
@@ -46378,12 +46358,12 @@
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
       <source>Mercurial Executable</source>
-      <translation type="unfinished" />
+      <translation>Исполняемые файлы Mercurial</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
       <source>Enter the path of the Mercurial executable (hg or hg.exe) to override the automatism.</source>
-      <translation type="unfinished" />
+      <translation>Введите путь к исполняемому файлу Mercurial (hg или hg.exe) для отмены его автоматического определения.</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
@@ -46522,7 +46502,7 @@
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
       <source>Revert</source>
-      <translation>Вернуть</translation>
+      <translation>Везврат</translation>
     </message>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui" line="0" />
@@ -51941,38 +51921,38 @@
       <translation>Количество</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="56" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="57" />
       <source>&lt;All&gt;</source>
-      <translation type="unfinished">&lt;Все&gt;</translation>
-    </message>
-    <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="59" />
+      <translation>&lt;Все&gt;</translation>
+    </message>
+    <message>
+      <location filename="../PipInterface/PipLicensesDialog.py" line="60" />
       <source>Save as CSV...</source>
       <translation>Сохранить как CSV...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="73" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="74" />
       <source>Licenses of "{0}"</source>
       <translation>Лицензии "{0}"</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="77" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="78" />
       <source>No environment specified.</source>
       <translation>Не задана среда окружения.</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="200" />
-      <location filename="../PipInterface/PipLicensesDialog.py" line="170" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="207" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="177" />
       <source>Save as CSV</source>
       <translation>Сохранить как CSV</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="172" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="179" />
       <source>CSV Files (*.csv);;All Files (*)</source>
       <translation>Файлы CSV (*.csv);;Все файлы (*)</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipLicensesDialog.py" line="201" />
+      <location filename="../PipInterface/PipLicensesDialog.py" line="208" />
       <source>&lt;p&gt;The license information could not be saved into the CSV file &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Не удалось сохранить информацию о лицензии в CSV-файле &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
@@ -52527,7 +52507,7 @@
       <translation>Получение списка обновленных пакетов...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1146" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1147" />
       <location filename="../PipInterface/PipPackagesWidget.py" line="973" />
       <location filename="../PipInterface/PipPackagesWidget.py" line="962" />
       <location filename="../PipInterface/PipPackagesWidget.py" line="931" />
@@ -52565,140 +52545,140 @@
       <translation>&lt;p&gt;По запросу &lt;b&gt;{0}&lt;/b&gt; больше нет результатов.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1147" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1148" />
       <source>&lt;p&gt;No package details info for &lt;b&gt;{0}&lt;/b&gt; available.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Недоступна подробная информация о пакете &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1161" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1162" />
       <source>Install Pip</source>
       <translation>Инсталировать Pip</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1164" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1165" />
       <source>Install Pip to User-Site</source>
       <translation>Инсталировать Pip в User-Site</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1167" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1168" />
       <source>Repair Pip</source>
       <translation>Восстановить Pip</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1304" />
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1171" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1305" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1172" />
       <source>Install Packages</source>
       <translation>Установить пакеты</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1174" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1175" />
       <source>Install Local Package</source>
       <translation>Установить локальный пакет</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1178" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1179" />
       <source>Install Requirements</source>
       <translation>Установить зависимости</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1181" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1182" />
       <source>Re-Install Selected Packages</source>
       <translation>Переинсталировать выбранные пакеты</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1184" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1185" />
       <source>Uninstall Requirements</source>
       <translation>Деинсталировать зависимости</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1187" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1188" />
       <source>Generate Requirements...</source>
       <translation>Генерация зависимостей...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1191" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1192" />
       <source>Show Licenses...</source>
       <translation>Показать лицензии...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1195" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1196" />
       <source>Check Vulnerabilities</source>
       <translation>Проверить уязвимости</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1199" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1200" />
       <source>Update Vulnerability Database</source>
       <translation>Обновить базу уязвимостей</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1203" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1204" />
       <source>Show Cache Info...</source>
       <translation>Показать информацию о кэше...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1206" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1207" />
       <source>Show Cached Files...</source>
       <translation>Показать кэшированные файлы...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1209" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1210" />
       <source>Remove Cached Files...</source>
       <translation>Удалить кэшированные файлы...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1212" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1213" />
       <source>Purge Cache...</source>
       <translation>Очистить кэш...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1217" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1218" />
       <source>Edit User Configuration...</source>
       <translation>Правка конфигурации пользователя...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1220" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1221" />
       <source>Edit Environment Configuration...</source>
       <translation>Правка конфигурации среды окружения...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1225" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1226" />
       <source>Configure...</source>
       <translation>Настроить...</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1426" />
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1413" />
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1402" />
-      <source>Edit Configuration</source>
-      <translation>Правка конфигурации</translation>
-    </message>
-    <message>
       <location filename="../PipInterface/PipPackagesWidget.py" line="1427" />
       <location filename="../PipInterface/PipPackagesWidget.py" line="1414" />
       <location filename="../PipInterface/PipPackagesWidget.py" line="1403" />
+      <source>Edit Configuration</source>
+      <translation>Правка конфигурации</translation>
+    </message>
+    <message>
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1428" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1415" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1404" />
       <source>No valid configuration path determined. Aborting</source>
       <translation>Не определен допустимый путь конфигурации. Прерывание</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1581" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1582" />
       <source>{0} {1}</source>
       <comment>package name, package version</comment>
       <translation>{0} {1}</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1603" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1604" />
       <source>Affected Version:</source>
       <translatorcomment>Подверженная уязвимости версия:  Пораженная версия Уязвимая</translatorcomment>
       <translation>Версия с уязвимостью:</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1606" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1607" />
       <source>Advisory:</source>
       <translatorcomment>Консультация:  Рекомендация</translatorcomment>
       <translation>Advisory:</translation>
     </message>
     <message>
-      <location filename="../PipInterface/PipPackagesWidget.py" line="1721" />
+      <location filename="../PipInterface/PipPackagesWidget.py" line="1722" />
       <source>any</source>
       <translation>любая</translation>
     </message>
@@ -57714,7 +57694,7 @@
     <message>
       <location filename="../Project/ProjectSourcesBrowser.py" line="165" />
       <source>Run tests...</source>
-      <translation type="unfinished" />
+      <translation>Запустить тест...</translation>
     </message>
     <message>
       <location filename="../Project/ProjectSourcesBrowser.py" line="467" />
@@ -57967,10 +57947,6 @@
       <source>Include module names?</source>
       <translation>Включать имена модулей?</translation>
     </message>
-    <message>
-      <source>Run unittest...</source>
-      <translation type="vanished">Запустить юниттест...</translation>
-    </message>
   </context>
   <context>
     <name>ProjectTranslationsBrowser</name>
@@ -58271,7 +58247,7 @@
     <message>
       <location filename="../Project/PropertiesDialog.ui" line="0" />
       <source>&amp;Programming Language:</source>
-      <translation type="unfinished" />
+      <translation>&amp;Язык программирования:</translation>
     </message>
     <message>
       <location filename="../Project/PropertiesDialog.ui" line="0" />
@@ -58454,12 +58430,12 @@
     <message>
       <location filename="../Project/PropertiesDialog.ui" line="0" />
       <source>Testing Framework:</source>
-      <translation type="unfinished" />
+      <translation>Среда тестирования:</translation>
     </message>
     <message>
       <location filename="../Project/PropertiesDialog.ui" line="0" />
       <source>Select the testing framework used by the project</source>
-      <translation type="unfinished" />
+      <translation>Выберите среду тестирования, используемую для проекта</translation>
     </message>
     <message>
       <location filename="../Project/PropertiesDialog.ui" line="0" />
@@ -58522,23 +58498,23 @@
       <translation>Alt+R</translation>
     </message>
     <message>
-      <location filename="../Project/PropertiesDialog.py" line="188" />
+      <location filename="../Project/PropertiesDialog.py" line="184" />
       <location filename="../Project/PropertiesDialog.py" line="53" />
       <source>None</source>
       <translation>None</translation>
     </message>
     <message>
-      <location filename="../Project/PropertiesDialog.py" line="73" />
+      <location filename="../Project/PropertiesDialog.py" line="69" />
       <source>Source Files ({0});;All Files (*)</source>
       <translation>Файлы исходников ({0});;Все файлы (*)</translation>
     </message>
     <message>
-      <location filename="../Project/PropertiesDialog.py" line="129" />
+      <location filename="../Project/PropertiesDialog.py" line="125" />
       <source>The project is version controlled by &lt;b&gt;{0}&lt;/b&gt;.</source>
       <translation>Проект находится под управлением &lt;b&gt;{0}&lt;/b&gt;.</translation>
     </message>
     <message>
-      <location filename="../Project/PropertiesDialog.py" line="135" />
+      <location filename="../Project/PropertiesDialog.py" line="131" />
       <source>The project is not version controlled.</source>
       <translation>Проект не находится под управлением системы контроля версий.</translation>
     </message>
@@ -58554,10 +58530,6 @@
       <translation>&lt;b&gt;Описание&lt;/b&gt;
 &lt;p&gt;Введите краткое описание мультипроекта.&lt;/p&gt;</translation>
     </message>
-    <message>
-      <source>&amp;Progr. Language:</source>
-      <translation type="vanished">&amp;Язык:</translation>
-    </message>
   </context>
   <context>
     <name>ProtobufPage</name>
@@ -58844,23 +58816,23 @@
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="64" />
       <source>Create Report</source>
-      <translation type="unfinished" />
+      <translation>Создать отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="65" />
       <source>HTML Report</source>
-      <translation type="unfinished" />
+      <translation>HTML отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="67" />
       <source>JSON Report</source>
-      <translation type="unfinished" />
+      <translation>JSON отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="425" />
       <location filename="../DataViews/PyCoverageDialog.py" line="68" />
       <source>LCOV Report</source>
-      <translation type="unfinished" />
+      <translation>LCOV отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="73" />
@@ -58889,12 +58861,12 @@
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="426" />
       <source>Enter the path of the output file:</source>
-      <translation type="unfinished" />
+      <translation>Задайте путь для файла вывода:</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.py" line="430" />
       <source>LCOV Files (*.lcov);;All Files (*)</source>
-      <translation type="unfinished" />
+      <translation>Файлы LCOV (*.lcov);;Все файлы (*)</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.ui" line="0" />
@@ -58923,7 +58895,7 @@
       <source>&lt;b&gt;Exclude pattern&lt;/b&gt;
 &lt;p&gt;Enter a regular expression pattern. Lines matching this pattern are excluded from the coverage analysis. The default pattern is '#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]'. If the pattern is found on a line containing the colon that introduces a suite of statements, the entire suite is excluded.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Шаблон исключения&lt;/b&gt;
-&lt;p&gt;Задайте шаблон регулярного выражения. Строки, удовлетворяющие этому выражению, будут исключены из анализа покрытия. Шаблон по умолчанию - '#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]'. Если шаблон находится в строке, содержащей двоеточие, которая вводит комплект инструкций, весь комплект исключается.&lt;/p&gt;</translation>
+&lt;p&gt;Задайте шаблон регулярного выражения. Строки, удовлетворяющие этому выражению, будут исключены из анализа покрытия. Шаблон по умолчанию - '#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]'. Если шаблон находится в строке, содержащей двоеточие, которая вводит набор инструкций, весь набор исключается.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageDialog.ui" line="0" />
@@ -58997,73 +58969,53 @@
       <source>%v/%m Files</source>
       <translation>%v из %m файла(ов)</translation>
     </message>
-    <message>
-      <source>Annotate</source>
-      <translation type="vanished">Снабдить примечанием</translation>
-    </message>
-    <message>
-      <source>Annotate all</source>
-      <translation type="vanished">Все примечания</translation>
-    </message>
-    <message>
-      <source>Delete annotated files</source>
-      <translation type="vanished">Удалить аннотированные файлы</translation>
-    </message>
-    <message>
-      <source>Annotating files...</source>
-      <translation type="vanished">Аннотирование файлов...</translation>
-    </message>
-    <message>
-      <source>Abort</source>
-      <translation type="vanished">Прервать</translation>
-    </message>
   </context>
   <context>
     <name>PyCoverageHtmlReportDialog</name>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>HTML Report</source>
-      <translation type="unfinished" />
+      <translation>HTML отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Title:</source>
-      <translation type="unfinished">Заголовок:</translation>
+      <translation>Заголовок:</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Enter the path of a file containing additional CSS definitions</source>
-      <translation type="unfinished" />
+      <translation>Введите путь к файлу, содержащему дополнительные определения CSS</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Extra CSS:</source>
-      <translation type="unfinished" />
+      <translation>Дополнительные CSS:</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Enter the title for the HTML report</source>
-      <translation type="unfinished" />
+      <translation>Введите заголовок HTML отчета</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Output Directory:</source>
-      <translation type="unfinished">Директория вывода:</translation>
+      <translation>Директория вывода:</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Enter the path of the output directory</source>
-      <translation type="unfinished" />
+      <translation>Задайте путь к директории вывода</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Select to open the generated report</source>
-      <translation type="unfinished" />
+      <translation>Разрешить открывать созданный отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageHtmlReportDialog.ui" line="0" />
       <source>Open Report</source>
-      <translation type="unfinished" />
+      <translation>Открывать отчет</translation>
     </message>
   </context>
   <context>
@@ -59071,32 +59023,32 @@
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.ui" line="0" />
       <source>JSON Report</source>
-      <translation type="unfinished" />
+      <translation>JSON отчет</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.ui" line="0" />
       <source>Select to create the report using the compact format</source>
-      <translation type="unfinished" />
+      <translation>Разрешить создавать отчет в компактном формате</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.ui" line="0" />
       <source>Compact Format</source>
-      <translation type="unfinished" />
+      <translation>Компактный формат</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.ui" line="0" />
       <source>Output File:</source>
-      <translation type="unfinished">Вывод в файл:</translation>
+      <translation>Файл вывода:</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.ui" line="0" />
       <source>Enter the path of the output file</source>
-      <translation type="unfinished" />
+      <translation>Задайте путь для файла вывода</translation>
     </message>
     <message>
       <location filename="../DataViews/PyCoverageJsonReportDialog.py" line="43" />
       <source>JSON Files (*.json);;All Files (*)</source>
-      <translation type="unfinished" />
+      <translation>Файлы JSON (*.json);;Все файлы (*)</translation>
     </message>
   </context>
   <context>
@@ -60588,44 +60540,44 @@
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="40" />
       <source>Failure</source>
-      <translation type="unfinished" />
+      <translation>Сбой</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="41" />
       <source>Skipped</source>
-      <translation type="unfinished" />
+      <translation>Пропущено</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="42" />
       <source>Expected Failure</source>
-      <translation type="unfinished" />
+      <translation>Ожидаемый сбой</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="43" />
       <source>Unexpected Success</source>
-      <translation type="unfinished" />
+      <translation>Непредвиденное успешное завершение</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="44" />
       <source>Success</source>
-      <translation type="unfinished" />
+      <translation>Успешное завершение</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="228" />
       <source>Error</source>
-      <translation type="unfinished">Ошибка</translation>
+      <translation>Ошибка</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="238" />
       <source>ERROR at {0}: {1}</source>
       <comment>phase, message</comment>
-      <translation type="unfinished" />
+      <translation>ERROR в {0}: {1}</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/PytestExecutor.py" line="242" />
       <source>ERROR at {0}: {1}</source>
       <comment>phase, extra text</comment>
-      <translation type="unfinished" />
+      <translation>ERROR в {0}: {1}</translation>
     </message>
   </context>
   <context>
@@ -68110,7 +68062,7 @@
     <message>
       <location filename="../Snapshot/SnapshotWaylandGrabber.py" line="333" />
       <source>&lt;p&gt;Received an unexpected number of reply arguments. Expected {0} but got {1}&lt;/p&gt;</source>
-      <translation>&lt;p&gt; Получено неожиданное количество ответных аргументов. Ожидалось {0}, а получено {1}&lt;/p&gt;</translation>
+      <translation>&lt;p&gt; Получено непредвиденное количество ответных аргументов. Ожидалось {0}, а получено {1}&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Snapshot/SnapshotWaylandGrabber.py" line="343" />
@@ -69349,7 +69301,7 @@
     <message>
       <location filename="../Debugger/StartDialog.py" line="325" />
       <source>Script Parameters</source>
-      <translation type="unfinished" />
+      <translation>Параметры сценария</translation>
     </message>
     <message>
       <location filename="../Debugger/StartDialog.py" line="326" />
@@ -69371,10 +69323,6 @@
       <source>Select the history list to be edited:</source>
       <translation>Выберите список истории для редактирования:</translation>
     </message>
-    <message>
-      <source>Command Line</source>
-      <translation type="vanished">Командная строка</translation>
-    </message>
   </context>
   <context>
     <name>StartHistoryEditDialog</name>
@@ -78068,40 +78016,44 @@
     <message>
       <location filename="../Testing/TestResultsTree.py" line="44" />
       <source>Status</source>
-      <translation type="unfinished">Статус</translation>
+      <translation>Статус</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="45" />
       <source>Name</source>
-      <translation type="unfinished">Имя</translation>
+      <translation>Имя</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="46" />
       <source>Message</source>
-      <translation type="unfinished">Сообщение</translation>
+      <translation>Сообщение</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="47" />
       <source>Duration [ms]</source>
-      <translation type="unfinished" />
+      <translation>Длительность [mсек]</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="384" />
       <source>No results to show</source>
-      <translation type="unfinished" />
+      <translation>Нет результатов для отображения</translation>
     </message>
     <message numerus="yes">
       <location filename="../Testing/TestResultsTree.py" line="392" />
       <source>Collected %n test(s)</source>
-      <translation type="unfinished">
-        <numerusform />
+      <translation>
+        <numerusform>Собран %n тест</numerusform>
+        <numerusform>Собрано %n теста</numerusform>
+        <numerusform>Собрано %n тестов</numerusform>
       </translation>
     </message>
     <message numerus="yes">
       <location filename="../Testing/TestResultsTree.py" line="394" />
       <source>%n test(s)/subtest(s) total, {0} failed, {1} passed, {2} skipped, {3} pending</source>
-      <translation type="unfinished">
-        <numerusform />
+      <translation>
+        <numerusform>Всего %n тест/субтест, {0} не пройдено, {1} пройдено, {2} пропущено, {3} ожидает</numerusform>
+        <numerusform>Всего %n теста/субтеста, {0} не пройдено, {1} пройдено, {2} пропущено, {3} ожидает</numerusform>
+        <numerusform>Всего %n тестов/субтестов, {0} не пройдено, {1} пройдено, {2} пропущено, {3} ожидает</numerusform>
       </translation>
     </message>
   </context>
@@ -78110,29 +78062,29 @@
     <message>
       <location filename="../Testing/TestResultsTree.py" line="577" />
       <source>Collapse</source>
-      <translation type="unfinished">Свернуть</translation>
+      <translation>Свернуть</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="580" />
       <source>Expand</source>
-      <translation type="unfinished">Развернуть</translation>
+      <translation>Развернуть</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="585" />
       <source>Show Source</source>
-      <translation type="unfinished">Показать источник</translation>
+      <translation>Показать источник</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="605" />
       <location filename="../Testing/TestResultsTree.py" line="592" />
       <source>Collapse All</source>
-      <translation type="unfinished">Свернуть все</translation>
+      <translation>Свернуть все</translation>
     </message>
     <message>
       <location filename="../Testing/TestResultsTree.py" line="606" />
       <location filename="../Testing/TestResultsTree.py" line="593" />
       <source>Expand All</source>
-      <translation type="unfinished">Развернуть все</translation>
+      <translation>Развернуть все</translation>
     </message>
   </context>
   <context>
@@ -78141,378 +78093,362 @@
       <location filename="../Testing/TestingWidget.py" line="153" />
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Testing</source>
-      <translation type="unfinished" />
+      <translation>Тестирование</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Parameters</source>
-      <translation type="unfinished">Параметры</translation>
+      <translation>Параметры</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Virtual Environment:</source>
-      <translation type="unfinished">Виртуальное окружение:</translation>
+      <translation>Виртуальное окружение:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select the virtual environment to be used</source>
-      <translation type="unfinished">Выберите для использования виртуальное окружение</translation>
+      <translation>Выберите для использования виртуальное окружение</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>&lt;b&gt;Virtual Environment&lt;/b&gt;\n&lt;p&gt;Enter the virtual environment to be used. Leave it empty to use the default environment, i.e. the one configured globally or per project.&lt;/p&gt;</source>
-      <translation type="unfinished">&lt;b&gt;Виртуальное окружение&lt;/b&gt;
+      <translation>&lt;b&gt;Виртуальное окружение&lt;/b&gt;
 &lt;p&gt;Задайте виртуальное окружение, которое будет использоваться. Оставьте поле пустым, чтобы использовать среду окружения по умолчанию, то есть ту, которая настроена глобальной или для каждого проекта.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Test Framework:</source>
-      <translation type="unfinished" />
+      <translation>Среда тестирования:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select the test framwork to be used</source>
-      <translation type="unfinished" />
+      <translation>Выберите среду тестирования для использования</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Press to show the test framework versions</source>
-      <translation type="unfinished" />
+      <translation>Показать версии среды тестирования</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Test Parameters</source>
-      <translation type="unfinished">Параметры тестирования</translation>
+      <translation>Параметры теста</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select to discover tests automatically</source>
-      <translation type="unfinished">Разрешить автоматическое обнаружение тестов</translation>
+      <translation>Разрешить автоматическое обнаружение тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Discover tests (test modules must be importable)</source>
-      <translation type="unfinished" />
+      <translation>Автоматически обнаруживать тесты (тестовые модули должны быть импортируемыми)</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Press to clear the various histories</source>
-      <translation type="unfinished">Очистить различные истории</translation>
+      <translation>Очистить всевозможные истории</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Discovery Start:</source>
-      <translation type="unfinished" />
+      <translation>Начальная директория:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Enter name of the directory at which to start the test file discovery</source>
-      <translation type="unfinished">Задайте имя директории, с которой нужно начинать обнаружение тестового файла</translation>
+      <translation>Задайте имя директории, с которой нужно начинать поиск тестового файла</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>&lt;b&gt;Discovery Start&lt;/b&gt;
 &lt;p&gt;Enter name of the directory at which to start the test file discovery.
 Note that all test modules must be importable from this directory.&lt;/p&gt;</source>
-      <translation type="unfinished">&lt;b&gt;Начальная директория&lt;/b&gt;
-&lt;p&gt;Задайте имя директории, с которой нужно начинать обнаружение тестового файла.
-Обратите внимание, что все тестовые модули должны импортироваться из этого каталога.&lt;/p&gt;</translation>
+      <translation>&lt;b&gt;Начальная директория&lt;/b&gt;
+&lt;p&gt;Задайте имя директории, в которой нужно начинать поиск тестового файла.
+Обратите внимание, что все тестовые модули должны быть доступны для импорта из этой директории.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Test Filename:</source>
-      <translation type="unfinished" />
+      <translation>Имя файла тестов:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Enter name of file defining the testsuite</source>
-      <translation type="unfinished">Задайте имя файла, определяющее комплект тестов</translation>
+      <translation>Введите имя файла, определяющего набор тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>&lt;b&gt;Testsuite&lt;/b&gt;&lt;p&gt;Enter the name of the file defining the testsuite. It should contain a method with a name given below. If no name is given, the 'suite()' method will be tried. If no such method can be found, the module will be inspected for proper test cases.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Набор тестов&lt;/b&gt;&lt;p&gt;Введите имя файла, определяющего набор тестов. Он должен содержать метод с именем, указанным ниже. Если имя не указано, будет опробован метод 'suite()'. Если такой метод не может быть найден, модуль будет проверен на соответствие тестовым примерам.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Test Name:</source>
-      <translation type="unfinished" />
+      <translation>Имя теста:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Enter the test name. Leave empty to use the default name "suite".</source>
-      <translation type="unfinished">Задайте имя теста. Оставьте поле пустым, чтобы использовать имя по умолчанию ("suite").</translation>
+      <translation>Задайте имя теста. Оставьте поле пустым, чтобы использовать имя по умолчанию "suite".</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>&lt;b&gt;Testname&lt;/b&gt;&lt;p&gt;Enter the name of the test to be performed. This name must follow the rules given by selecte test framework. If this field is empty, the default name of "suite" will be used.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Имя теста&lt;/b&gt;&lt;p&gt;Введите имя теста для выполнения. Это имя должно соответствовать правилам, заданным выбранной тестовой средой. Если поле пустое, будет использоваться имя по умолчанию "suite". &lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Run Parameters</source>
-      <translation type="unfinished">Параметры запуска</translation>
+      <translation>Параметры прогона</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select whether coverage data should be collected</source>
-      <translation type="unfinished">Разрешить собирать данные покрытия</translation>
+      <translation>Разрешить собирать данные покрытия</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Collect coverage data</source>
-      <translation type="unfinished" />
+      <translation>Собирать данные покрытия</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select whether old coverage data should be erased</source>
-      <translation type="unfinished">Разрешить удалять старые данные покрытия</translation>
+      <translation>Разрешить удалять старые данные покрытия</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Erase coverage data</source>
-      <translation type="unfinished" />
+      <translation>Стирать данные покрытия</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Select to stop the test run on the first error or failure</source>
-      <translation type="unfinished">Разрешить остановку выполнения теста при первой же ошибке или сбое</translation>
+      <translation>Разрешить остановку выполнения теста при первой же ошибке или сбое</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Stop on First Error or Failure</source>
-      <translation type="unfinished">Останавливать при первой ошибке или сбое</translation>
+      <translation>Останавливать при первой ошибке или сбое</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Results</source>
-      <translation type="unfinished">Результаты</translation>
+      <translation>Результаты</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Progress</source>
-      <translation type="unfinished">Индикатор процесса</translation>
+      <translation>Индикатор выполнения</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>%v/%m Tests</source>
-      <translation type="unfinished">%v из %m тестов</translation>
+      <translation>%v из %m тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Run:</source>
-      <translation type="unfinished">Выполнено:</translation>
+      <translation>Выполнено:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Number of tests run</source>
-      <translation type="unfinished">Количество запущенных тестов</translation>
+      <translation>Количество запущенных тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Remaining:</source>
-      <translation type="unfinished">Осталось:</translation>
+      <translation>Осталось:</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Number of tests to be run</source>
-      <translation type="unfinished">Количество выполняемых тестов</translation>
+      <translation>Количество выполняемых тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.ui" line="0" />
       <source>Idle</source>
-      <translation type="unfinished">Отсутствие действий</translation>
+      <translation>Отсутствие действий</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="104" />
       <source>Show Output...</source>
-      <translation type="unfinished" />
+      <translation>Показать вывод...</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="107" />
       <source>Show the output of the test runner process</source>
-      <translation type="unfinished" />
+      <translation>Показать вывод процесса прогона тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="108" />
       <source>&lt;b&gt;Show Output...&lt;/b&lt;p&gt;This button opens a dialog containing the output of the test runner process of the most recent run.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Показать вывод...&lt;/b&lt;p&gt;Эта кнопка открывает диалоговое окно, содержащее выходные данные самого последнего запуска процесса выполнения тестов.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="114" />
       <source>Show Coverage...</source>
-      <translation type="unfinished" />
+      <translation>Показать покрытие...</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="117" />
       <source>Show code coverage in a new dialog</source>
-      <translation type="unfinished" />
+      <translation>Показать покрытие кода в новом диалоге</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="118" />
       <source>&lt;b&gt;Show Coverage...&lt;/b&gt;&lt;p&gt;This button opens a dialog containing the collected code coverage data.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Показать покрытие...&lt;/b&gt;&lt;p&gt;Эта кнопка открывает диалоговое окно, содержащее собранные данные о покрытии кода.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="124" />
       <source>Start</source>
-      <translation type="unfinished">Запустить</translation>
+      <translation>Запустить</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="126" />
       <source>Start the selected testsuite</source>
-      <translation type="unfinished">Запустить выбранный комплект тестов</translation>
+      <translation>Запустить выбранный набор тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="128" />
       <source>&lt;b&gt;Start Test&lt;/b&gt;&lt;p&gt;This button starts the test run.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Запустить тест&lt;/b&gt;&lt;p&gt;Кнопка запуска выполнения теста.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="133" />
       <source>Rerun Failed</source>
-      <translation type="unfinished">Повторить неудачные</translation>
+      <translation>Повторить неудачные</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="135" />
       <source>Reruns failed tests of the selected testsuite</source>
-      <translation type="unfinished">Повторить неудачные тесты выбранного комплекта тестов</translation>
+      <translation>Повторить неудачные тесты выбранного набора тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="136" />
       <source>&lt;b&gt;Rerun Failed&lt;/b&gt;&lt;p&gt;This button reruns all failed tests of the most recent test run.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Повторить неудачные&lt;/b&gt;&lt;p&gt;Повторно запускает все неудачные тесты самого последнего запуска теста.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="142" />
       <source>Stop</source>
-      <translation type="unfinished">Остановить</translation>
+      <translation>Остановить</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="143" />
       <source>Stop the running test</source>
-      <translation type="unfinished" />
+      <translation>Остановить работающий тест</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="144" />
       <source>&lt;b&gt;Stop Test&lt;/b&gt;&lt;p&gt;This button stops a running test.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Остановить тест&lt;/b&gt;&lt;p&gt;Эта кнопка отстанавливает работающий тест.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="257" />
       <source>{0} (not available)</source>
-      <translation type="unfinished" />
+      <translation>{0} (недоступно)</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="562" />
       <source>Running</source>
-      <translation type="unfinished">Выполнение</translation>
+      <translation>Выполнение</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="616" />
       <source>Python3 Files ({0});;All Files (*)</source>
-      <translation type="unfinished">Файлы Python3 ({0});;Все файлы (*)</translation>
+      <translation>Файлы Python3 ({0});;Все файлы (*)</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="621" />
       <source>Python Files (*.py);;All Files (*)</source>
-      <translation type="unfinished">Файлы Python (*.py);;Все файлы (*)</translation>
+      <translation>Файлы Python (*.py);;Все файлы (*)</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="708" />
       <source>&lt;h3&gt;Versions of Frameworks and their Plugins&lt;/h3&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;h3&gt;Версии фреймворков и их плагинов&lt;/h3&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="725" />
       <source>&lt;tr&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;tr&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="736" />
       <source>No version information available.</source>
-      <translation type="unfinished">Информация о версии недоступна.</translation>
+      <translation>Информация о версии недоступна.</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="740" />
       <source>Versions</source>
-      <translation type="unfinished" />
+      <translation>Версии</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="782" />
       <source>Preparing Testsuite</source>
-      <translation type="unfinished">Подготовка комплекта тестов</translation>
+      <translation>Подготовка набора тестов</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="844" />
       <source>pending</source>
-      <translation type="unfinished" />
+      <translation>ожидает</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="870" />
       <source>Failure</source>
-      <translation type="unfinished" />
+      <translation>Сбой</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="879" />
       <location filename="../Testing/TestingWidget.py" line="873" />
       <source>Collection Error</source>
-      <translation type="unfinished" />
+      <translation>Ошибка сборки</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="880" />
       <source>&lt;p&gt;There was an error while collecting tests.&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;p&gt;При сборке тестов произошла ошибка.&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="901" />
       <source>running</source>
-      <translation type="unfinished">выполняется</translation>
+      <translation>выполнение</translation>
     </message>
     <message numerus="yes">
       <location filename="../Testing/TestingWidget.py" line="951" />
       <source>Ran %n test(s) in {0}s</source>
-      <translation type="unfinished">
-        <numerusform />
+      <translation>
+        <numerusform>Выполнен %n тест за {0} сек</numerusform>
+        <numerusform>Выполнено %n теста за {0} сек</numerusform>
+        <numerusform>Выполнено %n тестов за {0} сек</numerusform>
       </translation>
     </message>
     <message numerus="yes">
       <location filename="../Testing/TestingWidget.py" line="963" />
       <source>Ran %n test(s)</source>
-      <translation type="unfinished">
-        <numerusform />
+      <translation>
+        <numerusform>Выполнен %n тест</numerusform>
+        <numerusform>Выполнено %n теста</numerusform>
+        <numerusform>Выполнены %n тестов</numerusform>
       </translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="984" />
       <source>not run</source>
-      <translation type="unfinished" />
+      <translation>не выполнено</translation>
     </message>
     <message>
       <location filename="../Testing/TestingWidget.py" line="1027" />
       <source>Test Run Output</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <source>&amp;Erase coverage data</source>
-      <translation type="vanished">&amp;Удалять данные покрытия</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Testname&lt;/b&gt;&lt;p&gt;Enter the name of the test to be performed. This name must follow the rules given by Python's unittest module. If this field is empty, the default name of "suite" will be used.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Имя теста&lt;/b&gt;
-&lt;p&gt;Задайте имя теста для исполнения. Имя должно соотвестсвовать правилам, заданным модулем unittest Python. Если оставить поле пустым, будет использовано имя по умолчанию ("suite").&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Testsuite&lt;/b&gt;
-&lt;p&gt;Enter the name of the file defining the testsuite.
-It should have a method with a name given below. If no name is given, the suite() method will be tried. If no such method can be
-found, the module will be inspected for proper test
-cases.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Комплект тестов&lt;/b&gt;
-&lt;p&gt;Задайте имя файла, определяющего комплект тестов (testsuite).
-Он должен содержать метод с именем, указанным ниже. Если имя не задано, будет вызван метод suite().
-Если метод не может быть найден, модуль будет проверен на правильность тестов.&lt;/p&gt;</translation>
+      <translation>Выходные данные прогона теста</translation>
     </message>
   </context>
   <context>
@@ -79903,7 +79839,7 @@
     <message>
       <location filename="../Tools/TrayStarter.py" line="109" />
       <source>Testing</source>
-      <translation type="unfinished" />
+      <translation>Тестировать</translation>
     </message>
     <message>
       <location filename="../Tools/TrayStarter.py" line="114" />
@@ -80035,10 +79971,6 @@
       <source>&lt;/table&gt;</source>
       <translation>&lt;/table&gt;</translation>
     </message>
-    <message>
-      <source>Unittest</source>
-      <translation type="vanished">Юниттест</translation>
-    </message>
   </context>
   <context>
     <name>TrayStarterPage</name>
@@ -80874,412 +80806,36 @@
     </message>
   </context>
   <context>
-    <name>UnittestDialog</name>
-    <message>
-      <source>Discover</source>
-      <translation type="vanished">Обнаружить</translation>
-    </message>
-    <message>
-      <source>Discover tests</source>
-      <translation type="vanished">Обнаружить тесты</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Discover&lt;/b&gt;&lt;p&gt;This button starts a discovery of available tests.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Обнаружить&lt;/b&gt;&lt;p&gt;Эта кнопка запускает обнаружение доступных тестов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Start</source>
-      <translation type="vanished">Запустить</translation>
-    </message>
-    <message>
-      <source>Start the selected testsuite</source>
-      <translation type="vanished">Запустить выбранный комплект тестов</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Start Test&lt;/b&gt;&lt;p&gt;This button starts the selected testsuite.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Запустить тест&lt;/b&gt;&lt;p&gt;Запустить выбранный комплект тестов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Rerun Failed</source>
-      <translation type="vanished">Повторить неудачные</translation>
-    </message>
-    <message>
-      <source>Reruns failed tests of the selected testsuite</source>
-      <translation type="vanished">Повторить неудачные тесты выбранного комплекта тестов</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Rerun Failed&lt;/b&gt;&lt;p&gt;This button reruns all failed tests of the selected testsuite.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Повторить неудачные&lt;/b&gt;&lt;p&gt;Перезапустить все неудачные тесты выбранного комплекта тестов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Stop</source>
-      <translation type="vanished">Остановить</translation>
-    </message>
-    <message>
-      <source>Stop the running unittest</source>
-      <translation type="vanished">Остановить выполняющийся юниттест</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Stop Test&lt;/b&gt;&lt;p&gt;This button stops a running unittest.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Остановить&lt;/b&gt;&lt;p&gt;Остановить выполняющийся юниттест.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Unittest</source>
-      <translation type="vanished">Юниттест</translation>
-    </message>
-    <message>
-      <source>^Failure: </source>
-      <translation type="vanished">^Сбой: </translation>
-    </message>
-    <message>
-      <source>^Error: </source>
-      <translation type="vanished">^Ошибка: </translation>
-    </message>
-    <message>
-      <source>Python3 Files ({0});;All Files (*)</source>
-      <translation type="vanished">Файлы Python3 ({0});;Все файлы (*)</translation>
-    </message>
-    <message>
-      <source>Python Files (*.py);;All Files (*)</source>
-      <translation type="vanished">Файлы Python (*.py);;Все файлы (*)</translation>
-    </message>
-    <message>
-      <source>Discovering Tests</source>
-      <translation type="vanished">Обнаружение тестов</translation>
-    </message>
-    <message>
-      <source>Unittest with auto-discovery</source>
-      <translation type="vanished">Unittest с автообнаружением</translation>
-    </message>
-    <message>
-      <source>You must enter a start directory for auto-discovery.</source>
-      <translation type="vanished">Необходимо задать начальную директорию для автообнаружения.</translation>
-    </message>
-    <message>
-      <source>&lt;p&gt;Unable to discover tests.&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
-      <translation type="vanished">&lt;p&gt;Невозможно обнаружить тесты.&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</translation>
-    </message>
-    <message numerus="yes">
-      <source>Discovered %n Test(s)</source>
-      <translation type="vanished">
-        <numerusform>Обнаружен %n тест</numerusform>
-        <numerusform>Обнаружено %n теста</numerusform>
-        <numerusform>Обнаружено %n тестов</numerusform>
-      </translation>
-    </message>
-    <message>
-      <source>&lt;p&gt;Unable to discover tests.&lt;/p&gt;&lt;p&gt;{0}&lt;br/&gt;{1}&lt;/p&gt;</source>
-      <translation type="vanished">&lt;p&gt;Невозможно обнаружить тесты.&lt;/p&gt;&lt;p&gt;{0}&lt;br/&gt;{1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>You must select auto-discovery or enter a test suite file or a dotted test name.</source>
-      <translation type="vanished">Необходимо выбрать автообнаружение, или задать файл комплекта тестов, или предваренное точкой имя теста.</translation>
-    </message>
-    <message>
-      <source>Preparing Testsuite</source>
-      <translation type="vanished">Подготовка комплекта тестов</translation>
-    </message>
-    <message>
-      <source>&lt;Unnamed Test&gt;</source>
-      <translation type="vanished">&lt;Безымянный тест&gt;</translation>
-    </message>
-    <message>
-      <source>No test case has been selected. Shall all test cases be run?</source>
-      <translation type="vanished">Не был выбран тестовый случай. Должны ли быть выполнять все тестовые случаи?</translation>
-    </message>
-    <message>
-      <source>&lt;p&gt;Unable to run test &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;br/&gt;{2}&lt;/p&gt;</source>
-      <translation type="vanished">&lt;p&gt;Невозможно выполнить тест &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;{1}&lt;br/&gt;{2}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>No unittest were found. Aborting...</source>
-      <translation type="vanished">Unittest не найден. Прерывание...</translation>
-    </message>
-    <message>
-      <source>Running</source>
-      <translation type="vanished">Выполнение</translation>
-    </message>
-    <message numerus="yes">
-      <source>Ran %n test(s) in {0:.3f}s</source>
-      <translation type="vanished">
-        <numerusform>Выполнен %n тест за {0:.3f} сек</numerusform>
-        <numerusform>Выполнено %n теста за {0:.3f} сек</numerusform>
-        <numerusform>Выполнено %n тестов за {0:.3f} сек</numerusform>
-      </translation>
-    </message>
-    <message>
-      <source>Failure: {0}</source>
-      <translation type="vanished">Сбой: {0}</translation>
-    </message>
-    <message>
-      <source>Error: {0}</source>
-      <translation type="vanished">Ошибка: {0}</translation>
-    </message>
-    <message>
-      <source>    Skipped: {0}</source>
-      <translation type="vanished">    Пропущен: {0}</translation>
-    </message>
-    <message>
-      <source>    Expected Failure</source>
-      <translation type="vanished">    Ожидаемый сбой</translation>
-    </message>
-    <message>
-      <source>    Unexpected Success</source>
-      <translation type="vanished">    Неожидаемый успех</translation>
-    </message>
-    <message>
-      <source>Show Source</source>
-      <translation type="vanished">Показать источник</translation>
-    </message>
-    <message>
-      <source>Parameters</source>
-      <translation type="vanished">Параметры</translation>
-    </message>
-    <message>
-      <source>Test Parameters</source>
-      <translation type="vanished">Параметры тестирования</translation>
-    </message>
-    <message>
-      <source>Select to discover tests automatically</source>
-      <translation type="vanished">Разрешить автоматическое обнаружение тестов</translation>
-    </message>
-    <message>
-      <source>&amp;Discover tests (test modules must be importable)</source>
-      <translation type="vanished">&amp;Обнаруживать тесты (модули тестов должны быть импортируемыми)</translation>
-    </message>
-    <message>
-      <source>Press to clear the various histories</source>
-      <translation type="vanished">Очистить различные истории</translation>
-    </message>
-    <message>
-      <source>Discovery &amp;Start:</source>
-      <translation type="vanished">&amp;Начальная директория:</translation>
-    </message>
-    <message>
-      <source>Enter name of the directory at which to start the test file discovery</source>
-      <translation type="vanished">Задайте имя директории, с которой нужно начинать обнаружение тестового файла</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Discovery Start&lt;/b&gt;
-&lt;p&gt;Enter name of the directory at which to start the test file discovery.
-Note that all test modules must be importable from this directory.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Начальная директория&lt;/b&gt;
-&lt;p&gt;Задайте имя директории, с которой нужно начинать обнаружение тестового файла.
-Обратите внимание, что все тестовые модули должны импортироваться из этого каталога.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Test &amp;Filename:</source>
-      <translation type="vanished">&amp;Имя файла тестов:</translation>
-    </message>
-    <message>
-      <source>Enter name of file defining the testsuite</source>
-      <translation type="vanished">Задайте имя файла, определяющее комплект тестов</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Testsuite&lt;/b&gt;
-&lt;p&gt;Enter the name of the file defining the testsuite.
-It should have a method with a name given below. If no name is given, the suite() method will be tried. If no such method can be
-found, the module will be inspected for proper test
-cases.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Комплект тестов&lt;/b&gt;
-&lt;p&gt;Задайте имя файла, определяющего комплект тестов (testsuite).
-Он должен содержать метод с именем, указанным ниже. Если имя не задано, будет вызван метод suite().
-Если метод не может быть найден, модуль будет проверен на правильность тестов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>&amp;Test Name:</source>
-      <translation type="vanished">&amp;Имя теста:</translation>
-    </message>
-    <message>
-      <source>Enter the test name. Leave empty to use the default name "suite".</source>
-      <translation type="vanished">Задайте имя теста. Оставьте поле пустым, чтобы использовать имя по умолчанию ("suite").</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Testname&lt;/b&gt;&lt;p&gt;Enter the name of the test to be performed. This name must follow the rules given by Python's unittest module. If this field is empty, the default name of "suite" will be used.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Имя теста&lt;/b&gt;
-&lt;p&gt;Задайте имя теста для исполнения. Имя должно соотвестсвовать правилам, заданным модулем unittest Python. Если оставить поле пустым, будет использовано имя по умолчанию ("suite").&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Run Parameters</source>
-      <translation type="vanished">Параметры запуска</translation>
-    </message>
-    <message>
-      <source>&amp;Virtual Environment:</source>
-      <translation type="vanished">&amp;Виртуальное окружение:</translation>
-    </message>
-    <message>
-      <source>Select the virtual environment to be used</source>
-      <translation type="vanished">Выберите для использования виртуальное окружение</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Virtual Environment&lt;/b&gt;\n&lt;p&gt;Enter the virtual environment to be used. Leave it empty to use the default environment, i.e. the one configured globally or per project.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Виртуальное окружение&lt;/b&gt;
-&lt;p&gt;Задайте виртуальное окружение, которое будет использоваться. Оставьте поле пустым, чтобы использовать среду окружения по умолчанию, то есть ту, которая настроена глобальной или для каждого проекта.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Select whether coverage data should be collected</source>
-      <translation type="vanished">Разрешить собирать данные покрытия</translation>
-    </message>
-    <message>
-      <source>C&amp;ollect coverage data</source>
-      <translation type="vanished">Собирать данные &amp;покрытия</translation>
-    </message>
-    <message>
-      <source>Select whether old coverage data should be erased</source>
-      <translation type="vanished">Разрешить удалять старые данные покрытия</translation>
-    </message>
-    <message>
-      <source>&amp;Erase coverage data</source>
-      <translation type="vanished">&amp;Удалять данные покрытия</translation>
-    </message>
-    <message>
-      <source>Select to stop the test run on the first error or failure</source>
-      <translation type="vanished">Разрешить остановку выполнения теста при первой же ошибке или сбое</translation>
-    </message>
-    <message>
-      <source>Stop on First Error or Failure</source>
-      <translation type="vanished">Останавливать при первой ошибке или сбое</translation>
-    </message>
-    <message>
-      <source>Select to run the unittest with debugger support enabled</source>
-      <translation type="vanished">Разрешить выполнение юниттеста с включенной поддержкой отладчика</translation>
-    </message>
-    <message>
-      <source>Run with Debugger</source>
-      <translation type="vanished">Выполнять с отладчиком</translation>
-    </message>
-    <message>
-      <source>Discovery Results</source>
-      <translation type="vanished">Результаты обнаружения</translation>
-    </message>
-    <message>
-      <source>Results</source>
-      <translation type="vanished">Результаты</translation>
-    </message>
-    <message>
-      <source>Progress</source>
-      <translation type="vanished">Индикатор процесса</translation>
-    </message>
-    <message>
-      <source>Progress:</source>
-      <translation type="vanished">Индикатор процесса:</translation>
-    </message>
-    <message>
-      <source>%v/%m Tests</source>
-      <translation type="vanished">%v из %m тестов</translation>
-    </message>
-    <message>
-      <source>Run:</source>
-      <translation type="vanished">Выполнено:</translation>
-    </message>
-    <message>
-      <source>Number of tests run</source>
-      <translation type="vanished">Количество запущенных тестов</translation>
-    </message>
-    <message>
-      <source>Remaining:</source>
-      <translation type="vanished">Осталось:</translation>
-    </message>
-    <message>
-      <source>Number of tests to be run</source>
-      <translation type="vanished">Количество выполняемых тестов</translation>
-    </message>
-    <message>
-      <source>Failures:</source>
-      <translation type="vanished">Сбои:</translation>
-    </message>
-    <message>
-      <source>Number of test failures</source>
-      <translation type="vanished">Количество сбоев теста</translation>
-    </message>
-    <message>
-      <source>Errors:</source>
-      <translation type="vanished">Ошибки:</translation>
-    </message>
-    <message>
-      <source>Number of test errors</source>
-      <translation type="vanished">Количество ошибок теста</translation>
-    </message>
-    <message>
-      <source>Skipped:</source>
-      <translation type="vanished">Пропущено:</translation>
-    </message>
-    <message>
-      <source>Number of tests skipped</source>
-      <translation type="vanished">Количество пропущенных тестов</translation>
-    </message>
-    <message>
-      <source>Expected Failures:</source>
-      <translation type="vanished">Ожидаемые сбои:</translation>
-    </message>
-    <message>
-      <source>Number of tests with expected failure</source>
-      <translation type="vanished">Количество тестов с ожидаемыми сбоями</translation>
-    </message>
-    <message>
-      <source>Unexpected Successes:</source>
-      <translation type="vanished">Неожидаемые успехи:</translation>
-    </message>
-    <message>
-      <source>Number of tests with unexpected success</source>
-      <translation type="vanished">Количество тестов с неожиданным успехом</translation>
-    </message>
-    <message>
-      <source>Tests performed:</source>
-      <translation type="vanished">Выполненые тесты:</translation>
-    </message>
-    <message>
-      <source>Failures and errors:</source>
-      <translation type="vanished">Сбои и ошибки:</translation>
-    </message>
-    <message>
-      <source>Failures and Errors list</source>
-      <translation type="vanished">Список сбоев и ошибок</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Failures and Errors list&lt;/b&gt;
-&lt;p&gt;This list shows all failed and errored tests.
-Double clicking on an entry will show the respective traceback.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Список сбоев и ошибок&lt;/b&gt;
-&lt;p&gt;В списке отображаются все неудачные и завершившиеся с ошибками тесты.
-Двойной щелчок по элементу отображает соответствующий стек вызовов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Idle</source>
-      <translation type="vanished">Отсутствие действий</translation>
-    </message>
-  </context>
-  <context>
     <name>UnittestExecutor</name>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="50" />
       <source>Failure</source>
-      <translation type="unfinished" />
+      <translation>Сбой</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="51" />
       <source>Error</source>
-      <translation type="unfinished">Ошибка</translation>
+      <translation>Ошибка</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="52" />
       <source>Skipped</source>
-      <translation type="unfinished" />
+      <translation>Пропущено</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="53" />
       <source>Expected Failure</source>
-      <translation type="unfinished" />
+      <translation>Ожидаемый сбой</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="54" />
       <source>Unexpected Success</source>
-      <translation type="unfinished" />
+      <translation>Непредвиденное успешное завершение</translation>
     </message>
     <message>
       <location filename="../Testing/Interfaces/UnittestExecutor.py" line="55" />
       <source>Success</source>
-      <translation type="unfinished" />
+      <translation>Успешное завершение</translation>
     </message>
   </context>
   <context>
@@ -82625,47 +82181,47 @@
       <location filename="../UI/UserInterface.py" line="3601" />
       <location filename="../UI/UserInterface.py" line="2517" />
       <source>Testing</source>
-      <translation type="unfinished" />
+      <translation>Тестировать</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2519" />
       <source>&amp;Testing...</source>
-      <translation type="unfinished" />
+      <translation>&amp;Тестировать...</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2521" />
       <source>Start the testing dialog</source>
-      <translation type="unfinished" />
+      <translation>Запуск диалогового окна тестирования</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2522" />
       <source>&lt;b&gt;Testing&lt;/b&gt;&lt;p&gt;Perform test runs. The dialog gives the ability to select and run a test suite or auto discover them.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Тестировать&lt;/b&gt;&lt;p&gt;Выполнение тестовых прогонов. В этом диалоговом окне можно выбрать и запустить набор тестов или автоматически их обнаружить.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2532" />
       <source>Restart Last Test</source>
-      <translation type="unfinished" />
+      <translation>Перезапустить последний тест</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2534" />
       <source>&amp;Restart Last Test...</source>
-      <translation type="unfinished" />
+      <translation>&amp;Перезапустить последний тест...</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2536" />
       <source>Restarts the last test</source>
-      <translation type="unfinished" />
+      <translation>Перезапуск последнего теста</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2537" />
       <source>&lt;b&gt;Restart Last Test&lt;/b&gt;&lt;p&gt;Restarts the test performed last.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Перезапустить последний тестt&lt;/b&gt;&lt;p&gt;Перезапускает тест, выполненный последним.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2546" />
       <source>Rerun Failed Tests</source>
-      <translation type="unfinished" />
+      <translation>Повторить неудачные тесты</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2548" />
@@ -82680,47 +82236,47 @@
     <message>
       <location filename="../UI/UserInterface.py" line="2552" />
       <source>&lt;b&gt;Rerun Failed Tests&lt;/b&gt;&lt;p&gt;Rerun all tests that failed during the last test run.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Повторить неудачные тесты&lt;/b&gt;&lt;p&gt;Перезапустить все тесты, провалившиеся при последней попытке.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2561" />
       <source>Test Script</source>
-      <translation type="unfinished" />
+      <translation>Тест на сценарии</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2563" />
       <source>Test &amp;Script...</source>
-      <translation type="unfinished" />
+      <translation>Тест на &amp;сценарии...</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2565" />
       <source>Run tests of the current script</source>
-      <translation type="unfinished" />
+      <translation>Выполнить тесты на текущем сценарии</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2567" />
       <source>&lt;b&gt;Test Script&lt;/b&gt;&lt;p&gt;Run tests with the current script.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Тест на сценарии&lt;/b&gt;&lt;p&gt;Выполнить тесты на текущем сценарии.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2576" />
       <source>Test Project</source>
-      <translation type="unfinished" />
+      <translation>Тест на проекте</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2578" />
       <source>Test &amp;Project...</source>
-      <translation type="unfinished" />
+      <translation>Тест на &amp;проекте...</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2580" />
       <source>Run tests of the current project</source>
-      <translation type="unfinished" />
+      <translation>Выполнить тесты на текущем проекте</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2582" />
       <source>&lt;b&gt;Test Project&lt;/b&gt;&lt;p&gt;Run test of the current project.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <translation>&lt;b&gt;Тест на проекте&lt;/b&gt;&lt;p&gt;Выполнить тест на текущем проекте.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2603" />
@@ -83513,7 +83069,7 @@
     <message>
       <location filename="../UI/UserInterface.py" line="3403" />
       <source>&amp;Testing</source>
-      <translation type="unfinished" />
+      <translation>&amp;Тестировать</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="3420" />
@@ -84079,80 +83635,6 @@
       <source>Some editors contain unsaved data. Shall these be saved?</source>
       <translation>Некоторые редакторы содержат несохраненные данные. Должны ли они быть сохранены?</translation>
     </message>
-    <message>
-      <source>&amp;Unittest...</source>
-      <translation type="vanished">&amp;Юниттест...</translation>
-    </message>
-    <message>
-      <source>Start unittest dialog</source>
-      <translation type="vanished">Открыть диалог юниттеста</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Unittest&lt;/b&gt;&lt;p&gt;Perform unit tests. The dialog gives you the ability to select and run a unittest suite.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Юниттест&lt;/b&gt;
-&lt;p&gt;Выполнение тестов. Диалог даёт возможность выбрать и выполнить комплект юниттестов.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Unittest Restart</source>
-      <translation type="vanished">Перезапуск юниттеста</translation>
-    </message>
-    <message>
-      <source>&amp;Restart Unittest...</source>
-      <translation type="vanished">&amp;Перезапустить юниттест...</translation>
-    </message>
-    <message>
-      <source>Restart last unittest</source>
-      <translation type="vanished">Перезапустить последний юниттест</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Restart Unittest&lt;/b&gt;&lt;p&gt;Restart the unittest performed last.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Перезапустить юниттест&lt;/b&gt;
-&lt;p&gt;Перезапустить последний выполненный юниттест.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Unittest Rerun Failed</source>
-      <translation type="vanished">Неудачный перезапуск юниттеста</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Rerun Failed Tests&lt;/b&gt;&lt;p&gt;Rerun all tests that failed during the last unittest run.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Повторить неудачные тесты&lt;/b&gt;&lt;p&gt;Перезапустить все тесты, провалившиеся при последней попытке.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Unittest Script</source>
-      <translation type="vanished">Юниттест на сценарии</translation>
-    </message>
-    <message>
-      <source>Unittest &amp;Script...</source>
-      <translation type="vanished">Юниттест на &amp;сценарии...</translation>
-    </message>
-    <message>
-      <source>Run unittest with current script</source>
-      <translation type="vanished">Выполнить юниттест на текущем сценарии</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Run unittest with current script.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Юниттест на сценарии&lt;/b&gt;&lt;p&gt;Выполнить юниттест на с текущем сценарии.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>Unittest Project</source>
-      <translation type="vanished">Юниттест на проекте</translation>
-    </message>
-    <message>
-      <source>Unittest &amp;Project...</source>
-      <translation type="vanished">Юниттест на &amp;проекте...</translation>
-    </message>
-    <message>
-      <source>Run unittest with current project</source>
-      <translation type="vanished">Выполнить юниттест на текущем проекте</translation>
-    </message>
-    <message>
-      <source>&lt;b&gt;Unittest Project&lt;/b&gt;&lt;p&gt;Run unittest with current project.&lt;/p&gt;</source>
-      <translation type="vanished">&lt;b&gt;Юниттест на проекте&lt;/b&gt;&lt;p&gt;Выполнить юниттест на текущем проекте.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <source>&amp;Unittest</source>
-      <translation type="vanished">&amp;Юниттест</translation>
-    </message>
   </context>
   <context>
     <name>UserProjectFile</name>
@@ -84229,7 +83711,7 @@
   <context>
     <name>Utilities</name>
     <message>
-      <location filename="../Utilities/__init__.py" line="1516" />
+      <location filename="../Utilities/__init__.py" line="1523" />
       <source>&lt;p&gt;You may use %-codes as placeholders in the string. Supported codes are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;%C&lt;/td&gt;&lt;td&gt;column of the cursor of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%D&lt;/td&gt;&lt;td&gt;directory of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%F&lt;/td&gt;&lt;td&gt;filename of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%H&lt;/td&gt;&lt;td&gt;home directory of the current user&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%L&lt;/td&gt;&lt;td&gt;line of the cursor of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%P&lt;/td&gt;&lt;td&gt;path of the current project&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%S&lt;/td&gt;&lt;td&gt;selected text of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%U&lt;/td&gt;&lt;td&gt;username of the current user&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%%&lt;/td&gt;&lt;td&gt;the percent sign&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
       <translation>&lt;p&gt;Вы можете использовать %-коды как заполнители в строке:
 &lt;table&gt;

eric ide

mercurial