ソースを参照

Merge pull request #1293 from IvanSavenko/translate_launcher

Translations support - Launcher
Ivan Savenko 2 年 前
コミット
bafe0c42ce
40 ファイル変更4012 行追加536 行削除
  1. 2 2
      CI/mxe/before_install.sh
  2. 14 5
      CMakeLists.txt
  3. 14 0
      Mods/vcmi/mod.json
  4. 54 0
      config/schemas/mod.json
  5. 1 0
      config/schemas/settings.json
  6. 30 7
      launcher/CMakeLists.txt
  7. BIN
      launcher/icons/menu-editor.png
  8. BIN
      launcher/icons/menu-game.png
  9. BIN
      launcher/icons/menu-lobby.png
  10. BIN
      launcher/icons/menu-mods.png
  11. BIN
      launcher/icons/menu-settings.png
  12. 9 0
      launcher/lobby/lobby_moc.cpp
  13. 1 0
      launcher/lobby/lobby_moc.h
  14. 2 2
      launcher/lobby/lobby_moc.ui
  15. 9 0
      launcher/lobby/lobbyroomrequest_moc.cpp
  16. 1 0
      launcher/lobby/lobbyroomrequest_moc.h
  17. 11 8
      launcher/lobby/lobbyroomrequest_moc.ui
  18. 8 0
      launcher/main.cpp
  19. 1 0
      launcher/main.h
  20. 91 29
      launcher/mainwindow_moc.cpp
  21. 11 1
      launcher/mainwindow_moc.h
  22. 270 151
      launcher/mainwindow_moc.ui
  23. 20 8
      launcher/modManager/cmodlist.cpp
  24. 12 11
      launcher/modManager/cmodlistmodel_moc.cpp
  25. 12 2
      launcher/modManager/cmodlistview_moc.cpp
  26. 1 0
      launcher/modManager/cmodlistview_moc.h
  27. 6 6
      launcher/modManager/cmodlistview_moc.ui
  28. 9 0
      launcher/modManager/imageviewer_moc.cpp
  29. 1 0
      launcher/modManager/imageviewer_moc.h
  30. 40 12
      launcher/settingsView/csettingsview_moc.cpp
  31. 3 2
      launcher/settingsView/csettingsview_moc.h
  32. 331 284
      launcher/settingsView/csettingsview_moc.ui
  33. 604 0
      launcher/translation/english.ts
  34. 608 0
      launcher/translation/german.ts
  35. 608 0
      launcher/translation/polish.ts
  36. 604 0
      launcher/translation/russian.ts
  37. 608 0
      launcher/translation/ukrainian.ts
  38. 4 0
      lib/VCMIDirs.cpp
  39. 5 2
      lib/VCMIDirs.h
  40. 7 4
      mapeditor/CMakeLists.txt

+ 2 - 2
CI/mxe/before_install.sh

@@ -14,8 +14,8 @@ sudo add-apt-repository 'deb http://security.ubuntu.com/ubuntu bionic-security m
 sudo apt-get install -qq nsis ninja-build libssl1.0.0
 
 # MXE repository was too slow for Travis far too often
-wget -nv https://github.com/vcmi/vcmi-deps-mxe/releases/download/2021-02-20/mxe-i686-w64-mingw32.shared-2021-01-22.tar
-tar -xvf mxe-i686-w64-mingw32.shared-2021-01-22.tar
+wget -nv https://github.com/vcmi/vcmi-deps-mxe/releases/download/2022-12-26/mxe-i686-w64-mingw32.shared-2022-12-26.tar
+tar -xvf mxe-i686-w64-mingw32.shared-2022-12-26.tar
 sudo dpkg -i mxe-*.deb
 sudo apt-get install -f --yes
 

+ 14 - 5
CMakeLists.txt

@@ -90,6 +90,11 @@ if(APPLE_IOS AND COPY_CONFIG_ON_BUILD)
 	set(COPY_CONFIG_ON_BUILD OFF)
 endif()
 
+# No QT Linguist on MXE
+if((MINGW) AND (${CMAKE_CROSSCOMPILING}))
+	set(ENABLE_TRANSLATIONS OFF)
+endif()
+
 ############################################
 #        Miscellaneous options             #
 ############################################
@@ -181,6 +186,14 @@ set(CMAKE_XCODE_ATTRIBUTE_MARKETING_VERSION ${APP_SHORT_VERSION})
 set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH NO)
 set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES)
 
+if(ENABLE_LAUNCHER)
+	add_definitions(-DENABLE_LAUNCHER)
+endif()
+
+if(ENABLE_EDITOR)
+	add_definitions(-DENABLE_EDITOR)
+endif()
+
 if(ENABLE_SINGLE_APP_BUILD)
 	add_definitions(-DSINGLE_PROCESS_APP=1)
 endif()
@@ -360,12 +373,8 @@ if(ENABLE_LAUNCHER OR ENABLE_EDITOR)
 	find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network)
 	find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network)
 
-	find_package(QT NAMES Qt6 Qt5 COMPONENTS LinguistTools)
-	find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools)
-	if(NOT Qt${QT_VERSION_MAJOR}LinguistTools_DIR)
-		set(ENABLE_TRANSLATIONS OFF)
-	endif()
 	if(ENABLE_TRANSLATIONS)
+		find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS LinguistTools)
 		add_definitions(-DENABLE_QT_TRANSLATIONS)
 	endif()
 endif()

+ 14 - 0
Mods/vcmi/mod.json

@@ -1,6 +1,20 @@
 {
 	"name" : "VCMI essential files",
 	"description" : "Essential files required for VCMI to run correctly",
+	
+	"german" : {
+		"name" : "VCMI - grundlegende Dateien",
+		"description" : "Grundlegende Dateien, die für die korrekte Ausführung von VCMI erforderlich sind",
+		"author" : "VCMI-Team",
+		"modType" : "Grafik",
+	},
+	
+	"ukrainian" : {
+		"name" : "VCMI - ключові файли",
+		"description" : "Ключові файли необхідні для повноцінної роботи VCMI",
+		"author" : "Команда VCMI",
+		"modType" : "Графіка",
+	},
 
 	"version" : "1.1",
 	"author" : "VCMI Team",

+ 54 - 0
config/schemas/mod.json

@@ -4,7 +4,41 @@
 	"title" : "VCMI mod file format",
 	"description" : "Format used to define main mod file (mod.json) in VCMI",
 	"required" : [ "name", "description", "version", "author", "contact", "modType" ],
+	"definitions" : {
+		"localizable" : {
+			"type":"object",
+			"additionalProperties" : false,
+			"required" : [ "name", "description", "author", "modType" ],
+			"properties":{
+				"name": {
+					"type":"string",
+					"description": "Short name of your mod. No more than 2-3 words"
+				},
+				"description": {
+					"type":"string",
+					"description": "More lengthy description of mod. No hard limit"
+				},
 
+				"modType" : {
+					"type":"string",
+					"description": "Type of mod, e.g. Town, Artifacts, Graphical."
+				},
+				"author" : {
+					"type":"string",
+					"description": "Author of the mod. Can be nickname, real name or name of team"
+				},
+				"changelog" : {
+					"type":"object",
+					"description": "List of changes/new features in each version",
+					"additionalProperties" : {
+						"type" : "array",
+						"items" : { "type":"string" }
+					}
+				}
+			}
+		}
+	},
+	
 	"additionalProperties" : false,
 	"properties":{
 		"name": {
@@ -78,6 +112,26 @@
 			"type":"boolean",
 			"description": "If set to true, mod will not be enabled automatically on install"
 		},
+		
+		"english" : {
+			"$ref" : "#/definitions/localizable"
+		},
+
+		"german" : {
+			"$ref" : "#/definitions/localizable"
+		},
+
+		"polish" : {
+			"$ref" : "#/definitions/localizable"
+		},
+
+		"russian" : {
+			"$ref" : "#/definitions/localizable"
+		},
+
+		"ukrainian" : {
+			"$ref" : "#/definitions/localizable"
+		},
 
 		"artifacts": {
 			"type":"array",

+ 1 - 0
config/schemas/settings.json

@@ -53,6 +53,7 @@
 				},
 				"language" : {
 					"type":"string",
+					"enum" : [ "english", "german", "polish", "russian", "ukrainian" ],
 					"default" : "english"
 				},
 				"lastSave" : {

+ 30 - 7
launcher/CMakeLists.txt

@@ -62,6 +62,13 @@ set(launcher_FORMS
 		lobby/lobbyroomrequest_moc.ui
 )
 
+set(launcher_TS
+	translation/english.ts
+	translation/german.ts
+	translation/polish.ts
+	translation/russian.ts
+	translation/ukrainian.ts)
+
 if(APPLE_IOS)
 	list(APPEND launcher_SRCS
 		ios/main.m
@@ -83,18 +90,28 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
 if(TARGET Qt6::Core)
 	qt_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
+	if(ENABLE_TRANSLATIONS)
+		set_source_files_properties(${launcher_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
+		# TODO: consider using qt_add_translations: https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-translations.html
+		qt_add_translation( launcher_QM ${launcher_TS} )
+	endif()
 else()
 	qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
+	if(ENABLE_TRANSLATIONS)
+		set_source_files_properties(${launcher_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
+		qt5_add_translation( launcher_QM ${launcher_TS} )
+	endif()
 endif()
 
+
 if(WIN32)
 	set(launcher_ICON VCMI_launcher.rc)
 endif()
 
 if(ENABLE_SINGLE_APP_BUILD)
-	add_library(vcmilauncher STATIC ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS})
+	add_library(vcmilauncher STATIC ${launcher_QM} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS})
 else()
-	add_executable(vcmilauncher WIN32 ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON})
+	add_executable(vcmilauncher WIN32 ${launcher_QM} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON})
 endif()
 
 if(WIN32)
@@ -126,7 +143,7 @@ vcmi_set_output_dir(vcmilauncher "")
 enable_pch(vcmilauncher)
 
 if(APPLE_IOS)
-	set(ICONS_DESTINATION ${DATA_DIR})
+	set(RESOURCES_DESTINATION ${DATA_DIR})
 
 	# TODO: remove after fixing Conan's Qt recipe
 	if(XCODE_VERSION VERSION_GREATER_EQUAL 14.0)
@@ -145,12 +162,14 @@ if(APPLE_IOS)
 		)
 	endif()
 else()
-	set(ICONS_DESTINATION ${DATA_DIR}/launcher)
+	set(RESOURCES_DESTINATION ${DATA_DIR}/launcher)
 
 	# Copy to build directory for easier debugging
 	add_custom_command(TARGET vcmilauncher POST_BUILD
-		COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
-		COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/launcher/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
+		COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher
+		COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/launcher/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/icons
+		COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_BINARY_DIR}/translation ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/launcher/translation
+
 	)
 
 	install(TARGETS vcmilauncher DESTINATION ${BIN_DIR})
@@ -161,4 +180,8 @@ else()
 		install(FILES "eu.vcmi.VCMI.metainfo.xml" DESTINATION share/metainfo)
 	endif()
 endif()
-install(DIRECTORY icons DESTINATION ${ICONS_DESTINATION})
+
+install(DIRECTORY icons DESTINATION ${RESOURCES_DESTINATION})
+if(ENABLE_TRANSLATIONS)
+	install(FILES ${launcher_QM} DESTINATION ${RESOURCES_DESTINATION}/translation)
+endif()

BIN
launcher/icons/menu-editor.png


BIN
launcher/icons/menu-game.png


BIN
launcher/icons/menu-lobby.png


BIN
launcher/icons/menu-mods.png


BIN
launcher/icons/menu-settings.png


+ 9 - 0
launcher/lobby/lobby_moc.cpp

@@ -47,6 +47,15 @@ Lobby::Lobby(QWidget *parent) :
 	ui->kickButton->setVisible(false);
 }
 
+void Lobby::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+	QWidget::changeEvent(event);
+}
+
 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();

+ 2 - 2
launcher/lobby/lobby_moc.ui

@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Form</string>
+   <string/>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="3">
@@ -46,7 +46,7 @@
    <item row="0" column="1">
     <widget class="QLineEdit" name="serverEdit">
      <property name="text">
-      <string>127.0.0.1:5002</string>
+      <string notr="true">127.0.0.1:5002</string>
      </property>
     </widget>
    </item>

+ 9 - 0
launcher/lobby/lobbyroomrequest_moc.cpp

@@ -27,6 +27,15 @@ LobbyRoomRequest::LobbyRoomRequest(SocketLobby & socket, const QString & room, c
 	show();
 }
 
+void LobbyRoomRequest::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+	QDialog::changeEvent(event);
+}
+
 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();

+ 11 - 8
launcher/lobby/lobbyroomrequest_moc.ui

@@ -9,7 +9,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>193</width>
+    <width>227</width>
     <height>188</height>
    </rect>
   </property>
@@ -51,39 +51,42 @@
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
+     <property name="currentText">
+      <string notr="true">2</string>
+     </property>
      <item>
       <property name="text">
-       <string>2</string>
+       <string notr="true">2</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>3</string>
+       <string notr="true">3</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>4</string>
+       <string notr="true">4</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>5</string>
+       <string notr="true">5</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>6</string>
+       <string notr="true">6</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>7</string>
+       <string notr="true">7</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>8</string>
+       <string notr="true">8</string>
       </property>
      </item>
     </widget>

+ 8 - 0
launcher/main.cpp

@@ -32,6 +32,7 @@ int main(int argc, char * argv[])
 	{
 #endif
 	QApplication vcmilauncher(argc, argv);
+
 	MainWindow mainWindow;
 	mainWindow.show();
 	result = vcmilauncher.exec();
@@ -65,6 +66,13 @@ void startGame(const QStringList & args)
 #endif
 }
 
+void startEditor(const QStringList & args)
+{
+#ifdef ENABLE_EDITOR
+	startExecutable(pathToQString(VCMIDirs::get().mapEditorPath()), args);
+#endif
+}
+
 #ifndef Q_OS_IOS
 void startExecutable(QString name, const QStringList & args)
 {

+ 1 - 0
launcher/main.h

@@ -10,6 +10,7 @@
 #pragma once
 
 void startGame(const QStringList & args);
+void startEditor(const QStringList & args);
 
 #ifdef VCMI_IOS
 extern "C" void launchGame(int argc, char * argv[]);

+ 91 - 29
launcher/mainwindow_moc.cpp

@@ -47,10 +47,34 @@ void MainWindow::load()
 	settings.init();
 }
 
+void MainWindow::computeSidePanelSizes()
+{
+	QVector<QToolButton*> widgets = {
+		ui->modslistButton,
+		ui->settingsButton,
+		ui->lobbyButton,
+		ui->startEditorButton,
+		ui->startGameButton
+	};
+
+	for(auto & widget : widgets)
+	{
+		QFontMetrics metrics(widget->font());
+		QSize iconSize = widget->iconSize();
+
+		// this is minimal space that is needed for our button to avoid text clipping
+		int buttonHeight = iconSize.height() + metrics.height() + 4;
+
+		widget->setMinimumHeight(buttonHeight);
+		widget->setMaximumHeight(buttonHeight * 1.2);
+	}
+}
+
 MainWindow::MainWindow(QWidget * parent)
 	: QMainWindow(parent), ui(new Ui::MainWindow)
 {
 	load(); // load FS before UI
+	updateTranslation(); // load translation
 
 	ui->setupUi(this);
 	
@@ -72,45 +96,32 @@ MainWindow::MainWindow(QWidget * parent)
 		move(position);
 	}
 
-	//set default margins
+#ifndef ENABLE_EDITOR
+	ui->startEditorButton->hide();
+#endif
+
+	computeSidePanelSizes();
 
-	auto width = ui->startGameTitle->fontMetrics().boundingRect(ui->startGameTitle->text()).width();
-	if(ui->startGameButton->iconSize().width() < width)
-	{
-		ui->startGameButton->setIconSize(QSize(width, width));
-	}
-	auto tab_icon_size = ui->tabSelectList->iconSize();
-	if(tab_icon_size.width() < width)
-	{
-		ui->tabSelectList->setIconSize(QSize(width, width + tab_icon_size.height() - tab_icon_size.width()));
-		ui->tabSelectList->setGridSize(QSize(width, width));
-		// 4 is a dirty hack to make it look right
-		ui->tabSelectList->setMaximumWidth(width + 4);
-	}
 	ui->tabListWidget->setCurrentIndex(0);
 
 	ui->settingsView->isExtraResolutionsModEnabled = ui->modlistView->isExtraResolutionsModEnabled();
 	ui->settingsView->setDisplayList();
 	connect(ui->modlistView, &CModListView::extraResolutionsEnabledChanged,
 		ui->settingsView, &CSettingsView::fillValidResolutions);
-
-	connect(ui->tabSelectList, &QListWidget::currentRowChanged, [this](int i) {
-#ifdef Q_OS_IOS
-		if(auto widget = qApp->focusWidget())
-			widget->clearFocus();
-#endif
-		ui->tabListWidget->setCurrentIndex(i);
-	});
 	
-#ifdef Q_OS_IOS
-	QScroller::grabGesture(ui->tabSelectList, QScroller::LeftMouseButtonGesture);
-	ui->tabSelectList->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
-#endif
-
 	if(settings["launcher"]["updateOnStartup"].Bool())
 		UpdateDialog::showUpdateDialog(false);
 }
 
+void MainWindow::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+	QMainWindow::changeEvent(event);
+}
+
 MainWindow::~MainWindow()
 {
 	//save window settings
@@ -126,12 +137,63 @@ void MainWindow::on_startGameButton_clicked()
 	startGame({});
 }
 
-void MainWindow::on_tabSelectList_currentRowChanged(int currentRow)
+void MainWindow::on_startEditorButton_clicked()
 {
-	ui->startGameButton->setEnabled(currentRow != TabRows::LOBBY);
+	startEditor({});
 }
 
 const CModList & MainWindow::getModList() const
 {
 	return ui->modlistView->getModList();
 }
+
+void MainWindow::on_modslistButton_clicked()
+{
+	ui->startGameButton->setEnabled(true);
+	ui->tabListWidget->setCurrentIndex(TabRows::MODS);
+}
+
+void MainWindow::on_settingsButton_clicked()
+{
+	ui->startGameButton->setEnabled(true);
+	ui->tabListWidget->setCurrentIndex(TabRows::SETTINGS);
+}
+
+void MainWindow::on_lobbyButton_clicked()
+{
+	ui->startGameButton->setEnabled(false);
+	ui->tabListWidget->setCurrentIndex(TabRows::LOBBY);
+}
+
+void MainWindow::updateTranslation()
+{
+#ifdef ENABLE_QT_TRANSLATIONS
+	std::string translationFile = settings["general"]["language"].String() + ".qm";
+	logGlobal->info("Loading translation '%s'", translationFile);
+
+	QVector<QString> searchPaths;
+
+#ifdef Q_OS_IOS
+	searchPaths.push_back(pathToQString(VCMIDirs::get().binaryPath() / "translation" / translationFile));
+#else
+	for(auto const & string : VCMIDirs::get().dataPaths())
+		searchPaths.push_back(pathToQString(string / "launcher" / "translation" / translationFile));
+	searchPaths.push_back(pathToQString(VCMIDirs::get().userDataPath() / "launcher" / "translation" / translationFile));
+#endif
+
+	for(auto const & string : boost::adaptors::reverse(searchPaths))
+	{
+		logGlobal->info("Searching for translation at '%s'", string.toStdString());
+		if (translator.load(string))
+		{
+			logGlobal->info("Translation found");
+			if (!qApp->installTranslator(&translator))
+				logGlobal->error("Failed to install translator");
+			return;
+		}
+	}
+
+	logGlobal->error("Failed to find translation");
+
+#endif
+}

+ 11 - 1
launcher/mainwindow_moc.h

@@ -10,6 +10,7 @@
 #pragma once
 #include <QMainWindow>
 #include <QStringList>
+#include <QTranslator>
 
 namespace Ui
 {
@@ -26,6 +27,9 @@ class MainWindow : public QMainWindow
 {
 	Q_OBJECT
 
+#ifdef ENABLE_QT_TRANSLATIONS
+	QTranslator translator;
+#endif
 private:
 	Ui::MainWindow * ui;
 	void load();
@@ -35,16 +39,22 @@ 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();
+	void computeSidePanelSizes();
 	
 public slots:
 	void on_startGameButton_clicked();
 	
 private slots:
-	void on_tabSelectList_currentRowChanged(int currentRow);
+	void on_modslistButton_clicked();
+	void on_settingsButton_clicked();
+	void on_lobbyButton_clicked();
+	void on_startEditorButton_clicked();
 };

+ 270 - 151
launcher/mainwindow_moc.ui

@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>800</width>
-    <height>480</height>
+    <height>410</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -30,127 +30,288 @@
    </size>
   </property>
   <widget class="QWidget" name="centralWidget">
-   <layout class="QGridLayout" name="gridLayout">
-    <item row="0" column="0">
-     <widget class="QListWidget" name="tabSelectList">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
-        <horstretch>89</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="minimumSize">
-       <size>
-        <width>89</width>
-        <height>89</height>
-       </size>
-      </property>
-      <property name="verticalScrollBarPolicy">
-       <enum>Qt::ScrollBarAlwaysOff</enum>
-      </property>
-      <property name="horizontalScrollBarPolicy">
-       <enum>Qt::ScrollBarAlwaysOff</enum>
-      </property>
-      <property name="sizeAdjustPolicy">
-       <enum>QAbstractScrollArea::AdjustToContents</enum>
-      </property>
-      <property name="editTriggers">
-       <set>QAbstractItemView::NoEditTriggers</set>
-      </property>
-      <property name="showDropIndicator" stdset="0">
-       <bool>false</bool>
-      </property>
-      <property name="dragDropMode">
-       <enum>QAbstractItemView::NoDragDrop</enum>
-      </property>
-      <property name="selectionBehavior">
-       <enum>QAbstractItemView::SelectItems</enum>
-      </property>
-      <property name="iconSize">
-       <size>
-        <width>89</width>
-        <height>89</height>
-       </size>
-      </property>
-      <property name="movement">
-       <enum>QListView::Static</enum>
-      </property>
-      <property name="flow">
-       <enum>QListView::TopToBottom</enum>
-      </property>
-      <property name="isWrapping" stdset="0">
-       <bool>false</bool>
-      </property>
-      <property name="resizeMode">
-       <enum>QListView::Adjust</enum>
-      </property>
-      <property name="gridSize">
-       <size>
-        <width>100</width>
-        <height>100</height>
-       </size>
-      </property>
-      <property name="viewMode">
-       <enum>QListView::IconMode</enum>
-      </property>
-      <property name="uniformItemSizes">
-       <bool>true</bool>
-      </property>
-      <property name="wordWrap">
-       <bool>false</bool>
-      </property>
+   <layout class="QHBoxLayout" name="horizontalLayout">
+    <item>
+     <layout class="QVBoxLayout" name="verticalLayout">
       <item>
-       <property name="text">
-        <string>Mods</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>icons:menu-mods.png</normaloff>icons:menu-mods.png</iconset>
-       </property>
+       <widget class="QToolButton" name="modslistButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>1</horstretch>
+          <verstretch>10</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>Mods</string>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>icons:menu-mods.png</normaloff>icons:menu-mods.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>60</width>
+          <height>60</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+        <property name="autoExclusive">
+         <bool>true</bool>
+        </property>
+        <property name="toolButtonStyle">
+         <enum>Qt::ToolButtonTextUnderIcon</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
       </item>
       <item>
-       <property name="text">
-        <string>Settings</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>icons:menu-settings.png</normaloff>icons:menu-settings.png</iconset>
-       </property>
+       <widget class="QToolButton" name="settingsButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>1</horstretch>
+          <verstretch>10</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>Settings</string>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>icons:menu-settings.png</normaloff>icons:menu-settings.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>60</width>
+          <height>60</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+        <property name="autoExclusive">
+         <bool>true</bool>
+        </property>
+        <property name="toolButtonStyle">
+         <enum>Qt::ToolButtonTextUnderIcon</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
       </item>
       <item>
-       <property name="text">
-        <string>Lobby</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>icons:menu-lobby.png</normaloff>icons:menu-lobby.png</iconset>
-       </property>
+       <widget class="QToolButton" name="lobbyButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>1</horstretch>
+          <verstretch>10</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>Lobby</string>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>icons:menu-lobby.png</normaloff>icons:menu-lobby.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>60</width>
+          <height>60</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+        <property name="autoExclusive">
+         <bool>true</bool>
+        </property>
+        <property name="toolButtonStyle">
+         <enum>Qt::ToolButtonTextUnderIcon</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
       </item>
-     </widget>
-    </item>
-    <item row="2" column="0">
-     <widget class="QLabel" name="startGameTitle">
-      <property name="font">
-       <font>
-        <bold>true</bold>
-       </font>
-      </property>
-      <property name="text">
-       <string>Start game</string>
-      </property>
-      <property name="alignment">
-       <set>Qt::AlignCenter</set>
-      </property>
-     </widget>
+      <item>
+       <spacer name="verticalSpacer">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>100</width>
+          <height>0</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QToolButton" name="startEditorButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>1</horstretch>
+          <verstretch>5</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Map Editor</string>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>icons:menu-editor.png</normaloff>icons:menu-editor.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>30</width>
+          <height>30</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>false</bool>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+        <property name="toolButtonStyle">
+         <enum>Qt::ToolButtonTextUnderIcon</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="startGameButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <horstretch>1</horstretch>
+          <verstretch>10</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Start game</string>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>icons:menu-game.png</normaloff>icons:menu-game.png</iconset>
+        </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::ToolButtonTextUnderIcon</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
     </item>
-    <item row="0" column="1" rowspan="3">
+    <item>
      <widget class="QStackedWidget" name="tabListWidget">
       <property name="enabled">
        <bool>true</bool>
       </property>
       <property name="sizePolicy">
        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-        <horstretch>0</horstretch>
+        <horstretch>10</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
@@ -162,44 +323,6 @@
       <widget class="Lobby" name="lobbyView"/>
      </widget>
     </item>
-    <item row="1" column="0">
-     <widget class="QToolButton" name="startGameButton">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
-        <horstretch>89</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="minimumSize">
-       <size>
-        <width>89</width>
-        <height>89</height>
-       </size>
-      </property>
-      <property name="text">
-       <string>Play</string>
-      </property>
-      <property name="icon">
-       <iconset>
-        <normaloff>icons:menu-game.png</normaloff>icons:menu-game.png</iconset>
-      </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>
-     </widget>
-    </item>
    </layout>
   </widget>
  </widget>
@@ -224,10 +347,6 @@
    <container>1</container>
   </customwidget>
  </customwidgets>
- <tabstops>
-  <tabstop>tabSelectList</tabstop>
-  <tabstop>startGameButton</tabstop>
- </tabstops>
  <resources/>
  <connections/>
 </ui>

+ 20 - 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"
@@ -158,23 +159,34 @@ QString CModEntry::getName() const
 
 QVariant CModEntry::getValue(QString value) const
 {
+	QString langValue = QString::fromStdString(settings["general"]["language"].String());
+
+	// 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();
 }

+ 12 - 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,8 +145,19 @@ 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();
 }
 

+ 12 - 2
launcher/modManager/cmodlistview_moc.cpp

@@ -34,6 +34,16 @@ void CModListView::setupModModel()
 		this, &CModListView::extraResolutionsEnabledChanged);
 }
 
+void CModListView::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+		modModel->reloadRepositories();
+	}
+	QWidget::changeEvent(event);
+}
+
 void CModListView::setupFilterModel()
 {
 	filterModel = new CModFilterModel(modModel, this);
@@ -227,8 +237,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);
 	

+ 6 - 6
launcher/modManager/cmodlistview_moc.ui

@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>596</width>
+    <width>680</width>
     <height>342</height>
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Form</string>
+   <string notr="true"/>
   </property>
   <layout class="QGridLayout" name="gridLayout_3">
    <property name="leftMargin">
@@ -252,11 +252,11 @@
              <bool>true</bool>
             </property>
             <property name="html">
-             <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+             <string notr="true">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
 p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
             </property>
             <property name="openExternalLinks">
              <bool>true</bool>

+ 9 - 0
launcher/modManager/imageviewer_moc.cpp

@@ -20,6 +20,15 @@ ImageViewer::ImageViewer(QWidget * parent)
 	ui->setupUi(this);
 }
 
+void ImageViewer::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+	QDialog::changeEvent(event);
+}
+
 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();

+ 40 - 12
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"
@@ -46,6 +48,16 @@ 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[] =
+{
+	"english",
+	"german",
+	"polish",
+	"russian",
+	"ukrainian",
+};
+
 void CSettingsView::setDisplayList()
 {
 	QStringList list;
@@ -74,12 +86,9 @@ void CSettingsView::loadSettings()
 
 #ifdef Q_OS_IOS
 	ui->comboBoxFullScreen->setCurrentIndex(true);
-	ui->checkBoxFullScreen->setChecked(false);
-	for (auto widget : std::initializer_list<QWidget *>{ui->comboBoxFullScreen, ui->checkBoxFullScreen})
-		widget->setDisabled(true);
+	ui->comboBoxFullScreen->setDisabled(true);
 #else
 	ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool());
-	ui->checkBoxFullScreen->setChecked(settings["video"]["realFullscreen"].Bool());
 #endif
 
 	ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
@@ -106,6 +115,11 @@ void CSettingsView::loadSettings()
 	if(encodingIndex < ui->comboBoxEncoding->count())
 		ui->comboBoxEncoding->setCurrentIndex((int)encodingIndex);
 	ui->comboBoxAutoSave->setCurrentIndex(settings["general"]["saveFrequency"].Integer() > 0 ? 1 : 0);
+
+	std::string language = settings["general"]["language"].String();
+	size_t languageIndex = boost::range::find(languageTagList, language) - languageTagList;
+	if(languageIndex < ui->comboBoxLanguage->count())
+		ui->comboBoxLanguage->setCurrentIndex((int)languageIndex);
 }
 
 void CSettingsView::fillValidResolutions(bool isExtraResolutionsModEnabled)
@@ -196,14 +210,10 @@ void CSettingsView::on_comboBoxResolution_currentTextChanged(const QString & arg
 
 void CSettingsView::on_comboBoxFullScreen_currentIndexChanged(int index)
 {
-	Settings node = settings.write["video"]["fullscreen"];
-	node->Bool() = index;
-}
-
-void CSettingsView::on_checkBoxFullScreen_stateChanged(int state)
-{
-	Settings node = settings.write["video"]["realFullscreen"];
-	node->Bool() = state;
+	Settings nodeFullscreen     = settings.write["video"]["fullscreen"];
+	Settings nodeRealFullscreen = settings.write["video"]["realFullscreen"];
+	nodeFullscreen->Bool() = (index != 0);
+	nodeRealFullscreen->Bool() = (index == 2);
 }
 
 void CSettingsView::on_comboBoxAutoCheck_currentIndexChanged(int index)
@@ -311,3 +321,21 @@ 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];
+
+	if ( auto mainWindow = dynamic_cast<MainWindow*>(qApp->activeWindow()) )
+		mainWindow->updateTranslation();
+}
+
+void CSettingsView::changeEvent(QEvent *event)
+{
+	if(event->type() == QEvent::LanguageChange)
+	{
+		ui->retranslateUi(this);
+	}
+	QWidget::changeEvent(event);
+}

+ 3 - 2
launcher/settingsView/csettingsview_moc.h

@@ -25,6 +25,7 @@ public:
 
 	void loadSettings();
 	void setDisplayList();
+	void changeEvent(QEvent *event) override;
 
 	bool isExtraResolutionsModEnabled{};
 
@@ -32,8 +33,6 @@ public slots:
 	void fillValidResolutions(bool isExtraResolutionsModEnabled);
 
 private slots:
-	void on_checkBoxFullScreen_stateChanged(int state);
-
 	void on_comboBoxResolution_currentTextChanged(const QString & arg1);
 
 	void on_comboBoxFullScreen_currentIndexChanged(int index);
@@ -70,6 +69,8 @@ private slots:
 
 	void on_updatesButton_clicked();
 
+	void on_comboBoxLanguage_currentIndexChanged(int index);
+
 private:
 	Ui::CSettingsView * ui;
 

+ 331 - 284
launcher/settingsView/csettingsview_moc.ui

@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Form</string>
+   <string/>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <property name="leftMargin">
@@ -26,47 +26,35 @@
    <property name="bottomMargin">
     <number>0</number>
    </property>
-   <item row="8" column="1" colspan="4">
-    <widget class="QLabel" name="labelAIMovingOnTheMap">
-     <property name="font">
-      <font>
-       <bold>true</bold>
-      </font>
+   <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>AI on the map</string>
+      <string notr="true">/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="4">
-    <widget class="QLabel" name="labelVideo">
+   <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>Video</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="9" column="7" colspan="3">
-    <widget class="QSpinBox" name="spinBoxNetworkPort">
-     <property name="minimum">
-      <number>1024</number>
-     </property>
-     <property name="maximum">
-      <number>65535</number>
-     </property>
-     <property name="value">
-      <number>3030</number>
+      <string>Launcher Settings</string>
      </property>
     </widget>
    </item>
@@ -79,61 +67,62 @@
       </size>
      </property>
      <property name="text">
-      <string>/usr/share/vcmi</string>
+      <string notr="true">/usr/share/vcmi</string>
      </property>
     </widget>
    </item>
-   <item row="10" column="6">
-    <widget class="QLabel" name="labelEncoding">
+   <item row="1" column="8">
+    <widget class="QPushButton" name="changeGameDataDir">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
      <property name="text">
-      <string>Heroes III character set</string>
+      <string>Change</string>
      </property>
     </widget>
    </item>
-   <item row="5" column="1">
-    <widget class="QCheckBox" name="checkBoxFullScreen">
-     <property name="text">
-      <string>Real fullscreen mode</string>
+   <item row="18" column="6">
+    <widget class="QComboBox" name="comboBoxAutoCheck">
+     <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="1" column="1">
-    <widget class="QLabel" name="labelResolution">
+   <item row="3" column="9">
+    <widget class="QPushButton" name="openTempDir">
      <property name="text">
-      <string>Resolution</string>
+      <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
-    <widget class="QLabel" name="labelFullScreen">
+   <item row="10" column="6">
+    <widget class="QLabel" name="labelEncoding">
      <property name="text">
-      <string>Fullscreen</string>
+      <string>Heroes III character set</string>
      </property>
     </widget>
    </item>
-   <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>
+   <item row="2" column="1">
+    <widget class="QLabel" name="labelFullScreen">
      <property name="text">
-      <string>/home/user/.vcmi</string>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
+      <string>Fullscreen</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="4">
-    <widget class="QComboBox" name="comboBoxFullScreen">
+   <item row="3" column="4">
+    <widget class="QComboBox" name="comboBoxShowIntro">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <item>
       <property name="text">
@@ -147,46 +136,44 @@
      </item>
     </widget>
    </item>
-   <item row="8" column="6" colspan="4">
-    <widget class="QLabel" name="labelGeneral">
-     <property name="font">
-      <font>
-       <bold>true</bold>
-      </font>
-     </property>
+   <item row="3" column="6">
+    <widget class="QLabel" name="labelTempDir">
      <property name="text">
-      <string>General</string>
+      <string>Log files directory</string>
      </property>
     </widget>
    </item>
-   <item row="20" column="1" colspan="9">
-    <widget class="QPlainTextEdit" name="plainTextEditRepos">
-     <property name="lineWrapMode">
-      <enum>QPlainTextEdit::NoWrap</enum>
+   <item row="3" column="7" colspan="2">
+    <widget class="QLineEdit" name="lineEditTempDir">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
-     <property name="plainText">
-      <string>http://downloads.vcmi.eu/Mods/repository.json</string>
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
      </property>
-    </widget>
-   </item>
-   <item row="1" column="9">
-    <widget class="QPushButton" name="openGameDataDir">
      <property name="text">
-      <string>Open</string>
+      <string notr="true">/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="9" column="1">
-    <widget class="QLabel" name="labelPlayerAI">
+   <item row="12" column="6">
+    <widget class="QLabel" name="labelAutoSave">
      <property name="text">
-      <string>Player AI</string>
+      <string>Autosave</string>
      </property>
     </widget>
    </item>
-   <item row="18" column="1" colspan="4">
+   <item row="19" column="1" colspan="4">
     <widget class="QLabel" name="labelRepositories">
      <property name="font">
       <font>
+       <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
@@ -195,158 +182,91 @@
      </property>
     </widget>
    </item>
-   <item row="9" column="4">
-    <widget class="QComboBox" name="comboBoxPlayerAI">
-     <item>
-      <property name="text">
-       <string>VCAI</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Nullkiller</string>
-      </property>
-     </item>
-    </widget>
-   </item>
-   <item row="4" column="1">
-    <widget class="QLabel" name="labelDisplayIndex">
+   <item row="18" column="7">
+    <widget class="QPushButton" name="updatesButton">
      <property name="text">
-      <string>Display index</string>
-     </property>
-    </widget>
-   </item>
-   <item row="3" column="4">
-    <widget class="QComboBox" name="comboBoxShowIntro">
-     <property name="currentIndex">
-      <number>1</number>
+      <string>Check for updates</string>
      </property>
-     <item>
-      <property name="text">
-       <string>Off</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>On</string>
-      </property>
-     </item>
     </widget>
    </item>
-   <item row="11" column="4">
-    <widget class="QComboBox" name="comboBoxNeutralAI">
-     <item>
-      <property name="text">
-       <string>BattleAI</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>StupidAI</string>
-      </property>
-     </item>
-    </widget>
+   <item row="4" column="4">
+    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
    </item>
-   <item row="13" column="4">
-    <widget class="QComboBox" name="comboBoxFriendlyAI">
-     <property name="editable">
-      <bool>false</bool>
-     </property>
-     <property name="currentText">
-      <string>BattleAI</string>
+   <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>BattleAI</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>StupidAI</string>
-      </property>
-     </item>
     </widget>
    </item>
-   <item row="11" 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>8</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="3" column="9">
-    <widget class="QPushButton" name="openTempDir">
+   <item row="2" column="9">
+    <widget class="QPushButton" name="openUserDataDir">
      <property name="text">
       <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="16" column="1" colspan="4">
-    <widget class="QLabel" name="LauncherSettings">
-     <property name="font">
-      <font>
-       <bold>true</bold>
-      </font>
-     </property>
+   <item row="8" column="1">
+    <widget class="QLabel" name="labelPlayerAI">
      <property name="text">
-      <string>Launcher Settings</string>
+      <string>Player AI</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="6">
-    <widget class="QLabel" name="labelGameDir">
+   <item row="4" column="1">
+    <widget class="QLabel" name="labelDisplayIndex">
      <property name="text">
-      <string>Extra data directory</string>
+      <string>Display index</string>
      </property>
     </widget>
    </item>
-   <item row="14" column="1">
-    <widget class="QLabel" name="labelEnemyAI">
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>22</height>
-      </size>
+   <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>Enemy AI</string>
+      <string>AI in the battlefield</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="8">
-    <widget class="QPushButton" name="changeGameDataDir">
-     <property name="enabled">
-      <bool>false</bool>
+   <item row="21" column="1" colspan="9">
+    <widget class="QPlainTextEdit" name="plainTextEditRepos">
+     <property name="lineWrapMode">
+      <enum>QPlainTextEdit::NoWrap</enum>
      </property>
-     <property name="text">
-      <string>Change</string>
+     <property name="plainText">
+      <string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="4">
-    <widget class="QComboBox" name="comboBoxResolution"/>
-   </item>
-   <item row="11" column="1">
-    <widget class="QLabel" name="labelNeutralAI">
+   <item row="7" column="6" colspan="4">
+    <widget class="QLabel" name="labelGeneral">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
      <property name="text">
-      <string>Neutral AI</string>
+      <string>General</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="4">
-    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
+   <item row="3" column="1">
+    <widget class="QLabel" name="labelShowIntro">
+     <property name="text">
+      <string>Show intro</string>
+     </property>
+    </widget>
    </item>
-   <item row="7" column="1" colspan="4">
-    <spacer name="spacerSections">
+   <item row="16" column="1" colspan="4">
+    <spacer name="spacerRepos">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
@@ -355,35 +275,37 @@
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>56</width>
+       <width>20</width>
        <height>8</height>
       </size>
      </property>
     </spacer>
    </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="14" column="6">
+    <widget class="QLabel" name="labelBuildVersionDesc">
+     <property name="text">
+      <string>Build version</string>
      </property>
+    </widget>
+   </item>
+   <item row="1" column="6">
+    <widget class="QLabel" name="labelGameDir">
      <property name="text">
-      <string>/home/user/.vcmi</string>
+      <string>Extra data directory</string>
      </property>
-     <property name="readOnly">
-      <bool>true</bool>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QLabel" name="labelResolution">
+     <property name="text">
+      <string>Resolution</string>
      </property>
     </widget>
    </item>
-   <item row="17" column="6">
-    <widget class="QComboBox" name="comboBoxAutoCheck">
+   <item row="2" column="4">
+    <widget class="QComboBox" name="comboBoxFullScreen">
      <property name="currentIndex">
-      <number>1</number>
+      <number>0</number>
      </property>
      <item>
       <property name="text">
@@ -395,9 +317,14 @@
        <string>On</string>
       </property>
      </item>
+     <item>
+      <property name="text">
+       <string>Real</string>
+      </property>
+     </item>
     </widget>
    </item>
-   <item row="11" column="7">
+   <item row="12" column="7">
     <widget class="QComboBox" name="comboBoxAutoSave">
      <property name="currentIndex">
       <number>1</number>
@@ -414,80 +341,72 @@
      </item>
     </widget>
    </item>
-   <item row="14" column="4">
-    <widget class="QComboBox" name="comboBoxEnemyAI">
-     <property name="editable">
-      <bool>false</bool>
+   <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>BattleAI</string>
+      <string notr="true">VCAI</string>
      </property>
      <item>
       <property name="text">
-       <string>BattleAI</string>
+       <string notr="true">VCAI</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>StupidAI</string>
+       <string notr="true">Nullkiller</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="15" column="1" colspan="4">
-    <spacer name="spacerRepos">
+   <item row="12" column="5">
+    <spacer name="spacerColumns">
      <property name="orientation">
-      <enum>Qt::Vertical</enum>
+      <enum>Qt::Horizontal</enum>
      </property>
      <property name="sizeType">
       <enum>QSizePolicy::Fixed</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>20</width>
-       <height>8</height>
+       <width>8</width>
+       <height>20</height>
       </size>
      </property>
     </spacer>
    </item>
-   <item row="10" column="1">
-    <widget class="QLabel" name="labelAIInTheBattlefield">
-     <property name="font">
-      <font>
-       <italic>true</italic>
-       <bold>true</bold>
-       <underline>false</underline>
-      </font>
-     </property>
-     <property name="text">
-      <string>AI in the battlefield</string>
-     </property>
-    </widget>
+   <item row="1" column="4">
+    <widget class="QComboBox" name="comboBoxResolution"/>
    </item>
-   <item row="17" column="1" colspan="4">
-    <widget class="QLabel" name="labelAutoCheck">
+   <item row="1" column="9">
+    <widget class="QPushButton" name="openGameDataDir">
      <property name="text">
-      <string>Check repositories on startup</string>
+      <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="13" column="1">
-    <widget class="QLabel" name="labelFriendlyAI">
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>22</height>
-      </size>
-     </property>
-     <property name="text">
-      <string>Friendly AI</string>
+   <item row="0" column="1" colspan="4">
+    <widget class="QLabel" name="labelVideo">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
      </property>
-    </widget>
-   </item>
-   <item row="3" column="6">
-    <widget class="QLabel" name="labelTempDir">
      <property name="text">
-      <string>Log files directory</string>
+      <string>Video</string>
      </property>
     </widget>
    </item>
@@ -495,6 +414,7 @@
     <widget class="QLabel" name="labelDataDirs">
      <property name="font">
       <font>
+       <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
@@ -503,6 +423,22 @@
      </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="2" column="6">
     <widget class="QLabel" name="labelUserDataDir">
      <property name="text">
@@ -510,21 +446,41 @@
      </property>
     </widget>
    </item>
-   <item row="2" column="9">
-    <widget class="QPushButton" name="openUserDataDir">
+   <item row="11" column="6">
+    <widget class="QLabel" name="labelNetworkPort">
      <property name="text">
-      <string>Open</string>
+      <string>Network port</string>
      </property>
     </widget>
    </item>
-   <item row="9" column="6">
-    <widget class="QLabel" name="labelNetworkPort">
+   <item row="11" column="7">
+    <widget class="QSpinBox" name="spinBoxNetworkPort">
+     <property name="minimum">
+      <number>1024</number>
+     </property>
+     <property name="maximum">
+      <number>65535</number>
+     </property>
+     <property name="value">
+      <number>3030</number>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="6">
+    <widget class="QLabel" name="labelLanguage">
      <property name="text">
-      <string>Network port</string>
+      <string>VCMI Language</string>
+     </property>
+    </widget>
+   </item>
+   <item row="14" column="7" colspan="2">
+    <widget class="QLabel" name="labelBuildVersion">
+     <property name="text">
+      <string notr="true"/>
      </property>
     </widget>
    </item>
-   <item row="10" column="7" colspan="3">
+   <item row="10" column="7" colspan="2">
     <widget class="QComboBox" name="comboBoxEncoding">
      <item>
       <property name="text">
@@ -563,31 +519,122 @@
      </item>
     </widget>
    </item>
-   <item row="11" column="6">
-    <widget class="QLabel" name="labelAutoSave">
+   <item row="8" column="7" colspan="2">
+    <widget class="QComboBox" name="comboBoxLanguage">
+     <item>
+      <property name="text">
+       <string>English</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Deutsch (German)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <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="11" column="1">
+    <widget class="QLabel" name="labelNeutralAI">
      <property name="text">
-      <string>Autosave</string>
+      <string>Neutral AI</string>
      </property>
     </widget>
    </item>
-   <item row="17" column="7">
-    <widget class="QPushButton" name="updatesButton">
-     <property name="text">
-      <string>Check for updates</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="13" column="6">
-    <widget class="QLabel" name="labelBuildVersionDesc">
+   <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>Build version</string>
+      <string>Friendly AI</string>
      </property>
     </widget>
    </item>
-   <item row="13" column="7" colspan="3">
-    <widget class="QLabel" name="labelBuildVersion">
+   <item row="12" column="4">
+    <widget class="QComboBox" name="comboBoxFriendlyAI">
+     <property name="editable">
+      <bool>false</bool>
+     </property>
+     <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="14" column="4">
+    <widget class="QComboBox" name="comboBoxEnemyAI">
+     <property name="editable">
+      <bool>false</bool>
+     </property>
+     <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="14" column="1">
+    <widget class="QLabel" name="labelEnemyAI">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>22</height>
+      </size>
+     </property>
      <property name="text">
-      <string notr="true"/>
+      <string>Enemy AI</string>
      </property>
     </widget>
    </item>

+ 604 - 0
launcher/translation/english.ts

@@ -0,0 +1,604 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_US">
+<context>
+    <name>CModListModel</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <source>Author</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CModListView</name>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
+        <source>Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
+        <source>All mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
+        <source>Downloadable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
+        <source>Installed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
+        <source>Updatable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
+        <source>Download &amp;&amp; refresh repositories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="288"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
+        <source>Changelog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
+        <source>Screenshots</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
+        <source>Show details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
+        <source>Uninstall</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
+        <source>Enable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
+        <source>Disable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
+        <source>Install</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
+        <source> %p% (%v KB out of %m KB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
+        <source>Abort</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <source>Mod name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <source>Installed version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Latest version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <source>Download size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="255"/>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="258"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="262"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Compatibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="271"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="279"/>
+        <source>Required VCMI version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Supported VCMI version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>Supported VCMI versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>Required mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <source>Conflicting mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <source>This mod can not be installed or enabled because following dependencies are not present</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <source>This mod can not be enabled because following mods are incompatible with this mod</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <source>This mod can not be disabled because it is required to run following mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
+        <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
+        <source>Notes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="828"/>
+        <source>Screenshot %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is compatible</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Mod is incompatible</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <source>Change</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <source>Open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <source>User data directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Off</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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"/>
+        <source>On</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <source>Fullscreen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
+        <source>Repositories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <source>Check for updates</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="549"/>
+        <source>Neutral AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <source>Real</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <source>Player AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <source>VCMI Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
+        <source>Central European (Windows 1250)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
+        <source>Cyrillic script (Windows 1251)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
+        <source>Western European (Windows 1252)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
+        <source>Simplified Chinese (GBK)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
+        <source>Korean (Windows 949)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Deutsch (German)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Polska (Polish)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Русский (Russian)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="541"/>
+        <source>Українська (Ukrainian)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="579"/>
+        <source>Friendly AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <source>Resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
+        <source>AI on the map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <source>Display index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
+        <source>Check repositories on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
+        <source>Network port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <source>Data Directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <source>Video</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
+        <source>Heroes III character set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
+        <source>Extra data directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <source>Log files directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <source>Show intro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <source>Launcher Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <source>Build version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="632"/>
+        <source>Enemy AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
+        <source>AI in the battlefield</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageViewer</name>
+    <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
+        <source>Image Viewer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Lobby</name>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
+        <source>Connect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
+        <source>Username</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
+        <source>Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
+        <source>Players</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
+        <source>New room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
+        <source>Join room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
+        <source>Ready</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
+        <source>Mods mismatch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
+        <source>Leave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
+        <source>Kick player</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
+        <source>Players in the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LobbyRoomRequest</name>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
+        <source>Room name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
+        <source>Maximum players</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
+        <source>Password (optional)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
+        <source>VCMI Launcher</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="95"/>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="189"/>
+        <source>Map Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="236"/>
+        <source>Start game</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Lobby</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="51"/>
+        <source>Mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UpdateDialog</name>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
+        <source>You have latest version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
+        <source>Check updates on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>

+ 608 - 0
launcher/translation/german.ts

@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de">
+<context>
+    <name>CModListModel</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <source>Name</source>
+        <translation>Name</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation>Version</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation>Größe</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <source>Author</source>
+        <translation>Autor</translation>
+    </message>
+</context>
+<context>
+    <name>CModListView</name>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
+        <source>Filter</source>
+        <translation>Filter</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
+        <source>All mods</source>
+        <translation>Alle Mods</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
+        <source>Downloadable</source>
+        <translation>Herunterladbar</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
+        <source>Installed</source>
+        <translation>Installiert</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
+        <source>Updatable</source>
+        <translation>Aktualisierbar</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
+        <source>Active</source>
+        <translation>Aktiv</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
+        <source>Inactive</source>
+        <translation>Inaktiv</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
+        <source>Download &amp;&amp; refresh repositories</source>
+        <translation>Repositories herunterladen &amp;&amp; aktualisieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="288"/>
+        <source>Description</source>
+        <translation>Beschreibung</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
+        <source>Changelog</source>
+        <translation>Änderungslog</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
+        <source>Screenshots</source>
+        <translation>Screenshots</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
+        <source>Show details</source>
+        <translation>Details anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
+        <source>Uninstall</source>
+        <translation>Deinstallieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
+        <source>Enable</source>
+        <translation>Aktivieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
+        <source>Disable</source>
+        <translation>Deaktivieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
+        <source>Update</source>
+        <translation>Aktualisieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
+        <source>Install</source>
+        <translation>Installieren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
+        <source> %p% (%v KB out of %m KB)</source>
+        <translation> %p% (%v КB von %m КB)</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
+        <source>Abort</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <source>Mod name</source>
+        <translation>Mod-Name</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <source>Installed version</source>
+        <translation>Installierte Version</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Latest version</source>
+        <translation>Letzte Version</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <source>Download size</source>
+        <translation>Downloadgröße</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <source>Authors</source>
+        <translation>Autoren</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="255"/>
+        <source>License</source>
+        <translation>Lizenz</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="258"/>
+        <source>Home</source>
+        <translation>Home</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="262"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Compatibility</source>
+        <translation>Kompatibilität</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="271"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="279"/>
+        <source>Required VCMI version</source>
+        <translation>Benötigte VCMI Version</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Supported VCMI version</source>
+        <translation>Unterstützte VCMI Version</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>Supported VCMI versions</source>
+        <translation>Unterstützte VCMI Versionen</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>Required mods</source>
+        <translation>Benötigte Mods</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <source>Conflicting mods</source>
+        <translation>Mods mit Konflikt</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <source>This mod can not be installed or enabled because following dependencies are not present</source>
+        <translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <source>This mod can not be enabled because following mods are incompatible with this mod</source>
+        <translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <source>This mod can not be disabled because it is required to run following mods</source>
+        <translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
+        <translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
+        <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
+        <translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
+        <source>Notes</source>
+        <translation>Anmerkungen</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="828"/>
+        <source>Screenshot %1</source>
+        <translation>Screenshot %1</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is compatible</source>
+        <translation>Mod ist kompatibel</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Mod is incompatible</source>
+        <translation>Mod ist inkompatibel</translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <source>Change</source>
+        <translation>Ändern</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <source>Open</source>
+        <translation>Öffnen</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <source>User data directory</source>
+        <translation>Verzeichnis der Benutzerdaten</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Off</source>
+        <translation>Aus</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>On</source>
+        <translation>An</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <source>Fullscreen</source>
+        <translation>Vollbild</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
+        <source>AI in the battlefield</source>
+        <translation>KI auf dem Schlachtfeld</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
+        <source>Repositories</source>
+        <translation>Repositories</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <source>Check for updates</source>
+        <translation>Nach Aktualisierungen suchen</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="549"/>
+        <source>Neutral AI</source>
+        <translation>Neutrale KI</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <source>Real</source>
+        <translation>Vollständig</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <source>General</source>
+        <translation>Allgemein</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <source>Player AI</source>
+        <translation>Spieler-KI</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <source>VCMI Language</source>
+        <translation>VCMI-Sprache</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
+        <source>Central European (Windows 1250)</source>
+        <translation>Mitteleuropäisch (Windows 1250)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
+        <source>Cyrillic script (Windows 1251)</source>
+        <translation>Kyrillische Schrift (Windows 1251)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
+        <source>Western European (Windows 1252)</source>
+        <translation>Westeuropäisch (Windows 1252)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
+        <source>Simplified Chinese (GBK)</source>
+        <translation>Vereinfachtes Chinesisch (GBK)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation>Vereinfachtes Chinesisch (GB2312)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
+        <source>Korean (Windows 949)</source>
+        <translation>Koreanisch (Windows 949)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <source>English</source>
+        <translation>English (Englisch)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Deutsch (German)</source>
+        <translation>Deutsch</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Polska (Polish)</source>
+        <translation>Polska (Polnisch)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Русский (Russian)</source>
+        <translation>Русский (Russisch)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="541"/>
+        <source>Українська (Ukrainian)</source>
+        <translation>Українська (Ukrainisch)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="579"/>
+        <source>Friendly AI</source>
+        <translation>Freundliche KI</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <source>Resolution</source>
+        <translation>Auflösung</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
+        <source>AI on the map</source>
+        <translation>KI auf der Karte</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
+        <source>Autosave</source>
+        <translation>Autospeichern</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <source>Display index</source>
+        <translation>Anzeige-Index</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
+        <source>Check repositories on startup</source>
+        <translation>Repositories beim Start prüfen</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
+        <source>Network port</source>
+        <translation>Netzwerk-Port</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <source>Data Directories</source>
+        <translation>Daten-Verzeichnisse</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <source>Video</source>
+        <translation>Video</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
+        <source>Heroes III character set</source>
+        <translation>Heroes III Zeichensatz</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
+        <source>Extra data directory</source>
+        <translation>Zusätzliches Daten-Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <source>Log files directory</source>
+        <translation>Verzeichnis der Log-Dateien</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <source>Show intro</source>
+        <translation>Intro anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <source>Launcher Settings</source>
+        <translation>Launcher-Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <source>Build version</source>
+        <translation>Version des Builds</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="632"/>
+        <source>Enemy AI</source>
+        <translation>Feindliche KI</translation>
+    </message>
+</context>
+<context>
+    <name>ImageViewer</name>
+    <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
+        <source>Image Viewer</source>
+        <translation>Bildbetrachter</translation>
+    </message>
+</context>
+<context>
+    <name>Lobby</name>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
+        <source>Connect</source>
+        <translation>Verbinden</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
+        <source>Username</source>
+        <translation>Benutzername</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
+        <source>Server</source>
+        <translation>Server</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
+        <source>Session</source>
+        <translation>Sitzung</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
+        <source>Players</source>
+        <translation>Spieler</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
+        <source>New room</source>
+        <translation>Neuer Raum</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
+        <source>Join room</source>
+        <translation>Raum beitreten</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
+        <source>Ready</source>
+        <translation>Bereit</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
+        <source>Mods mismatch</source>
+        <translation>Mods stimmen nicht überein</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
+        <source>Leave</source>
+        <translation>Verlassen</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
+        <source>Kick player</source>
+        <translation>Spieler kicken</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
+        <source>Players in the room</source>
+        <translation>Spieler im Raum</translation>
+    </message>
+</context>
+<context>
+    <name>LobbyRoomRequest</name>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
+        <source>Room settings</source>
+        <translation>Raumeinstellungen</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
+        <source>Room name</source>
+        <translation>Raumname</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
+        <source>Maximum players</source>
+        <translation>Maximale Spieler</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
+        <source>Password (optional)</source>
+        <translation>Passwort (optional)</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
+        <source>VCMI Launcher</source>
+        <translation>VCMI Launcher</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="51"/>
+        <source>Mods</source>
+        <translation>Mods</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation type="vanished">Editor</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="95"/>
+        <source>Settings</source>
+        <translation>Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Lobby</source>
+        <translation>Lobby</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="189"/>
+        <source>Map Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="236"/>
+        <source>Start game</source>
+        <translation>Spiel starten</translation>
+    </message>
+</context>
+<context>
+    <name>UpdateDialog</name>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
+        <source>You have latest version</source>
+        <translation>Sie haben die neueste Version</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
+        <source>Close</source>
+        <translation>Beenden</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
+        <source>Check updates on startup</source>
+        <translation>Nach Aktualisierungen beim Starten prüfen</translation>
+    </message>
+</context>
+</TS>

+ 608 - 0
launcher/translation/polish.ts

@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pl_PL">
+<context>
+    <name>CModListModel</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <source>Name</source>
+        <translation>Nazwa</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation>Wersja</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation>Rosmiar</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <source>Author</source>
+        <translation>Autor</translation>
+    </message>
+</context>
+<context>
+    <name>CModListView</name>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
+        <source>Filter</source>
+        <translation>Filtruj</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
+        <source>All mods</source>
+        <translation>Wszystkie mody</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
+        <source>Downloadable</source>
+        <translation>Dostępny do pobrania</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
+        <source>Installed</source>
+        <translation>Zainstalowany</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
+        <source>Updatable</source>
+        <translation>Można zaktualizować</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
+        <source>Active</source>
+        <translation>Aktywny</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
+        <source>Inactive</source>
+        <translation>Nieaktywny</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
+        <source>Download &amp;&amp; refresh repositories</source>
+        <translation>Pobierz i odśwież repozytoria</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="288"/>
+        <source>Description</source>
+        <translation>Opis</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
+        <source>Changelog</source>
+        <translation>Lista zmian</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
+        <source>Screenshots</source>
+        <translation>Zrzuty ekranu</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
+        <source>Show details</source>
+        <translation>Pokaż szczegóły</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
+        <source>Uninstall</source>
+        <translation>Odinstaluj</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
+        <source>Enable</source>
+        <translation>Włącz</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
+        <source>Disable</source>
+        <translation>Wyłącz</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
+        <source>Update</source>
+        <translation>Zaktualizuj</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
+        <source>Install</source>
+        <translation>Zainstaluj</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
+        <source> %p% (%v KB out of %m KB)</source>
+        <translation> %p% (%v KB z %m KB)</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
+        <source>Abort</source>
+        <translation>Przerwij</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <source>Mod name</source>
+        <translation>Nazwa moda</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <source>Installed version</source>
+        <translation>Zainstalowana wersja</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Latest version</source>
+        <translation>Najnowsza wersja</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <source>Download size</source>
+        <translation>Rozmiar pobierania</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <source>Authors</source>
+        <translation>Autorzy</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="255"/>
+        <source>License</source>
+        <translation>Licencja</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="258"/>
+        <source>Home</source>
+        <translation>Źródło</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="262"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Compatibility</source>
+        <translation>Kompatybilność</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="271"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="279"/>
+        <source>Required VCMI version</source>
+        <translation>Wymagana wersja VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Supported VCMI version</source>
+        <translation>Wspierana wersja VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>Supported VCMI versions</source>
+        <translation>Wspierane wersje VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>Required mods</source>
+        <translation>Wymagane mody</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <source>Conflicting mods</source>
+        <translation>Konfliktujące mody</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <source>This mod can not be installed or enabled because following dependencies are not present</source>
+        <translation>Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <source>This mod can not be enabled because following mods are incompatible with this mod</source>
+        <translation>Ten mod nie może zostać włączony ponieważ następujące mody są z nim niekompatybilne</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <source>This mod can not be disabled because it is required to run following mods</source>
+        <translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany by do uruchomienia następujących modów</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
+        <translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
+        <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
+        <translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
+        <source>Notes</source>
+        <translation>Uwagi</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="828"/>
+        <source>Screenshot %1</source>
+        <translation>Zrzut ekranu %1</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is compatible</source>
+        <translation>Mod jest kompatybilny</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Mod is incompatible</source>
+        <translation>Mod jest niekompatybilny</translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <source>Change</source>
+        <translation>Zmień</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <source>Open</source>
+        <translation>Otwórz</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <source>User data directory</source>
+        <translation>Katalog danych użytkownika</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Off</source>
+        <translation>Włączony</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>On</source>
+        <translation>Wyłączony</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <source>Fullscreen</source>
+        <translation>Pełny ekran</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
+        <source>Repositories</source>
+        <translation>Repozytoria</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <source>Check for updates</source>
+        <translation>Sprawdź czy są aktualizacje</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="549"/>
+        <source>Neutral AI</source>
+        <translation>AI jednostek neutralnych</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <source>Real</source>
+        <translation>Prawdziwy</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <source>General</source>
+        <translation>Ogólne</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <source>Player AI</source>
+        <translation>AI graczy</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <source>VCMI Language</source>
+        <translation>Język VCMI</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
+        <source>Central European (Windows 1250)</source>
+        <translation>Środkowoeuropejski (Windows 1250)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
+        <source>Cyrillic script (Windows 1251)</source>
+        <translation>Cyrylica (Windows 1251)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
+        <source>Western European (Windows 1252)</source>
+        <translation>Wschodnioeuropejski (Windows 1252)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
+        <source>Simplified Chinese (GBK)</source>
+        <translation>Uproszczony chiński (GBK)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation>Uproszczony chiński (GB2312)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
+        <source>Korean (Windows 949)</source>
+        <translation>Koreański (Windows 949)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <source>English</source>
+        <translation>English (Angielski)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Deutsch (German)</source>
+        <translation>Deutsch (Niemiecki)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Polska (Polish)</source>
+        <translation>Polska</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Русский (Russian)</source>
+        <translation>Русский (Rosyjski)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="541"/>
+        <source>Українська (Ukrainian)</source>
+        <translation>Українська (Ukraiński)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="579"/>
+        <source>Friendly AI</source>
+        <translation>AI sojuszników</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <source>Resolution</source>
+        <translation>Rozdzielczość</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
+        <source>AI on the map</source>
+        <translation>AI na mapie przygody</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
+        <source>Autosave</source>
+        <translation>Autozapis</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <source>Display index</source>
+        <translation>Numer wyświetlacza</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
+        <source>Check repositories on startup</source>
+        <translation>Sprawdź repozytoria przy starcie</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
+        <source>Network port</source>
+        <translation>Port sieciowy</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <source>Data Directories</source>
+        <translation>Katalogi z danymi</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <source>Video</source>
+        <translation>Obraz</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
+        <source>Heroes III character set</source>
+        <translation>Zestaw znaków w grze</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
+        <source>Extra data directory</source>
+        <translation>Katalog danych dodatkowych</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <source>Log files directory</source>
+        <translation>Katalog logów</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <source>Show intro</source>
+        <translation>Pokaż intro</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <source>Launcher Settings</source>
+        <translation>Ustawienia Launchera</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <source>Build version</source>
+        <translation>Wersja programu</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="632"/>
+        <source>Enemy AI</source>
+        <translation>AI wrogich graczy</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
+        <source>AI in the battlefield</source>
+        <translation>AI na polu bitwy</translation>
+    </message>
+</context>
+<context>
+    <name>ImageViewer</name>
+    <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
+        <source>Image Viewer</source>
+        <translation>Wyświetlacz obrazków</translation>
+    </message>
+</context>
+<context>
+    <name>Lobby</name>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
+        <source>Connect</source>
+        <translation>Połącz</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
+        <source>Username</source>
+        <translation>Nazwa użytkownika</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
+        <source>Server</source>
+        <translation>Serwer</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
+        <source>Session</source>
+        <translation>Sesja</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
+        <source>Players</source>
+        <translation>Gracze</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
+        <source>New room</source>
+        <translation>Nowy pokój</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
+        <source>Join room</source>
+        <translation>Dołącz</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
+        <source>Ready</source>
+        <translation>Zgłoś gotowość</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
+        <source>Mods mismatch</source>
+        <translation>Niezgodność modów</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
+        <source>Leave</source>
+        <translation>Wyjdź</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
+        <source>Kick player</source>
+        <translation>Wyrzuć gracza</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
+        <source>Players in the room</source>
+        <translation>Gracze w pokoju</translation>
+    </message>
+</context>
+<context>
+    <name>LobbyRoomRequest</name>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
+        <source>Room settings</source>
+        <translation>Ustawienia pokoju</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
+        <source>Room name</source>
+        <translation>Nazwa pokoju</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
+        <source>Maximum players</source>
+        <translation>Maks. ilość graczy</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
+        <source>Password (optional)</source>
+        <translation>Hasło (opcjonalnie)</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
+        <source>VCMI Launcher</source>
+        <translation>VCMI Launcher (program startowy)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="95"/>
+        <source>Settings</source>
+        <translation>Ustawienia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="189"/>
+        <source>Map Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="236"/>
+        <source>Start game</source>
+        <translation>Uruchom grę</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Lobby</source>
+        <translation>Lobby</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="51"/>
+        <source>Mods</source>
+        <translation>Mody</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation type="vanished">Edytor</translation>
+    </message>
+</context>
+<context>
+    <name>UpdateDialog</name>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
+        <source>You have latest version</source>
+        <translation>Posiadasz obecnie aktualną wersję</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
+        <source>Close</source>
+        <translation>Zamknij</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
+        <source>Check updates on startup</source>
+        <translation>Sprawdź aktualizacje przy uruchomieniu</translation>
+    </message>
+</context>
+</TS>

+ 604 - 0
launcher/translation/russian.ts

@@ -0,0 +1,604 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+    <name>CModListModel</name>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="150"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="156"/>
+        <source>Author</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CModListView</name>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="61"/>
+        <source>Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
+        <source>All mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
+        <source>Downloadable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
+        <source>Installed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
+        <source>Updatable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
+        <source>Download &amp;&amp; refresh repositories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="288"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
+        <source>Changelog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
+        <source>Screenshots</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
+        <source>Show details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
+        <source>Uninstall</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
+        <source>Enable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
+        <source>Disable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
+        <source>Install</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="563"/>
+        <source> %p% (%v KB out of %m KB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="576"/>
+        <source>Abort</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <source>Mod name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <source>Installed version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Latest version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <source>Download size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="255"/>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="258"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="262"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Compatibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="271"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="279"/>
+        <source>Required VCMI version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Supported VCMI version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>Supported VCMI versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>Required mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <source>Conflicting mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <source>This mod can not be installed or enabled because following dependencies are not present</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="293"/>
+        <source>This mod can not be enabled because following mods are incompatible with this mod</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
+        <source>This mod can not be disabled because it is required to run following mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="295"/>
+        <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
+        <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
+        <source>Notes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="828"/>
+        <source>Screenshot %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is compatible</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Mod is incompatible</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <source>Change</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <source>Open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <source>User data directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Off</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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"/>
+        <source>On</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <source>Fullscreen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="181"/>
+        <source>Repositories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <source>Check for updates</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="549"/>
+        <source>Neutral AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <source>Real</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <source>Player AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="472"/>
+        <source>VCMI Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="487"/>
+        <source>Central European (Windows 1250)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="492"/>
+        <source>Cyrillic script (Windows 1251)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="497"/>
+        <source>Western European (Windows 1252)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="502"/>
+        <source>Simplified Chinese (GBK)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="507"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="512"/>
+        <source>Korean (Windows 949)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="521"/>
+        <source>English</source>
+        <translation>English (Английский)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Deutsch (German)</source>
+        <translation type="unfinished">Deutsch (Немецкий)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Polska (Polish)</source>
+        <translation>Polska (Польский)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Русский (Russian)</source>
+        <translation>Русский</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="541"/>
+        <source>Українська (Ukrainian)</source>
+        <translation>Українська (Украинский)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="579"/>
+        <source>Friendly AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <source>Resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="353"/>
+        <source>AI on the map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="168"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <source>Display index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="198"/>
+        <source>Check repositories on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="452"/>
+        <source>Network port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <source>Data Directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <source>Video</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="111"/>
+        <source>Heroes III character set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="294"/>
+        <source>Extra data directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <source>Log files directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <source>Show intro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <source>Launcher Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <source>Build version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="632"/>
+        <source>Enemy AI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="234"/>
+        <source>AI in the battlefield</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageViewer</name>
+    <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
+        <source>Image Viewer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Lobby</name>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
+        <source>Connect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
+        <source>Username</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
+        <source>Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
+        <source>Players</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
+        <source>New room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
+        <source>Join room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
+        <source>Ready</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
+        <source>Mods mismatch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
+        <source>Leave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
+        <source>Kick player</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
+        <source>Players in the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LobbyRoomRequest</name>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
+        <source>Room name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
+        <source>Maximum players</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
+        <source>Password (optional)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
+        <source>VCMI Launcher</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="95"/>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="189"/>
+        <source>Map Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="236"/>
+        <source>Start game</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Lobby</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="51"/>
+        <source>Mods</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UpdateDialog</name>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
+        <source>You have latest version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
+        <source>Check updates on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>

+ 608 - 0
launcher/translation/ukrainian.ts

@@ -0,0 +1,608 @@
+<?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="150"/>
+        <source>Name</source>
+        <translation>Назва</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="153"/>
+        <source>Type</source>
+        <translation>Тип</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="154"/>
+        <source>Version</source>
+        <translation>Версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistmodel_moc.cpp" line="155"/>
+        <source>Size</source>
+        <translation>Розмір</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Filter</source>
+        <translation>Фільтр</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="84"/>
+        <source>All mods</source>
+        <translation>Усі модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="89"/>
+        <source>Downloadable</source>
+        <translation>Усі доступні</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="94"/>
+        <source>Installed</source>
+        <translation>Встановлені</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="99"/>
+        <source>Updatable</source>
+        <translation>Доступні оновлення</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="104"/>
+        <source>Active</source>
+        <translation>Активні</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="109"/>
+        <source>Inactive</source>
+        <translation>Неактивні</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="123"/>
+        <source>Download &amp;&amp; refresh repositories</source>
+        <translation>Оновити репозиторії</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="228"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="288"/>
+        <source>Description</source>
+        <translation>Опис</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="273"/>
+        <source>Changelog</source>
+        <translation>Зміни</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="295"/>
+        <source>Screenshots</source>
+        <translation>Знімки</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="368"/>
+        <source>Show details</source>
+        <translation>Показати подробиці</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="409"/>
+        <source>Uninstall</source>
+        <translation>Видалити</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="434"/>
+        <source>Enable</source>
+        <translation>Активувати</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="459"/>
+        <source>Disable</source>
+        <translation>Деактивувати</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="484"/>
+        <source>Update</source>
+        <translation>Оновити</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.ui" line="509"/>
+        <source>Install</source>
+        <translation>Встановити</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Abort</source>
+        <translation>Відмінити</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="246"/>
+        <source>Mod name</source>
+        <translation>Назва модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="247"/>
+        <source>Installed version</source>
+        <translation>Встановлена версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Latest version</source>
+        <translation>Найновіша версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="251"/>
+        <source>Download size</source>
+        <translation>Розмір для завантаження</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <source>Authors</source>
+        <translation>Автори</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="255"/>
+        <source>License</source>
+        <translation>Ліцензія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="258"/>
+        <source>Home</source>
+        <translation>Домашня сторінка</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="262"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Compatibility</source>
+        <translation>Сумісність</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="271"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="279"/>
+        <source>Required VCMI version</source>
+        <translation>Необхідна версія VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Supported VCMI version</source>
+        <translation>Підтримувана версія VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>Supported VCMI versions</source>
+        <translation>Підтримувані версії VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>Required mods</source>
+        <translation>Необхідні модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
+        <source>Conflicting mods</source>
+        <translation>Конфліктуючі модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
+        <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="293"/>
+        <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="294"/>
+        <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="295"/>
+        <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="296"/>
+        <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="311"/>
+        <source>Notes</source>
+        <translation>Примітки</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="828"/>
+        <source>Screenshot %1</source>
+        <translation>Знімок екрану %1</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="240"/>
+        <source>Mod is compatible</source>
+        <translation>Модифікація сумісна</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Mod is incompatible</source>
+        <translation>Модифікація несумісна</translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="80"/>
+        <source>Change</source>
+        <translation>Змінити</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="104"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="396"/>
+        <source>Open</source>
+        <translation>Відкрити</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="445"/>
+        <source>User data directory</source>
+        <translation>Тека даних користувача</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Off</source>
+        <translation>Вимкнено</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>On</source>
+        <translation>Увімкнено</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="118"/>
+        <source>Fullscreen</source>
+        <translation>Повноекранний режим</translation>
+    </message>
+    <message>
+        <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="181"/>
+        <source>Repositories</source>
+        <translation>Репозиторії</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="188"/>
+        <source>Check for updates</source>
+        <translation>Оновити зараз</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="549"/>
+        <source>Neutral AI</source>
+        <translation>Нейтральний ШІ</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="322"/>
+        <source>Real</source>
+        <translation>Повний</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="257"/>
+        <source>General</source>
+        <translation>Загальні налаштування</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="212"/>
+        <source>Player AI</source>
+        <translation>ШІ гравців</translation>
+    </message>
+    <message>
+        <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"/>
+        <source>Central European (Windows 1250)</source>
+        <translation>Центральноєвропейська (Windows 1250)</translation>
+    </message>
+    <message>
+        <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="497"/>
+        <source>Western European (Windows 1252)</source>
+        <translation>Західноєвропейська (Windows 1252)</translation>
+    </message>
+    <message>
+        <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="507"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation>Спрощена китайська (GB2312)</translation>
+    </message>
+    <message>
+        <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="521"/>
+        <source>English</source>
+        <translation>English (Англійська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="526"/>
+        <source>Deutsch (German)</source>
+        <translation>Deutsch (Німецька)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="531"/>
+        <source>Polska (Polish)</source>
+        <translation>Polska (Польська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Русский (Russian)</source>
+        <translation>Русский (Російська)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="541"/>
+        <source>Українська (Ukrainian)</source>
+        <translation>Українська</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="579"/>
+        <source>Friendly AI</source>
+        <translation>Дружній ШІ</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="301"/>
+        <source>Resolution</source>
+        <translation>Роздільна здатність</translation>
+    </message>
+    <message>
+        <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="168"/>
+        <source>Autosave</source>
+        <translation>Автозбереження</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="219"/>
+        <source>Display index</source>
+        <translation>Дісплей</translation>
+    </message>
+    <message>
+        <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="452"/>
+        <source>Network port</source>
+        <translation>Мережевий порт</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="422"/>
+        <source>Data Directories</source>
+        <translation>Теки даних гри</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="409"/>
+        <source>Video</source>
+        <translation>Графіка</translation>
+    </message>
+    <message>
+        <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="294"/>
+        <source>Extra data directory</source>
+        <translation>Додаткова тека даних</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="142"/>
+        <source>Log files directory</source>
+        <translation>Тека файлів журналу</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="264"/>
+        <source>Show intro</source>
+        <translation>Вступні відео</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="57"/>
+        <source>Launcher Settings</source>
+        <translation>Налаштування лаунчера</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="287"/>
+        <source>Build version</source>
+        <translation>Версія збірки</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="632"/>
+        <source>Enemy AI</source>
+        <translation>Ворожий ШІ</translation>
+    </message>
+</context>
+<context>
+    <name>ImageViewer</name>
+    <message>
+        <location filename="../modManager/imageviewer_moc.ui" line="20"/>
+        <source>Image Viewer</source>
+        <translation>Перегляд зображень</translation>
+    </message>
+</context>
+<context>
+    <name>Lobby</name>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="26"/>
+        <source>Connect</source>
+        <translation>Підключитися</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="45"/>
+        <source>Username</source>
+        <translation>Ім&apos;я користувача</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="69"/>
+        <source>Server</source>
+        <translation>Сервер</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="111"/>
+        <source>Session</source>
+        <translation>Сесія</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="116"/>
+        <source>Players</source>
+        <translation>Гравці</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="132"/>
+        <source>New room</source>
+        <translation>Створити кімнату</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="142"/>
+        <source>Join room</source>
+        <translation>Приєднатися до кімнати</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="153"/>
+        <source>Ready</source>
+        <translation>Готовність</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="160"/>
+        <source>Mods mismatch</source>
+        <translation>Модифікації, що не збігаються</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="167"/>
+        <source>Leave</source>
+        <translation>Вийти з кімнати</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="197"/>
+        <source>Kick player</source>
+        <translation>Виключити гравця</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobby_moc.ui" line="204"/>
+        <source>Players in the room</source>
+        <translation>Гравці у кімнаті</translation>
+    </message>
+</context>
+<context>
+    <name>LobbyRoomRequest</name>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="17"/>
+        <source>Room settings</source>
+        <translation>Налаштування кімнати</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="32"/>
+        <source>Room name</source>
+        <translation>Назва кімнати</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="42"/>
+        <source>Maximum players</source>
+        <translation>Максимум гравців</translation>
+    </message>
+    <message>
+        <location filename="../lobby/lobbyroomrequest_moc.ui" line="97"/>
+        <source>Password (optional)</source>
+        <translation>Пароль (за бажанням)</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="20"/>
+        <source>VCMI Launcher</source>
+        <translation>VCMI Launcher</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="51"/>
+        <source>Mods</source>
+        <translation>Модифікації</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation type="vanished">Редактор</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="95"/>
+        <source>Settings</source>
+        <translation>Налаштування</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Lobby</source>
+        <translation>Лобі</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="189"/>
+        <source>Map Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="236"/>
+        <source>Start game</source>
+        <translation>Грати</translation>
+    </message>
+</context>
+<context>
+    <name>UpdateDialog</name>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="71"/>
+        <source>You have latest version</source>
+        <translation>У вас встановлена остання версія</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="94"/>
+        <source>Close</source>
+        <translation>Закрити</translation>
+    </message>
+    <message>
+        <location filename="../updatedialog_moc.ui" line="101"/>
+        <source>Check updates on startup</source>
+        <translation>Перевіряти наявність оновлень при запуску</translation>
+    </message>
+</context>
+</TS>

+ 4 - 0
lib/VCMIDirs.cpp

@@ -158,6 +158,7 @@ class VCMIDirsWIN32 final : public IVCMIDirs
 		std::vector<bfs::path> dataPaths() const override;
 
 		bfs::path clientPath() const override;
+		bfs::path mapEditorPath() const override;
 		bfs::path serverPath() const override;
 
 		bfs::path libraryPath() const override;
@@ -348,6 +349,7 @@ std::vector<bfs::path> VCMIDirsWIN32::dataPaths() const
 }
 
 bfs::path VCMIDirsWIN32::clientPath() const { return binaryPath() / "VCMI_client.exe"; }
+bfs::path VCMIDirsWIN32::mapEditorPath() const { return binaryPath() / "VCMI_editor.exe"; }
 bfs::path VCMIDirsWIN32::serverPath() const { return binaryPath() / "VCMI_server.exe"; }
 
 bfs::path VCMIDirsWIN32::libraryPath() const { return "."; }
@@ -359,6 +361,7 @@ class IVCMIDirsUNIX : public IVCMIDirs
 {
 	public:
 		bfs::path clientPath() const override;
+		bfs::path mapEditorPath() const override;
 		bfs::path serverPath() const override;
 
 		virtual bool developmentMode() const;
@@ -371,6 +374,7 @@ bool IVCMIDirsUNIX::developmentMode() const
 }
 
 bfs::path IVCMIDirsUNIX::clientPath() const { return binaryPath() / "vcmiclient"; }
+bfs::path IVCMIDirsUNIX::mapEditorPath() const { return binaryPath() / "vcmieditor"; }
 bfs::path IVCMIDirsUNIX::serverPath() const { return binaryPath() / "vcmiserver"; }
 
 #ifdef VCMI_APPLE

+ 5 - 2
lib/VCMIDirs.h

@@ -35,10 +35,13 @@ public:
 	// Paths to global system-wide data directories. First items have higher priority
 	virtual std::vector<boost::filesystem::path> dataPaths() const = 0;
 
-	// Full path to client executable, including server name (e.g. /usr/bin/vcmiclient)
+	// Full path to client executable, including name (e.g. /usr/bin/vcmiclient)
 	virtual boost::filesystem::path clientPath() const = 0;
 
-	// Full path to server executable, including server name (e.g. /usr/bin/vcmiserver)
+	// Full path to editor executable, including name (e.g. /usr/bin/vcmieditor)
+	virtual boost::filesystem::path mapEditorPath() const = 0;
+
+	// Full path to server executable, including name (e.g. /usr/bin/vcmiserver)
 	virtual boost::filesystem::path serverPath() const = 0;
 
 	// Path where vcmi libraries can be found (in AI and Scripting subdirectories)

+ 7 - 4
mapeditor/CMakeLists.txt

@@ -93,12 +93,14 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
 if(TARGET Qt6::Core)
 	qt_wrap_ui(editor_UI_HEADERS ${editor_FORMS})
 	if(ENABLE_TRANSLATIONS)
+		set_source_files_properties(${editor_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
+		# TODO: consider using qt_add_translations: https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-translations.html
 		qt_add_translation( editor_QM ${editor_TS} )
 	endif()
 else()
 	qt5_wrap_ui(editor_UI_HEADERS ${editor_FORMS})
 	if(ENABLE_TRANSLATIONS)
-		set_source_files_properties(${editor_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/translation)
+		set_source_files_properties(${editor_TS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translation)
 		qt5_add_translation( editor_QM ${editor_TS} )
 	endif()
 endif()
@@ -139,14 +141,15 @@ enable_pch(vcmieditor)
 
 # Copy to build directory for easier debugging
 add_custom_command(TARGET vcmieditor POST_BUILD
-	COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/icons
-	COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/mapeditor/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/icons
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/
+	COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/mapeditor/icons ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/icons
+	COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_BINARY_DIR}/translation ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/mapeditor/translation
 )
 
 install(TARGETS vcmieditor DESTINATION ${BIN_DIR})
 # copy whole directory
 install(DIRECTORY icons DESTINATION ${DATA_DIR}/mapeditor)
-install(DIRECTORY translation DESTINATION ${DATA_DIR}/mapeditor)
+install(FILES ${editor_QM} DESTINATION ${DATA_DIR}/mapeditor/translation)
 # Install icons and desktop file on Linux
 if(NOT WIN32 AND NOT APPLE)
 	install(FILES "vcmieditor.desktop" DESTINATION share/applications)