Browse Source

Launcher translation upgrade, still WIP:

- launcher can be re-translated without restart
- mod info (name/description/etc) can have localized versions
Ivan Savenko 2 years ago
parent
commit
1696db8a3c

+ 7 - 0
Mods/vcmi/mod.json

@@ -1,6 +1,13 @@
 {
 	"name" : "VCMI essential files",
 	"description" : "Essential files required for VCMI to run correctly",
+	
+	"translation_uk" : {
+		"name" : "VCMI - ключові файли",
+		"description" : "Ключові файли необхідні для повноцінної роботи VCMI",
+		"author" : "Команда VCMI",
+		"modType" : "Графіка",
+	},
 
 	"version" : "1.0",
 	"author" : "VCMI Team",

+ 2 - 1
launcher/CMakeLists.txt

@@ -88,7 +88,7 @@ else()
 endif()
 
 find_package(Qt5LinguistTools)
-set(launcher_TS translation/launcher_pl.ts translation/launcher_ru.ts translation/launcher_uk.ts)
+set(launcher_TS translation/launcher_en.ts translation/launcher_pl.ts translation/launcher_ru.ts translation/launcher_uk.ts)
 qt5_add_translation( QM_FILES ${launcher_TS} )
 
 if(WIN32)
@@ -160,4 +160,5 @@ else()
 		install(FILES "eu.vcmi.VCMI.metainfo.xml" DESTINATION share/metainfo)
 	endif()
 endif()
+
 install(DIRECTORY icons DESTINATION ${ICONS_DESTINATION})

+ 8 - 0
launcher/lobby/lobby_moc.cpp

@@ -35,6 +35,14 @@ Lobby::Lobby(QWidget *parent) :
 	ui->kickButton->setVisible(false);
 }
 
+void Lobby::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+}
+
 Lobby::~Lobby()
 {
 	delete ui;

+ 1 - 0
launcher/lobby/lobby_moc.h

@@ -19,6 +19,7 @@ class Lobby : public QWidget
 {
 	Q_OBJECT
 
+	void changeEvent(QEvent *event) override;
 public:
 	explicit Lobby(QWidget *parent = nullptr);
 	~Lobby();

+ 8 - 0
launcher/lobby/lobbyroomrequest_moc.cpp

@@ -27,6 +27,14 @@ LobbyRoomRequest::LobbyRoomRequest(SocketLobby & socket, const QString & room, c
 	show();
 }
 
+void LobbyRoomRequest::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+}
+
 LobbyRoomRequest::~LobbyRoomRequest()
 {
 	delete ui;

+ 1 - 0
launcher/lobby/lobbyroomrequest_moc.h

@@ -21,6 +21,7 @@ class LobbyRoomRequest : public QDialog
 {
 	Q_OBJECT
 
+	void changeEvent(QEvent *event) override;
 public:
 	explicit LobbyRoomRequest(SocketLobby & socket, const QString & room, const QMap<QString, QString> & mods, QWidget *parent = nullptr);
 	~LobbyRoomRequest();

+ 0 - 4
launcher/main.cpp

@@ -33,10 +33,6 @@ int main(int argc, char * argv[])
 #endif
 	QApplication vcmilauncher(argc, argv);
 
-	//QTranslator translator;
-	//translator.load("./launcher_uk.qm");
-	//vcmilauncher.installTranslator(&translator);
-
 	MainWindow mainWindow;
 	mainWindow.show();
 	result = vcmilauncher.exec();

+ 21 - 0
launcher/mainwindow_moc.cpp

@@ -79,6 +79,14 @@ MainWindow::MainWindow(QWidget * parent)
 		UpdateDialog::showUpdateDialog(false);
 }
 
+void MainWindow::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+}
+
 MainWindow::~MainWindow()
 {
 	//save window settings
@@ -116,3 +124,16 @@ void MainWindow::on_lobbyButton_clicked()
 	ui->startGameButton->setEnabled(false);
 	ui->tabListWidget->setCurrentIndex(TabRows::LOBBY);
 }
+
+void MainWindow::updateTranslation()
+{
+	std::string languageCode = settings["general"]["language"].String();
+
+	QString translationFile = "./launcher_" + QString::fromStdString(languageCode) + ".qm";
+
+	qApp->removeTranslator(&translator);
+	if (!translator.load(translationFile))
+		logGlobal->error("Failed to load translation");
+	if (!qApp->installTranslator(&translator))
+		logGlobal->error("Failed to install translator");
+}

+ 3 - 0
launcher/mainwindow_moc.h

@@ -26,6 +26,7 @@ class MainWindow : public QMainWindow
 {
 	Q_OBJECT
 
+	QTranslator translator;
 private:
 	Ui::MainWindow * ui;
 	void load();
@@ -35,12 +36,14 @@ private:
 		MODS = 0, SETTINGS = 1, LOBBY = 2
 	};
 
+	void changeEvent(QEvent *event) override;
 public:
 	explicit MainWindow(QWidget * parent = 0);
 	~MainWindow();
 
 	const CModList & getModList() const;
 
+	void updateTranslation();
 	
 public slots:
 	void on_startGameButton_clicked();

+ 120 - 77
launcher/mainwindow_moc.ui

@@ -31,6 +31,22 @@
   </property>
   <widget class="QWidget" name="centralWidget">
    <layout class="QGridLayout" name="gridLayout">
+    <item row="0" column="1" rowspan="7">
+     <widget class="Line" name="line">
+      <property name="frameShadow">
+       <enum>QFrame::Plain</enum>
+      </property>
+      <property name="lineWidth">
+       <number>1</number>
+      </property>
+      <property name="midLineWidth">
+       <number>0</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
+      </property>
+     </widget>
+    </item>
     <item row="1" column="0">
      <widget class="QToolButton" name="settingsButton">
       <property name="sizePolicy">
@@ -75,21 +91,43 @@
       </property>
      </widget>
     </item>
-    <item row="3" column="0">
-     <spacer name="verticalSpacer">
-      <property name="orientation">
-       <enum>Qt::Vertical</enum>
+    <item row="6" column="0">
+     <widget class="QLabel" name="startGameTitle">
+      <property name="font">
+       <font>
+        <weight>75</weight>
+        <bold>true</bold>
+       </font>
       </property>
-      <property name="sizeHint" stdset="0">
-       <size>
-        <width>80</width>
-        <height>0</height>
-       </size>
+      <property name="text">
+       <string>Start game</string>
       </property>
-     </spacer>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+     </widget>
     </item>
-    <item row="2" column="0">
-     <widget class="QToolButton" name="lobbyButton">
+    <item row="0" column="2" rowspan="7">
+     <widget class="QStackedWidget" name="tabListWidget">
+      <property name="enabled">
+       <bool>true</bool>
+      </property>
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>10</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="currentIndex">
+       <number>0</number>
+      </property>
+      <widget class="CModListView" name="modlistView"/>
+      <widget class="CSettingsView" name="settingsView"/>
+      <widget class="Lobby" name="lobbyView"/>
+     </widget>
+    </item>
+    <item row="5" column="0">
+     <widget class="QToolButton" name="startGameButton">
       <property name="sizePolicy">
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
         <horstretch>1</horstretch>
@@ -102,12 +140,18 @@
         <height>0</height>
        </size>
       </property>
+      <property name="font">
+       <font>
+        <weight>75</weight>
+        <bold>true</bold>
+       </font>
+      </property>
       <property name="text">
-       <string>Lobby</string>
+       <string/>
       </property>
       <property name="icon">
        <iconset>
-        <normaloff>icons:menu-lobby.png</normaloff>icons:menu-lobby.png</iconset>
+        <normaloff>icons:menu-game.png</normaloff>icons:menu-game.png</iconset>
       </property>
       <property name="iconSize">
        <size>
@@ -116,24 +160,21 @@
        </size>
       </property>
       <property name="checkable">
-       <bool>true</bool>
+       <bool>false</bool>
       </property>
       <property name="checked">
        <bool>false</bool>
       </property>
-      <property name="autoExclusive">
-       <bool>true</bool>
-      </property>
       <property name="toolButtonStyle">
-       <enum>Qt::ToolButtonTextUnderIcon</enum>
+       <enum>Qt::ToolButtonIconOnly</enum>
       </property>
       <property name="autoRaise">
-       <bool>true</bool>
+       <bool>false</bool>
       </property>
      </widget>
     </item>
-    <item row="4" column="0">
-     <widget class="QToolButton" name="startGameButton">
+    <item row="2" column="0">
+     <widget class="QToolButton" name="lobbyButton">
       <property name="sizePolicy">
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
         <horstretch>1</horstretch>
@@ -146,18 +187,12 @@
         <height>0</height>
        </size>
       </property>
-      <property name="font">
-       <font>
-        <weight>75</weight>
-        <bold>true</bold>
-       </font>
-      </property>
       <property name="text">
-       <string/>
+       <string>Lobby</string>
       </property>
       <property name="icon">
        <iconset>
-        <normaloff>icons:menu-game.png</normaloff>icons:menu-game.png</iconset>
+        <normaloff>icons:menu-lobby.png</normaloff>icons:menu-lobby.png</iconset>
       </property>
       <property name="iconSize">
        <size>
@@ -166,52 +201,20 @@
        </size>
       </property>
       <property name="checkable">
-       <bool>false</bool>
+       <bool>true</bool>
       </property>
       <property name="checked">
        <bool>false</bool>
       </property>
+      <property name="autoExclusive">
+       <bool>true</bool>
+      </property>
       <property name="toolButtonStyle">
-       <enum>Qt::ToolButtonIconOnly</enum>
+       <enum>Qt::ToolButtonTextUnderIcon</enum>
       </property>
       <property name="autoRaise">
-       <bool>false</bool>
-      </property>
-     </widget>
-    </item>
-    <item row="5" column="0">
-     <widget class="QLabel" name="startGameTitle">
-      <property name="font">
-       <font>
-        <weight>75</weight>
-        <bold>true</bold>
-       </font>
-      </property>
-      <property name="text">
-       <string>Start game</string>
-      </property>
-      <property name="alignment">
-       <set>Qt::AlignCenter</set>
-      </property>
-     </widget>
-    </item>
-    <item row="0" column="2" rowspan="6">
-     <widget class="QStackedWidget" name="tabListWidget">
-      <property name="enabled">
        <bool>true</bool>
       </property>
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-        <horstretch>10</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="currentIndex">
-       <number>0</number>
-      </property>
-      <widget class="CModListView" name="modlistView"/>
-      <widget class="CSettingsView" name="settingsView"/>
-      <widget class="Lobby" name="lobbyView"/>
      </widget>
     </item>
     <item row="0" column="0">
@@ -258,19 +261,59 @@
       </property>
      </widget>
     </item>
-    <item row="0" column="1" rowspan="6">
-     <widget class="Line" name="line">
-      <property name="frameShadow">
-       <enum>QFrame::Plain</enum>
+    <item row="3" column="0">
+     <spacer name="verticalSpacer">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
       </property>
-      <property name="lineWidth">
-       <number>1</number>
+      <property name="sizeHint" stdset="0">
+       <size>
+        <width>80</width>
+        <height>0</height>
+       </size>
       </property>
-      <property name="midLineWidth">
-       <number>0</number>
+     </spacer>
+    </item>
+    <item row="4" column="0">
+     <widget class="QToolButton" name="startEditorButton">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
+        <horstretch>1</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
       </property>
-      <property name="orientation">
-       <enum>Qt::Vertical</enum>
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="font">
+       <font>
+        <weight>75</weight>
+        <bold>true</bold>
+       </font>
+      </property>
+      <property name="text">
+       <string>Editor</string>
+      </property>
+      <property name="iconSize">
+       <size>
+        <width>60</width>
+        <height>60</height>
+       </size>
+      </property>
+      <property name="checkable">
+       <bool>false</bool>
+      </property>
+      <property name="checked">
+       <bool>false</bool>
+      </property>
+      <property name="toolButtonStyle">
+       <enum>Qt::ToolButtonIconOnly</enum>
+      </property>
+      <property name="autoRaise">
+       <bool>false</bool>
       </property>
      </widget>
     </item>

+ 21 - 8
launcher/modManager/cmodlist.cpp

@@ -10,6 +10,7 @@
 #include "StdInc.h"
 #include "cmodlist.h"
 
+#include "../lib/CConfigHandler.h"
 #include "../../lib/JsonNode.h"
 #include "../../lib/filesystem/CFileInputStream.h"
 #include "../../lib/GameConstants.h"
@@ -157,23 +158,35 @@ QString CModEntry::getName() const
 
 QVariant CModEntry::getValue(QString value) const
 {
+	QString lang = QString::fromStdString(settings["general"]["language"].String());
+	QString langValue = "translation_" + lang;
+
+	// Priorities
+	// 1) data from newest version
+	// 2) data from preferred language
+
+	bool useRepositoryData = repository.contains(value);
+
 	if(repository.contains(value) && localData.contains(value))
 	{
 		// value is present in both repo and locally installed. Select one from latest version
 		QString installedVer = localData["installedVersion"].toString();
 		QString availableVer = repository["latestVersion"].toString();
 
-		if(compareVersions(installedVer, availableVer))
-			return repository[value];
-		else
-			return localData[value];
+		useRepositoryData = compareVersions(installedVer, availableVer);
 	}
 
-	if(repository.contains(value))
-		return repository[value];
+	auto & storage = useRepositoryData ? repository : localData;
+
+	if (storage.contains(langValue))
+	{
+		auto langStorage = storage[langValue].toMap();
+		if (langStorage.contains(value))
+			return langStorage[value];
+	}
 
-	if(localData.contains(value))
-		return localData[value];
+	if (storage.contains(value))
+		return storage[value];
 
 	return QVariant();
 }

+ 13 - 11
launcher/modManager/cmodlistmodel_moc.cpp

@@ -25,16 +25,6 @@ static const QString names[ModFields::COUNT] =
 	"author"
 };
 
-static const QString header[ModFields::COUNT] =
-{
-	"Name",
-	"", // status icon
-	"", // status icon
-	"Type",
-	"Version",
-	"Size",
-	"Author"
-};
 }
 
 namespace ModStatus
@@ -155,13 +145,25 @@ Qt::ItemFlags CModListModel::flags(const QModelIndex &) const
 
 QVariant CModListModel::headerData(int section, Qt::Orientation orientation, int role) const
 {
+	static const QString header[ModFields::COUNT] =
+	{
+		QT_TR_NOOP("Name"),
+		QT_TR_NOOP(""), // status icon
+		QT_TR_NOOP(""), // status icon
+		QT_TR_NOOP("Type"),
+		QT_TR_NOOP("Version"),
+		QT_TR_NOOP("Size"),
+		QT_TR_NOOP("Author")
+	};
+
 	if(role == Qt::DisplayRole && orientation == Qt::Horizontal)
-		return ModFields::header[section];
+		return QCoreApplication::translate("ModFields", header[section].toStdString().c_str());
 	return QVariant();
 }
 
 void CModListModel::reloadRepositories()
 {
+	//emit headerDataChanged(Qt::Horizontal, 0, -1 );
 	beginResetModel();
 	endResetModel();
 }

+ 11 - 2
launcher/modManager/cmodlistview_moc.cpp

@@ -34,6 +34,15 @@ void CModListView::setupModModel()
 		this, &CModListView::extraResolutionsEnabledChanged);
 }
 
+void CModListView::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+		modModel->reloadRepositories();
+	}
+}
+
 void CModListView::setupFilterModel()
 {
 	filterModel = new CModFilterModel(modModel, this);
@@ -227,8 +236,8 @@ QString CModListView::genModInfoText(CModEntry & mod)
 	QString textTemplate = prefix + "</p><p align=\"justify\">%2</p>";
 	QString listTemplate = "<p align=\"justify\">%1: %2</p>";
 	QString noteTemplate = "<p align=\"justify\">%1</p>";
-	QString compatibleString = prefix + "Mod is compatible</p>";
-	QString incompatibleString = redPrefix + "Mod is incompatible</p>";
+	QString compatibleString = prefix + tr("Mod is compatible") + "</p>";
+	QString incompatibleString = redPrefix + tr("Mod is incompatible") + "</p>";
 	QString supportedVersions = redPrefix + "%2 %3 %4</p>";
 
 	QString result;

+ 1 - 0
launcher/modManager/cmodlistview_moc.h

@@ -64,6 +64,7 @@ class CModListView : public QWidget
 	QString genChangelogText(CModEntry & mod);
 	QString genModInfoText(CModEntry & mod);
 
+	void changeEvent(QEvent *event) override;
 signals:
 	void extraResolutionsEnabledChanged(bool enabled);
 

+ 8 - 0
launcher/modManager/imageviewer_moc.cpp

@@ -20,6 +20,14 @@ ImageViewer::ImageViewer(QWidget * parent)
 	ui->setupUi(this);
 }
 
+void ImageViewer::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+}
+
 ImageViewer::~ImageViewer()
 {
 	delete ui;

+ 1 - 0
launcher/modManager/imageviewer_moc.h

@@ -21,6 +21,7 @@ class ImageViewer : public QDialog
 {
 	Q_OBJECT
 
+	void changeEvent(QEvent *event) override;
 public:
 	explicit ImageViewer(QWidget * parent = 0);
 	~ImageViewer();

+ 27 - 0
launcher/settingsView/csettingsview_moc.cpp

@@ -11,6 +11,8 @@
 #include "csettingsview_moc.h"
 #include "ui_csettingsview_moc.h"
 
+#include "mainwindow_moc.h"
+
 #include "../jsonutils.h"
 #include "../launcherdirs.h"
 #include "../updatedialog_moc.h"
@@ -44,6 +46,15 @@ static const std::string knownEncodingsList[] = //TODO: remove hardcode
 	"CP949" // extension of EUC-KR.
 };
 
+/// List of tags of languages that can be selected from Launcher (and have translation for Launcher)
+static const std::string languageTagList[] =
+{
+	"en", // english
+	"pl", // polish
+	"ru", // russian
+	"uk", // ukrainian
+};
+
 void CSettingsView::setDisplayList()
 {
 	QStringList list;
@@ -301,3 +312,19 @@ void CSettingsView::on_updatesButton_clicked()
 	UpdateDialog::showUpdateDialog(true);
 }
 
+
+void CSettingsView::on_comboBoxLanguage_currentIndexChanged(int index)
+{
+	Settings node = settings.write["general"]["language"];
+	node->String() = languageTagList[index];
+
+	dynamic_cast<MainWindow*>(qApp->activeWindow())->updateTranslation();
+}
+
+void CSettingsView::changeEvent(QEvent *event)
+{
+	if ( event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+}

+ 3 - 0
launcher/settingsView/csettingsview_moc.h

@@ -25,6 +25,7 @@ public:
 
 	void loadSettings();
 	void setDisplayList();
+	void changeEvent(QEvent *event) override;
 
 	bool isExtraResolutionsModEnabled{};
 
@@ -68,6 +69,8 @@ private slots:
 
 	void on_updatesButton_clicked();
 
+	void on_comboBoxLanguage_currentIndexChanged(int index);
+
 private:
 	Ui::CSettingsView * ui;
 

+ 326 - 295
launcher/settingsView/csettingsview_moc.ui

@@ -26,48 +26,63 @@
    <property name="bottomMargin">
     <number>0</number>
    </property>
-   <item row="1" column="8">
-    <widget class="QPushButton" name="changeGameDataDir">
+   <item row="2" column="7" colspan="2">
+    <widget class="QLineEdit" name="lineEditUserDataDir">
      <property name="enabled">
       <bool>false</bool>
      </property>
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
      <property name="text">
-      <string>Change</string>
+      <string notr="true">/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="3" column="9">
-    <widget class="QPushButton" name="openTempDir">
+   <item row="17" column="1" colspan="4">
+    <widget class="QLabel" name="LauncherSettings">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
      <property name="text">
-      <string>Open</string>
+      <string>Launcher Settings</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="6">
-    <widget class="QLabel" name="labelUserDataDir">
+   <item row="1" column="7">
+    <widget class="QLineEdit" name="lineEditGameDir">
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
      <property name="text">
-      <string>User data directory</string>
+      <string notr="true">/usr/share/vcmi</string>
      </property>
     </widget>
    </item>
-   <item row="10" column="5">
-    <spacer name="spacerColumns">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
+   <item row="1" column="8">
+    <widget class="QPushButton" name="changeGameDataDir">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>8</width>
-       <height>20</height>
-      </size>
+     <property name="text">
+      <string>Change</string>
      </property>
-    </spacer>
+    </widget>
    </item>
-   <item row="10" column="7">
-    <widget class="QComboBox" name="comboBoxAutoSave">
+   <item row="18" column="6">
+    <widget class="QComboBox" name="comboBoxAutoCheck">
      <property name="currentIndex">
       <number>1</number>
      </property>
@@ -83,23 +98,17 @@
      </item>
     </widget>
    </item>
-   <item row="1" column="9">
-    <widget class="QPushButton" name="openGameDataDir">
+   <item row="3" column="9">
+    <widget class="QPushButton" name="openTempDir">
      <property name="text">
       <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="7">
-    <widget class="QLineEdit" name="lineEditGameDir">
-     <property name="minimumSize">
-      <size>
-       <width>150</width>
-       <height>0</height>
-      </size>
-     </property>
+   <item row="10" column="6">
+    <widget class="QLabel" name="labelEncoding">
      <property name="text">
-      <string notr="true">/usr/share/vcmi</string>
+      <string>Heroes III character set</string>
      </property>
     </widget>
    </item>
@@ -110,37 +119,57 @@
      </property>
     </widget>
    </item>
-   <item row="10" column="4">
-    <widget class="QComboBox" name="comboBoxNeutralAI">
-     <property name="currentText">
-      <string notr="true">BattleAI</string>
+   <item row="3" column="4">
+    <widget class="QComboBox" name="comboBoxShowIntro">
+     <property name="currentIndex">
+      <number>1</number>
      </property>
      <item>
       <property name="text">
-       <string notr="true">BattleAI</string>
+       <string>Off</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string notr="true">StupidAI</string>
+       <string>On</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="8" column="7" colspan="3">
-    <widget class="QSpinBox" name="spinBoxNetworkPort">
-     <property name="minimum">
-      <number>1024</number>
+   <item row="3" column="6">
+    <widget class="QLabel" name="labelTempDir">
+     <property name="text">
+      <string>Log files directory</string>
      </property>
-     <property name="maximum">
-      <number>65535</number>
+    </widget>
+   </item>
+   <item row="3" column="7" colspan="2">
+    <widget class="QLineEdit" name="lineEditTempDir">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
-     <property name="value">
-      <number>3030</number>
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="text">
+      <string notr="true">/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="17" column="1" colspan="4">
+   <item row="12" column="6">
+    <widget class="QLabel" name="labelAutoSave">
+     <property name="text">
+      <string>Autosave</string>
+     </property>
+    </widget>
+   </item>
+   <item row="19" column="1" colspan="4">
     <widget class="QLabel" name="labelRepositories">
      <property name="font">
       <font>
@@ -153,43 +182,21 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="4">
-    <widget class="QComboBox" name="comboBoxResolution"/>
-   </item>
-   <item row="16" column="7">
+   <item row="18" column="7">
     <widget class="QPushButton" name="updatesButton">
      <property name="text">
       <string>Check for updates</string>
      </property>
     </widget>
    </item>
-   <item row="10" column="1">
-    <widget class="QLabel" name="labelNeutralAI">
-     <property name="text">
-      <string>Neutral AI</string>
-     </property>
-    </widget>
+   <item row="4" column="4">
+    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
    </item>
-   <item row="2" column="4">
-    <widget class="QComboBox" name="comboBoxFullScreen">
-     <property name="currentIndex">
-      <number>0</number>
+   <item row="18" column="1" colspan="4">
+    <widget class="QLabel" name="labelAutoCheck">
+     <property name="text">
+      <string>Check repositories on startup</string>
      </property>
-     <item>
-      <property name="text">
-       <string>Off</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>On</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Real</string>
-      </property>
-     </item>
     </widget>
    </item>
    <item row="2" column="9">
@@ -199,6 +206,45 @@
      </property>
     </widget>
    </item>
+   <item row="8" column="1">
+    <widget class="QLabel" name="labelPlayerAI">
+     <property name="text">
+      <string>Player AI</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="QLabel" name="labelDisplayIndex">
+     <property name="text">
+      <string>Display index</string>
+     </property>
+    </widget>
+   </item>
+   <item row="10" column="1" colspan="4">
+    <widget class="QLabel" name="labelAIInTheBattlefield">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <italic>true</italic>
+       <bold>true</bold>
+       <underline>false</underline>
+      </font>
+     </property>
+     <property name="text">
+      <string>AI in the battlefield</string>
+     </property>
+    </widget>
+   </item>
+   <item row="21" column="1" colspan="9">
+    <widget class="QPlainTextEdit" name="plainTextEditRepos">
+     <property name="lineWrapMode">
+      <enum>QPlainTextEdit::NoWrap</enum>
+     </property>
+     <property name="plainText">
+      <string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
+     </property>
+    </widget>
+   </item>
    <item row="7" column="6" colspan="4">
     <widget class="QLabel" name="labelGeneral">
      <property name="font">
@@ -212,88 +258,160 @@
      </property>
     </widget>
    </item>
-   <item row="2" column="7" colspan="2">
-    <widget class="QLineEdit" name="lineEditUserDataDir">
-     <property name="enabled">
-      <bool>false</bool>
+   <item row="3" column="1">
+    <widget class="QLabel" name="labelShowIntro">
+     <property name="text">
+      <string>Show intro</string>
      </property>
-     <property name="minimumSize">
+    </widget>
+   </item>
+   <item row="16" column="1" colspan="4">
+    <spacer name="spacerRepos">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
       <size>
-       <width>150</width>
-       <height>0</height>
+       <width>20</width>
+       <height>8</height>
       </size>
      </property>
+    </spacer>
+   </item>
+   <item row="14" column="6">
+    <widget class="QLabel" name="labelBuildVersionDesc">
      <property name="text">
-      <string notr="true">/home/user/.vcmi</string>
+      <string>Build version</string>
      </property>
-     <property name="readOnly">
-      <bool>true</bool>
+    </widget>
+   </item>
+   <item row="1" column="6">
+    <widget class="QLabel" name="labelGameDir">
+     <property name="text">
+      <string>Extra data directory</string>
      </property>
     </widget>
    </item>
-   <item row="8" column="1">
-    <widget class="QLabel" name="labelPlayerAI">
+   <item row="1" column="1">
+    <widget class="QLabel" name="labelResolution">
      <property name="text">
-      <string>Player AI</string>
+      <string>Resolution</string>
      </property>
     </widget>
    </item>
-   <item row="9" column="7" colspan="3">
-    <widget class="QComboBox" name="comboBoxEncoding">
+   <item row="2" column="4">
+    <widget class="QComboBox" name="comboBoxFullScreen">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
      <item>
       <property name="text">
-       <string>Central European (Windows 1250)</string>
+       <string>Off</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>Cyrillic script (Windows 1251)</string>
+       <string>On</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>Western European (Windows 1252)</string>
+       <string>Real</string>
       </property>
      </item>
+    </widget>
+   </item>
+   <item row="12" column="7">
+    <widget class="QComboBox" name="comboBoxAutoSave">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
      <item>
       <property name="text">
-       <string>Simplified Chinese (GBK)</string>
+       <string>Off</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>Simplified Chinese (GB2312)</string>
+       <string>On</string>
       </property>
      </item>
+    </widget>
+   </item>
+   <item row="7" column="1" colspan="4">
+    <widget class="QLabel" name="labelAIMovingOnTheMap">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
+     <property name="text">
+      <string>AI on the map</string>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="4">
+    <widget class="QComboBox" name="comboBoxPlayerAI">
+     <property name="currentText">
+      <string notr="true">VCAI</string>
+     </property>
      <item>
       <property name="text">
-       <string>Korean (Windows 949)</string>
+       <string notr="true">VCAI</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string notr="true">Nullkiller</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="12" column="1">
-    <widget class="QLabel" name="labelFriendlyAI">
-     <property name="minimumSize">
+   <item row="12" column="5">
+    <spacer name="spacerColumns">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
       <size>
-       <width>0</width>
-       <height>22</height>
+       <width>8</width>
+       <height>20</height>
       </size>
      </property>
+    </spacer>
+   </item>
+   <item row="1" column="4">
+    <widget class="QComboBox" name="comboBoxResolution"/>
+   </item>
+   <item row="1" column="9">
+    <widget class="QPushButton" name="openGameDataDir">
      <property name="text">
-      <string>Friendly AI</string>
+      <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="1">
-    <widget class="QLabel" name="labelResolution">
+   <item row="0" column="1" colspan="4">
+    <widget class="QLabel" name="labelVideo">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
      <property name="text">
-      <string>Resolution</string>
+      <string>Video</string>
      </property>
     </widget>
    </item>
-   <item row="7" column="1" colspan="4">
-    <widget class="QLabel" name="labelAIMovingOnTheMap">
+   <item row="0" column="6" colspan="4">
+    <widget class="QLabel" name="labelDataDirs">
      <property name="font">
       <font>
        <weight>75</weight>
@@ -301,12 +419,12 @@
       </font>
      </property>
      <property name="text">
-      <string>AI on the map</string>
+      <string>Data Directories</string>
      </property>
     </widget>
    </item>
-   <item row="14" column="1" colspan="4">
-    <spacer name="spacerRepos">
+   <item row="6" column="1" colspan="4">
+    <spacer name="spacerSections">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
@@ -315,129 +433,145 @@
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>20</width>
+       <width>56</width>
        <height>8</height>
       </size>
      </property>
     </spacer>
    </item>
-   <item row="4" column="4">
-    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
-   </item>
-   <item row="10" column="6">
-    <widget class="QLabel" name="labelAutoSave">
+   <item row="2" column="6">
+    <widget class="QLabel" name="labelUserDataDir">
      <property name="text">
-      <string>Autosave</string>
+      <string>User data directory</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="1">
-    <widget class="QLabel" name="labelDisplayIndex">
+   <item row="11" column="6">
+    <widget class="QLabel" name="labelNetworkPort">
      <property name="text">
-      <string>Display index</string>
+      <string>Network port</string>
      </property>
     </widget>
    </item>
-   <item row="3" column="7" colspan="2">
-    <widget class="QLineEdit" name="lineEditTempDir">
-     <property name="enabled">
-      <bool>false</bool>
-     </property>
-     <property name="minimumSize">
-      <size>
-       <width>150</width>
-       <height>0</height>
-      </size>
+   <item row="11" column="7">
+    <widget class="QSpinBox" name="spinBoxNetworkPort">
+     <property name="minimum">
+      <number>1024</number>
      </property>
-     <property name="text">
-      <string notr="true">/home/user/.vcmi</string>
+     <property name="maximum">
+      <number>65535</number>
      </property>
-     <property name="readOnly">
-      <bool>true</bool>
+     <property name="value">
+      <number>3030</number>
      </property>
     </widget>
    </item>
-   <item row="16" column="1" colspan="4">
-    <widget class="QLabel" name="labelAutoCheck">
+   <item row="8" column="6">
+    <widget class="QLabel" name="labelLanguage">
      <property name="text">
-      <string>Check repositories on startup</string>
+      <string>VCMI Language</string>
      </property>
     </widget>
    </item>
-   <item row="8" column="6">
-    <widget class="QLabel" name="labelNetworkPort">
+   <item row="14" column="7" colspan="2">
+    <widget class="QLabel" name="labelBuildVersion">
      <property name="text">
-      <string>Network port</string>
+      <string notr="true"/>
      </property>
     </widget>
    </item>
-   <item row="8" column="4">
-    <widget class="QComboBox" name="comboBoxPlayerAI">
-     <property name="currentText">
-      <string notr="true">VCAI</string>
-     </property>
+   <item row="10" column="7" colspan="2">
+    <widget class="QComboBox" name="comboBoxEncoding">
      <item>
       <property name="text">
-       <string notr="true">VCAI</string>
+       <string>Central European (Windows 1250)</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string notr="true">Nullkiller</string>
+       <string>Cyrillic script (Windows 1251)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Western European (Windows 1252)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Simplified Chinese (GBK)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Simplified Chinese (GB2312)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Korean (Windows 949)</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="13" column="4">
-    <widget class="QComboBox" name="comboBoxEnemyAI">
-     <property name="editable">
-      <bool>false</bool>
-     </property>
-     <property name="currentText">
-      <string notr="true">BattleAI</string>
-     </property>
+   <item row="8" column="7" colspan="2">
+    <widget class="QComboBox" name="comboBoxLanguage">
      <item>
       <property name="text">
-       <string notr="true">BattleAI</string>
+       <string>English</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string notr="true">StupidAI</string>
+       <string>Polska (Polish)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Русский (Russian)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Українська (Ukrainian)</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="0" column="6" colspan="4">
-    <widget class="QLabel" name="labelDataDirs">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
+   <item row="11" column="1">
+    <widget class="QLabel" name="labelNeutralAI">
      <property name="text">
-      <string>Data Directories</string>
+      <string>Neutral AI</string>
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="4">
-    <widget class="QLabel" name="labelVideo">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>Video</string>
+   <item row="11" column="4">
+    <widget class="QComboBox" name="comboBoxNeutralAI">
+     <property name="currentText">
+      <string notr="true">BattleAI</string>
      </property>
+     <item>
+      <property name="text">
+       <string notr="true">BattleAI</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string notr="true">StupidAI</string>
+      </property>
+     </item>
     </widget>
    </item>
-   <item row="9" column="6">
-    <widget class="QLabel" name="labelEncoding">
+   <item row="12" column="1">
+    <widget class="QLabel" name="labelFriendlyAI">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>22</height>
+      </size>
+     </property>
      <property name="text">
-      <string>Heroes III character set</string>
+      <string>Friendly AI</string>
      </property>
     </widget>
    </item>
@@ -461,91 +595,27 @@
      </item>
     </widget>
    </item>
-   <item row="1" column="6">
-    <widget class="QLabel" name="labelGameDir">
-     <property name="text">
-      <string>Extra data directory</string>
+   <item row="14" column="4">
+    <widget class="QComboBox" name="comboBoxEnemyAI">
+     <property name="editable">
+      <bool>false</bool>
      </property>
-    </widget>
-   </item>
-   <item row="16" column="6">
-    <widget class="QComboBox" name="comboBoxAutoCheck">
-     <property name="currentIndex">
-      <number>1</number>
+     <property name="currentText">
+      <string notr="true">BattleAI</string>
      </property>
      <item>
       <property name="text">
-       <string>Off</string>
+       <string notr="true">BattleAI</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>On</string>
+       <string notr="true">StupidAI</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="3" column="6">
-    <widget class="QLabel" name="labelTempDir">
-     <property name="text">
-      <string>Log files directory</string>
-     </property>
-    </widget>
-   </item>
-   <item row="19" column="1" colspan="9">
-    <widget class="QPlainTextEdit" name="plainTextEditRepos">
-     <property name="lineWrapMode">
-      <enum>QPlainTextEdit::NoWrap</enum>
-     </property>
-     <property name="plainText">
-      <string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
-     </property>
-    </widget>
-   </item>
-   <item row="3" column="1">
-    <widget class="QLabel" name="labelShowIntro">
-     <property name="text">
-      <string>Show intro</string>
-     </property>
-    </widget>
-   </item>
-   <item row="15" column="1" colspan="4">
-    <widget class="QLabel" name="LauncherSettings">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>Launcher Settings</string>
-     </property>
-    </widget>
-   </item>
-   <item row="12" column="6">
-    <widget class="QLabel" name="labelBuildVersionDesc">
-     <property name="text">
-      <string>Build version</string>
-     </property>
-    </widget>
-   </item>
-   <item row="6" column="1" colspan="4">
-    <spacer name="spacerSections">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>56</width>
-       <height>8</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="13" column="1">
+   <item row="14" column="1">
     <widget class="QLabel" name="labelEnemyAI">
      <property name="minimumSize">
       <size>
@@ -558,45 +628,6 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="4">
-    <widget class="QComboBox" name="comboBoxShowIntro">
-     <property name="currentIndex">
-      <number>1</number>
-     </property>
-     <item>
-      <property name="text">
-       <string>Off</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>On</string>
-      </property>
-     </item>
-    </widget>
-   </item>
-   <item row="12" column="7" colspan="3">
-    <widget class="QLabel" name="labelBuildVersion">
-     <property name="text">
-      <string notr="true"/>
-     </property>
-    </widget>
-   </item>
-   <item row="9" column="1" colspan="4">
-    <widget class="QLabel" name="labelAIInTheBattlefield">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <italic>true</italic>
-       <bold>true</bold>
-       <underline>false</underline>
-      </font>
-     </property>
-     <property name="text">
-      <string>AI in the battlefield</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <resources/>

+ 505 - 49
launcher/translation/launcher_uk.ts

@@ -1,389 +1,750 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="uk_UA">
+<context>
+    <name>CModListModel</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="159"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="159"/>
+        <source>ModFields</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <source>Name</source>
+        <translation>Назва</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation>Тип</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation>Версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation>Розмір</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <source>Author</source>
+        <translation>Автори</translation>
+    </message>
+</context>
 <context>
     <name>CModListView</name>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
         <source>Filter</source>
         <translation>Фільтр</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
         <source>All mods</source>
         <translation>Усі модифікації</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
         <source>Downloadable</source>
         <translation>Усі доступні</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
         <source>Installed</source>
         <translation>Встановлені</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
         <source>Updatable</source>
         <translation>Доступні оновлення</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
         <source>Active</source>
         <translation>Активні</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
         <source>Inactive</source>
         <translation>Неактивні</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
         <source>Download &amp;&amp; refresh repositories</source>
-        <translation>Завантажити та оновити репозиторії</translation>
+        <translation>Оновити репозиторії</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
-        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
         <source>Description</source>
         <translation>Опис</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
         <source>Changelog</source>
         <translation>Зміни</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
         <source>Screenshots</source>
         <translation>Знімки</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
         <source>Show details</source>
         <translation>Показати подробиці</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
         <source>Uninstall</source>
         <translation>Видалити</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
         <source>Enable</source>
         <translation>Активувати</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
         <source>Disable</source>
         <translation>Деактивувати</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
         <source>Update</source>
         <translation>Оновити</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
         <source>Install</source>
         <translation>Встановити</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
         <source> %p% (%v KB out of %m KB)</source>
         <translation> %p% (%v КБ з %m КБ)</translation>
     </message>
     <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
         <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
         <source>Abort</source>
         <translation>Відмінити</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="236"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="236"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="236"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
         <source>Mod name</source>
         <translation>Назва модифікації</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="237"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="237"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="237"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
         <source>Installed version</source>
         <translation>Встановлена версія</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="238"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="238"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="238"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
         <source>Latest version</source>
         <translation>Найновіша версія</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="250"/>
         <source>Download size</source>
         <translation>Розмір для завантаження</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="242"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="242"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="242"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
         <source>Authors</source>
         <translation>Автори</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="254"/>
         <source>License</source>
         <translation>Ліцензія</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="257"/>
         <source>Home</source>
         <translation>Домашня сторінка</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
         <location filename="../modManager/cmodlistview_moc.cpp" line="259"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="259"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="259"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="268"/>
         <source>Compatibility</source>
         <translation>Сумісність</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
         <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="270"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="278"/>
         <source>Required VCMI version</source>
         <translation>Необхідна версія VCMI</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="267"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="267"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="267"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
         <source>Supported VCMI version</source>
         <translation>Підтримувана версія VCMI</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="272"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="272"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="272"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="281"/>
         <source>Supported VCMI versions</source>
         <translation>Підтримувані версії VCMI</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
         <source>Required mods</source>
         <translation>Необхідні модифікації</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
         <source>Conflicting mods</source>
         <translation>Конфліктуючі модифікації</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
         <source>This mod can not be installed or enabled because following dependencies are not present</source>
         <translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="283"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="283"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="283"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
         <source>This mod can not be enabled because following mods are incompatible with this mod</source>
         <translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
         <source>This mod can not be disabled because it is required to run following mods</source>
         <translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
         <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
         <translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
         <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
         <translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="310"/>
         <source>Notes</source>
         <translation>Примітки</translation>
     </message>
     <message>
         <location filename="../modManager/cmodlistview_moc.cpp" line="818"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="818"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="818"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="827"/>
         <source>Screenshot %1</source>
         <translation>Знімок екрану %1</translation>
     </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="239"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="239"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="239"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="239"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="239"/>
+        <source>Mod is compatible</source>
+        <translation>Модифікація сумісна</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is incompatible</source>
+        <translation>Модифікація несумісна</translation>
+    </message>
 </context>
 <context>
     <name>CSettingsView</name>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="35"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
         <source>Change</source>
         <translation>Змінити</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="42"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="89"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="213"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
         <source>Open</source>
         <translation>Відкрити</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="49"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
         <source>User data directory</source>
         <translation>Тека даних користувача</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="76"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="195"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="493"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="583"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="91"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="129"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="312"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="334"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="91"/>
         <source>Off</source>
         <translation>Вимкнено</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="81"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="200"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="498"/>
-        <location filename="../settingsView/csettingsview_moc.ui" line="588"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="96"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="134"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="317"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="339"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="96"/>
         <source>On</source>
         <translation>Увімкнено</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="109"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
         <source>Fullscreen</source>
         <translation>Повноекранний режим</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="141"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
         <source>AI in the battlefield</source>
         <translation>Штучний інтелект на полі бою</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="167"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
         <source>Repositories</source>
         <translation>Репозиторії</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="177"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
         <source>Check for updates</source>
         <translation>Оновити зараз</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="184"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="544"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="544"/>
         <source>Neutral AI</source>
         <translation>Нейтральний ШІ</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
         <source>Real</source>
         <translation>Повний</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="226"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
         <source>General</source>
         <translation>Загальні налаштування</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="252"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
         <source>Player AI</source>
         <translation>ШІ гравців</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="260"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <source>VCMI Language</source>
+        <translation>Мова VCMI</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
         <source>Central European (Windows 1250)</source>
         <translation>Центральноєвропейська (Windows 1250)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="265"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
         <source>Cyrillic script (Windows 1251)</source>
         <translation>Кирилиця (Windows 1251)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="270"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
         <source>Western European (Windows 1252)</source>
         <translation>Західноєвропейська (Windows 1252)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="275"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
         <source>Simplified Chinese (GBK)</source>
         <translation>Спрощена китайська (GBK)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="280"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
         <source>Simplified Chinese (GB2312)</source>
         <translation>Спрощена китайська (GB2312)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="285"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
         <source>Korean (Windows 949)</source>
         <translation>Корейська (Windows 949)</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="299"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <source>English</source>
+        <translation>English (Англійська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Polska (Polish)</source>
+        <translation>Polska (Польська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Русский (Russian)</source>
+        <translation>Русский (Російська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Українська (Ukrainian)</source>
+        <translation>Українська</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="574"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="574"/>
         <source>Friendly AI</source>
         <translation>Дружній ШІ</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="306"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
         <source>Resolution</source>
         <translation>Роздільна здатність</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="319"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
         <source>AI on the map</source>
         <translation>Штучний інтелект на карті пригод</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="345"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
         <source>Autosave</source>
         <translation>Автозбереження</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="352"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
         <source>Display index</source>
         <translation>Дісплей</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="378"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
         <source>Check repositories on startup</source>
         <translation>Перевірка репозиторіїв при запуску</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="385"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
         <source>Network port</source>
         <translation>Мережевий порт</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="435"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
         <source>Data Directories</source>
         <translation>Теки даних гри</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="448"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
         <source>Video</source>
         <translation>Графіка</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="455"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
         <source>Heroes III character set</source>
         <translation>Кодування Heroes III</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="482"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
         <source>Extra data directory</source>
         <translation>Додаткова тека даних</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="506"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
         <source>Log files directory</source>
         <translation>Тека файлів журналу</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="523"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
         <source>Show intro</source>
         <translation>Вступні відео</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
         <source>Launcher Settings</source>
         <translation>Налаштування лаунчера</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="543"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
         <source>Build version</source>
         <translation>Версія збірки</translation>
     </message>
     <message>
-        <location filename="../settingsView/csettingsview_moc.ui" line="572"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="627"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="627"/>
         <source>Enemy AI</source>
         <translation>Ворожий ШІ</translation>
     </message>
@@ -391,6 +752,7 @@
 <context>
     <name>ImageViewer</name>
     <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
         <location filename="../modManager/imageviewer_moc.ui" line="20"/>
         <source>Image Viewer</source>
         <translation>Перегляд зображень</translation>
@@ -399,61 +761,73 @@
 <context>
     <name>Lobby</name>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
         <location filename="../lobby/lobby_moc.ui" line="26"/>
         <source>Connect</source>
         <translation>Підключитися</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
         <location filename="../lobby/lobby_moc.ui" line="45"/>
         <source>Username</source>
         <translation>Ім&apos;я користувача</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
         <location filename="../lobby/lobby_moc.ui" line="69"/>
         <source>Server</source>
         <translation>Сервер</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
         <location filename="../lobby/lobby_moc.ui" line="111"/>
         <source>Session</source>
         <translation>Сесія</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
         <location filename="../lobby/lobby_moc.ui" line="116"/>
         <source>Players</source>
         <translation>Гравці</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
         <location filename="../lobby/lobby_moc.ui" line="132"/>
         <source>New room</source>
         <translation>Створити кімнату</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
         <location filename="../lobby/lobby_moc.ui" line="142"/>
         <source>Join room</source>
         <translation>Приєднатися до кімнати</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
         <location filename="../lobby/lobby_moc.ui" line="153"/>
         <source>Ready</source>
         <translation>Готовність!</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
         <location filename="../lobby/lobby_moc.ui" line="160"/>
         <source>Mods mismatch</source>
         <translation>Модифікації, що не збігаються</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
         <location filename="../lobby/lobby_moc.ui" line="167"/>
         <source>Leave</source>
         <translation>Вийти з кімнати</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
         <location filename="../lobby/lobby_moc.ui" line="197"/>
         <source>Kick player</source>
         <translation>Виключити гравця</translation>
     </message>
     <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
         <location filename="../lobby/lobby_moc.ui" line="204"/>
         <source>Players in the room</source>
         <translation>Гравці у кімнаті</translation>
@@ -462,21 +836,25 @@
 <context>
     <name>LobbyRoomRequest</name>
     <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
         <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
         <source>Room settings</source>
         <translation>Налаштування кімнати</translation>
     </message>
     <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
         <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
         <source>Room name</source>
         <translation>Назва кімнати</translation>
     </message>
     <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
         <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
         <source>Maximum players</source>
         <translation>Максимум гравців</translation>
     </message>
     <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
         <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
         <source>Password (optional)</source>
         <translation>Пароль (за бажанням)</translation>
@@ -485,27 +863,44 @@
 <context>
     <name>MainWindow</name>
     <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
         <location filename="../mainwindow_moc.ui" line="20"/>
         <source>VCMI Launcher</source>
         <translation>VCMI Launcher</translation>
     </message>
     <message>
-        <location filename="../mainwindow_moc.ui" line="104"/>
+        <location filename="../mainwindow_moc.ui" line="235"/>
+        <location filename="../mainwindow_moc.ui" line="235"/>
         <source>Mods</source>
         <translation>Модифікації</translation>
     </message>
     <message>
-        <location filename="../mainwindow_moc.ui" line="113"/>
+        <location filename="../mainwindow_moc.ui" line="298"/>
+        <location filename="../mainwindow_moc.ui" line="298"/>
+        <source>Editor</source>
+        <translation>Редактор</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="298"/>
+        <location filename="../mainwindow_moc.ui" line="298"/>
+        <source>Map Editor</source>
+        <translation>Редактор мап</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="65"/>
+        <location filename="../mainwindow_moc.ui" line="65"/>
         <source>Settings</source>
         <translation>Налаштування</translation>
     </message>
     <message>
-        <location filename="../mainwindow_moc.ui" line="122"/>
+        <location filename="../mainwindow_moc.ui" line="191"/>
+        <location filename="../mainwindow_moc.ui" line="191"/>
         <source>Lobby</source>
         <translation>Лобі</translation>
     </message>
     <message>
-        <location filename="../mainwindow_moc.ui" line="139"/>
+        <location filename="../mainwindow_moc.ui" line="103"/>
+        <location filename="../mainwindow_moc.ui" line="103"/>
         <source>Start game</source>
         <translation>Грати!</translation>
     </message>
@@ -515,19 +910,80 @@
         <translation>Грати!</translation>
     </message>
 </context>
+<context>
+    <name>ModFields</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="30"/>
+        <source>Name</source>
+        <translation>Назва</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="33"/>
+        <source>Type</source>
+        <translation>Тип</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="34"/>
+        <source>Version</source>
+        <translation>Версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="35"/>
+        <source>Size</source>
+        <translation>Розмір</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="36"/>
+        <source>Author</source>
+        <translation>Автори</translation>
+    </message>
+</context>
 <context>
     <name>UpdateDialog</name>
     <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
         <location filename="../updatedialog_moc.ui" line="71"/>
         <source>You have latest version</source>
         <translation>У вас встановлена остання версія</translation>
     </message>
     <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
         <location filename="../updatedialog_moc.ui" line="94"/>
         <source>Close</source>
         <translation>Закрити</translation>
     </message>
     <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
         <location filename="../updatedialog_moc.ui" line="101"/>
         <source>Check updates on startup</source>
         <translation>Перевіряти наявність оновлень при запуску</translation>