浏览代码

Initial test version of selectable translations for launcher.

Ivan Savenko 2 年之前
父节点
当前提交
9e4cef015d

+ 5 - 1
launcher/CMakeLists.txt

@@ -87,6 +87,10 @@ else()
 	qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
 endif()
 
+find_package(Qt5LinguistTools)
+set(launcher_TS translation/launcher_pl.ts translation/launcher_ru.ts translation/launcher_uk.ts)
+qt5_add_translation( QM_FILES ${launcher_TS} )
+
 if(WIN32)
 	set(launcher_ICON VCMI_launcher.rc)
 endif()
@@ -94,7 +98,7 @@ endif()
 if(BUILD_SINGLE_APP)
 	add_library(vcmilauncher STATIC ${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 ${QM_FILES} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON})
 endif()
 
 if(WIN32)

+ 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="5">
@@ -52,7 +52,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>

+ 10 - 7
launcher/lobby/lobbyroomrequest_moc.ui

@@ -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>

+ 5 - 0
launcher/main.cpp

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

+ 17 - 32
launcher/mainwindow_moc.cpp

@@ -68,41 +68,13 @@ MainWindow::MainWindow(QWidget * parent)
 		move(position);
 	}
 
-	//set default margins
-
-	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);
 }
@@ -122,12 +94,25 @@ void MainWindow::on_startGameButton_clicked()
 	startGame({});
 }
 
-void MainWindow::on_tabSelectList_currentRowChanged(int currentRow)
+const CModList & MainWindow::getModList() const
 {
-	ui->startGameButton->setEnabled(currentRow != TabRows::LOBBY);
+	return ui->modlistView->getModList();
 }
 
-const CModList & MainWindow::getModList() const
+void MainWindow::on_modslistButton_clicked()
 {
-	return ui->modlistView->getModList();
+	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);
 }

+ 3 - 1
launcher/mainwindow_moc.h

@@ -46,5 +46,7 @@ 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();
 };

+ 152 - 79
launcher/mainwindow_moc.ui

@@ -31,107 +31,159 @@
   </property>
   <widget class="QWidget" name="centralWidget">
    <layout class="QGridLayout" name="gridLayout">
-    <item row="0" column="0">
-     <widget class="QListWidget" name="tabSelectList">
+    <item row="1" column="0">
+     <widget class="QToolButton" name="settingsButton">
       <property name="sizePolicy">
-       <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
-        <horstretch>89</horstretch>
+       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
+        <horstretch>1</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="minimumSize">
        <size>
-        <width>89</width>
-        <height>89</height>
+        <width>0</width>
+        <height>0</height>
        </size>
       </property>
-      <property name="verticalScrollBarPolicy">
-       <enum>Qt::ScrollBarAlwaysOff</enum>
+      <property name="text">
+       <string>Settings</string>
       </property>
-      <property name="horizontalScrollBarPolicy">
-       <enum>Qt::ScrollBarAlwaysOff</enum>
+      <property name="icon">
+       <iconset>
+        <normaloff>icons:menu-settings.png</normaloff>icons:menu-settings.png</iconset>
       </property>
-      <property name="sizeAdjustPolicy">
-       <enum>QAbstractScrollArea::AdjustToContents</enum>
+      <property name="iconSize">
+       <size>
+        <width>60</width>
+        <height>60</height>
+       </size>
       </property>
-      <property name="editTriggers">
-       <set>QAbstractItemView::NoEditTriggers</set>
+      <property name="checkable">
+       <bool>true</bool>
       </property>
-      <property name="showDropIndicator" stdset="0">
+      <property name="checked">
        <bool>false</bool>
       </property>
-      <property name="dragDropMode">
-       <enum>QAbstractItemView::NoDragDrop</enum>
+      <property name="autoExclusive">
+       <bool>true</bool>
       </property>
-      <property name="selectionBehavior">
-       <enum>QAbstractItemView::SelectItems</enum>
+      <property name="toolButtonStyle">
+       <enum>Qt::ToolButtonTextUnderIcon</enum>
       </property>
-      <property name="iconSize">
+      <property name="autoRaise">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="0">
+     <spacer name="verticalSpacer">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
+      </property>
+      <property name="sizeHint" stdset="0">
        <size>
-        <width>89</width>
-        <height>89</height>
+        <width>80</width>
+        <height>0</height>
        </size>
       </property>
-      <property name="movement">
-       <enum>QListView::Static</enum>
+     </spacer>
+    </item>
+    <item row="2" column="0">
+     <widget class="QToolButton" name="lobbyButton">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
+        <horstretch>1</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
       </property>
-      <property name="flow">
-       <enum>QListView::TopToBottom</enum>
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>0</height>
+       </size>
       </property>
-      <property name="isWrapping" stdset="0">
-       <bool>false</bool>
+      <property name="text">
+       <string>Lobby</string>
       </property>
-      <property name="resizeMode">
-       <enum>QListView::Adjust</enum>
+      <property name="icon">
+       <iconset>
+        <normaloff>icons:menu-lobby.png</normaloff>icons:menu-lobby.png</iconset>
       </property>
-      <property name="gridSize">
+      <property name="iconSize">
        <size>
-        <width>100</width>
-        <height>100</height>
+        <width>60</width>
+        <height>60</height>
        </size>
       </property>
-      <property name="viewMode">
-       <enum>QListView::IconMode</enum>
+      <property name="checkable">
+       <bool>true</bool>
+      </property>
+      <property name="checked">
+       <bool>false</bool>
       </property>
-      <property name="uniformItemSizes">
+      <property name="autoExclusive">
        <bool>true</bool>
       </property>
-      <property name="wordWrap">
+      <property name="toolButtonStyle">
+       <enum>Qt::ToolButtonTextUnderIcon</enum>
+      </property>
+      <property name="autoRaise">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="0">
+     <widget class="QToolButton" name="startGameButton">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
+        <horstretch>1</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="font">
+       <font>
+        <weight>75</weight>
+        <bold>true</bold>
+       </font>
+      </property>
+      <property name="text">
+       <string/>
+      </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>
+      <property name="autoRaise">
        <bool>false</bool>
       </property>
-      <item>
-       <property name="text">
-        <string>Mods</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>icons:menu-mods.png</normaloff>icons:menu-mods.png</iconset>
-       </property>
-      </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>
-      </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>
-      </item>
      </widget>
     </item>
-    <item row="2" column="0">
+    <item row="5" column="0">
      <widget class="QLabel" name="startGameTitle">
       <property name="font">
        <font>
+        <weight>75</weight>
         <bold>true</bold>
        </font>
       </property>
@@ -143,14 +195,14 @@
       </property>
      </widget>
     </item>
-    <item row="0" column="1" rowspan="3">
+    <item row="0" column="2" rowspan="6">
      <widget class="QStackedWidget" name="tabListWidget">
       <property name="enabled">
        <bool>true</bool>
       </property>
       <property name="sizePolicy">
        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-        <horstretch>0</horstretch>
+        <horstretch>10</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
@@ -162,26 +214,26 @@
       <widget class="Lobby" name="lobbyView"/>
      </widget>
     </item>
-    <item row="1" column="0">
-     <widget class="QToolButton" name="startGameButton">
+    <item row="0" column="0">
+     <widget class="QToolButton" name="modslistButton">
       <property name="sizePolicy">
-       <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
-        <horstretch>89</horstretch>
+       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
+        <horstretch>1</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="minimumSize">
        <size>
-        <width>89</width>
-        <height>89</height>
+        <width>0</width>
+        <height>0</height>
        </size>
       </property>
       <property name="text">
-       <string>Play</string>
+       <string>Mods</string>
       </property>
       <property name="icon">
        <iconset>
-        <normaloff>icons:menu-game.png</normaloff>icons:menu-game.png</iconset>
+        <normaloff>icons:menu-mods.png</normaloff>icons:menu-mods.png</iconset>
       </property>
       <property name="iconSize">
        <size>
@@ -190,13 +242,35 @@
        </size>
       </property>
       <property name="checkable">
-       <bool>false</bool>
+       <bool>true</bool>
       </property>
       <property name="checked">
-       <bool>false</bool>
+       <bool>true</bool>
+      </property>
+      <property name="autoExclusive">
+       <bool>true</bool>
       </property>
       <property name="toolButtonStyle">
-       <enum>Qt::ToolButtonIconOnly</enum>
+       <enum>Qt::ToolButtonTextUnderIcon</enum>
+      </property>
+      <property name="autoRaise">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="1" rowspan="6">
+     <widget class="Line" name="line">
+      <property name="frameShadow">
+       <enum>QFrame::Plain</enum>
+      </property>
+      <property name="lineWidth">
+       <number>1</number>
+      </property>
+      <property name="midLineWidth">
+       <number>0</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
       </property>
      </widget>
     </item>
@@ -225,7 +299,6 @@
   </customwidget>
  </customwidgets>
  <tabstops>
-  <tabstop>tabSelectList</tabstop>
   <tabstop>startGameButton</tabstop>
  </tabstops>
  <resources/>

+ 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>

+ 6 - 12
launcher/settingsView/csettingsview_moc.cpp

@@ -72,12 +72,10 @@ 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());
+	//ui->checkBoxFullScreen->setChecked(settings["video"]["realFullscreen"].Bool());
 #endif
 
 	ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
@@ -192,14 +190,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;
+	nodeFullscreen->Bool() = index == 2;
 }
 
 void CSettingsView::on_comboBoxAutoCheck_currentIndexChanged(int index)

+ 0 - 2
launcher/settingsView/csettingsview_moc.h

@@ -32,8 +32,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);

+ 313 - 302
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,67 @@
    <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="1" column="8">
+    <widget class="QPushButton" name="changeGameDataDir">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
      <property name="text">
-      <string>AI on the map</string>
+      <string>Change</string>
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="4">
-    <widget class="QLabel" name="labelVideo">
-     <property name="font">
-      <font>
-       <bold>true</bold>
-      </font>
-     </property>
+   <item row="3" column="9">
+    <widget class="QPushButton" name="openTempDir">
      <property name="text">
-      <string>Video</string>
+      <string>Open</string>
      </property>
     </widget>
    </item>
-   <item row="3" column="1">
-    <widget class="QLabel" name="labelShowIntro">
+   <item row="2" column="6">
+    <widget class="QLabel" name="labelUserDataDir">
      <property name="text">
-      <string>Show intro</string>
+      <string>User data directory</string>
      </property>
     </widget>
    </item>
-   <item row="9" column="7" colspan="3">
-    <widget class="QSpinBox" name="spinBoxNetworkPort">
-     <property name="minimum">
-      <number>1024</number>
+   <item row="10" column="5">
+    <spacer name="spacerColumns">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
      </property>
-     <property name="maximum">
-      <number>65535</number>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
      </property>
-     <property name="value">
-      <number>3030</number>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>8</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="10" column="7">
+    <widget class="QComboBox" name="comboBoxAutoSave">
+     <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="9">
+    <widget class="QPushButton" name="openGameDataDir">
+     <property name="text">
+      <string>Open</string>
      </property>
     </widget>
    </item>
@@ -79,54 +99,74 @@
       </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="2" column="1">
+    <widget class="QLabel" name="labelFullScreen">
      <property name="text">
-      <string>Heroes III character set</string>
+      <string>Fullscreen</string>
      </property>
     </widget>
    </item>
-   <item row="5" column="1">
-    <widget class="QCheckBox" name="checkBoxFullScreen">
-     <property name="text">
-      <string>Real fullscreen mode</string>
+   <item row="10" 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="1" column="1">
-    <widget class="QLabel" name="labelResolution">
-     <property name="text">
-      <string>Resolution</string>
+   <item row="8" 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>
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
-    <widget class="QLabel" name="labelFullScreen">
+   <item row="17" column="1" colspan="4">
+    <widget class="QLabel" name="labelRepositories">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
      <property name="text">
-      <string>Fullscreen</string>
+      <string>Repositories</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="1" column="4">
+    <widget class="QComboBox" name="comboBoxResolution"/>
+   </item>
+   <item row="16" column="7">
+    <widget class="QPushButton" name="updatesButton">
      <property name="text">
-      <string>/home/user/.vcmi</string>
+      <string>Check for updates</string>
      </property>
-     <property name="readOnly">
-      <bool>true</bool>
+    </widget>
+   </item>
+   <item row="10" column="1">
+    <widget class="QLabel" name="labelNeutralAI">
+     <property name="text">
+      <string>Neutral AI</string>
      </property>
     </widget>
    </item>
@@ -145,12 +185,25 @@
        <string>On</string>
       </property>
      </item>
+     <item>
+      <property name="text">
+       <string>Real</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="2" column="9">
+    <widget class="QPushButton" name="openUserDataDir">
+     <property name="text">
+      <string>Open</string>
+     </property>
     </widget>
    </item>
-   <item row="8" column="6" colspan="4">
+   <item row="7" column="6" colspan="4">
     <widget class="QLabel" name="labelGeneral">
      <property name="font">
       <font>
+       <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
@@ -159,194 +212,101 @@
      </property>
     </widget>
    </item>
-   <item row="20" column="1" colspan="9">
-    <widget class="QPlainTextEdit" name="plainTextEditRepos">
-     <property name="lineWrapMode">
-      <enum>QPlainTextEdit::NoWrap</enum>
+   <item row="2" column="7" colspan="2">
+    <widget class="QLineEdit" name="lineEditUserDataDir">
+     <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">
+   <item row="8" column="1">
     <widget class="QLabel" name="labelPlayerAI">
      <property name="text">
       <string>Player AI</string>
      </property>
     </widget>
    </item>
-   <item row="18" column="1" colspan="4">
-    <widget class="QLabel" name="labelRepositories">
-     <property name="font">
-      <font>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>Repositories</string>
-     </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">
-     <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>
-     </property>
+   <item row="9" column="7" colspan="3">
+    <widget class="QComboBox" name="comboBoxEncoding">
      <item>
       <property name="text">
-       <string>Off</string>
+       <string>Central European (Windows 1250)</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>On</string>
+       <string>Cyrillic script (Windows 1251)</string>
       </property>
      </item>
-    </widget>
-   </item>
-   <item row="11" column="4">
-    <widget class="QComboBox" name="comboBoxNeutralAI">
      <item>
       <property name="text">
-       <string>BattleAI</string>
+       <string>Western European (Windows 1252)</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>StupidAI</string>
+       <string>Simplified Chinese (GBK)</string>
       </property>
      </item>
-    </widget>
-   </item>
-   <item row="13" column="4">
-    <widget class="QComboBox" name="comboBoxFriendlyAI">
-     <property name="editable">
-      <bool>false</bool>
-     </property>
-     <property name="currentText">
-      <string>BattleAI</string>
-     </property>
      <item>
       <property name="text">
-       <string>BattleAI</string>
+       <string>Simplified Chinese (GB2312)</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>StupidAI</string>
+       <string>Korean (Windows 949)</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">
+   <item row="12" column="1">
+    <widget class="QLabel" name="labelFriendlyAI">
+     <property name="minimumSize">
       <size>
-       <width>8</width>
-       <height>20</height>
+       <width>0</width>
+       <height>22</height>
       </size>
      </property>
-    </spacer>
+     <property name="text">
+      <string>Friendly AI</string>
+     </property>
+    </widget>
    </item>
-   <item row="3" column="9">
-    <widget class="QPushButton" name="openTempDir">
+   <item row="1" column="1">
+    <widget class="QLabel" name="labelResolution">
      <property name="text">
-      <string>Open</string>
+      <string>Resolution</string>
      </property>
     </widget>
    </item>
-   <item row="16" column="1" colspan="4">
-    <widget class="QLabel" name="LauncherSettings">
+   <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>Launcher Settings</string>
+      <string>AI on the map</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="6">
-    <widget class="QLabel" name="labelGameDir">
-     <property name="text">
-      <string>Extra data directory</string>
-     </property>
-    </widget>
-   </item>
-   <item row="14" column="1">
-    <widget class="QLabel" name="labelEnemyAI">
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>22</height>
-      </size>
-     </property>
-     <property name="text">
-      <string>Enemy AI</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="8">
-    <widget class="QPushButton" name="changeGameDataDir">
-     <property name="enabled">
-      <bool>false</bool>
-     </property>
-     <property name="text">
-      <string>Change</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">
-     <property name="text">
-      <string>Neutral AI</string>
-     </property>
-    </widget>
-   </item>
-   <item row="4" column="4">
-    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
-   </item>
-   <item row="7" column="1" colspan="4">
-    <spacer name="spacerSections">
+   <item row="14" column="1" colspan="4">
+    <spacer name="spacerRepos">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
@@ -355,12 +315,29 @@
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>56</width>
+       <width>20</width>
        <height>8</height>
       </size>
      </property>
     </spacer>
    </item>
+   <item row="4" column="4">
+    <widget class="QComboBox" name="comboBoxDisplayIndex"/>
+   </item>
+   <item row="10" column="6">
+    <widget class="QLabel" name="labelAutoSave">
+     <property name="text">
+      <string>Autosave</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="QLabel" name="labelDisplayIndex">
+     <property name="text">
+      <string>Display index</string>
+     </property>
+    </widget>
+   </item>
    <item row="3" column="7" colspan="2">
     <widget class="QLineEdit" name="lineEditTempDir">
      <property name="enabled">
@@ -373,117 +350,141 @@
       </size>
      </property>
      <property name="text">
-      <string>/home/user/.vcmi</string>
+      <string notr="true">/home/user/.vcmi</string>
      </property>
      <property name="readOnly">
       <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="17" column="6">
-    <widget class="QComboBox" name="comboBoxAutoCheck">
-     <property name="currentIndex">
-      <number>1</number>
+   <item row="16" column="1" colspan="4">
+    <widget class="QLabel" name="labelAutoCheck">
+     <property name="text">
+      <string>Check repositories on startup</string>
      </property>
-     <item>
-      <property name="text">
-       <string>Off</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>On</string>
-      </property>
-     </item>
     </widget>
    </item>
-   <item row="11" column="7">
-    <widget class="QComboBox" name="comboBoxAutoSave">
-     <property name="currentIndex">
-      <number>1</number>
+   <item row="8" column="6">
+    <widget class="QLabel" name="labelNetworkPort">
+     <property name="text">
+      <string>Network port</string>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="4">
+    <widget class="QComboBox" name="comboBoxPlayerAI">
+     <property name="currentText">
+      <string notr="true">VCAI</string>
      </property>
      <item>
       <property name="text">
-       <string>Off</string>
+       <string notr="true">VCAI</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>On</string>
+       <string notr="true">Nullkiller</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="14" column="4">
+   <item row="13" column="4">
     <widget class="QComboBox" name="comboBoxEnemyAI">
      <property name="editable">
       <bool>false</bool>
      </property>
      <property name="currentText">
-      <string>BattleAI</string>
+      <string notr="true">BattleAI</string>
      </property>
      <item>
       <property name="text">
-       <string>BattleAI</string>
+       <string notr="true">BattleAI</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>StupidAI</string>
+       <string notr="true">StupidAI</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="15" column="1" colspan="4">
-    <spacer name="spacerRepos">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
+   <item row="0" column="6" colspan="4">
+    <widget class="QLabel" name="labelDataDirs">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
      </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>8</height>
-      </size>
+     <property name="text">
+      <string>Data Directories</string>
      </property>
-    </spacer>
+    </widget>
    </item>
-   <item row="10" column="1">
-    <widget class="QLabel" name="labelAIInTheBattlefield">
+   <item row="0" column="1" colspan="4">
+    <widget class="QLabel" name="labelVideo">
      <property name="font">
       <font>
-       <italic>true</italic>
+       <weight>75</weight>
        <bold>true</bold>
-       <underline>false</underline>
       </font>
      </property>
      <property name="text">
-      <string>AI in the battlefield</string>
+      <string>Video</string>
      </property>
     </widget>
    </item>
-   <item row="17" column="1" colspan="4">
-    <widget class="QLabel" name="labelAutoCheck">
+   <item row="9" column="6">
+    <widget class="QLabel" name="labelEncoding">
      <property name="text">
-      <string>Check repositories on startup</string>
+      <string>Heroes III character set</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>
+   <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="1" column="6">
+    <widget class="QLabel" name="labelGameDir">
      <property name="text">
-      <string>Friendly AI</string>
+      <string>Extra data directory</string>
      </property>
     </widget>
    </item>
+   <item row="16" 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="3" column="6">
     <widget class="QLabel" name="labelTempDir">
      <property name="text">
@@ -491,98 +492,108 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="6" colspan="4">
-    <widget class="QLabel" name="labelDataDirs">
+   <item row="19" column="1" colspan="9">
+    <widget class="QPlainTextEdit" name="plainTextEditRepos">
+     <property name="lineWrapMode">
+      <enum>QPlainTextEdit::NoWrap</enum>
+     </property>
+     <property name="plainText">
+      <string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="QLabel" name="labelShowIntro">
+     <property name="text">
+      <string>Show intro</string>
+     </property>
+    </widget>
+   </item>
+   <item row="15" column="1" colspan="4">
+    <widget class="QLabel" name="LauncherSettings">
      <property name="font">
       <font>
+       <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
      <property name="text">
-      <string>Data Directories</string>
+      <string>Launcher Settings</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="6">
-    <widget class="QLabel" name="labelUserDataDir">
+   <item row="12" column="6">
+    <widget class="QLabel" name="labelBuildVersionDesc">
      <property name="text">
-      <string>User data directory</string>
+      <string>Build version</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="9">
-    <widget class="QPushButton" name="openUserDataDir">
-     <property name="text">
-      <string>Open</string>
+   <item row="6" column="1" colspan="4">
+    <spacer name="spacerSections">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
      </property>
-    </widget>
+     <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="9" column="6">
-    <widget class="QLabel" name="labelNetworkPort">
+   <item row="13" column="1">
+    <widget class="QLabel" name="labelEnemyAI">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>22</height>
+      </size>
+     </property>
      <property name="text">
-      <string>Network port</string>
+      <string>Enemy AI</string>
      </property>
     </widget>
    </item>
-   <item row="10" column="7" colspan="3">
-    <widget class="QComboBox" name="comboBoxEncoding">
-     <item>
-      <property name="text">
-       <string>Central European (Windows 1250)</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Cyrillic script (Windows 1251)</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Western European (Windows 1252)</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Simplified Chinese (GBK)</string>
-      </property>
-     </item>
+   <item row="3" column="4">
+    <widget class="QComboBox" name="comboBoxShowIntro">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
      <item>
       <property name="text">
-       <string>Simplified Chinese (GB2312)</string>
+       <string>Off</string>
       </property>
      </item>
      <item>
       <property name="text">
-       <string>Korean (Windows 949)</string>
+       <string>On</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="11" column="6">
-    <widget class="QLabel" name="labelAutoSave">
-     <property name="text">
-      <string>Autosave</string>
-     </property>
-    </widget>
-   </item>
-   <item row="17" column="7">
-    <widget class="QPushButton" name="updatesButton">
+   <item row="12" column="7" colspan="3">
+    <widget class="QLabel" name="labelBuildVersion">
      <property name="text">
-      <string>Check for updates</string>
+      <string notr="true"/>
      </property>
     </widget>
    </item>
-   <item row="13" column="6">
-    <widget class="QLabel" name="labelBuildVersionDesc">
-     <property name="text">
-      <string>Build version</string>
+   <item row="9" column="1" colspan="4">
+    <widget class="QLabel" name="labelAIInTheBattlefield">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <italic>true</italic>
+       <bold>true</bold>
+       <underline>false</underline>
+      </font>
      </property>
-    </widget>
-   </item>
-   <item row="13" column="7" colspan="3">
-    <widget class="QLabel" name="labelBuildVersion">
      <property name="text">
-      <string notr="true"/>
+      <string>AI in the battlefield</string>
      </property>
     </widget>
    </item>

+ 536 - 0
launcher/translation/launcher_uk.ts

@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="uk_UA">
+<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="278"/>
+        <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="236"/>
+        <source>Mod name</source>
+        <translation>Назва модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="237"/>
+        <source>Installed version</source>
+        <translation>Встановлена версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="238"/>
+        <source>Latest version</source>
+        <translation>Найновіша версія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="241"/>
+        <source>Download size</source>
+        <translation>Розмір для завантаження</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="242"/>
+        <source>Authors</source>
+        <translation>Автори</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="245"/>
+        <source>License</source>
+        <translation>Ліцензія</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="248"/>
+        <source>Home</source>
+        <translation>Домашня сторінка</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="252"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="259"/>
+        <source>Compatibility</source>
+        <translation>Сумісність</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="261"/>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="269"/>
+        <source>Required VCMI version</source>
+        <translation>Необхідна версія VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="267"/>
+        <source>Supported VCMI version</source>
+        <translation>Підтримувана версія VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="272"/>
+        <source>Supported VCMI versions</source>
+        <translation>Підтримувані версії VCMI</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="276"/>
+        <source>Required mods</source>
+        <translation>Необхідні модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="277"/>
+        <source>Conflicting mods</source>
+        <translation>Конфліктуючі модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="282"/>
+        <source>This mod can not be installed or enabled because following dependencies are not present</source>
+        <translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="283"/>
+        <source>This mod can not be enabled because following mods are incompatible with this mod</source>
+        <translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
+        <source>This mod can not be disabled because it is required to run following mods</source>
+        <translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
+        <source>This mod can not be uninstalled or updated because it is required to run following mods</source>
+        <translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
+        <source>This is submod and it can not be installed or uninstalled separately from parent mod</source>
+        <translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
+        <source>Notes</source>
+        <translation>Примітки</translation>
+    </message>
+    <message>
+        <location filename="../modManager/cmodlistview_moc.cpp" line="818"/>
+        <source>Screenshot %1</source>
+        <translation>Знімок екрану %1</translation>
+    </message>
+</context>
+<context>
+    <name>CSettingsView</name>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="35"/>
+        <source>Change</source>
+        <translation>Змінити</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="42"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="89"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="213"/>
+        <source>Open</source>
+        <translation>Відкрити</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="49"/>
+        <source>User data directory</source>
+        <translation>Тека даних користувача</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="76"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="195"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="493"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="583"/>
+        <source>Off</source>
+        <translation>Вимкнено</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="81"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="200"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="498"/>
+        <location filename="../settingsView/csettingsview_moc.ui" line="588"/>
+        <source>On</source>
+        <translation>Увімкнено</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="109"/>
+        <source>Fullscreen</source>
+        <translation>Повноекранний режим</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="141"/>
+        <source>AI in the battlefield</source>
+        <translation>Штучний інтелект на полі бою</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="167"/>
+        <source>Repositories</source>
+        <translation>Репозиторії</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="177"/>
+        <source>Check for updates</source>
+        <translation>Оновити зараз</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="184"/>
+        <source>Neutral AI</source>
+        <translation>Нейтральний ШІ</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="205"/>
+        <source>Real</source>
+        <translation>Повний</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="226"/>
+        <source>General</source>
+        <translation>Загальні налаштування</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="252"/>
+        <source>Player AI</source>
+        <translation>ШІ гравців</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="260"/>
+        <source>Central European (Windows 1250)</source>
+        <translation>Центральноєвропейська (Windows 1250)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="265"/>
+        <source>Cyrillic script (Windows 1251)</source>
+        <translation>Кирилиця (Windows 1251)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="270"/>
+        <source>Western European (Windows 1252)</source>
+        <translation>Західноєвропейська (Windows 1252)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="275"/>
+        <source>Simplified Chinese (GBK)</source>
+        <translation>Спрощена китайська (GBK)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="280"/>
+        <source>Simplified Chinese (GB2312)</source>
+        <translation>Спрощена китайська (GB2312)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="285"/>
+        <source>Korean (Windows 949)</source>
+        <translation>Корейська (Windows 949)</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="299"/>
+        <source>Friendly AI</source>
+        <translation>Дружній ШІ</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="306"/>
+        <source>Resolution</source>
+        <translation>Роздільна здатність</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="319"/>
+        <source>AI on the map</source>
+        <translation>Штучний інтелект на карті пригод</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="345"/>
+        <source>Autosave</source>
+        <translation>Автозбереження</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="352"/>
+        <source>Display index</source>
+        <translation>Дісплей</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="378"/>
+        <source>Check repositories on startup</source>
+        <translation>Перевірка репозиторіїв при запуску</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="385"/>
+        <source>Network port</source>
+        <translation>Мережевий порт</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="435"/>
+        <source>Data Directories</source>
+        <translation>Теки даних гри</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="448"/>
+        <source>Video</source>
+        <translation>Графіка</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="455"/>
+        <source>Heroes III character set</source>
+        <translation>Кодування Heroes III</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="482"/>
+        <source>Extra data directory</source>
+        <translation>Додаткова тека даних</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="506"/>
+        <source>Log files directory</source>
+        <translation>Тека файлів журналу</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="523"/>
+        <source>Show intro</source>
+        <translation>Вступні відео</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="536"/>
+        <source>Launcher Settings</source>
+        <translation>Налаштування лаунчера</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="543"/>
+        <source>Build version</source>
+        <translation>Версія збірки</translation>
+    </message>
+    <message>
+        <location filename="../settingsView/csettingsview_moc.ui" line="572"/>
+        <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="104"/>
+        <source>Mods</source>
+        <translation>Модифікації</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="113"/>
+        <source>Settings</source>
+        <translation>Налаштування</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="122"/>
+        <source>Lobby</source>
+        <translation>Лобі</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="139"/>
+        <source>Start game</source>
+        <translation>Грати!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow_moc.ui" line="180"/>
+        <source>Play</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>