diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..37b66b5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+.vscode/
+ubinstall-gtk
+*~
+build/
+compile/
+*#
+terminal-commands/
+source/ubl-cmake.h
+vgcore*
+.BUILD.md
+.updatebuild.sh
+.install.sh
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d132dfb
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,151 @@
+#!/usr/bin/make -f
+
+#SHELL := /bin/bash
+MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH))))
+MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH))
+
+CMAKE_COMMAND = cmake
+CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source
+CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
+DEPENDS = /bin/cmake
+PREFIX ?= /usr/local
+PKGNAME = $(MAKEFILE_DIR)
+FILE_VER = source/${PKGNAME}.h
+PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX}))
+
+default_target: all
+
+.PHONY: all init depend debug prepare check build uninstall install clean help
+
+all: init build
+
+init:
+ @echo "Initialize ..."; \
+ if [ -d ".git" ]; then \
+ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
+ if [ -z "$${LATEST_TAG}" ]; then \
+ LATEST_TAG="0.0"; \
+ fi; \
+ else \
+ LATEST_TAG="Development"; \
+ fi; \
+ sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \
+ echo "-- Build path: ${CMAKE_BUILD_DIR}"
+
+depend:
+ @echo "Check depends ..."
+ @for FILE_DEPEND in $(DEPENDS); do \
+ if [ ! -f $${FILE_DEPEND} ]; then \
+ echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \
+ exit 1; \
+ fi; \
+ done; \
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \
+ echo "Check depends: OK"
+
+debug:
+ @echo "Debug ..."
+ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
+ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
+ fi; \
+ echo "Debug: OK"
+
+prepare:
+ @echo "Prepare ..."; \
+ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
+ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
+ fi; \
+ echo "Prepare: OK"
+
+check:
+ @echo "Check ..."; \
+ if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \
+ echo "Check: OK"; \
+ else \
+ echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \
+ exit 1; \
+ fi
+
+build: depend prepare
+ @echo "Build ..."; \
+ $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \
+ sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \
+ echo "Build: OK"
+
+uninstall:
+ @echo "Uninstall ..."
+ @for FILE_PO in $(wildcard *.po); do \
+ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
+ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
+ PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
+ $(RM) "$${PATH_FILE_MO}"; \
+ done
+ @for SIZE in 16x16 32x32 48x48 scalable; do \
+ $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
+ $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \
+ done
+ @for FILE_SVG in $(wildcard *.svg); do \
+ for SIZE in 16x16 32x32 48x48 scalable; do \
+ $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \
+ done; \
+ done
+ @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
+ @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
+ @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
+ @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
+ @if [ -z ${DESTDIR} ]; then \
+ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
+ update-desktop-database --quiet &>/dev/null || true; \
+ [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
+ fi
+ @echo "Uninstall: OK"
+
+install: check uninstall
+ @echo "Install ..."
+ @for FILE_PO in $(wildcard *.po); do \
+ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
+ install -dm755 "${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES"; \
+ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
+ PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
+ echo "$${FILE_PO}"; \
+ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
+ done
+ @for SIZE in 16 32 48; do \
+ install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
+ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}-gui.svg" -o "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}-gui.svg"; \
+ done
+ @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}-gui.svg"
+ @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv" "locales.csv"
+ @for FILE_ICON in $(wildcard icons/*/*.svg); do \
+ SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
+ install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \
+ done
+ @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
+ @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
+ @if [ -z ${DESTDIR} ]; then \
+ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
+ update-desktop-database --quiet &>/dev/null || true; \
+ [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \
+ fi
+ @echo "Install: OK"
+
+clean:
+ @echo "Clean ..."
+ @$(RM) -rd ${CMAKE_BUILD_DIR}
+ @if [ -d ${CMAKE_BUILD_DIR} ]; then \
+ echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
+ else \
+ echo "Clean: OK"; \
+ fi
+
+help:
+ @echo "The following are some of the valid targets for this Makefile:"; \
+ echo "... all (the default if no target is provided)"; \
+ echo "... init"; \
+ echo "... debug"; \
+ echo "... prepare"; \
+ echo "... build"; \
+ echo "... install"; \
+ echo "... uninstall"; \
+ echo "... clean"
\ No newline at end of file
diff --git a/README.md b/README.md
index 629914c..a104b78 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,39 @@
-# [ubinstall-gtk]
+# [UBInstall](https://ublinux.ru/)
+ 
+
+## Описание
+
+Установщик оерационной системы UBLinux (UBInstall) позволяет в удобно установить операционную систему.
+
+## Установка
+
+1. Скачайте репозитрий с утилитами
+ ```
+ $ git clone http://git.ublinux.ru:3000/UBGroup/ubinstall.git
+ ```
+2. Перейдите в каталог ubinstall
+ ```
+ $ cd ubinstall
+ ```
+3. Установите утилиту
+ ```
+ $ make
+ ```
+
+## Использование
+
+### Запуск
+
+Запуск утилиты возможен двумя способами:
+1. Терминал
+
+ CLI версия:
+ ```
+ $ ubinstall.cli
+ ```
+ GTK версия
+ ```
+ $ ubinstall.gtk
+ ```
+
+2. Ярлык
\ No newline at end of file
diff --git a/com.ublinux.ubinstall-gtk-gui.svg b/com.ublinux.ubinstall-gtk-gui.svg
new file mode 100644
index 0000000..693d905
--- /dev/null
+++ b/com.ublinux.ubinstall-gtk-gui.svg
@@ -0,0 +1,4915 @@
+
+
diff --git a/gresource.xml b/gresource.xml
new file mode 100644
index 0000000..5bc7a35
--- /dev/null
+++ b/gresource.xml
@@ -0,0 +1,32 @@
+
+
+
+ ubinstall-gtk.glade
+ ubinstall-gtk-language.glade
+ ubinstall-gtk-keyboard.glade
+
+
+ ubinstall-gtk.css
+
+
+ map-time-zone.png
+ keyboard.png
+ keyboard-ru.png
+ slide-0.png
+ slide-1.png
+ slide-2.png
+ slide-3.png
+ slide-4.png
+ slide-5.png
+ slide-6.png
+ slide-7.png
+ slide-8.png
+ slide-9.png
+ slide-10.png
+ slide-11.png
+ slide-12.png
+
+
+ modules.csv
+
+
\ No newline at end of file
diff --git a/icons/actions/com.ublinux.ubinstall-gtk.arrow-left-symbolic.svg b/icons/actions/com.ublinux.ubinstall-gtk.arrow-left-symbolic.svg
new file mode 100644
index 0000000..a70d10a
--- /dev/null
+++ b/icons/actions/com.ublinux.ubinstall-gtk.arrow-left-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/actions/com.ublinux.ubinstall-gtk.arrow-right-symbolic.svg b/icons/actions/com.ublinux.ubinstall-gtk.arrow-right-symbolic.svg
new file mode 100644
index 0000000..0bc9ec1
--- /dev/null
+++ b/icons/actions/com.ublinux.ubinstall-gtk.arrow-right-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/actions/com.ublinux.ubinstall-gtk.circle-exit-symbolic.svg b/icons/actions/com.ublinux.ubinstall-gtk.circle-exit-symbolic.svg
new file mode 100644
index 0000000..d54cf1f
--- /dev/null
+++ b/icons/actions/com.ublinux.ubinstall-gtk.circle-exit-symbolic.svg
@@ -0,0 +1,41 @@
+
+
diff --git a/images/clear_install_disk.png b/images/clear_install_disk.png
new file mode 100644
index 0000000..e5cbae3
Binary files /dev/null and b/images/clear_install_disk.png differ
diff --git a/images/in_part_install_disk.png b/images/in_part_install_disk.png
new file mode 100644
index 0000000..8454ab1
Binary files /dev/null and b/images/in_part_install_disk.png differ
diff --git a/images/keyboard-ru.png b/images/keyboard-ru.png
new file mode 100644
index 0000000..23fcd6d
Binary files /dev/null and b/images/keyboard-ru.png differ
diff --git a/images/keyboard.png b/images/keyboard.png
new file mode 100644
index 0000000..64df3da
Binary files /dev/null and b/images/keyboard.png differ
diff --git a/images/language.png b/images/language.png
new file mode 100644
index 0000000..5e28f9d
Binary files /dev/null and b/images/language.png differ
diff --git a/images/manual_install_disk.png b/images/manual_install_disk.png
new file mode 100644
index 0000000..581bd32
Binary files /dev/null and b/images/manual_install_disk.png differ
diff --git a/images/map-time-zone.png b/images/map-time-zone.png
new file mode 100644
index 0000000..ee4b906
Binary files /dev/null and b/images/map-time-zone.png differ
diff --git a/images/near_install_disk.png b/images/near_install_disk.png
new file mode 100644
index 0000000..eede4f7
Binary files /dev/null and b/images/near_install_disk.png differ
diff --git a/images/slide-0.png b/images/slide-0.png
new file mode 100644
index 0000000..5bb4687
Binary files /dev/null and b/images/slide-0.png differ
diff --git a/images/slide-1.png b/images/slide-1.png
new file mode 100644
index 0000000..146bbe9
Binary files /dev/null and b/images/slide-1.png differ
diff --git a/images/slide-10.png b/images/slide-10.png
new file mode 100644
index 0000000..8d072ca
Binary files /dev/null and b/images/slide-10.png differ
diff --git a/images/slide-11.png b/images/slide-11.png
new file mode 100644
index 0000000..baffec1
Binary files /dev/null and b/images/slide-11.png differ
diff --git a/images/slide-12.png b/images/slide-12.png
new file mode 100644
index 0000000..98cba48
Binary files /dev/null and b/images/slide-12.png differ
diff --git a/images/slide-2.png b/images/slide-2.png
new file mode 100644
index 0000000..2b714b1
Binary files /dev/null and b/images/slide-2.png differ
diff --git a/images/slide-3.png b/images/slide-3.png
new file mode 100644
index 0000000..d67a37a
Binary files /dev/null and b/images/slide-3.png differ
diff --git a/images/slide-4.png b/images/slide-4.png
new file mode 100644
index 0000000..54ad2c5
Binary files /dev/null and b/images/slide-4.png differ
diff --git a/images/slide-5.png b/images/slide-5.png
new file mode 100644
index 0000000..4789ba2
Binary files /dev/null and b/images/slide-5.png differ
diff --git a/images/slide-6.png b/images/slide-6.png
new file mode 100644
index 0000000..83e782c
Binary files /dev/null and b/images/slide-6.png differ
diff --git a/images/slide-7.png b/images/slide-7.png
new file mode 100644
index 0000000..972c77c
Binary files /dev/null and b/images/slide-7.png differ
diff --git a/images/slide-8.png b/images/slide-8.png
new file mode 100644
index 0000000..daf925e
Binary files /dev/null and b/images/slide-8.png differ
diff --git a/images/slide-9.png b/images/slide-9.png
new file mode 100644
index 0000000..fa457a3
Binary files /dev/null and b/images/slide-9.png differ
diff --git a/images/ublinux-logo.svg b/images/ublinux-logo.svg
new file mode 100644
index 0000000..823499d
--- /dev/null
+++ b/images/ublinux-logo.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/locales.csv b/locales.csv
new file mode 100644
index 0000000..543d3ee
--- /dev/null
+++ b/locales.csv
@@ -0,0 +1,129 @@
+af_ZA.UTF-8;Afrikaans, South Africa
+ar_AE.UTF-8;Arabic, United Arab Emirates
+ar_BH.UTF-8;Arabic, Bahrain
+ar_DZ.UTF-8;Arabic, Algeria
+ar_EG.UTF-8;Arabic, Egypt
+ar_IQ.UTF-8;Arabic, Iraq
+ar_JO.UTF-8;Arabic, Jordan
+ar_KW.UTF-8;Arabic, Kuwait
+ar_LY.UTF-8;Arabic, Libya
+ar_MA.UTF-8;Arabic, Morocco
+ar_OM.UTF-8;Arabic, Oman
+ar_QA.UTF-8;Arabic, Qatar
+ar_SA.UTF-8;Arabic, Saudi Arabia
+ar_TN.UTF-8;Arabic, Tunisia
+ar_YE.UTF-8;Arabic, Yemen
+as_IN.UTF-8;Assamese, India
+az_AZ.UTF-8;Azerbaijani, Azerbaijan
+be_BY.UTF-8;Belarusian, Belarus
+bg_BG.UTF-8;Bulgarian, Bulgaria
+bn_IN.UTF-8;Bengali, India
+bs_BA.UTF-8;Bosnian, Bosnia and Herzegovina
+ca_ES.UTF-8;Catalan, Spain
+cs_CZ.UTF-8;Czech, Czech Republic
+da_DK.UTF-8;Danish, Denmark
+de_AT.UTF-8;German, Austria
+de_BE.UTF-8;German, Belgium
+de_CH.UTF-8;German, Switzerland
+de_DE.UTF-8;German, Germany
+de_LI.UTF-8;German, Liechtenstein
+de_LU.UTF-8;German, Luxembourg
+el_CY.UTF-8;Greek, Cyprus
+el_GR.UTF-8;Greek, Greece
+en_AU.UTF-8;English, Australia
+en_BW.UTF-8;English, Botswana
+en_CA.UTF-8;English, Canada
+en_GB.UTF-8;English, United Kingdom
+en_HK.UTF-8;English, Hong Kong SAR China
+en_IE.UTF-8;English, Ireland
+en_IN.UTF-8;English, India
+en_MT.UTF-8;English, Malta
+en_NZ.UTF-8;English, New Zealand
+en_PH.UTF-8;English, Philippines
+en_SG.UTF-8;English, Singapore
+en_US.UTF-8;English, U.S.A.
+en_ZW.UTF-8;English, Zimbabwe
+es_AR.UTF-8;Spanish, Argentina
+es_BO.UTF-8;Spanish, Bolivia
+es_CL.UTF-8;Spanish, Chile
+es_CO.UTF-8;Spanish, Colombia
+es_CR.UTF-8;Spanish, Costa Rica
+es_DO.UTF-8;Spanish, Dominican Republic
+es_EC.UTF-8;Spanish, Ecuador
+es_ES.UTF-8;Spanish, Spain
+es_GT.UTF-8;Spanish, Guatemala
+es_HN.UTF-8;Spanish, Honduras
+es_MX.UTF-8;Spanish, Mexico
+es_NI.UTF-8;Spanish, Nicaragua
+es_PA.UTF-8;Spanish, Panama
+es_PE.UTF-8;Spanish, Peru
+es_PR.UTF-8;Spanish, Puerto Rico
+es_PY.UTF-8;Spanish, Paraguay
+es_SV.UTF-8;Spanish, El Salvador
+es_US.UTF-8;Spanish, U.S.A.
+es_UY.UTF-8;Spanish, Uruguay
+es_VE.UTF-8;Spanish, Venezuela
+et_EE.UTF-8;Estonian, Estonia
+fi_FI.UTF-8;Finnish, Finland
+fr_BE.UTF-8;French, Belgium
+fr_CA.UTF-8;French, Canada
+fr_CH.UTF-8;French, Switzerland
+fr_FR.UTF-8;French, France
+fr_LU.UTF-8;French, Luxembourg
+gu_IN.UTF-8;Gujarati, India
+he_IL.UTF-8;Hebrew, Israel
+hi_IN.UTF-8;Hindi, India
+hr_HR.UTF-8;Croatian, Croatia
+hu_HU.UTF-8;Hungarian, Hungary
+hy_AM.UTF-8;Armenian, Armenia
+id_ID.UTF-8;Indonesian, Indonesia
+is_IS.UTF-8;Icelandic, Iceland
+it_CH.UTF-8;Italian, Switzerla;nd
+it_IT.UTF-8;Italian, Italy
+ja_JP.UTF-8;Japanese, Japan
+ka_GE.UTF-8;Georgian, Georgia
+kk_KZ.UTF-8;Kazakh, Kazakhstan
+kn_IN.UTF-8;Kannada, India
+ko_KR.UTF-8;Korean, Korea
+ks_IN.UTF-8;Kashmiri, India
+ku_TR.UTF-8;Kurdish, Turkey
+ku_TR.UTF-8@sorani;Kurdish (Sorani), Turkey
+ky_KG.UTF-8;Kirghiz, Kyrgyzstan
+lt_LT.UTF-8;Lithuanian, Lithuania
+lv_LV.UTF-8;Latvian, Latvia
+mk_MK.UTF-8;Macedonian, Macedonia
+ml_IN.UTF-8;Malayalam, India
+mr_IN.UTF-8;Marathi, India
+ms_MY.UTF-8;Malay, Malaysia
+mt_MT.UTF-8;Maltese, Malta
+nb_NO.UTF-8;Bokmal, Norway
+nl_BE.UTF-8;Dutch, Belgium
+nl_NL.UTF-8;Dutch, Netherlands
+nn_NO.UTF-8;Nynorsk, Norway
+or_IN.UTF-8;Oriya, India
+pa_IN.UTF-8;Punjabi, India
+pl_PL.UTF-8;Polish, Poland
+pt_BR.UTF-8;Portuguese, Brazil
+pt_PT.UTF-8;Portuguese, Portugal
+ro_RO.UTF-8;Romanian, Romania
+ru_RU.UTF-8;Russian, Russia
+ru_UA.UTF-8;Russian, Ukraine
+sa_IN.UTF-8;Sanskrit, India
+sk_SK.UTF-8;Slovak, Slovakia
+sl_SI.UTF-8;Slovenian, Slovenia
+sq_AL.UTF-8;Albanian, Albania
+sr_ME.UTF-8;Serbian, Montenegro
+sr_ME.UTF-8@latin;Serbian, Montenegro (Latin)
+sr_RS.UTF-8;Serbian, Serbia
+sr_RS.UTF-8@latin;Serbian, Serbia (Latin)
+sv_SE.UTF-8;Swedish, Sweden
+ta_IN.UTF-8;Tamil, India
+te_IN.UTF-8;Telugu, India
+th_TH.UTF-8;Thai, Thailand
+tr_TR.UTF-8;Turkish, Turkey
+uk_UA.UTF-8;Ukrainian, Ukraine
+vi_VN.UTF-8;Vietnamese, Vietnam
+zh_CN.UTF-8;Simplified Chinese, China
+zh_HK.UTF-8;Traditional Chinese, Hong Kong SAR China
+zh_SG.UTF-8;Chinese, Singapore
+zh_TW.UTF-8;Traditional Chinese, Taiwan
\ No newline at end of file
diff --git a/modules.csv b/modules.csv
new file mode 100644
index 0000000..087c648
--- /dev/null
+++ b/modules.csv
@@ -0,0 +1,19 @@
+UBM_NAME|DESCRIPTION
+ubm-001-linux|UBLinux module the kernel and modules
+ubm-010-core|UBLinux module includes the core components
+ubm-025-xorg-gl|UBLinux module includes graphics accelerators
+ubm-036-xorg-qt6|UBLinux module includes QT6 libs
+ubm-050-xorg-gtk-app|UBLinux module includes GTK applications
+ubm-070-dm-lightdm|UBLinux module includes Lightdm display manager
+ubm-002-linux-headers|UBLinux module headers and scripts for building modules for the Meta UBlinux kernel, modules, headers and documentation
+ubm-020-xorg-base|UBLinux module includes basic components Xorg
+ubm-030-xorg-gtk|UBLinux module includes GTK libs
+ubm-040-xorg-xfce|UBLinux module includes Xfce applications
+ubm-055-xorg-qt-app|UBLinux module includes QT applications
+ubm-080-multimedia|UBLinux module includes multimedia applications
+ubm-004-linux-firmware|UBLinux module firmwares
+ubm-021-xorg-fonts|UBLinux module includes basic fonts
+ubm-035-xorg-qt5|UBLinux module includes QT5 libs
+ubm-041-xorg-plasma|UBLinux module includes KDE Plasma applications
+ubm-060-xorg-theme|UBLinux module includes GTK and icons themes
+ubm-100-ublinux|UBLinux module include system utilites
\ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
new file mode 100644
index 0000000..c7d96ac
--- /dev/null
+++ b/source/CMakeLists.txt
@@ -0,0 +1,117 @@
+cmake_minimum_required(VERSION 3.7)
+project(ubinstall-gtk)
+
+find_package(PkgConfig REQUIRED)
+
+pkg_check_modules(GTK REQUIRED gtk+-3.0)
+include_directories(${GTK_INCLUDE_DIRS})
+link_directories(${GTK_LIBRARY_DIRS})
+add_definitions(${GTK_CFLAGS_OTHER})
+
+pkg_check_modules(VTE291 REQUIRED vte-2.91)
+include_directories(${VTE291_INCLUDE_DIRS})
+link_directories(${VTE291_LIBRARY_DIRS})
+add_definitions(${VTE291_CFLAGS_OTHER})
+
+pkg_check_modules(JSON REQUIRED json-c)
+include_directories(${JSON_INCLUDE_DIRS})
+link_directories(${JSON_LIBRARY_DIRS})
+add_definitions(${JSON_CFLAGS_OTHER})
+
+find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
+
+option(WEBKIT_FOUND "No" OFF)
+if(WEBKIT_LIBRARIES_FOUND)
+ option(WEBKIT_FOUND "Yes" ON)
+ PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
+ include_directories(${WEBKIT_INCLUDE_DIRS})
+ link_directories(${WEBKIT_LIBRARY_DIRS})
+ add_definitions(${WEBKIT_CFLAGS_OTHER})
+endif()
+
+set(GRESOURCE_C resources.c)
+set(GRESOURCE_XML gresource.xml)
+
+find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
+add_custom_target(GLADE ubinstall-gtk.glade)
+
+set(DEPENDFILES
+ ../images/keyboard.png
+ ../images/keyboard-ru.png
+ ../images/map-time-zone.png
+ ../images/slide-0.png
+ ../images/slide-1.png
+ ../images/slide-2.png
+ ../images/slide-3.png
+ ../images/slide-4.png
+ ../images/slide-5.png
+ ../images/slide-6.png
+ ../images/slide-7.png
+ ../images/slide-8.png
+ ../images/slide-9.png
+ ../images/slide-10.png
+ ../images/slide-11.png
+ ../images/slide-12.png
+ ../ubinstall-gtk.glade
+ ../ubinstall-gtk-language.glade
+ ../ubinstall-gtk-keyboard.glade
+ ../gresource.xml
+ ../ubinstall-gtk.css
+ ../modules.csv
+ )
+
+file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+add_custom_command(
+ OUTPUT ${GRESOURCE_C}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND ${GLIB_COMPILE_RESOURCES}
+ ARGS
+ --generate-source
+ --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+ ${GRESOURCE_XML}
+ VERBATIM
+ MAIN_DEPENDENCY ${GRESOURCE_XML}
+ DEPENDS
+ ${GLADE}
+)
+add_custom_target(
+ dummy-resource
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+)
+
+add_definitions(-DVTE_INCLUDE)
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
+ -O2 -pipe -fno-plt -fexceptions \
+ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
+ -fstack-clash-protection -fcf-protection")
+
+set(SOURCE_FILES
+ ubinstall-gtk.c
+ ubinstall-gtk.h
+ ubl-strings.h
+ )
+
+set(LIBRARIES
+ ${GTK_LIBRARIES}
+ ${WEBKIT_LIBRARIES}
+ ${UTILS_LIBRARIES}
+ ${VTE291_LIBRARIES}
+ ${JSON_LIBRARIES}
+ pthread
+ ublsettings
+ ublsettings-gtk3
+ ublsettingsui-gtk3
+ )
+
+
+add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
+target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
+target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
+set_source_files_properties(
+ ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+ PROPERTIES GENERATED TRUE
+)
+install(TARGETS ${PROJECT_NAME} DESTINATION bin)
+add_dependencies(${PROJECT_NAME} dummy-resource)
\ No newline at end of file
diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
new file mode 100644
index 0000000..cb0a406
--- /dev/null
+++ b/source/ubinstall-gtk.c
@@ -0,0 +1,773 @@
+#include "ubinstall-gtk.h"
+
+config main_config;
+
+//functions
+
+// void yon_load_proceed(YON_CONFIG_TYPE type){
+// if (yon_config_load_register(type,,,NULL)){
+
+// }
+// }
+
+double yon_size_long_convert_automatic(unsigned long bytes, char *size);
+double yon_size_long_convert_automatic(unsigned long bytes, char *size){
+ int repeats;
+ double byte_float=bytes;
+ for (repeats=-1;byte_float>1024;repeats++){
+ byte_float=byte_float/1024;
+ }
+ if (repeats==-1) {
+ repeats=0;
+ byte_float=byte_float/1024;
+ }
+ switch(repeats){
+ case 0: (*size)='K';
+ break;
+ case 1: (*size)='M';
+ break;
+ case 2: (*size)='G';
+ break;
+ case 3: (*size)='T';
+ break;
+ }
+ return byte_float;
+}
+
+// standard functions
+
+void on_keyboard_accept();
+void on_keyboard_accept(){
+
+}
+
+ubinstall_keyboard_window *yon_ubinstall_keyboard_new(){
+ ubinstall_keyboard_window *window = malloc(sizeof(ubinstall_keyboard_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubinstall_keyboard);
+ window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->headerBar=yon_gtk_builder_get_widget(builder,"headerBar");
+ window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
+ window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
+ window->LayoutsTree=yon_gtk_builder_get_widget(builder,"LayoutsTree");
+
+ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ // g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(),NULL);
+
+return window;
+}
+
+void on_keyboard_clicked (GtkWidget *, main_window *widgets);
+void on_keyboard_clicked (GtkWidget *, main_window *widgets){
+ ubinstall_keyboard_window *window = yon_ubinstall_keyboard_new();
+ yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->MainWindow),KEYBOARD_TITLE_LABEL,icon_path,"keyboard-window");
+ dictionary *dict = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(window->LayoutsTree),GTK_TREE_MODEL(widgets->LayoutList));
+
+ g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_keyboard_accept),dict);
+ gtk_widget_show(window->MainWindow);
+}
+
+void yon_language_selection_changed(GtkCellRenderer *, char *path, ubinstall_language_window *window);
+void yon_language_selection_changed(GtkCellRenderer *, char *path, ubinstall_language_window *window){
+ GtkTreeIter iter;
+ int state;
+
+ if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->liststore1),&iter,path)){
+ gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&state,-1);
+ gtk_list_store_set(window->liststore1,&iter,0,!state,-1);
+ }
+}
+
+void on_language_window_accept(GtkWidget *,dictionary *dict);
+void on_language_window_accept(GtkWidget *,dictionary *dict){
+ main_window *widgets= yon_dictionary_get_data(dict->first,main_window*);
+ ubinstall_language_window *window = yon_dictionary_get_data(dict->first->next,ubinstall_language_window*);
+ yon_gtk_list_store_copy_full(widgets->LanguagesList,window->liststore1);
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
+ config_str parsed = NULL;
+ int size;
+ GtkTreeIter iter;
+ for_iter(GTK_TREE_MODEL(window->liststore1),&iter){
+ char *current;
+ int status;
+ gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,¤t,-1);
+ if (status)
+ yon_char_parsed_add_or_create_if_exists(parsed,&size,current);
+ }
+ gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),yon_char_parsed_to_string(parsed,size,", "));
+ on_subwindow_close(window->MainWindow);
+ free(window);
+}
+
+ubinstall_language_window *yon_ubinstall_language_new(){
+ ubinstall_language_window *window = malloc(sizeof(ubinstall_language_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubinstall_language);
+ window->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
+ window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck");
+ window->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree");
+ window->headerBar=yon_gtk_builder_get_widget(builder,"headerBar");
+ window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
+ window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
+ window->ToggleRenderer=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleRenderer"));
+
+ g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->LanguagesTree);
+ g_signal_connect(G_OBJECT(window->ToggleRenderer),"toggled",G_CALLBACK(yon_language_selection_changed),window);
+ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+return window;
+}
+
+void on_language_clicked(GtkWidget *, main_window *widgets);
+void on_language_clicked(GtkWidget *, main_window *widgets){
+ ubinstall_language_window *window = yon_ubinstall_language_new();
+ g_object_ref(G_OBJECT(window->liststore1));
+ gtk_tree_view_set_model(GTK_TREE_VIEW(window->LanguagesTree),NULL);
+ yon_gtk_list_store_copy_full(window->liststore1,widgets->LanguagesList);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(window->LanguagesTree),GTK_TREE_MODEL(window->liststore1));
+ yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->MainWindow),TITLE_LABEL,icon_path,"language-chooser-window");
+
+ dictionary *dict=NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_language_window_accept),dict);
+ gtk_widget_show(window->MainWindow);
+}
+
+/**config_init()
+ * [EN]
+ *
+ * [RU]
+ * Функция инициализации всех параметров конфигурации
+*/
+void config_init(){
+ main_config.always_open_documentation=0;
+ main_config.socket_id=-1;
+ main_config.save_socket_id=-1;
+ main_config.load_socket_id=-1;
+ main_config.lock_help=0;
+ main_config.lock_help=0;
+ main_config.lock_load_global=0;
+ main_config.lock_save_global=0;
+ main_config.lock_save_local=0;
+ main_config.debug_mode=0;
+ main_config.slider_thread=0;
+}
+
+int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled);
+int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled){
+
+ int width = gtk_widget_get_allocated_width(gtk_widget_get_parent(gtk_widget_get_parent(GTK_WIDGET(target))));
+ int height = gtk_widget_get_allocated_height(gtk_widget_get_parent(gtk_widget_get_parent(GTK_WIDGET(target))));
+ int newImgWidthDef = (width <= 217) ? width : width - 217;
+ int newImgHeightDef = (height <= 120) ? height : height - 217;
+ GdkPixbuf *pixBuf = pixbuf_unscaled;
+ int newImgHeight = (int)(gdk_pixbuf_get_height(pixBuf) / ((double) gdk_pixbuf_get_width(pixBuf) / newImgWidthDef));
+ if (newImgHeight > newImgHeightDef) {
+ newImgHeight = newImgHeightDef;
+ newImgWidthDef = newImgWidthDef;
+ }
+ int newImageWidth = (int)(gdk_pixbuf_get_width(pixBuf) / ((double) gdk_pixbuf_get_height(pixBuf) / newImgHeight));
+ GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixBuf, abs(newImageWidth), abs(newImgHeight), GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(target, scaledPixBuf);
+
+ return 1;
+}
+
+void on_region_resized(GtkWidget *,main_window *widgets);
+void on_region_resized(GtkWidget *,main_window *widgets){
+ int page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
+ switch(page){
+ case YON_PAGE_INSTALLATION: {
+ yon_image_resize_from_container(GTK_IMAGE(widgets->SlidesImage), widgets->slides_original);
+ } break;
+ case YON_PAGE_REGION: {
+ yon_image_resize_from_container(GTK_IMAGE(widgets->RegionImage), widgets->regions_original);
+
+ } break;
+ case YON_PAGE_KEYBOARD: {
+ yon_image_resize_from_container(GTK_IMAGE(widgets->KeyboardImage), widgets->keyboard_original);
+ } break;
+ }
+}
+
+void on_toggle_block(GtkToggleButton *self);
+void on_toggle_block(GtkToggleButton *self){
+ int state = gtk_toggle_button_get_active(self);
+ g_signal_handlers_block_by_func(G_OBJECT(self),on_toggle_block,NULL);
+ gtk_toggle_button_set_active(self,!state);
+ g_signal_handlers_unblock_by_func(G_OBJECT(self),on_toggle_block,NULL);
+}
+
+void yon_switch_page_render(main_window *widgets, int page);
+void yon_switch_page_render(main_window *widgets, int page){
+ GtkContainer *parent = GTK_CONTAINER(gtk_widget_get_parent(widgets->UsersToggle));
+ GList *list = gtk_container_get_children(parent);
+ for (guint i=0;islides_original);
+ widgets->slides_original = gdk_pixbuf_new_from_resource_at_scale(target[cur_slide],600,400,1,NULL);
+ GtkWidget *parent = gtk_widget_get_parent(widgets->SlidesImage);
+ gtk_widget_destroy(widgets->SlidesImage);
+ widgets->SlidesImage = gtk_image_new();
+ gtk_container_add(GTK_CONTAINER(parent),widgets->SlidesImage);
+ gtk_widget_show(widgets->SlidesImage);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),widgets->slides_original);
+ gtk_widget_queue_draw(widgets->SlidesImage);
+ if (cur_slide3?page-1:page);
+ switch(page){
+ case YON_PAGE_WELCOME: {
+ gtk_widget_hide(widgets->CancelInstallButton);
+ gtk_widget_set_sensitive(widgets->BackButton,0);
+ } break;
+ case YON_PAGE_LICENCE:{
+ gtk_widget_show(widgets->CancelInstallButton);
+ gtk_widget_set_sensitive(widgets->BackButton,1);
+ } break;
+ case YON_PAGE_REGION: {
+ yon_image_resize_from_container(GTK_IMAGE(widgets->RegionImage), widgets->regions_original);
+
+ } break;
+ case YON_PAGE_KEYBOARD: {
+
+ yon_image_resize_from_container(GTK_IMAGE(widgets->KeyboardImage), widgets->keyboard_original);
+ } break;
+ case YON_PAGE_OS_COMPONENTS:
+ case YON_PAGE_SOFTWARE:
+ yon_switch_page_render(widgets,3);
+ break;
+ case YON_PAGE_INSTALL_COMMON:
+ case YON_PAGE_INSTALL_SEPARATE:
+ case YON_PAGE_INSTALL_SAME_PARTITION: {
+ yon_switch_page_render(widgets,2);
+ }
+ }
+}
+
+void on_page_navigation_clicked(GtkWidget *self, main_window *widgets);
+void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
+ int mode = self==widgets->NextButton ? 1 : self == widgets->BackButton ? -1 : self==widgets->CancelInstallButton?-2:0;
+ int page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
+ switch (mode){
+ case 1: { // Next
+ switch (page){
+ case YON_PAGE_SECTIONS:{ //sections
+ int active_id=-1;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
+ active_id=0;
+ else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
+ active_id=1;
+ else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
+ active_id=2;
+ else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
+ active_id=3;
+ else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
+ active_id=4;
+ main_config.install_mode=active_id;
+ switch (active_id){
+ case 0:{ // normal installation
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_COMMON);
+ } break;
+ case 1:
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_SEPARATE);
+ break;
+ case 2:
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_SAME_PARTITION);
+ }
+ }break;
+ case YON_PAGE_REGION:{ //region
+ gtk_widget_set_sensitive(widgets->BackButton,1);
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),REGION_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->RegionCombo);
+ return;
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ZoneCombo))==-1){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ZONE_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->ZoneCombo);
+ return;
+ } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LANGUAGES_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->AvailableLanguagesEntry);
+ return;
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LOCALE_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->LanguagesCombo);
+ return;
+ }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1);
+ }break;
+ case YON_PAGE_KEYBOARD: { //keyboard
+ gtk_widget_set_sensitive(widgets->BackButton,1);
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->ManualLayoutRadio))){
+ GtkTreeIter iter;
+ if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutList),&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LAYOUTS_CHOSEN_BUT_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->ManualLayoutRadio);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->LayoutTree));
+ }
+ }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1);
+ } break;
+ default:{ // all other pages
+ gtk_widget_set_sensitive(widgets->BackButton,1);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1);
+ }break;
+ case YON_PAGE_SOFTWARE:
+ gtk_widget_set_sensitive(widgets->BackButton,0);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1);
+ yon_config_save_simple(YON_CONFIG_BOTH,"");
+ yon_launch_app_with_arguments(start_fast_install_command,"");
+ break;
+ case YON_PAGE_INSTALL_COMMON: {
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CommonInstallationDevicesTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->CommonInstallationDevicesTree));
+ return;
+ }
+ char *device;
+ gtk_tree_model_get(model,&iter,0,&device,-1);
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL,"fast");
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_DEVICE_command,device);
+
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),3);
+ if (!main_config.slider_thread)
+ main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets);
+ }break;
+ case YON_PAGE_INSTALL_SEPARATE:
+ {
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->InstallationNearSysDevicesTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->CommonInstallationDevicesTree));
+ return;
+ }
+ char *device;
+ gtk_tree_model_get(model,&iter,0,&device,-1);
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->InstallationNearSysSectionTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->CommonInstallationDevicesTree));
+ return;
+ }
+ char *part;
+ gtk_tree_model_get(model,&iter,0,&part,-1);
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL,"near");
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_DEVICE_command,device);
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOSTART_PARTS,part);
+
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),3);
+ if (!main_config.slider_thread)
+ main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets);
+ }
+ break;
+ case YON_PAGE_INSTALL_SAME_PARTITION:
+ {
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->InstallationNearSysDevicesTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->CommonInstallationDevicesTree));
+ return;
+ }
+ char *device;
+ gtk_tree_model_get(model,&iter,0,&device,-1);
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->InstallationNearSysSectionTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->CommonInstallationDevicesTree));
+ return;
+ }
+ char *part;
+ gtk_tree_model_get(model,&iter,0,&part,-1);
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL,"near");
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_DEVICE_command,device);
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOSTART_PARTS,part);
+
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),3);
+ if (!main_config.slider_thread)
+ main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets);
+ }
+ }
+ } break;
+ case -1: { // Previous
+ switch (page){
+ case YON_PAGE_REGION: {
+
+ gtk_widget_set_sensitive(widgets->BackButton,0);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page-1);
+ }break;
+ case YON_PAGE_INSTALL_COMMON:
+ case YON_PAGE_INSTALL_SEPARATE:
+ case YON_PAGE_INSTALL_SAME_PARTITION:
+ {
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),2);
+ } break;
+ default:{
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page-1);
+ }
+ }
+
+ } break;
+ case -2: { // Cancel/repeat
+ switch (page){
+ default:{
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),0);
+ }
+ }
+ }break;
+ }
+}
+
+void on_region_changed(GtkComboBox *self, main_window *widgets);
+void on_region_changed(GtkComboBox *self, main_window *widgets){
+ char *active = (char*)gtk_combo_box_get_active_id(self);
+ int size;
+ gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo));
+ if (yon_file_is_directory(active)){
+ config_str parsed = yon_file_ls(active,&size);
+ for (int i=0;iZoneCombo),_(parsed[i]));
+ }
+ }
+}
+
+void on_locale_changed(GtkWidget *,main_window *);
+void on_locale_changed(GtkWidget *,main_window *){
+
+}
+
+void on_additional_software_toggled();
+void on_additional_software_toggled(){
+
+}
+
+/**yon_main_window_complete(main_window *widgets)
+ * [EN]
+ *
+ * [RU]
+ * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
+*/
+main_window *yon_main_window_complete(){
+ main_window *widgets=NULL;
+ widgets = yon_remalloc(widgets,sizeof(main_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
+ // Custom widgets configuration
+ widgets->builder = builder;
+
+ widgets->DevicesList=GTK_LIST_STORE(gtk_builder_get_object(builder,"DevicesList"));
+ widgets->LanguagesList=GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList"));
+ widgets->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
+ widgets->WelcomeToggle=yon_gtk_builder_get_widget(builder,"WelcomeToggle");
+ widgets->LicenceToggle=yon_gtk_builder_get_widget(builder,"LicenceToggle");
+ widgets->LocationToggle=yon_gtk_builder_get_widget(builder,"LocationToggle");
+ widgets->KeyboardToggle=yon_gtk_builder_get_widget(builder,"KeyboardToggle");
+ widgets->SectionsToggle=yon_gtk_builder_get_widget(builder,"SectionsToggle");
+ widgets->UsersToggle=yon_gtk_builder_get_widget(builder,"USersToggle");
+ widgets->SummaryToggle=yon_gtk_builder_get_widget(builder,"SummaryToggle");
+ widgets->InstallationToggle=yon_gtk_builder_get_widget(builder,"InstallationToggle");
+ widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
+ widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
+ widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo");
+ widgets->AvailableLanguagesEntry=yon_gtk_builder_get_widget(builder,"AvailableLanguagesEntry");
+ widgets->AvailableLanguagesButton=yon_gtk_builder_get_widget(builder,"AvailableLanguagesButton");
+ widgets->LanguagesCombo=yon_gtk_builder_get_widget(builder,"LanguagesCombo");
+ widgets->KeyboardModelCombo=yon_gtk_builder_get_widget(builder,"KeyboardModelCombo");
+ widgets->LayoutBindingCombo=yon_gtk_builder_get_widget(builder,"LayoutBindingCombo");
+ widgets->DefaultLayoutRadio=yon_gtk_builder_get_widget(builder,"DefaultLayoutRadio");
+ widgets->ManualLayoutRadio=yon_gtk_builder_get_widget(builder,"ManualLayoutRadio");
+ widgets->LayoutTree=yon_gtk_builder_get_widget(builder,"LayoutTree");
+ widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton");
+ widgets->RemoveButton=yon_gtk_builder_get_widget(builder,"RemoveButton");
+ widgets->InstallationRadio=yon_gtk_builder_get_widget(builder,"InstallationRadio");
+ widgets->InstallationNearRadio=yon_gtk_builder_get_widget(builder,"InstallationNearRadio");
+ widgets->InstallationLinuxRadio=yon_gtk_builder_get_widget(builder,"InstallationLinuxRadio");
+ widgets->InstallationWindowsRadio=yon_gtk_builder_get_widget(builder,"InstallationWindowsRadio");
+ widgets->InstallationOptionsRadio=yon_gtk_builder_get_widget(builder,"InstallationOptionsRadio");
+ widgets->UserNameEntry=yon_gtk_builder_get_widget(builder,"UserNameEntry");
+ widgets->LoginEntry=yon_gtk_builder_get_widget(builder,"LoginEntry");
+ widgets->PasswordCombo=yon_gtk_builder_get_widget(builder,"PasswordCombo");
+ widgets->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
+ widgets->PasswordButton=yon_gtk_builder_get_widget(builder,"PasswordButton");
+ widgets->AutologinCheck=yon_gtk_builder_get_widget(builder,"AutologinCheck");
+ widgets->AdminPasswordCombo=yon_gtk_builder_get_widget(builder,"AdminPasswordCombo");
+ widgets->AdminPasswordEntry=yon_gtk_builder_get_widget(builder,"AdminPasswordEntry");
+ widgets->AdminPasswordButton=yon_gtk_builder_get_widget(builder,"AdminPasswordButton");
+ widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry");
+ widgets->CancelInstallButton=yon_gtk_builder_get_widget(builder,"CancelInstallButton");
+ widgets->BackButton=yon_gtk_builder_get_widget(builder,"BackButton");
+ widgets->NextButton=yon_gtk_builder_get_widget(builder,"NextButton");
+ widgets->mainSettingsButton=yon_gtk_builder_get_widget(builder,"mainSettingsButton");
+ widgets->menu1=yon_gtk_builder_get_widget(builder,"menu1");
+ widgets->menu2=yon_gtk_builder_get_widget(builder,"menu2");
+ widgets->RegionImage = yon_gtk_builder_get_widget(builder,"RegionImage");
+ widgets->RegionBox = yon_gtk_builder_get_widget(builder,"RegionBox");
+ widgets->RegionAspect = yon_gtk_builder_get_widget(builder,"RegionAspect");
+ widgets->KeyboardImage = yon_gtk_builder_get_widget(builder,"KeyboardImage");
+ widgets->KeyboardBox = yon_gtk_builder_get_widget(builder,"KeyboardBox");
+ widgets->Notebook = yon_gtk_builder_get_widget(builder,"Notebook");
+ widgets->LicenceLabel = yon_gtk_builder_get_widget(builder,"LicenceLabel");
+ widgets->SlidesImage = yon_gtk_builder_get_widget(builder,"SlidesImage");
+ widgets->CommonInstallationDevicesTree = yon_gtk_builder_get_widget(builder,"CommonInstallationDevicesTree");
+ widgets->AdditionalSoftwareTree = yon_gtk_builder_get_widget(builder,"AdditionalSoftwareTree");
+
+ widgets->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
+ widgets->AdditionalSoftwareCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"AdditionalSoftwareCell"));
+
+ widgets->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList"));
+ widgets->LanguagesFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LanguagesFilter"));
+ widgets->LayoutList = GTK_TREE_STORE(gtk_builder_get_object(builder,"LayoutList"));
+ widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList"));
+
+ g_signal_connect(G_OBJECT(widgets->Notebook),"switch-page",G_CALLBACK(on_page_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets);
+ g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_navigation_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->NextButton),"clicked",G_CALLBACK(on_page_navigation_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_navigation_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->AvailableLanguagesButton),"clicked",G_CALLBACK(on_language_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_keyboard_clicked),widgets);
+
+ g_signal_connect(G_OBJECT(widgets->UsersToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->LicenceToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->WelcomeToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->KeyboardToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->LocationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->SectionsToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+
+ g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets);
+ // g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),widgets);
+
+ gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter),0);
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
+
+ gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL);
+ gtk_window_set_icon_name(GTK_WINDOW(widgets->MainWindow),icon_path);
+
+ int size;
+ config_str parsed = yon_file_open(licence_path,&size);
+ if (size){
+ char *licence = yon_char_parsed_to_string(parsed,size,"");
+ gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),licence);
+ free(licence);
+ yon_char_parsed_free(parsed,size);
+ }
+
+ widgets->regions_original = gdk_pixbuf_new_from_resource(regions_path,NULL);
+ widgets->keyboard_original = gdk_pixbuf_new_from_resource(keyboard_path,NULL);
+ widgets->slides_original = gdk_pixbuf_new_from_resource(slide_0_path,NULL);
+ int width = gdk_pixbuf_get_width(widgets->regions_original);
+ int height = gdk_pixbuf_get_height(widgets->regions_original);
+ widgets->region_height_mult = (float)height/width;
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),gdk_pixbuf_scale_simple(widgets->slides_original,600,400,GDK_INTERP_BILINEAR));
+
+ GtkTreeIter iter;
+ gtk_list_store_clear(widgets->LanguagesList);
+ parsed = yon_file_open(languages_path,&size);
+ for (int i=0;iLanguagesList,&iter);
+ gtk_list_store_set(widgets->LanguagesList,&iter,0,0,1,cur[1],2,cur[0],-1);
+ }
+ yon_char_parsed_free(cur,cur_size);
+ }
+ yon_char_parsed_free(parsed,size);
+
+ parsed = yon_dir_get_contents(zone_path,&size);
+ for (int i=0;iRegionCombo),path,_(parsed[i]));
+ }
+ free(path);
+ }
+ }
+ yon_char_parsed_free(parsed,size);
+ parsed = yon_config_load(get_layouts_command,&size);
+ GtkTreeIter itar;
+ for (int i=0;iLayoutList,&iter,NULL);
+ gtk_tree_store_set(widgets->LayoutList,&iter,0,layout[0],1,_(layout[1]),2,0,-1);
+ yon_char_parsed_free(layout,layout_size);
+ layout = yon_config_load(get_layouts_local_command(layout_id),&layout_size);
+ for (int j=0;jLayoutList,&itar,&iter);
+ gtk_tree_store_set(widgets->LayoutList,&itar,0,layouts_parsed[0],1,_(layouts_parsed[1]),2,1,3,0,-1);
+ yon_char_parsed_free(layouts_parsed,parsed_size);
+ }
+ }
+ if (layout_size==-1) {
+ gtk_tree_store_set(widgets->LayoutList,&iter,2,1,-1);
+ }
+ yon_char_parsed_free(layout,layout_size);
+ }
+ }
+ yon_char_parsed_free(parsed,size);
+ parsed = yon_config_load(get_devices_command,&size);
+ char *string = yon_char_parsed_to_string(parsed,size,"");
+ struct json_object *root;
+ struct json_object *blockdevices;
+ root = json_tokener_parse(string);
+ json_object_object_get_ex(root, "blockdevices", &blockdevices);
+ for (long unsigned int i = 0; i < json_object_array_length(blockdevices); i++) {
+ struct json_object *device = json_object_array_get_idx(blockdevices, i);
+ struct json_object *path, *size, *model, *vendor, *serial;
+
+ json_object_object_get_ex(device, "path", &path);
+ json_object_object_get_ex(device, "size", &size);
+ json_object_object_get_ex(device, "model", &model);
+ json_object_object_get_ex(device, "vendor", &vendor);
+ json_object_object_get_ex(device, "serial", &serial);
+
+ gtk_list_store_append(widgets->DevicesList,&iter);
+ gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,json_object_get_string(size),4,json_object_get_string(vendor),-1);
+ }
+ yon_char_parsed_free(parsed,size);
+ parsed = yon_resource_open_file(additional_software_path,&size);
+ for (int i=1;iAdditionalSoftwareList,&iter);
+ gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,1,module_parsed[0],3,module_parsed[1],-1); //2,module_parsed[2]
+ }
+ }
+ return widgets;
+}
+
+int main(int argc, char *argv[]){
+ local=setlocale(LC_ALL, "");
+ textdomain (LocaleName);
+ config_init();
+ int option_index=0;
+ int show_help=0;
+ {
+ struct option long_options[] = {
+ {"help", 0, 0, 'h'},
+ {"version", 0, 0, 'V'},
+ {"lock-help", 0,0, 1},
+ {"lock-save", 0,0, 2},
+ {"lock-save-local", 0,0, 3},
+ {"lock-save-global", 0,0, 4},
+ {"lock-load-global", 0,0, 5},
+ {"socket-id", 1, 0, 's'},
+ {"socket-ext-id", 1,0, 'e'},
+ {"socket-trd-id", 1,0, 't'},
+ {"clear-config", 0,0, 'c'},
+ {"debug", 0,0, 'd'},
+ { NULL, 0, NULL, 0 }
+ };
+ for (int i=0;iMainWindow));
+
+ yon_window_config_load(config_path);
+ GtkCssProvider *css=gtk_css_provider_new();
+ gtk_css_provider_load_from_resource(css,CssPath);
+ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
+ GTK_STYLE_PROVIDER(css),
+ -1);
+ gtk_main();
+}
\ No newline at end of file
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
new file mode 100644
index 0000000..486269a
--- /dev/null
+++ b/source/ubinstall-gtk.h
@@ -0,0 +1,227 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#ifdef WEBKIT_FOUND
+ #include
+#endif
+#include "ubl-strings.h"
+
+#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubinstall-gtk-output"
+
+#define _(String) gettext(String)
+
+#define glade_path "/com/ublinux/ui/ubinstall-gtk.glade"
+#define glade_path_ubinstall_keyboard "/com/ublinux/ui/ubinstall-gtk-keyboard.glade"
+#define glade_path_ubinstall_language "/com/ublinux/ui/ubinstall-gtk-language.glade"
+
+#define CssPath "/com/ublinux/css/ubinstall-gtk.css"
+#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
+#define icon_path "com.ublinux.ubinstall-gtk-gui"
+
+#define LocalePath "/usr/share/locale"
+#define LocaleName "ubinstall-gtk"
+
+#define clear_config_both_command "ubconfig remove TEMP_SECTION TEMP_PATAMETER"
+#define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER"
+#define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER"
+
+#define regions_path "/com/ublinux/images/map-time-zone.png"
+#define keyboard_path "/com/ublinux/images/keyboard.png"
+
+#define licence_path "/usr/share/ublinux/agreement/EULA.txt"
+
+#define languages_path "/usr/share/ubinstall-gtk/csv/locales.csv"
+
+#define zone_path "/usr/share/zoneinfo/"
+
+#define additional_software_path "resource:///com/ublinux/csv/modules.csv"
+
+#define slide_0_path "/com/ublinux/images/slide-0.png"
+
+#define slide_repeat_path "/com/ublinux/images/slide-1.png", \
+"/com/ublinux/images/slide-2.png", \
+"/com/ublinux/images/slide-3.png", \
+"/com/ublinux/images/slide-4.png", \
+"/com/ublinux/images/slide-5.png", \
+"/com/ublinux/images/slide-6.png", \
+"/com/ublinux/images/slide-7.png", \
+"/com/ublinux/images/slide-8.png", \
+"/com/ublinux/images/slide-9.png", \
+"/com/ublinux/images/slide-10.png", \
+"/com/ublinux/images/slide-11.png", \
+"/com/ublinux/images/slide-12.png", \
+NULL
+
+#define get_layouts_command "xkbcli list --load-exotic | awk \"layout && /description:/ {match(\\$0,/: *(.*)/,matches);description=matches[1];printf \\\"%s|%s\\n\\\",layout,description;layout=\\\"\\\"} /layout:/ {match(\\$0, /: *'([^']+)'/,matches);l=matches[1];if (layouts[l]) next;layout=layouts[l]=l}\" | sort -u"
+#define get_layouts_local_command(layout) yon_char_unite("xkbcli list --load-exotic | awk -v layout=\"",layout,"\" \"BEGIN {layout_pattern = sprintf(\\\"^ *- *layout: *'%s'\\\",layout);matched=0} matched && /variant:/ {match(\\$0, /: *'([^']+)'/, matches);variant = matches[1]} matched && /description:/ {match(\\$0, /: *(.+)/, matches);description = matches[1]} matched && /^ *-/{matched=0; if (variant) printf \\\"%s|%s\\n\\\",variant,description} \\$0 ~ layout_pattern {matched=1;variant=\\\"\\\";description=\\\"\\\";next}\" | sort -u",NULL)
+#define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7,253"
+
+#define AUTOINSTALL_TYPE_INSTALL "AUTOINSTALL[type_install]"
+#define AUTOINSTALL_DEVICE "AUTOINSTALL[device]"
+#define AUTOSTART_PARTS "AUTOINSTALL[part]"
+
+#define AUTOINSTALL_DEVICE_command "ubconfig --source global get AUTOINSTALL[device]"
+
+#define start_fast_install_command "ubinstall2 --autoinstall"
+
+typedef char* string;
+string version_application;
+
+char *local;
+
+enum YON_PAGES {
+ YON_PAGE_WELCOME = 0,
+ YON_PAGE_LICENCE,
+ YON_PAGE_SECTIONS,
+ YON_PAGE_OS_COMPONENTS,
+ YON_PAGE_SOFTWARE,
+ YON_PAGE_INSTALLATION,
+ YON_PAGE_REGION,
+ YON_PAGE_KEYBOARD,
+ YON_PAGE_USERS,
+ YON_PAGE_COMPLETION,
+ YON_PAGE_COMPLETED,
+ YON_PAGE_INSTALL_COMMON,
+ YON_PAGE_INSTALL_SEPARATE,
+ YON_PAGE_INSTALL_SAME_PARTITION
+};
+
+typedef struct {
+ int socket_id;
+ int load_socket_id;
+ int save_socket_id;
+
+ int lock_help;
+ int lock_save_local;
+ int lock_save_global;
+ int lock_load_global;
+
+ int always_open_documentation;
+
+ int debug_mode;
+ guint slider_thread;
+ int install_mode;
+} config;
+
+typedef struct {
+ GtkBuilder *builder;
+ GtkListStore *DevicesList;
+ GtkListStore *LanguagesList;
+ GtkTreeStore *LayoutList;
+ GtkListStore *AdditionalSoftwareList;
+
+ GtkWidget *MainWindow;
+
+ GtkWidget *StatusBox;
+ GtkWidget *WelcomeToggle;
+ GtkWidget *LicenceToggle;
+ GtkWidget *LocationToggle;
+ GtkWidget *KeyboardToggle;
+ GtkWidget *SectionsToggle;
+ GtkWidget *UsersToggle;
+ GtkWidget *SummaryToggle;
+ GtkWidget *InstallationToggle;
+ GtkWidget *LanguageCombo;
+ GtkWidget *RegionCombo;
+ GtkWidget *ZoneCombo;
+ GtkWidget *AvailableLanguagesEntry;
+ GtkWidget *AvailableLanguagesButton;
+ GtkWidget *LanguagesCombo;
+ GtkWidget *KeyboardModelCombo;
+ GtkWidget *LayoutBindingCombo;
+ GtkWidget *DefaultLayoutRadio;
+ GtkWidget *ManualLayoutRadio;
+ GtkWidget *LayoutTree;
+ GtkWidget *AddButton;
+ GtkWidget *RemoveButton;
+ GtkWidget *InstallationRadio;
+ GtkWidget *InstallationNearRadio;
+ GtkWidget *InstallationLinuxRadio;
+ GtkWidget *InstallationWindowsRadio;
+ GtkWidget *InstallationOptionsRadio;
+ GtkWidget *UserNameEntry;
+ GtkWidget *LoginEntry;
+ GtkWidget *PasswordCombo;
+ GtkWidget *PasswordEntry;
+ GtkWidget *PasswordButton;
+ GtkWidget *AutologinCheck;
+ GtkWidget *AdminPasswordCombo;
+ GtkWidget *AdminPasswordEntry;
+ GtkWidget *AdminPasswordButton;
+ GtkWidget *HotnameEntry;
+ GtkWidget *CancelInstallButton;
+ GtkWidget *BackButton;
+ GtkWidget *NextButton;
+ GtkWidget *mainSettingsButton;
+ GtkWidget *menu1;
+ GtkWidget *menu2;
+ GtkWidget *RegionImage;
+ GtkWidget *RegionBox;
+ GtkWidget *RegionAspect;
+ GtkWidget *KeyboardImage;
+ GtkWidget *KeyboardBox;
+ GtkWidget *Notebook;
+ GtkWidget *LicenceLabel;
+ GtkWidget *SlidesImage;
+
+ GtkCellRenderer *AdditionalSoftwareCell;
+
+ GtkWidget *CommonInstallationDevicesTree;
+ GtkWidget *AdditionalSoftwareTree;
+
+ GtkTreeModel *LanguagesFilter;
+
+ GdkPixbuf *regions_original;
+ GdkPixbuf *keyboard_original;
+ GdkPixbuf *slides_original;
+ float region_height_mult;
+
+} main_window;
+
+
+typedef struct {
+ GtkWidget *Window;
+
+ GtkWidget *AlwaysOpenCheck;
+
+ GtkWidget *CloseButton;
+ GtkWidget *AcceptButton;
+} documentation_confirmation_window;
+
+typedef struct{
+ GtkWidget *MainWindow;
+ GtkWidget *StatusBox;
+ GtkWidget *headerBar;
+ GtkWidget *CancelButton;
+ GtkWidget *SaveButton;
+ GtkWidget *LayoutsTree;
+} ubinstall_keyboard_window;
+
+typedef struct{
+ GtkListStore *liststore1;
+ GtkWidget *MainWindow;
+ GtkWidget *StatusBox;
+ GtkWidget *DefaultCheck;
+ GtkWidget *headerBar;
+ GtkWidget *CancelButton;
+ GtkWidget *SaveButton;
+ GtkWidget *LanguagesTree;
+
+ GtkCellRenderer *ToggleRenderer;
+} ubinstall_language_window;
+
+void config_init();
+main_window *yon_main_window_complete();
+ubinstall_language_window *yon_ubinstall_language_new();
+void NewFunction(ubinstall_language_window *window, GtkBuilder *builder);
+ubinstall_keyboard_window *yon_ubinstall_keyboard_new();
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
new file mode 100644
index 0000000..175a376
--- /dev/null
+++ b/source/ubl-strings.h
@@ -0,0 +1,77 @@
+#define VERSION_LABEL yon_char_unite(_("Version:")," ",!yon_char_is_empty(version_application)?version_application:"","\n",NULL)
+#define HELP_LABEL(rest) yon_char_unite(LocaleName,_(" version:")," ", !yon_char_is_empty(version_application)?version_application:"","\n",TITLE_LABEL,"\n",_("Usage:"), " ",LocaleName," ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n\t--clear-config\t\t\t",_("Reset application settings"),"\n",!yon_char_is_empty(rest)?rest:NULL,NULL)
+
+#define TITLE_LABEL _("ubinstall")
+
+#define WELCOME_LABEL _("Welcome to UBLinux installation")
+#define WELCOME_BOTTOM_LABEL _("This program will ask you few questions\nand help you install UBLinux on your computer")
+
+#define KEYBOARD_TITLE_LABEL _("Keyboard layout")
+
+#define CANCEL_LABEL _("Cancel")
+#define BACK_LABEL _("Back")
+#define NEXT_LABEL _("Next")
+#define WELCOME_TAB_LABEL _("Welcome")
+#define LICENCE_TAB_LABEL _("Licence\nagreement")
+#define SECTIONS_TAB__LABEL _("Sections")
+#define INSTALLATION_TAB_LABEL _("Installation")
+#define LOCATION_TAB_LABEL _("Location")
+#define KEYBOARD_TAB_LABEL _("Keyboard")
+#define USERS_TAB_LABEL _("Users")
+#define COMPLETION_TAB_LABEL _("Completion")
+#define COMMON_INSTALL_INFO_LABEL _("Deleting all data on the selected disk and then installing the UBLinux system")
+#define NEAR_INSTALL_LABEL _("Installation next to another system")
+#define NEAR_INSTALL_INFO_LABEL _("Shrinking a partition and creating a new one for installing UBLinux")
+#define SHRINK_SECTION_INSTALL_LABEL _("Installation on the same partition as another system")
+#define SHRINK_SECTION_INSTALL_INFO_LABEL _("Unpacking the UBLinux file system into an existing system")
+#define ADDITIONAL_INSTALL_INFO_LABEL _("Selecting additional software to install from the repository via the Internet")
+#define CHOSEN_LABEL _("Chosen")
+#define MODULE_NAME_LABEL _("Module name")
+#define TAG_LABEL _("Tag")
+#define DESCRIPTION_LABEL _("Description")
+#define INSTALLATION_COMPLETION_LABEL _("Installation completion")
+#define LOCATION_LABEL _("Location")
+#define REGION_LABEL _("Region:")
+#define ZONE_LABEL _("Zone:")
+#define LANGUAGE_LABEL _("Language:")
+#define KEYBOARD_MODEL_LABEL _("Keyboard model:")
+#define LAYOUT_CHANGING_LABEL _("Layout changing:")
+#define DEFAUL_LAYOUT_LABEL _("Default layout (ru)")
+#define DEFINE_LABEL _("Define")
+#define ACCOUNT_NAME_LABEL _("Your account name:")
+#define LOGIN__LABEL _("Login:")
+#define PASSWORD__LABEL _("Password")
+#define DEFAULT_LABEL _("Default")
+#define SET_PASSWORD_LABEL _("Set a password")
+#define DO_NOT_SET_PASSWORD_LABEL _("Do no set a password")
+#define AUTOMATIC_LOGIN_LABEL _("Automatic login without password prompt")
+#define ADMIN_PASSWORD_LABEL _("Administrator password (root):")
+#define COMPUTER_NAME_LABEL _("Computer name:")
+#define USER_LABEL _("User")
+#define COMPLETION_LABEL _("Completion")
+#define INSTALLATION_COMPLETION_LABEL _("Installation completion")
+#define SELECT_DEVICE_LABEL _("Select device:")
+#define CHOOSE_SECTION_LABEL _("Choose a section:")
+#define ATTENSION_LABEL _("Attention! The selected partition will be modified: the size will be reduced. In the resulting free space, a partition will be created into which the UBLinux OS will be\ninstalled.")
+#define DEVICE_LABEL _("Device")
+#define MARK_LABEL _("Mark")
+#define SIZE_LABEL _("Size")
+#define FREE_LABEL _("Free")
+#define SPECIFY_LABEL _("Specify the size of the new partition for UBLinux OS:")
+#define TB_LABEL _("Tb")
+#define GB_LABEL _("Gb")
+#define MB_LABEL _("Mb")
+#define AVALIABLE_LANGUAGES_LABEL _("Available languages in the system:")
+
+#define NO_DEVICE_CHOSEN_LABEL _("No device were chosen")
+
+#define INSTALLATION_PARAMETERS_LABEL _("Installation parameters")
+
+
+#define KEYBOARD__LABEL _("Keyboard layout language")
+
+#define REGION_EMPTY_LABEL _("Region were not fullified")
+#define ZONE_EMPTY_LABEL _("Zone were not fullified")
+#define LANGUAGES_EMPTY_LABEL _("Languages list is empty")
+#define LOCALE_EMPTY_LABEL _("System locale hasn't been chosen")
+#define LAYOUTS_CHOSEN_BUT_EMPTY_LABEL _("Manual layouts has been chosen but empty")
\ No newline at end of file
diff --git a/ubinstall-gtk-keyboard.glade b/ubinstall-gtk-keyboard.glade
new file mode 100644
index 0000000..705e924
--- /dev/null
+++ b/ubinstall-gtk-keyboard.glade
@@ -0,0 +1,157 @@
+
+
+
+
+
+
diff --git a/ubinstall-gtk-language.glade b/ubinstall-gtk-language.glade
new file mode 100644
index 0000000..7cfa969
--- /dev/null
+++ b/ubinstall-gtk-language.glade
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 200
+ 400
+ False
+ 800
+ com.ublinux.ubinstall-gui
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ vertical
+ 5
+
+
+ Default
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+
+
+ True
+ True
+ liststore1
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+
+
+
diff --git a/ubinstall-gtk.css b/ubinstall-gtk.css
new file mode 100644
index 0000000..501ddbf
--- /dev/null
+++ b/ubinstall-gtk.css
@@ -0,0 +1,208 @@
+.thin {
+ margin:0px;
+ padding:0px;
+}
+.noborder {
+ border:none;
+}
+.nobackground {
+background:transparent;
+}
+.nobackground:active {
+background:transparent;
+}
+.textHead{
+ text-shadow: 2px 2px @theme_bg_color;
+ color: @theme_text_color;
+}
+
+.inherited>* {
+ border:none;
+ background:inherit;
+}
+.workingbg {
+ background:@theme_base_color;
+}
+.menuitembottom{
+ margin-top:0px;
+ margin-bottom:3px;
+ border-color:inherit;
+ border-left-width:inherit;
+ border-right-width:inherit;
+ }
+ .menuitemmiddle{
+ margin-top:0px;
+ margin-bottom:0px;
+ border-color:inherit;
+ border-left-width:inherit;
+ border-right-width:inherit;
+ }
+
+ .menuitemtop{
+ margin-bottom:0px;
+ border-color:inherit;
+ border-top-width:inherit;
+ border-left-width:inherit;
+ border-right-width:inherit;
+ }
+ .menuitemtop >*{
+ margin:4px 2px 0 2px;
+ padding: 3px 10px 3px 5px;
+ border:transparent;
+ }
+ .menuitemmiddle >*{
+ margin:0 2px 0 2px;
+ padding: 3px 10px 3px 5px;
+ border:transparent;
+ }
+ .menuitembottom >*{
+ margin:0 2px 2px 2px;
+ padding: 3px 10px 3px 5px;
+ }
+ .menuitemtop:hover {
+ background:@theme_bg_color;
+ border-color:inherit;
+ border-top-width:inherit;
+ border-left-width:inherit;
+ border-right-width:inherit;
+ }
+ .menuitemmiddle:hover {
+ background:@theme_bg_color;
+ border-color:inherit;
+ border-left-width:inherit;
+ border-right-width:inherit;
+ }
+ .menuitembottom:hover {
+ background:@theme_bg_color;
+ border-color:inherit;
+ border-bottom-width:0px;
+ border-left-width:inherit;
+ border-right-width:inherit;
+
+ }
+ .menuitemtop:hover>* {
+ margin:4px 2px 0 2px;
+ padding: 3px 10px 3px 5px;
+ background:@theme_selected_bg_color;
+ border-radius:2px;
+ }
+ .menuitemmiddle:hover>* {
+ margin:0 2px 0 2px;
+ padding: 3px 10px 3px 5px;
+ background:@theme_selected_bg_color;
+ border-radius:2px;
+ }
+ .menuitembottom:hover>* {
+ margin:0 2px 2px 2px;
+ padding: 3px 10px 3px 5px;
+ background:@theme_selected_bg_color;
+ border-radius:2px;
+ }
+ .boxInfoMessError{
+ background-color: #ea9999;
+}
+
+.boxInfoMessOK{
+ background-color: #f3f0ac;
+}
+.errorBox {
+ border-width: 2px;
+ border-color: #ea9999;
+ border-style:solid;
+}
+
+.chosenOutline{
+ transition: 0ms;
+ border-width: 1px;
+ border-color: #f3f0ac;
+ border-style:solid;
+}
+
+.separatorTop{
+ border-color: darker (@theme_bg_color);
+ border-top-width:1px;
+ border-style:solid;
+}
+
+.separatorBottom{
+ border-color: darker (@theme_bg_color);
+ border-bottom-width:1px;
+ border-style:solid;
+}
+
+.marginright image{
+ margin-right: 2px;
+}
+
+.spinner_image{
+ -gtk-icon-transform: scale(2);
+}
+
+treeview row:nth-child(odd) { background-color: #000000; }
+
+treeview row:nth-child(even) { background-color: #ffffff; }
+
+.blackbg {
+ background-color: @theme_text_color;
+}
+
+.toggletabs {
+ background-color: @background_color;
+ border:none;
+ border-radius:0px;
+ transition:0;
+ padding-top:7px;
+ padding-bottom:7px;
+}
+
+.toggletabs:checked {
+ background:@theme_base_color;
+ border-radius:0px;
+ color:inherit;
+ padding-top:7px;
+ padding-bottom:7px;
+}
+
+.toggletabs:checked>* {
+ background:@theme_base_color;
+ border-radius:0px;
+ color:inherit;
+}
+
+.toggletabs:checked:disabled {
+ background:@theme_base_color;
+ border-radius:0px;
+ color:inherit;
+ padding-top:7px;
+ padding-bottom:7px;
+}
+
+.toggletabs:checked>*:disabled {
+ background:@theme_base_color;
+ border-color:inherit;
+ border-style:solid;
+ border-radius:0px;
+ color:inherit;
+}
+
+.toggletabs:active {
+ background-color: @background_color;
+ border:none;
+ border-radius:0px;
+ transition:0;
+ padding-top:7px;
+ padding-bottom:7px;
+}
+
+.toggletabs:active>* {
+ background:@background_color;
+ border-radius:0px;
+ color:inherit;
+}
+
+.menubox {
+ background-color:@theme_text_color;
+}
+.menubox *{
+ color:@theme_base_color;
+}
\ No newline at end of file
diff --git a/ubinstall-gtk.desktop b/ubinstall-gtk.desktop
new file mode 100644
index 0000000..8b5dcb8
--- /dev/null
+++ b/ubinstall-gtk.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=2.35
+Encoding=UTF-8
+Name=Установка UBLinux
+Comment=ubinstall-gtk
+Comment[ru]=Установка UBLinux
+Icon=ubinstall-gtk
+Terminal=false
+Type=Application
+Exec=/bin/ubinstall-gtk
+Categories=Settings;System;
+StartupNotify=true
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
new file mode 100644
index 0000000..eb59190
--- /dev/null
+++ b/ubinstall-gtk.glade
@@ -0,0 +1,5537 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LanguagesList
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+ 1
+ 10
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ com.ublinux.libublsettingsui-gtk3.increase-symbolic
+
+
+ True
+ False
+ com.ublinux.libublsettingsui-gtk3.trash-symbolic
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ False
+ com.ublinux.ubinstall-gtk.circle-exit-symbolic
+
+
+ True
+ False
+ com.ublinux.ubinstall-gtk.arrow-left-symbolic
+
+
+ True
+ False
+ com.ublinux.ubinstall-gtk.arrow-right-symbolic
+
+
+
+
+
+ 800
+ 600
+ True
+ False
+ com.ublinux.ubinstall-gtk-gui
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ vertical
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ start
+ 112
+ com.ublinux.libublsettingsui-gtk3
+ 1
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ True
+
+
+ Welcome
+ True
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ Licence
+agreement
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ Sections
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ Installation
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ Location
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ Keyboard
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 5
+
+
+
+
+ Users
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 6
+
+
+
+
+ Completion
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 9
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+ vertical
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ left
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ center
+ vertical
+ 20
+
+
+ True
+ False
+ Welcome to UBLinux installation
+ True
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ This program will ask you few questions
+and help you install UBLinux on your computer
+ True
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 128
+ com.ublinux.libublsettingsui-gtk3
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ center
+ 0
+
+ - Русский
+ - English
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ False
+ 0
+
+
+
+
+
+
+ True
+ False
+ False
+ Welcome
+
+
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ in
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ False
+ 0
+ 0
+
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+ False
+ Licences
+
+
+ 1
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Installation options
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 15
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Deleting all data on the selected disk and then installing the UBLinux system
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ False
+ True
+ InstallationRadio
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation next to another system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Shrinking a partition and creating a new one for installing UBLinux
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ False
+ True
+ InstallationRadio
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation on the same partition as another system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Unpacking the UBLinux file system into an existing system
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ True
+ InstallationRadio
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation next to Windows system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Shrinking a partition and creating a new one to install UBLinux next to Windows
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ False
+ True
+ InstallationRadio
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Additional installation options
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Separate installation of bootloader, system files, user data, etc.
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 2
+
+
+
+
+ True
+ False
+ Sections
+
+
+ 2
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation completion
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0.019999999552965164
+ in
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ True
+ AdditionalSoftwareList
+ 0
+
+
+
+
+
+ Chosen
+
+
+
+ 0
+
+
+
+
+
+
+ Module name
+
+
+
+ 1
+
+
+
+
+
+
+ Tag
+
+
+
+ 2
+
+
+
+
+
+
+ Description
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ True
+ False
+ Selecting additional software to install from the repository via the Internet
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 3
+
+
+
+
+ True
+ False
+ OS components
+
+
+ 3
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation completion
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0.019999999552965164
+ in
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ True
+ AdditionalSoftwareList
+ 0
+
+
+
+
+
+ Chosen
+
+
+
+ 0
+
+
+
+
+
+
+ Module name
+
+
+
+ 1
+
+
+
+
+
+
+ Tag
+
+
+
+ 2
+
+
+
+
+
+
+ Description
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ True
+ False
+ Selecting additional software to install from the repository via the Internet
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 4
+
+
+
+
+ True
+ False
+ Additional software
+
+
+ 4
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+
+
+ False
+ True
+ 0
+
+
+
+
+ 5
+
+
+
+
+ True
+ False
+ Installation
+
+
+ 5
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Location
+
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+ none
+
+
+ 680
+ True
+ False
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Region:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Zone:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Available languages in the system:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ True
+ image6
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Language:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ LanguagesFilter
+ 2
+
+
+
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ 6
+
+
+
+
+ True
+ False
+ Region
+
+
+ 6
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Keyboard
+
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+ none
+
+
+ True
+ False
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Keyboard model:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+
+ - Default (Regular 105-key)
+ - Regular 86-key
+ - Regular 101-key
+ - Regular 102-key
+ - Regular 104-key
+ - Regular 104-key (L-shaped Enter)
+ - Regular 105-key
+ - Dell 101 keys
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Layout changing:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+
+ - Default (L_Alt + L_Shift)
+ - Left Alt
+ - Right Alt
+ - Caps Lock
+ - Shift + Caps Lock
+ - Alt + Caps Lock
+ - Alt + Shift
+ - Ctrl + Shift
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ Default layout (ru)
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ Define
+ True
+ True
+ False
+ True
+ DefaultLayoutRadio
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ True
+ in
+
+
+ True
+ True
+ 0
+
+
+
+
+
+ Layout
+
+
+
+ 0
+
+
+
+
+
+
+ Designation
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ True
+ image13
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image14
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ 7
+
+
+
+
+ True
+ False
+ Keyboard
+
+
+ 7
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ User
+
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Your account name:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ Super Admin
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Login:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ superadmin
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Password
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+
+ - Default
+ - Set a password
+ - Do no set a password
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ False
+ ●
+ ******
+
+
+ True
+ True
+ 2
+
+
+
+
+ True
+ True
+ True
+ image22
+
+
+ False
+ True
+ 3
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ 5
+
+
+ Automatic login without password prompt
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Administrator password (root):
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+
+ - Default
+ - Set a password
+ - Do not set a password
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ False
+ ●
+ ******
+
+
+ True
+ True
+ 2
+
+
+
+
+ True
+ True
+ True
+ image21
+
+
+ False
+ True
+ 3
+
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 5
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Computer name:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ ubstation
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 6
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ 8
+
+
+
+
+ True
+ False
+ Users
+
+
+ 8
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Completion
+
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ True
+ True
+ 1
+
+
+
+
+ 9
+
+
+
+
+ True
+ False
+ Completion
+
+
+ 9
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation completion
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ True
+ 1
+
+
+
+
+ 10
+
+
+
+
+ True
+ False
+ Completed
+
+
+ 10
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ center
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Deleting all data on the selected disk and then installing the UBLinux system
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+ 0
+
+
+
+
+
+
+ Description
+
+
+
+ 1
+
+
+
+
+
+
+ Mark
+
+
+
+ 2
+
+
+
+
+
+
+ Size
+
+
+
+ 3
+
+
+
+
+
+
+ Free
+
+
+
+ 4
+
+
+
+
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 11
+
+
+
+
+ True
+ False
+ Common Installation
+
+
+ 11
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation next to another system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Shrinking a partition and creating a new one for installing UBLinux
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Attention! The selected partition will be modified: the size will be reduced. In the resulting free space, a partition will be created into which the UBLinux OS will be
+installed.
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image36
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+ 0
+
+
+
+
+
+
+ Description
+
+
+
+ 1
+
+
+
+
+
+
+ Mark
+
+
+
+ 2
+
+
+
+
+
+
+ Size
+
+
+
+ 3
+
+
+
+
+
+
+ Serial
+
+
+
+ 4
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Choose a section:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ liststore2
+
+
+
+
+
+ Section
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Free space
+
+
+
+
+
+
+
+ System
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Specify the size of the new partition for UBLinux OS:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ 0
+ adjustment1
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+ - Mb
+ - Gb
+ - Tb
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 12
+
+
+
+
+ True
+ False
+ Installation next to system
+
+
+ 12
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation on the same partition as another system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Unpacking the UBLinux file system into an existing system
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Attention! The UBLinux OS will be installed on the selected partition with OS already installed. All user data will be saved.
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image1
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Choose a section:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ liststore2
+
+
+
+
+
+ Section
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Free space
+
+
+
+
+
+
+
+ System
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Specify the size of the new partition for UBLinux OS:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ 0
+ adjustment1
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+ - Mb
+ - Gb
+ - Tb
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 13
+
+
+
+
+ True
+ False
+ Installation with Linux
+
+
+ 13
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation next to another system
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Shrinking a partition and creating a new one for installing UBLinux
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Attention! The selected partition will be modified: the size will be reduced. In the resulting free space, a partition will be created into which the UBLinux OS will be
+installed.
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image2
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Choose a section:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ liststore2
+
+
+
+
+
+ Section
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Free space
+
+
+
+
+
+
+
+ System
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Specify the size of the new partition for UBLinux OS:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ 0
+ adjustment1
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+ - Mb
+ - Gb
+ - Tb
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 14
+
+
+
+
+ True
+ False
+ Installation with Windows
+
+
+ 14
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation options
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Additional installation options
+ 0
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Separate installation of bootloader, system files, user data, etc.
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Attention! The selected OC UBLinux components will be installed
+separately into the selected partition.
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installing GRUB
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Install the GRUB bootloader
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ GRUB update
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Update (reinstall) the GRUB bootloader
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Separate installation
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Installing OS components and user data on different disk partitions
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ OS only
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Installing only OS components without user data
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ True
+ False
+ True
+ True
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ User data only
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Installing only user data without OS components
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ 15
+
+
+
+
+ True
+ False
+ Install with more options
+
+
+ 15
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+ 10
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installing GRUB
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Install the GRUB bootloader
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Choose device:
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 16
+
+
+
+
+ True
+ False
+ GRUB install
+
+
+ 16
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+ 10
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ GRUB update
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Update (reinstall) the GRUB bootloader
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Choose device:
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 17
+
+
+
+
+ True
+ False
+ GRUB update
+
+
+ 17
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+ 10
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Separate installation
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Installing OS components and user data on different disk partitions
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Attention! The UBLinux OS will be installed on the selected partition with Linux OS already installed. All user data will be saved.
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image3
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Choose a section:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ liststore2
+
+
+
+
+
+ Section
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Free space
+
+
+
+
+
+
+
+ System
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 18
+
+
+
+
+ True
+ False
+ Separate installation
+
+
+ 18
+ False
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ Installation parameters
+
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+ 10
+ 5
+
+
+ True
+ False
+ gtk-missing-image
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ OS only
+ 0
+
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ Installing only OS components without user data
+ 0
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ Attention! The UBLinux OS will be installed on the selected partition with Linux OS already installed. All user data will be saved.
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Select device:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image4
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ DevicesList
+ 0
+
+
+
+
+
+ Device
+
+
+
+
+
+
+
+ Mark
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Location
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ Choose a section:
+ 0
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ in
+ 128
+
+
+ True
+ True
+ liststore2
+
+
+
+
+
+ Section
+
+
+
+
+
+
+
+ Capacity
+
+
+
+
+
+
+
+ Free space
+
+
+
+
+
+
+
+ System
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 19
+
+
+
+
+ True
+ False
+ OS only
+
+
+ 19
+ False
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ center
+ 5
+
+
+ Cancel
+ True
+ True
+ image7
+
+
+ False
+ True
+ 0
+
+
+
+
+ Back
+ True
+ False
+ True
+ True
+ image8
+
+
+ False
+ True
+ 1
+
+
+
+
+ Next
+ True
+ True
+ True
+ image9
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ vertical
+ 5
+
+
+ True
+ False
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ label
+
+
+ False
+ True
+ 0
+
+
+
+
+ button
+ True
+ True
+ True
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ label
+
+
+ False
+ True
+ 0
+
+
+
+
+ button
+ True
+ True
+ True
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+
+
+
diff --git a/ubinstall-gtk.pot b/ubinstall-gtk.pot
new file mode 100644
index 0000000..960edf4
--- /dev/null
+++ b/ubinstall-gtk.pot
@@ -0,0 +1,2160 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-06-25 16:43+0600\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: source/ubl-strings.h:1
+msgid "Version:"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid " version:"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Usage:"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "[OPTIONS]"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Options:"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Show this help"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Show package version"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Lock this help menu"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Lock configuration saving"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Lock local configration saving"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Lock global configration saving"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Lock global configration loading"
+msgstr ""
+
+#: source/ubl-strings.h:2
+msgid "Reset application settings"
+msgstr ""
+
+#: source/ubl-strings.h:4
+msgid "ubinstall-gtk"
+msgstr ""
+
+#: source/ubl-strings.h:6
+msgid "Welcome to UBLinux installation"
+msgstr ""
+
+#: source/ubl-strings.h:7
+msgid ""
+"This program will ask you few questions\n"
+"and help you install UBLinux on your computer"
+msgstr ""
+
+#: source/ubl-strings.h:9
+msgid "Keyboard layout"
+msgstr ""
+
+#: source/ubl-strings.h:11
+msgid "Cancel"
+msgstr ""
+
+#: source/ubl-strings.h:12
+msgid "Back"
+msgstr ""
+
+#: source/ubl-strings.h:13
+msgid "Next"
+msgstr ""
+
+#: source/ubl-strings.h:14
+msgid "Welcome"
+msgstr ""
+
+#: source/ubl-strings.h:15
+msgid ""
+"Licence\n"
+"agreement"
+msgstr ""
+
+#: source/ubl-strings.h:16
+msgid "Sections"
+msgstr ""
+
+#: source/ubl-strings.h:17
+msgid "Installation"
+msgstr ""
+
+#: source/ubl-strings.h:18 source/ubl-strings.h:33
+msgid "Location"
+msgstr ""
+
+#: source/ubl-strings.h:19
+msgid "Keyboard"
+msgstr ""
+
+#: source/ubl-strings.h:20
+msgid "Users"
+msgstr ""
+
+#: source/ubl-strings.h:21 source/ubl-strings.h:51
+msgid "Completion"
+msgstr ""
+
+#: source/ubl-strings.h:22
+msgid ""
+"Deleting all data on the selected disk and then installing the UBLinux system"
+msgstr ""
+
+#: source/ubl-strings.h:23
+msgid "Installation next to another system"
+msgstr ""
+
+#: source/ubl-strings.h:24
+msgid "Shrinking a partition and creating a new one for installing UBLinux"
+msgstr ""
+
+#: source/ubl-strings.h:25
+msgid "Installation on the same partition as another system"
+msgstr ""
+
+#: source/ubl-strings.h:26
+msgid "Unpacking the UBLinux file system into an existing system"
+msgstr ""
+
+#: source/ubl-strings.h:27
+msgid ""
+"Selecting additional software to install from the repository via the Internet"
+msgstr ""
+
+#: source/ubl-strings.h:28
+msgid "Chosen"
+msgstr ""
+
+#: source/ubl-strings.h:29
+msgid "Module name"
+msgstr ""
+
+#: source/ubl-strings.h:30
+msgid "Tag"
+msgstr ""
+
+#: source/ubl-strings.h:31
+msgid "Description"
+msgstr ""
+
+#: source/ubl-strings.h:32 source/ubl-strings.h:52
+msgid "Installation completion"
+msgstr ""
+
+#: source/ubl-strings.h:34
+msgid "Region:"
+msgstr ""
+
+#: source/ubl-strings.h:35
+msgid "Zone:"
+msgstr ""
+
+#: source/ubl-strings.h:36
+msgid "Language:"
+msgstr ""
+
+#: source/ubl-strings.h:37
+msgid "Keyboard model:"
+msgstr ""
+
+#: source/ubl-strings.h:38
+msgid "Layout changing:"
+msgstr ""
+
+#: source/ubl-strings.h:39
+msgid "Default layout (ru)"
+msgstr ""
+
+#: source/ubl-strings.h:40
+msgid "Define"
+msgstr ""
+
+#: source/ubl-strings.h:41
+msgid "Your account name:"
+msgstr ""
+
+#: source/ubl-strings.h:42
+msgid "Login:"
+msgstr ""
+
+#: source/ubl-strings.h:43
+msgid "Password"
+msgstr ""
+
+#: source/ubl-strings.h:44
+msgid "Default"
+msgstr ""
+
+#: source/ubl-strings.h:45
+msgid "Set a password"
+msgstr ""
+
+#: source/ubl-strings.h:46
+msgid "Do no set a password"
+msgstr ""
+
+#: source/ubl-strings.h:47
+msgid "Automatic login without password prompt"
+msgstr ""
+
+#: source/ubl-strings.h:48
+msgid "Administrator password (root):"
+msgstr ""
+
+#: source/ubl-strings.h:49
+msgid "Computer name:"
+msgstr ""
+
+#: source/ubl-strings.h:50
+msgid "User"
+msgstr ""
+
+#: source/ubl-strings.h:53
+msgid "Select device:"
+msgstr ""
+
+#: source/ubl-strings.h:54
+msgid "Choose a section:"
+msgstr ""
+
+#: source/ubl-strings.h:55
+msgid ""
+"Attention! The selected partition will be modified: the size will be "
+"reduced. In the resulting free space, a partition will be created into which "
+"the UBLinux OS will be\n"
+"installed."
+msgstr ""
+
+#: source/ubl-strings.h:56
+msgid "Device"
+msgstr ""
+
+#: source/ubl-strings.h:57
+msgid "Mark"
+msgstr ""
+
+#: source/ubl-strings.h:58
+msgid "Size"
+msgstr ""
+
+#: source/ubl-strings.h:59
+msgid "Free"
+msgstr ""
+
+#: source/ubl-strings.h:60
+msgid "Specify the size of the new partition for UBLinux OS:"
+msgstr ""
+
+#: source/ubl-strings.h:61
+msgid "Tb"
+msgstr ""
+
+#: source/ubl-strings.h:62
+msgid "Gb"
+msgstr ""
+
+#: source/ubl-strings.h:63
+msgid "Mb"
+msgstr ""
+
+#: source/ubl-strings.h:64
+msgid "Available languages in the system:"
+msgstr ""
+
+#: source/ubl-strings.h:66
+msgid "Installation parameters"
+msgstr ""
+
+#: source/ubl-strings.h:69
+msgid "Keyboard layout language"
+msgstr ""
+
+#: source/ubl-strings.h:71
+msgid "Region were not fullified"
+msgstr ""
+
+#: source/ubl-strings.h:72
+msgid "Zone were not fullified"
+msgstr ""
+
+#: source/ubl-strings.h:73
+msgid "Languages list is empty"
+msgstr ""
+
+#: source/ubl-strings.h:74
+msgid "System locale hasn't been chosen"
+msgstr ""
+
+#: source/ubl-strings.h:75
+msgid "Manual layouts has been chosen but empty"
+msgstr ""
+
+msgid "Afrikaans"
+msgstr ""
+
+msgid "Arabic"
+msgstr ""
+
+msgid "Assamese"
+msgstr ""
+
+msgid "Azerbaijani"
+msgstr ""
+
+msgid "Belarusian"
+msgstr ""
+
+msgid "Bulgarian"
+msgstr ""
+
+msgid "Bengali"
+msgstr ""
+
+msgid "Bosnian"
+msgstr ""
+
+msgid "Catalan"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Danish"
+msgstr ""
+
+msgid "German"
+msgstr ""
+
+msgid "Greek"
+msgstr ""
+
+msgid "English"
+msgstr ""
+
+msgid "Spanish"
+msgstr ""
+
+msgid "Estonian"
+msgstr ""
+
+msgid "Finnish"
+msgstr ""
+
+msgid "French"
+msgstr ""
+
+msgid "Gujarati"
+msgstr ""
+
+msgid "Hebrew"
+msgstr ""
+
+msgid "Hindi"
+msgstr ""
+
+msgid "Croatian"
+msgstr ""
+
+msgid "Hungarian"
+msgstr ""
+
+msgid "Armenian"
+msgstr ""
+
+msgid "Indonesian"
+msgstr ""
+
+msgid "Icelandic"
+msgstr ""
+
+msgid "Italian"
+msgstr ""
+
+msgid "Japanese"
+msgstr ""
+
+msgid "Georgian"
+msgstr ""
+
+msgid "Kazakh"
+msgstr ""
+
+msgid "Kannada"
+msgstr ""
+
+msgid "Korean"
+msgstr ""
+
+msgid "Kashmiri"
+msgstr ""
+
+msgid "Kurdish"
+msgstr ""
+
+msgid "Kirghiz"
+msgstr ""
+
+msgid "Lithuanian"
+msgstr ""
+
+msgid "Latvian"
+msgstr ""
+
+msgid "Macedonian"
+msgstr ""
+
+msgid "Malayalam"
+msgstr ""
+
+msgid "Marathi"
+msgstr ""
+
+msgid "Malay"
+msgstr ""
+
+msgid "Maltese"
+msgstr ""
+
+msgid "Bokmal"
+msgstr ""
+
+msgid "Dutch"
+msgstr ""
+
+msgid "Nynorsk"
+msgstr ""
+
+msgid "Oriya"
+msgstr ""
+
+msgid "Punjabi"
+msgstr ""
+
+msgid "Polish"
+msgstr ""
+
+msgid "Portuguese"
+msgstr ""
+
+msgid "Romanian"
+msgstr ""
+
+msgid "Russian"
+msgstr ""
+
+msgid "Sanskrit"
+msgstr ""
+
+msgid "Slovak"
+msgstr ""
+
+msgid "Slovenian"
+msgstr ""
+
+msgid "Albanian"
+msgstr ""
+
+msgid "Serbian"
+msgstr ""
+
+msgid "Swedish"
+msgstr ""
+
+msgid "Tamil"
+msgstr ""
+
+msgid "Telugu"
+msgstr ""
+
+msgid "Thai"
+msgstr ""
+
+msgid "Turkish"
+msgstr ""
+
+msgid "Ukrainian"
+msgstr ""
+
+msgid "American"
+msgstr ""
+
+msgid "Vietnamese"
+msgstr ""
+
+msgid "Simplified Chinese"
+msgstr ""
+
+msgid "Traditional Chinese"
+msgstr ""
+
+msgid "Chinese"
+msgstr ""
+
+msgid "Generic 86-key PC"
+msgstr ""
+
+msgid "Generic 101-key PC"
+msgstr ""
+
+msgid "Generic 102-key PC"
+msgstr ""
+
+msgid "Generic 104-key PC"
+msgstr ""
+
+msgid "Generic 104-key PC with L-shaped Enter key"
+msgstr ""
+
+msgid "Generic 105-key PC"
+msgstr ""
+
+msgid "Dell 101-key PC"
+msgstr ""
+
+msgid "Dell Latitude laptop"
+msgstr ""
+
+msgid "Dell Precision M65 laptop"
+msgstr ""
+
+msgid "Dell Inspiron 6000/8000 laptop"
+msgstr ""
+
+msgid "Dell Precision M laptop"
+msgstr ""
+
+msgid "Fujitsu-Siemens Amilo laptop"
+msgstr ""
+
+msgid "Hewlett-Packard Mini 110 laptop"
+msgstr ""
+
+msgid "Asus laptop"
+msgstr ""
+
+msgid "Apple laptop"
+msgstr ""
+
+msgid "eMachines m6800 laptop"
+msgstr ""
+
+msgid "Abidjan"
+msgstr ""
+
+msgid "Accra"
+msgstr ""
+
+msgid "Acre"
+msgstr ""
+
+msgid "Adak"
+msgstr ""
+
+msgid "Addis_Ababa"
+msgstr ""
+
+msgid "Adelaide"
+msgstr ""
+
+msgid "Aden"
+msgstr ""
+
+msgid "Africa"
+msgstr ""
+
+msgid "Alaska"
+msgstr ""
+
+msgid "Aleutian"
+msgstr ""
+
+msgid "Algiers"
+msgstr ""
+
+msgid "Almaty"
+msgstr ""
+
+msgid "America"
+msgstr ""
+
+msgid "Amman"
+msgstr ""
+
+msgid "Amsterdam"
+msgstr ""
+
+msgid "Anadyr"
+msgstr ""
+
+msgid "Anchorage"
+msgstr ""
+
+msgid "Andorra"
+msgstr ""
+
+msgid "Anguilla"
+msgstr ""
+
+msgid "Antananarivo"
+msgstr ""
+
+msgid "Antarctica"
+msgstr ""
+
+msgid "Antigua"
+msgstr ""
+
+msgid "Apia"
+msgstr ""
+
+msgid "Aqtau"
+msgstr ""
+
+msgid "Aqtobe"
+msgstr ""
+
+msgid "Araguaina"
+msgstr ""
+
+msgid "Arctic"
+msgstr ""
+
+msgid "Arizona"
+msgstr ""
+
+msgid "Aruba"
+msgstr ""
+
+msgid "Ashgabat"
+msgstr ""
+
+msgid "Ashkhabad"
+msgstr ""
+
+msgid "Asia"
+msgstr ""
+
+msgid "Asmara"
+msgstr ""
+
+msgid "Asmera"
+msgstr ""
+
+msgid "Astrakhan"
+msgstr ""
+
+msgid "Asuncion"
+msgstr ""
+
+msgid "Athens"
+msgstr ""
+
+msgid "Atikokan"
+msgstr ""
+
+msgid "Atka"
+msgstr ""
+
+msgid "Atlantic"
+msgstr ""
+
+msgid "Atyrau"
+msgstr ""
+
+msgid "Auckland"
+msgstr ""
+
+msgid "Australia"
+msgstr ""
+
+msgid "Azores"
+msgstr ""
+
+msgid "Baghdad"
+msgstr ""
+
+msgid "Bahia"
+msgstr ""
+
+msgid "Bahia_Banderas"
+msgstr ""
+
+msgid "Bahrain"
+msgstr ""
+
+msgid "BajaNorte"
+msgstr ""
+
+msgid "BajaSur"
+msgstr ""
+
+msgid "Baku"
+msgstr ""
+
+msgid "Bamako"
+msgstr ""
+
+msgid "Bangkok"
+msgstr ""
+
+msgid "Bangui"
+msgstr ""
+
+msgid "Banjul"
+msgstr ""
+
+msgid "Barbados"
+msgstr ""
+
+msgid "Barnaul"
+msgstr ""
+
+msgid "Beirut"
+msgstr ""
+
+msgid "Belem"
+msgstr ""
+
+msgid "Belfast"
+msgstr ""
+
+msgid "Belgrade"
+msgstr ""
+
+msgid "Belize"
+msgstr ""
+
+msgid "Berlin"
+msgstr ""
+
+msgid "Bermuda"
+msgstr ""
+
+msgid "Beulah"
+msgstr ""
+
+msgid "Bishkek"
+msgstr ""
+
+msgid "Bissau"
+msgstr ""
+
+msgid "Blanc-Sablon"
+msgstr ""
+
+msgid "Blantyre"
+msgstr ""
+
+msgid "Boa_Vista"
+msgstr ""
+
+msgid "Bogota"
+msgstr ""
+
+msgid "Boise"
+msgstr ""
+
+msgid "Bougainville"
+msgstr ""
+
+msgid "Bratislava"
+msgstr ""
+
+msgid "Brazil"
+msgstr ""
+
+msgid "Brazzaville"
+msgstr ""
+
+msgid "Brisbane"
+msgstr ""
+
+msgid "Broken_Hill"
+msgstr ""
+
+msgid "Brunei"
+msgstr ""
+
+msgid "Brussels"
+msgstr ""
+
+msgid "Bucharest"
+msgstr ""
+
+msgid "Budapest"
+msgstr ""
+
+msgid "Buenos_Aires"
+msgstr ""
+
+msgid "Bujumbura"
+msgstr ""
+
+msgid "Busingen"
+msgstr ""
+
+msgid "Cairo"
+msgstr ""
+
+msgid "Calcutta"
+msgstr ""
+
+msgid "Cambridge_Bay"
+msgstr ""
+
+msgid "Campo_Grande"
+msgstr ""
+
+msgid "Canada"
+msgstr ""
+
+msgid "Canary"
+msgstr ""
+
+msgid "Canberra"
+msgstr ""
+
+msgid "Cancun"
+msgstr ""
+
+msgid "Cape_Vepde"
+msgstr ""
+
+msgid "Cape_Verde"
+msgstr ""
+
+msgid "Caracas"
+msgstr ""
+
+msgid "Casablanca"
+msgstr ""
+
+msgid "Casey"
+msgstr ""
+
+msgid "Catamarca"
+msgstr ""
+
+msgid "Cayenne"
+msgstr ""
+
+msgid "Cayman"
+msgstr ""
+
+msgid "Center"
+msgstr ""
+
+msgid "Central"
+msgstr ""
+
+msgid "Ceuta"
+msgstr ""
+
+msgid "Chagos"
+msgstr ""
+
+msgid "Chatham"
+msgstr ""
+
+msgid "Chicago"
+msgstr ""
+
+msgid "Chihuahua"
+msgstr ""
+
+msgid "Chile"
+msgstr ""
+
+msgid "Chisinau"
+msgstr ""
+
+msgid "Chita"
+msgstr ""
+
+msgid "Choibalsan"
+msgstr ""
+
+msgid "Chongqing"
+msgstr ""
+
+msgid "Christmas"
+msgstr ""
+
+msgid "Chungking"
+msgstr ""
+
+msgid "Chuuk"
+msgstr ""
+
+msgid "Ciudad_Juarez"
+msgstr ""
+
+msgid "Clock"
+msgstr ""
+
+msgid "Close"
+msgstr ""
+
+msgid "Cocos"
+msgstr ""
+
+msgid "Colombo"
+msgstr ""
+
+msgid "ComodRivadavia"
+msgstr ""
+
+msgid "Comoro"
+msgstr ""
+
+msgid "Conakry"
+msgstr ""
+
+msgid "Continental"
+msgstr ""
+
+msgid "Copenhagen"
+msgstr ""
+
+msgid "Coral_Harbour"
+msgstr ""
+
+msgid "Cordoba"
+msgstr ""
+
+msgid "Costa_Rica"
+msgstr ""
+
+msgid "Creston"
+msgstr ""
+
+msgid "Cuiaba"
+msgstr ""
+
+msgid "Curacao"
+msgstr ""
+
+msgid "Currie"
+msgstr ""
+
+msgid "Dacca"
+msgstr ""
+
+msgid "Dakar"
+msgstr ""
+
+msgid "Damascus"
+msgstr ""
+
+msgid "Danmarkshavn"
+msgstr ""
+
+msgid "Dar_es_Salaam"
+msgstr ""
+
+msgid "Darwin"
+msgstr ""
+
+msgid "Davis"
+msgstr ""
+
+msgid "Dawson"
+msgstr ""
+
+msgid "Dawson_Creek"
+msgstr ""
+
+msgid "DeNoronha"
+msgstr ""
+
+
+msgid "Denver"
+msgstr ""
+
+msgid "Detroit"
+msgstr ""
+
+msgid "Dhaka"
+msgstr ""
+
+msgid "Dili"
+msgstr ""
+
+msgid "Djibouti"
+msgstr ""
+
+msgid "Dominica"
+msgstr ""
+
+msgid "Douala"
+msgstr ""
+
+msgid "Dubai"
+msgstr ""
+
+msgid "Dublin"
+msgstr ""
+
+msgid "DumontDUrville"
+msgstr ""
+
+msgid "Dushanbe"
+msgstr ""
+
+msgid "ERROR"
+msgstr ""
+
+msgid "East"
+msgstr ""
+
+msgid "East-Indiana"
+msgstr ""
+
+msgid "Easter"
+msgstr ""
+
+msgid "EasterIsland"
+msgstr ""
+
+msgid "Easterlsland"
+msgstr ""
+
+msgid "Eastern"
+msgstr ""
+
+msgid "Edmonton"
+msgstr ""
+
+msgid "Efate"
+msgstr ""
+
+msgid "Eirunepe"
+msgstr ""
+
+msgid "El_Aaiun"
+msgstr ""
+
+msgid "El_Salvador"
+msgstr ""
+
+msgid "Enderbury"
+msgstr ""
+
+msgid "Ensenada"
+msgstr ""
+
+msgid "Eucla"
+msgstr ""
+
+msgid "Europe"
+msgstr ""
+
+msgid "Faeroe"
+msgstr ""
+
+msgid "Fakaofo"
+msgstr ""
+
+msgid "Famagusta"
+msgstr ""
+
+msgid "Faroe"
+msgstr ""
+
+msgid "Fiji"
+msgstr ""
+
+msgid "Fort_Nelson"
+msgstr ""
+
+msgid "Fort_Wayne"
+msgstr ""
+
+msgid "Fortaleza"
+msgstr ""
+
+msgid "Freetown"
+msgstr ""
+
+msgid "Funafuti"
+msgstr ""
+
+msgid "GMT-1"
+msgstr ""
+
+msgid "GMT-3"
+msgstr ""
+
+msgid "Gaborone"
+msgstr ""
+
+msgid "Galapagos"
+msgstr ""
+
+msgid "Gambier"
+msgstr ""
+
+msgid "Gaza"
+msgstr ""
+
+msgid "General"
+msgstr ""
+
+msgid "Gibraltar"
+msgstr ""
+
+msgid "Glace_Bay"
+msgstr ""
+
+msgid "Godthab"
+msgstr ""
+
+msgid "Goose_Bay"
+msgstr ""
+
+msgid "Grand_Turk"
+msgstr ""
+
+msgid "Greenwich"
+msgstr ""
+
+msgid "Grenada"
+msgstr ""
+
+msgid "Guadalcanal"
+msgstr ""
+
+msgid "Guadeloupe"
+msgstr ""
+
+msgid "Guam"
+msgstr ""
+
+msgid "Guatemala"
+msgstr ""
+
+msgid "Guayaquil"
+msgstr ""
+
+msgid "Guernsey"
+msgstr ""
+
+msgid "Guyana"
+msgstr ""
+
+msgid "Halifax"
+msgstr ""
+
+msgid "Harare"
+msgstr ""
+
+msgid "Harbin"
+msgstr ""
+
+msgid "Havana"
+msgstr ""
+
+msgid "Hawaii"
+msgstr ""
+
+msgid "Hebron"
+msgstr ""
+
+msgid "Helsinki"
+msgstr ""
+
+msgid "Hermosillo"
+msgstr ""
+
+msgid "Ho_Chi_Minh"
+msgstr ""
+
+msgid "Hobart"
+msgstr ""
+
+msgid "Hong_Kong"
+msgstr ""
+
+msgid "Honolulu"
+msgstr ""
+
+msgid "Hovd"
+msgstr ""
+
+msgid "Indian"
+msgstr ""
+
+msgid "Indiana"
+msgstr ""
+
+msgid "Indiana-Starke"
+msgstr ""
+
+msgid "Indianapolis"
+msgstr ""
+
+
+msgid "Inuvik"
+msgstr ""
+
+msgid "Iqaluit"
+msgstr ""
+
+msgid "Irkutsk"
+msgstr ""
+
+msgid "Isle_of_Man"
+msgstr ""
+
+msgid "Istanbul"
+msgstr ""
+
+msgid "Jakarta"
+msgstr ""
+
+msgid "Jamaica"
+msgstr ""
+
+msgid "Jan_Mayen"
+msgstr ""
+
+msgid "Jayapura"
+msgstr ""
+
+msgid "Jersey"
+msgstr ""
+
+msgid "Jerusalem"
+msgstr ""
+
+msgid "Johannesburg"
+msgstr ""
+
+msgid "Johnston"
+msgstr ""
+
+msgid "Juba"
+msgstr ""
+
+msgid "Jujuy"
+msgstr ""
+
+msgid "Juneau"
+msgstr ""
+
+msgid "Kabul"
+msgstr ""
+
+msgid "Kaliningrad"
+msgstr ""
+
+msgid "Kamchatka"
+msgstr ""
+
+msgid "Kampala"
+msgstr ""
+
+msgid "Kanton"
+msgstr ""
+
+msgid "Karachi"
+msgstr ""
+
+msgid "Kashgar"
+msgstr ""
+
+msgid "Kathmandu"
+msgstr ""
+
+msgid "Katmandu"
+msgstr ""
+
+msgid "Kerguelen"
+msgstr ""
+
+msgid "Khandyga"
+msgstr ""
+
+msgid "Khartoum"
+msgstr ""
+
+msgid "Kiev"
+msgstr ""
+
+msgid "Kigali"
+msgstr ""
+
+msgid "Kinshasa"
+msgstr ""
+
+msgid "Kiritimati"
+msgstr ""
+
+msgid "Kirov"
+msgstr ""
+
+msgid "Knox"
+msgstr ""
+
+msgid "Knox_IN"
+msgstr ""
+
+msgid "Kolkata"
+msgstr ""
+
+msgid "Kralendijk"
+msgstr ""
+
+msgid "Krasnoyarsk"
+msgstr ""
+
+msgid "Kuala_Lumpur"
+msgstr ""
+
+msgid "Kuching"
+msgstr ""
+
+msgid "Kuwait"
+msgstr ""
+
+msgid "Kwajalein"
+msgstr ""
+
+msgid "Kyiv"
+msgstr ""
+
+msgid "LHI"
+msgstr ""
+
+msgid "La_Paz"
+msgstr ""
+
+msgid "La_Rioja"
+msgstr ""
+
+msgid "Lagos"
+msgstr ""
+
+msgid "Libreville"
+msgstr ""
+
+msgid "Lima"
+msgstr ""
+
+msgid "Lindeman"
+msgstr ""
+
+msgid "Lisbon"
+msgstr ""
+
+msgid "Ljubljana"
+msgstr ""
+
+msgid "Lome"
+msgstr ""
+
+msgid "London"
+msgstr ""
+
+msgid "Longyearbyen"
+msgstr ""
+
+msgid "Lord_Howe"
+msgstr ""
+
+msgid "Los_Angeles"
+msgstr ""
+
+msgid "Louisville"
+msgstr ""
+
+msgid "Lower_Princes"
+msgstr ""
+
+msgid "Luanda"
+msgstr ""
+
+msgid "Lubumbashi"
+msgstr ""
+
+msgid "Lusaka"
+msgstr ""
+
+msgid "Luxembourg"
+msgstr ""
+
+msgid "Macao"
+msgstr ""
+
+msgid "Macau"
+msgstr ""
+
+msgid "Maceio"
+msgstr ""
+
+msgid "Macquarie"
+msgstr ""
+
+msgid "Madeira"
+msgstr ""
+
+msgid "Madrid"
+msgstr ""
+
+msgid "Magadan"
+msgstr ""
+
+msgid "Mahe"
+msgstr ""
+
+msgid "Majuro"
+msgstr ""
+
+msgid "Makassar"
+msgstr ""
+
+msgid "Malabo"
+msgstr ""
+
+msgid "Maldives"
+msgstr ""
+
+msgid "Malta"
+msgstr ""
+
+msgid "Managua"
+msgstr ""
+
+msgid "Manaus"
+msgstr ""
+
+msgid "Manila"
+msgstr ""
+
+msgid "Maputo"
+msgstr ""
+
+msgid "Marengo"
+msgstr ""
+
+msgid "Mariehamn"
+msgstr ""
+
+msgid "Marigot"
+msgstr ""
+
+msgid "Marquesas"
+msgstr ""
+
+msgid "Martinique"
+msgstr ""
+
+msgid "Maseru"
+msgstr ""
+
+msgid "Matamoros"
+msgstr ""
+
+msgid "Mauritius"
+msgstr ""
+
+msgid "Mawson"
+msgstr ""
+
+msgid "Mayotte"
+msgstr ""
+
+msgid "Mazatlan"
+msgstr ""
+
+msgid "Mbabane"
+msgstr ""
+
+msgid "McMurdo"
+msgstr ""
+
+msgid "Melbourne"
+msgstr ""
+
+msgid "Mendoza"
+msgstr ""
+
+msgid "Menominee"
+msgstr ""
+
+msgid "Merida"
+msgstr ""
+
+msgid "Metlakatla"
+msgstr ""
+
+msgid "Mexico"
+msgstr ""
+
+msgid "Mexico_City"
+msgstr ""
+
+msgid "Michigan"
+msgstr ""
+
+msgid "Midway"
+msgstr ""
+
+msgid "Minsk"
+msgstr ""
+
+msgid "Minutes"
+msgstr ""
+
+msgid "Miquelon"
+msgstr ""
+
+msgid "Mogadishu"
+msgstr ""
+
+msgid "Monaco"
+msgstr ""
+
+msgid "Moncton"
+msgstr ""
+
+msgid "Monrovia"
+msgstr ""
+
+msgid "Monterrey"
+msgstr ""
+
+msgid "Montevideo"
+msgstr ""
+
+msgid "Monticello"
+msgstr ""
+
+msgid "Montreal"
+msgstr ""
+
+msgid "Montserrat"
+msgstr ""
+
+msgid "Moscow"
+msgstr ""
+
+msgid "Mountain"
+msgstr ""
+
+msgid "Muscat"
+msgstr ""
+
+msgid "NSW"
+msgstr ""
+
+msgid "Nairobi"
+msgstr ""
+
+msgid "Nassau"
+msgstr ""
+
+msgid "Nauru"
+msgstr ""
+
+msgid "Ndjamena"
+msgstr ""
+
+msgid "New_Salem"
+msgstr ""
+
+msgid "New_York"
+msgstr ""
+
+msgid "Newfoundland"
+msgstr ""
+
+msgid "Niamey"
+msgstr ""
+
+msgid "Nicosia"
+msgstr ""
+
+msgid "Nipigon"
+msgstr ""
+
+msgid "Niue"
+msgstr ""
+
+msgid "Nome"
+msgstr ""
+
+msgid "Norfolk"
+msgstr ""
+
+msgid "Noronha"
+msgstr ""
+
+msgid "North"
+msgstr ""
+
+msgid "North_Dokota"
+msgstr ""
+
+msgid "Nouakchott"
+msgstr ""
+
+msgid "Noumea"
+msgstr ""
+
+msgid "Novokuznetsk"
+msgstr ""
+
+msgid "Novosibirsk"
+msgstr ""
+
+msgid "Nuuk"
+msgstr ""
+
+msgid "OK"
+msgstr ""
+
+msgid "Ojinaga"
+msgstr ""
+
+msgid "Omsk"
+msgstr ""
+
+msgid "Oral"
+msgstr ""
+
+msgid "Oslo"
+msgstr ""
+
+msgid "Ouagadougou"
+msgstr ""
+
+msgid "Pacific"
+msgstr ""
+
+msgid "Pago_Pago"
+msgstr ""
+
+msgid "Palau"
+msgstr ""
+
+msgid "Palmer"
+msgstr ""
+
+msgid "Panama"
+msgstr ""
+
+msgid "Pangnirtung"
+msgstr ""
+
+msgid "Paramaribo"
+msgstr ""
+
+msgid "Paris"
+msgstr ""
+
+msgid "Perth"
+msgstr ""
+
+msgid "Petersburg"
+msgstr ""
+
+msgid "Phnom_Penh"
+msgstr ""
+
+msgid "Phoenix"
+msgstr ""
+
+msgid "Pitcairn"
+msgstr ""
+
+msgid "Podgorica"
+msgstr ""
+
+msgid "Pohnpei"
+msgstr ""
+
+msgid "Ponape"
+msgstr ""
+
+msgid "Pontianak"
+msgstr ""
+
+msgid "Port-au-Prince"
+msgstr ""
+
+msgid "Port_Moresby"
+msgstr ""
+
+msgid "Port_of_Spain"
+msgstr ""
+
+msgid "Porto-Novo"
+msgstr ""
+
+msgid "Porto_Acre"
+msgstr ""
+
+msgid "Porto_Velho"
+msgstr ""
+
+msgid "Prague"
+msgstr ""
+
+msgid "Puerto_Rico"
+msgstr ""
+
+msgid "Punta_Arenas"
+msgstr ""
+
+msgid "Pyongyang"
+msgstr ""
+
+msgid "Qatar"
+msgstr ""
+
+msgid "Qostanay"
+msgstr ""
+
+msgid "Queensland"
+msgstr ""
+
+msgid "Qyzylorda"
+msgstr ""
+
+msgid "Rainy_River"
+msgstr ""
+
+msgid "Rangoon"
+msgstr ""
+
+msgid "Rankin_Inlet"
+msgstr ""
+
+msgid "Rarotonga"
+msgstr ""
+
+msgid "Recife"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
+msgid "Resolute"
+msgstr ""
+
+msgid "Reunion"
+msgstr ""
+
+msgid "Reykjavik"
+msgstr ""
+
+msgid "Riga"
+msgstr ""
+
+msgid "Rio_Branco"
+msgstr ""
+
+msgid "Rio_Gallegos"
+msgstr ""
+
+msgid "Riyadh"
+msgstr ""
+
+msgid "Rome"
+msgstr ""
+
+msgid "Rosario"
+msgstr ""
+
+msgid "Rothera"
+msgstr ""
+
+msgid "Saigon"
+msgstr ""
+
+msgid "Saipan"
+msgstr ""
+
+msgid "Sakhalin"
+msgstr ""
+
+msgid "Salta"
+msgstr ""
+
+msgid "Samara"
+msgstr ""
+
+msgid "Samarkand"
+msgstr ""
+
+msgid "Samoa"
+msgstr ""
+
+msgid "San_Juan"
+msgstr ""
+
+msgid "San_Luis"
+msgstr ""
+
+msgid "San_Marino"
+msgstr ""
+
+msgid "Santa_Isabel"
+msgstr ""
+
+msgid "Santarem"
+msgstr ""
+
+msgid "Santiago"
+msgstr ""
+
+msgid "Santo_Domingo"
+msgstr ""
+
+msgid "Sao_Paulo"
+msgstr ""
+
+msgid "Sao_Tome"
+msgstr ""
+
+msgid "Sarajevo"
+msgstr ""
+
+msgid "Saratov"
+msgstr ""
+
+msgid "Saskatchewan"
+msgstr ""
+
+msgid "Scoresbysund"
+msgstr ""
+
+msgid "Seoul"
+msgstr ""
+
+msgid "Shanghai"
+msgstr ""
+
+msgid "Shiprock"
+msgstr ""
+
+msgid "Simferopol"
+msgstr ""
+
+msgid "Singapore"
+msgstr ""
+
+msgid "Sitka"
+msgstr ""
+
+msgid "Skopje"
+msgstr ""
+
+msgid "Sofia"
+msgstr ""
+
+msgid "South"
+msgstr ""
+
+msgid "South_Georgia"
+msgstr ""
+
+msgid "South_Pole"
+msgstr ""
+
+msgid "Srednekolymsk"
+msgstr ""
+
+msgid "St_Barthelemy"
+msgstr ""
+
+msgid "St_Helena"
+msgstr ""
+
+msgid "St_Johns"
+msgstr ""
+
+msgid "St_Kitts"
+msgstr ""
+
+msgid "St_Lucia"
+msgstr ""
+
+msgid "St_Thomas"
+msgstr ""
+
+msgid "St_Vincent"
+msgstr ""
+
+msgid "Stanley"
+msgstr ""
+
+msgid "Stockholm"
+msgstr ""
+
+msgid "Swift_Current"
+msgstr ""
+
+msgid "Sydney"
+msgstr ""
+
+msgid "Syowa"
+msgstr ""
+
+msgid "Tahiti"
+msgstr ""
+
+msgid "Taipei"
+msgstr ""
+
+msgid "Tallinn"
+msgstr ""
+
+msgid "Tarawa"
+msgstr ""
+
+msgid "Tashkent"
+msgstr ""
+
+msgid "Tasmania"
+msgstr ""
+
+msgid "Tbilisi"
+msgstr ""
+
+msgid "Tegucigalpa"
+msgstr ""
+
+msgid "Tehran"
+msgstr ""
+
+msgid "Tel_Aviv"
+msgstr ""
+
+msgid "Tell_City"
+msgstr ""
+
+msgid "Thimbu"
+msgstr ""
+
+msgid "Thimphu"
+msgstr ""
+
+msgid "Thule"
+msgstr ""
+
+msgid "Thunder_Bay"
+msgstr ""
+
+msgid "Tijuana"
+msgstr ""
+
+msgid "Timbuktu"
+msgstr ""
+
+msgid "Tirane"
+msgstr ""
+
+msgid "Tiraspol"
+msgstr ""
+
+msgid "Tokyo"
+msgstr ""
+
+msgid "Tomsk"
+msgstr ""
+
+msgid "Tongatapu"
+msgstr ""
+
+msgid "Toronto"
+msgstr ""
+
+msgid "Tortola"
+msgstr ""
+
+msgid "Tripoli"
+msgstr ""
+
+msgid "Troll"
+msgstr ""
+
+msgid "Truk"
+msgstr ""
+
+msgid "Tucuman"
+msgstr ""
+
+msgid "Tunis"
+msgstr ""
+
+msgid "US"
+msgstr ""
+
+msgid "Ujung_Pandang"
+msgstr ""
+
+msgid "Ulaanbaatar"
+msgstr ""
+
+msgid "Ulan_Bator"
+msgstr ""
+
+msgid "Ulyanovsk"
+msgstr ""
+
+msgid "Universal"
+msgstr ""
+
+msgid "Urumqi"
+msgstr ""
+
+msgid "Ushuaia"
+msgstr ""
+
+msgid "Ust-Nera"
+msgstr ""
+
+msgid "Uzhgorod"
+msgstr ""
+
+msgid "Vaduz"
+msgstr ""
+
+msgid "Vancouver"
+msgstr ""
+
+msgid "Vatican"
+msgstr ""
+
+msgid "Vevay"
+msgstr ""
+
+msgid "Victoria"
+msgstr ""
+
+msgid "Vienna"
+msgstr ""
+
+msgid "Vientiane"
+msgstr ""
+
+msgid "Vilnius"
+msgstr ""
+
+msgid "Vincennes"
+msgstr ""
+
+msgid "Virgin"
+msgstr ""
+
+msgid "Vladivostok"
+msgstr ""
+
+msgid "Volgograd"
+msgstr ""
+
+msgid "Vostok"
+msgstr ""
+
+msgid "Wake"
+msgstr ""
+
+msgid "Wallis"
+msgstr ""
+
+msgid "Warsaw"
+msgstr ""
+
+msgid "West"
+msgstr ""
+
+msgid "Whitehorse"
+msgstr ""
+
+msgid "Winamac"
+msgstr ""
+
+msgid "Windhoek"
+msgstr ""
+
+msgid "Winnipeg"
+msgstr ""
+
+msgid "Yakutat"
+msgstr ""
+
+msgid "Yakutsk"
+msgstr ""
+
+msgid "Yancowinna"
+msgstr ""
+
+msgid "Yangon"
+msgstr ""
+
+msgid "Yap"
+msgstr ""
+
+msgid "Yekaterinburg"
+msgstr ""
+
+msgid "Yellowknife"
+msgstr ""
+
+msgid "Yerevan"
+msgstr ""
+
+msgid "Yukon"
+msgstr ""
+
+msgid "Zagreb"
+msgstr ""
+
+msgid "Zaporozhye"
+msgstr ""
+
+msgid "Zulu"
+msgstr ""
+
+msgid "Zurich"
+msgstr ""
\ No newline at end of file
diff --git a/ubinstall-gtk3 b/ubinstall-gtk3
new file mode 100755
index 0000000..f89d5cc
Binary files /dev/null and b/ubinstall-gtk3 differ
diff --git a/ubinstall-gtk_ru.po b/ubinstall-gtk_ru.po
new file mode 100644
index 0000000..64cbbb3
--- /dev/null
+++ b/ubinstall-gtk_ru.po
@@ -0,0 +1,2146 @@
+# Language translations for ubinstal package.
+# Copyright (C) 2022, UBTech LLC
+# This file is distributed under the same license as the ubinstal package.
+# UBLinux Team , 2022
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: ubinstal 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-06-25 16:43+0600\n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: source/ubl-strings.h:1
+msgid "Version:"
+msgstr "Версия:"
+
+#: source/ubl-strings.h:2
+msgid " version:"
+msgstr " версия:"
+
+#: source/ubl-strings.h:2
+msgid "Usage:"
+msgstr "Использование:"
+
+#: source/ubl-strings.h:2
+msgid "[OPTIONS]"
+msgstr "[ОПЦИИ]"
+
+#: source/ubl-strings.h:2
+msgid "Options:"
+msgstr "Опции:"
+
+#: source/ubl-strings.h:2
+msgid "Show this help"
+msgstr "Показать эту подсказку"
+
+#: source/ubl-strings.h:2
+msgid "Show package version"
+msgstr "Показать версию пакета"
+
+#: source/ubl-strings.h:2
+msgid "Lock this help menu"
+msgstr "Залокировать эту подсазку"
+
+#: source/ubl-strings.h:2
+msgid "Lock configuration saving"
+msgstr "Заблокировать сохранение конфигурации"
+
+#: source/ubl-strings.h:2
+msgid "Lock local configration saving"
+msgstr "Заблокировать сохранение в локальную конфигурацию"
+
+#: source/ubl-strings.h:2
+msgid "Lock global configration saving"
+msgstr "Заблокировать сохранение в глобальную конфигурацию"
+
+#: source/ubl-strings.h:2
+msgid "Lock global configration loading"
+msgstr "Заблокировать загрузку глобальной конфигурации"
+
+#: source/ubl-strings.h:2
+msgid "Reset application settings"
+msgstr "Удалить конфигурацию прилодения"
+
+#: source/ubl-strings.h:4
+msgid "ubinstall-gtk"
+msgstr "Программа установки UBLinux"
+
+#: source/ubl-strings.h:6
+msgid "Welcome to UBLinux installation"
+msgstr "Добро пожаловать в установку UBLinux"
+
+#: source/ubl-strings.h:7
+msgid ""
+"This program will ask you few questions\n"
+"and help you install UBLinux on your computer"
+msgstr ""
+"Эта программа задаст вам несколько вопросов\n"
+"и поможет установить UBLinux на ваш компьютер"
+
+#: source/ubl-strings.h:9
+#, fuzzy
+msgid "Keyboard layout"
+msgstr "Раскладка клавиатуры"
+
+#: source/ubl-strings.h:11
+msgid "Cancel"
+msgstr "Отмена"
+
+#: source/ubl-strings.h:12
+msgid "Back"
+msgstr "Назад"
+
+#: source/ubl-strings.h:13
+msgid "Next"
+msgstr "Далее"
+
+#: source/ubl-strings.h:14
+msgid "Welcome"
+msgstr ""
+"Добро\n"
+"пожаловать"
+
+#: source/ubl-strings.h:15
+msgid ""
+"Licence\n"
+"agreement"
+msgstr ""
+"Лицензионное\n"
+"соглашение"
+
+#: source/ubl-strings.h:16
+msgid "Sections"
+msgstr "Разделы"
+
+#: source/ubl-strings.h:17
+msgid "Installation"
+msgstr "Установить"
+
+#: source/ubl-strings.h:18 source/ubl-strings.h:33
+msgid "Location"
+msgstr "Местоположение"
+
+#: source/ubl-strings.h:19
+msgid "Keyboard"
+msgstr "Клавиатура"
+
+#: source/ubl-strings.h:20
+msgid "Users"
+msgstr "Пользователи"
+
+#: source/ubl-strings.h:21 source/ubl-strings.h:51
+msgid "Completion"
+msgstr "Завершение"
+
+#: source/ubl-strings.h:22
+msgid ""
+"Deleting all data on the selected disk and then installing the UBLinux system"
+msgstr ""
+"Удаление всех данных на выбранном диске с последующей установкой системы "
+"UBLinux"
+
+#: source/ubl-strings.h:23
+msgid "Installation next to another system"
+msgstr "Установка рядом с другой системой"
+
+#: source/ubl-strings.h:24
+msgid "Shrinking a partition and creating a new one for installing UBLinux"
+msgstr "Уменьшение раздела и создание нового для установки UBLinux"
+
+#: source/ubl-strings.h:25
+msgid "Installation on the same partition as another system"
+msgstr "Установка в раздел другой системы"
+
+#: source/ubl-strings.h:26
+msgid "Unpacking the UBLinux file system into an existing system"
+msgstr "Установить систему UBLinux в уже существующую систему"
+
+#: source/ubl-strings.h:27
+msgid ""
+"Selecting additional software to install from the repository via the Internet"
+msgstr ""
+"Выбор дополнительного ПО для установки из репозитория через сеть Интернет"
+
+#: source/ubl-strings.h:28
+msgid "Chosen"
+msgstr "Выбран"
+
+#: source/ubl-strings.h:29
+msgid "Module name"
+msgstr "Название модуля"
+
+#: source/ubl-strings.h:30
+msgid "Tag"
+msgstr "Тэг"
+
+#: source/ubl-strings.h:31
+msgid "Description"
+msgstr "Описание"
+
+#: source/ubl-strings.h:32 source/ubl-strings.h:52
+msgid "Installation completion"
+msgstr "Завершение установки"
+
+#: source/ubl-strings.h:34
+msgid "Region:"
+msgstr "Регион:"
+
+#: source/ubl-strings.h:35
+msgid "Zone:"
+msgstr "Зона:"
+
+#: source/ubl-strings.h:36
+msgid "Language:"
+msgstr "Язык:"
+
+#: source/ubl-strings.h:37
+msgid "Keyboard model:"
+msgstr "Модель клавиатуры:"
+
+#: source/ubl-strings.h:38
+msgid "Layout changing:"
+msgstr "Переключение раскладки:"
+
+#: source/ubl-strings.h:39
+msgid "Default layout (ru)"
+msgstr "Раскладка по умолчанию (ru)"
+
+#: source/ubl-strings.h:40
+msgid "Define"
+msgstr "Задать"
+
+#: source/ubl-strings.h:41
+msgid "Your account name:"
+msgstr "Имя аккаунта:"
+
+#: source/ubl-strings.h:42
+msgid "Login:"
+msgstr "Логин:"
+
+#: source/ubl-strings.h:43
+msgid "Password"
+msgstr "Пароль"
+
+#: source/ubl-strings.h:44
+msgid "Default"
+msgstr "По умолчанию"
+
+#: source/ubl-strings.h:45
+msgid "Set a password"
+msgstr "Введите пароль"
+
+#: source/ubl-strings.h:46
+msgid "Do no set a password"
+msgstr "Пароль не требуется"
+
+#: source/ubl-strings.h:47
+msgid "Automatic login without password prompt"
+msgstr "Автоматический вход в систему без запроса пароля"
+
+#: source/ubl-strings.h:48
+msgid "Administrator password (root):"
+msgstr "Пароль администратора (root):"
+
+#: source/ubl-strings.h:49
+msgid "Computer name:"
+msgstr "Имя компьютера"
+
+#: source/ubl-strings.h:50
+msgid "User"
+msgstr "Пользователь"
+
+#: source/ubl-strings.h:53
+msgid "Select device:"
+msgstr "Выберите устройство хранения:"
+
+#: source/ubl-strings.h:54
+msgid "Choose a section:"
+msgstr "Выберите раздел:"
+
+#: source/ubl-strings.h:55
+msgid ""
+"Attention! The selected partition will be modified: the size will be "
+"reduced. In the resulting free space, a partition will be created into which "
+"the UBLinux OS will be\n"
+"installed."
+msgstr ""
+"Внимание! Выбранный раздел будет модифицирован: размер будет уменьшен. В "
+"полученном свободном пространстве будет создан раздел, в который будет "
+"произведена установка ОС UBLinux"
+
+#: source/ubl-strings.h:56
+msgid "Device"
+msgstr "Устройство"
+
+#: source/ubl-strings.h:57
+msgid "Mark"
+msgstr "Метка"
+
+#: source/ubl-strings.h:58
+msgid "Size"
+msgstr "Размер"
+
+#: source/ubl-strings.h:59
+msgid "Free"
+msgstr "Свободно"
+
+#: source/ubl-strings.h:60
+msgid "Specify the size of the new partition for UBLinux OS:"
+msgstr "Укажите размер нового раздела для ОС UBLinux:"
+
+#: source/ubl-strings.h:61
+msgid "Tb"
+msgstr "Тб"
+
+#: source/ubl-strings.h:62
+msgid "Gb"
+msgstr "Гб"
+
+#: source/ubl-strings.h:63
+msgid "Mb"
+msgstr "Мб"
+
+#: source/ubl-strings.h:64
+msgid "Available languages in the system:"
+msgstr "Доступные языки в системе:"
+
+#: source/ubl-strings.h:66
+msgid "Installation parameters"
+msgstr "Параметры установки"
+
+#: source/ubl-strings.h:69
+#, fuzzy
+msgid "Keyboard layout language"
+msgstr "Раскладка клавиатуры"
+
+#: source/ubl-strings.h:71
+msgid "Region were not fullified"
+msgstr "Регион не был выбран"
+
+#: source/ubl-strings.h:72
+msgid "Zone were not fullified"
+msgstr "Зона не была выбрана"
+
+#: source/ubl-strings.h:73
+msgid "Languages list is empty"
+msgstr "Список доступных языков не был заполнен"
+
+#: source/ubl-strings.h:74
+msgid "System locale hasn't been chosen"
+msgstr "Язык системы не был выбран"
+
+#: source/ubl-strings.h:75
+msgid "Manual layouts has been chosen but empty"
+msgstr "Ручной выбор списка раскладок клавиатуры выбран, но список пуст"
+
+msgid "Afrikaans"
+msgstr "Африканский"
+
+msgid "Arabic"
+msgstr "Арабский"
+
+msgid "Assamese"
+msgstr "Ассамский"
+
+msgid "Azerbaijani"
+msgstr "Азербайджанский"
+
+msgid "Belarusian"
+msgstr "Беларусский"
+
+msgid "Bulgarian"
+msgstr "Болгарский"
+
+msgid "Bengali"
+msgstr "Бенгальский"
+
+msgid "Bosnian"
+msgstr "Боснийский"
+
+msgid "Catalan"
+msgstr "Каталонский"
+
+msgid "Czech"
+msgstr "Чешский"
+
+msgid "Danish"
+msgstr "Датский"
+
+msgid "German"
+msgstr "Немецкий"
+
+msgid "Greek"
+msgstr "Греческий"
+
+msgid "English"
+msgstr "Английский"
+
+msgid "Spanish"
+msgstr "Испанский"
+
+msgid "Estonian"
+msgstr "Эстонский"
+
+msgid "Finnish"
+msgstr "Финский"
+
+msgid "French"
+msgstr "Французский"
+
+msgid "Gujarati"
+msgstr "Гуджаратский"
+
+msgid "Hebrew"
+msgstr "Иврит"
+
+msgid "Hindi"
+msgstr "Хинди"
+
+msgid "Croatian"
+msgstr "Хорватский"
+
+msgid "Hungarian"
+msgstr "Венгерский"
+
+msgid "Armenian"
+msgstr "Армянский"
+
+msgid "Indonesian"
+msgstr "Индонезийский"
+
+msgid "Icelandic"
+msgstr "Исландский"
+
+msgid "Italian"
+msgstr "Итальянский"
+
+msgid "Japanese"
+msgstr "Японский"
+
+msgid "Georgian"
+msgstr "Грузинский"
+
+msgid "Kazakh"
+msgstr "Казахский"
+
+msgid "Kannada"
+msgstr "Каннада"
+
+msgid "Korean"
+msgstr "Корейский"
+
+msgid "Kashmiri"
+msgstr "Кашмирский"
+
+msgid "Kurdish"
+msgstr "Курдский"
+
+msgid "Kirghiz"
+msgstr "Киргизский"
+
+msgid "Lithuanian"
+msgstr "Литовский"
+
+msgid "Latvian"
+msgstr "Латышский"
+
+msgid "Macedonian"
+msgstr "Македонский"
+
+msgid "Malayalam"
+msgstr "Малаялам"
+
+msgid "Marathi"
+msgstr "Маратхи"
+
+msgid "Malay"
+msgstr "Малайский"
+
+msgid "Maltese"
+msgstr "Мальтийский"
+
+msgid "Bokmal"
+msgstr "Букмол"
+
+msgid "Dutch"
+msgstr "Нидерландский"
+
+msgid "Nynorsk"
+msgstr "Норвежский"
+
+msgid "Oriya"
+msgstr "Ория"
+
+msgid "Punjabi"
+msgstr "Панджаби"
+
+msgid "Polish"
+msgstr "Польский"
+
+msgid "Portuguese"
+msgstr "Португальский"
+
+msgid "Romanian"
+msgstr "Румынский"
+
+msgid "Russian"
+msgstr "Русский"
+
+msgid "Sanskrit"
+msgstr "Санскрит"
+
+msgid "Slovak"
+msgstr "Словацкий"
+
+msgid "Slovenian"
+msgstr "Словенский"
+
+msgid "Albanian"
+msgstr "Албанский"
+
+msgid "Serbian"
+msgstr "Сербский"
+
+msgid "Swedish"
+msgstr "Шведский"
+
+msgid "Tamil"
+msgstr "Тамильский"
+
+msgid "Telugu"
+msgstr "Тулугу"
+
+msgid "Thai"
+msgstr "Тайский"
+
+msgid "Turkish"
+msgstr "Турецкий"
+
+msgid "Ukrainian"
+msgstr "Украинский"
+
+msgid "American"
+msgstr "Американский английский"
+
+msgid "Vietnamese"
+msgstr "Вьетнамский"
+
+msgid "Simplified Chinese"
+msgstr "Упрощённый Китайский"
+
+msgid "Traditional Chinese"
+msgstr "Традиционный Китайский"
+
+msgid "Chinese"
+msgstr "Китайский"
+
+msgid "Generic 86-key PC"
+msgstr "Обычная 86-клавишная"
+
+msgid "Generic 101-key PC"
+msgstr "Обычная 101-клавишная"
+
+msgid "Generic 102-key PC"
+msgstr "Обычная 102-клавишная"
+
+msgid "Generic 104-key PC"
+msgstr "Обычная 104-клавишная"
+
+msgid "Generic 104-key PC with L-shaped Enter key"
+msgstr "Обычная 104-клавишная (Enter в форме буквы L)"
+
+msgid "Generic 105-key PC"
+msgstr "Обычная 105-клавишная"
+
+msgid "Dell 101-key PC"
+msgstr "Обычная 101-клавишная"
+
+msgid "Abidjan"
+msgstr "Абиджан"
+
+msgid "Accra"
+msgstr "Аккра"
+
+msgid "Acre"
+msgstr "Акр"
+
+msgid "Adak"
+msgstr "Адак"
+
+msgid "Addis_Ababa"
+msgstr "Аддис-Абеба"
+
+msgid "Adelaide"
+msgstr "Аделаида"
+
+msgid "Aden"
+msgstr "Аден"
+
+msgid "Africa"
+msgstr "Африка"
+
+msgid "Alaska"
+msgstr "Аляска"
+
+msgid "Aleutian"
+msgstr "Алеутский"
+
+msgid "Algiers"
+msgstr "Алжир"
+
+msgid "Almaty"
+msgstr "Алматы"
+
+msgid "America"
+msgstr "Америка"
+
+msgid "Amman"
+msgstr "Амман"
+
+msgid "Amsterdam"
+msgstr "Амстердам"
+
+msgid "Anadyr"
+msgstr "Анадырь"
+
+msgid "Anchorage"
+msgstr "Анкоридж"
+
+msgid "Andorra"
+msgstr "Андорра"
+
+msgid "Anguilla"
+msgstr "Ангилья"
+
+msgid "Antananarivo"
+msgstr "Антананариву"
+
+msgid "Antarctica"
+msgstr "Антарктида"
+
+msgid "Antigua"
+msgstr "Антигуа"
+
+msgid "Apia"
+msgstr "Апиа"
+
+msgid "Aqtau"
+msgstr "Актау"
+
+msgid "Aqtobe"
+msgstr "Актобе"
+
+msgid "Araguaina"
+msgstr "Арагуайна"
+
+msgid "Arctic"
+msgstr "Арктика"
+
+msgid "Arizona"
+msgstr "Аризона"
+
+msgid "Aruba"
+msgstr "Аруба"
+
+msgid "Ashgabat"
+msgstr "Ашхабад"
+
+msgid "Ashkhabad"
+msgstr "Ашхабад"
+
+msgid "Asia"
+msgstr "Азия"
+
+msgid "Asmara"
+msgstr "Асмэра"
+
+msgid "Asmera"
+msgstr "Асмера"
+
+msgid "Astrakhan"
+msgstr "Астрахань"
+
+msgid "Asuncion"
+msgstr "Асунсьон"
+
+msgid "Athens"
+msgstr "Афины"
+
+msgid "Atikokan"
+msgstr "Атикокан"
+
+msgid "Atka"
+msgstr "Атка"
+
+msgid "Atlantic"
+msgstr "Атлантика"
+
+msgid "Atyrau"
+msgstr "Атырау"
+
+msgid "Auckland"
+msgstr "Окленд"
+
+msgid "Australia"
+msgstr "Австралия"
+
+msgid "Azores"
+msgstr "Азорские острова"
+
+msgid "Baghdad"
+msgstr "Багдад"
+
+msgid "Bahia"
+msgstr "Баия"
+
+msgid "Bahia_Banderas"
+msgstr "Баия_Бандерас"
+
+msgid "Bahrain"
+msgstr "Бахрейн"
+
+msgid "BajaNorte"
+msgstr "БахаНорте"
+
+msgid "BajaSur"
+msgstr "Южная Нижняя Калифорния"
+
+msgid "Baku"
+msgstr "Баку"
+
+msgid "Bamako"
+msgstr "Бамако"
+
+msgid "Bangkok"
+msgstr "Бангкок"
+
+msgid "Bangui"
+msgstr "Банги"
+
+msgid "Banjul"
+msgstr "Банжул"
+
+msgid "Barbados"
+msgstr "Барбадос"
+
+msgid "Barnaul"
+msgstr "Барнаул"
+
+msgid "Beirut"
+msgstr "Бейрут"
+
+msgid "Belem"
+msgstr "Белен"
+
+msgid "Belfast"
+msgstr "Белфаст"
+
+msgid "Belgrade"
+msgstr "Белград"
+
+msgid "Belize"
+msgstr "Белиз"
+
+msgid "Berlin"
+msgstr "Берлин"
+
+msgid "Bermuda"
+msgstr "Бермуды"
+
+msgid "Beulah"
+msgstr "Беула"
+
+msgid "Bishkek"
+msgstr "Бишкек"
+
+msgid "Bissau"
+msgstr "Бисау"
+
+msgid "Blanc-Sablon"
+msgstr "Блан-Саблон"
+
+msgid "Blantyre"
+msgstr "Блантайр"
+
+msgid "Boa_Vista"
+msgstr "Боа_Виста"
+
+msgid "Bogota"
+msgstr "Богота"
+
+msgid "Boise"
+msgstr "Бойсе"
+
+msgid "Bougainville"
+msgstr "Бугенвиль"
+
+msgid "Bratislava"
+msgstr "Братислава"
+
+msgid "Brazil"
+msgstr "Бразилия"
+
+msgid "Brazzaville"
+msgstr "Браззавиль"
+
+msgid "Brisbane"
+msgstr "Брисбен"
+
+msgid "Broken_Hill"
+msgstr "Брокен-Хилл"
+
+msgid "Brunei"
+msgstr "Бруней"
+
+msgid "Brussels"
+msgstr "Брюссель"
+
+msgid "Bucharest"
+msgstr "Бухарест"
+
+msgid "Budapest"
+msgstr "Будапешт"
+
+msgid "Buenos_Aires"
+msgstr "Буэнос Айрес"
+
+msgid "Bujumbura"
+msgstr "Бужумбура"
+
+msgid "Busingen"
+msgstr "Бузинген"
+
+msgid "Cairo"
+msgstr "Каир"
+
+msgid "Calcutta"
+msgstr "Калькутта"
+
+msgid "Cambridge_Bay"
+msgstr "Кембридж Бэй"
+
+msgid "Campo_Grande"
+msgstr "Кампо_Гранде"
+
+msgid "Canada"
+msgstr "Канада"
+
+msgid "Canary"
+msgstr "Канари"
+
+msgid "Canberra"
+msgstr "Канберра"
+
+msgid "Cancun"
+msgstr "Канкун"
+
+msgid "Cape_Vepde"
+msgstr "Кабо-Верде"
+
+msgid "Cape_Verde"
+msgstr "Кабо-Верде"
+
+msgid "Caracas"
+msgstr "Каракас"
+
+msgid "Casablanca"
+msgstr "Касабланка"
+
+msgid "Casey"
+msgstr "Кейси"
+
+msgid "Catamarca"
+msgstr "Катамарка"
+
+msgid "Cayenne"
+msgstr "Кайенна"
+
+msgid "Cayman"
+msgstr "Кайман"
+
+msgid "Center"
+msgstr "Центр"
+
+msgid "Central"
+msgstr "Центральный"
+
+msgid "Ceuta"
+msgstr "Сеута"
+
+msgid "Chagos"
+msgstr "Чагос"
+
+msgid "Chatham"
+msgstr "Чатем"
+
+msgid "Chicago"
+msgstr "Чикаго"
+
+msgid "Chihuahua"
+msgstr "Чихуахуа"
+
+msgid "Chile"
+msgstr "Чили"
+
+msgid "Chisinau"
+msgstr "Кишинев"
+
+msgid "Chita"
+msgstr "Чита"
+
+msgid "Choibalsan"
+msgstr "Чойбалсан"
+
+msgid "Chongqing"
+msgstr "Чунцин"
+
+msgid "Christmas"
+msgstr "Рождество"
+
+msgid "Chungking"
+msgstr "Чунцин"
+
+msgid "Chuuk"
+msgstr "Чуук"
+
+msgid "Ciudad_Juarez"
+msgstr "Сьюдад_Хуарес"
+
+msgid "Clock"
+msgstr "Часы"
+
+msgid "Close"
+msgstr "Закрыть"
+
+msgid "Cocos"
+msgstr "Кокос"
+
+msgid "Colombo"
+msgstr "Коломбо"
+
+msgid "ComodRivadavia"
+msgstr "Комодоро-Ривадавия"
+
+msgid "Comoro"
+msgstr "Коморо"
+
+msgid "Conakry"
+msgstr "Конакри"
+
+msgid "Continental"
+msgstr "Континентальный"
+
+msgid "Copenhagen"
+msgstr "Копенгаген"
+
+msgid "Coral_Harbour"
+msgstr "Корал Харбор"
+
+msgid "Cordoba"
+msgstr "Кордова"
+
+msgid "Costa_Rica"
+msgstr "Коста_Рика"
+
+msgid "Creston"
+msgstr "Крестон"
+
+msgid "Cuiaba"
+msgstr "Куяба"
+
+msgid "Curacao"
+msgstr "Кюрасао"
+
+msgid "Currie"
+msgstr "Карри"
+
+msgid "Dacca"
+msgstr "Дакка"
+
+msgid "Dakar"
+msgstr "Дакар"
+
+msgid "Damascus"
+msgstr "Дамаск"
+
+msgid "Danmarkshavn"
+msgstr "Данмарксхавн"
+
+msgid "Dar_es_Salaam"
+msgstr "Дар-эс-Салам"
+
+msgid "Darwin"
+msgstr "Дарвин"
+
+msgid "Davis"
+msgstr "Дэвис"
+
+msgid "Dawson"
+msgstr "Доусон"
+
+msgid "Dawson_Creek"
+msgstr "Доусон Крик"
+
+msgid "DeNoronha"
+msgstr "Фернанду-ди-Норонья"
+
+msgid "Denver"
+msgstr "Денвер"
+
+msgid "Detroit"
+msgstr "Детройт"
+
+msgid "Dhaka"
+msgstr "Дакка"
+
+msgid "Dili"
+msgstr "Дили"
+
+msgid "Djibouti"
+msgstr "Джибути"
+
+msgid "Dominica"
+msgstr "Доминика"
+
+msgid "Douala"
+msgstr "Дуала"
+
+msgid "Dubai"
+msgstr "Дубай"
+
+msgid "Dublin"
+msgstr "Дублин"
+
+msgid "DumontDUrville"
+msgstr "Дюмон-д-Юрвиль"
+
+msgid "Dushanbe"
+msgstr "Душанбе"
+
+msgid "ERROR"
+msgstr "ОШИБКА"
+
+msgid "East"
+msgstr "Восток"
+
+msgid "East-Indiana"
+msgstr "Восточная Индиана"
+
+msgid "Easter"
+msgstr "Пасха"
+
+msgid "EasterIsland"
+msgstr "Остров Пасхи"
+
+msgid "Easterlsland"
+msgstr "Остров Пасхи"
+
+msgid "Eastern"
+msgstr "Восточный"
+
+msgid "Edmonton"
+msgstr "Эдмонтон"
+
+msgid "Efate"
+msgstr "Эфате"
+
+msgid "Eirunepe"
+msgstr "Эйрунепе"
+
+msgid "El_Aaiun"
+msgstr "Эль_Аайун"
+
+msgid "El_Salvador"
+msgstr "Сальвадор"
+
+msgid "Enderbury"
+msgstr "Эндербери"
+
+msgid "Ensenada"
+msgstr "Энсенада"
+
+msgid "Eucla"
+msgstr "Евкла"
+
+msgid "Europe"
+msgstr "Европа"
+
+msgid "Faeroe"
+msgstr "Фарерские острова"
+
+msgid "Fakaofo"
+msgstr "Факаофо"
+
+msgid "Famagusta"
+msgstr "Фамагуста"
+
+msgid "Faroe"
+msgstr "Фарерские острова"
+
+msgid "Fiji"
+msgstr "Фиджи"
+
+msgid "Fort_Nelson"
+msgstr "Форт Нельсон"
+
+msgid "Fort_Wayne"
+msgstr "Форт_Уэйн"
+
+msgid "Fortaleza"
+msgstr "Форталеза"
+
+msgid "Freetown"
+msgstr "Фритаун"
+
+msgid "Funafuti"
+msgstr "Фунафути"
+
+msgid "GMT-1"
+msgstr "ГМТ-1"
+
+msgid "GMT-3"
+msgstr "ГМТ-3"
+
+msgid "Gaborone"
+msgstr "Габороне"
+
+msgid "Galapagos"
+msgstr "Галапагос"
+
+msgid "Gambier"
+msgstr "Гамбье"
+
+msgid "Gaza"
+msgstr "Газа"
+
+msgid "General"
+msgstr "Генерал-Сантос"
+
+msgid "Gibraltar"
+msgstr "Гибралтар"
+
+msgid "Glace_Bay"
+msgstr "Глейс-Бей"
+
+msgid "Godthab"
+msgstr "Годтаб"
+
+msgid "Goose_Bay"
+msgstr "Гуз-Бей"
+
+msgid "Grand_Turk"
+msgstr "Гранд_Турк"
+
+msgid "Greenwich"
+msgstr "Гринвич"
+
+msgid "Grenada"
+msgstr "Гренада"
+
+msgid "Guadalcanal"
+msgstr "Гуадалканал"
+
+msgid "Guadeloupe"
+msgstr "Гваделупа"
+
+msgid "Guam"
+msgstr "Гуам"
+
+msgid "Guatemala"
+msgstr "Гватемала"
+
+msgid "Guayaquil"
+msgstr "Гуаякиль"
+
+msgid "Guernsey"
+msgstr "Гернси"
+
+msgid "Guyana"
+msgstr "Гайана"
+
+msgid "Halifax"
+msgstr "Галифакс"
+
+msgid "Harare"
+msgstr "Хараре"
+
+msgid "Harbin"
+msgstr "Харбин"
+
+msgid "Havana"
+msgstr "Гавана"
+
+msgid "Hawaii"
+msgstr "Гавайи"
+
+msgid "Hebron"
+msgstr "Хеврон"
+
+msgid "Helsinki"
+msgstr "Хельсинки"
+
+msgid "Hermosillo"
+msgstr "Эрмосильо"
+
+msgid "Ho_Chi_Minh"
+msgstr "Хо_Чи_Мин"
+
+msgid "Hobart"
+msgstr "Хобарт"
+
+msgid "Hong_Kong"
+msgstr "Гонконг"
+
+msgid "Honolulu"
+msgstr "Гонолулу"
+
+msgid "Hovd"
+msgstr "Ховд"
+
+msgid "Indian"
+msgstr "Индиана"
+
+msgid "Indiana"
+msgstr "Индианан"
+
+msgid "Indiana-Starke"
+msgstr "Индиана-Старке"
+
+msgid "Indianapolis"
+msgstr "Индианаполис"
+
+
+msgid "Inuvik"
+msgstr "Инувик"
+
+msgid "Iqaluit"
+msgstr "Икалуит"
+
+msgid "Irkutsk"
+msgstr "Иркутск"
+
+msgid "Isle_of_Man"
+msgstr "Остров Мэн"
+
+msgid "Istanbul"
+msgstr "Стамбул"
+
+msgid "Jakarta"
+msgstr "Джакарта"
+
+msgid "Jamaica"
+msgstr "Ямайка"
+
+msgid "Jan_Mayen"
+msgstr "Ян_Майен"
+
+msgid "Jayapura"
+msgstr "Джаяпура"
+
+msgid "Jersey"
+msgstr "Джерси"
+
+msgid "Jerusalem"
+msgstr "Иерусалим"
+
+msgid "Johannesburg"
+msgstr "Йоханнесбург"
+
+msgid "Johnston"
+msgstr "Джонстон"
+
+msgid "Juba"
+msgstr "Джуба"
+
+msgid "Jujuy"
+msgstr "Жужуй"
+
+msgid "Juneau"
+msgstr "Джуно"
+
+msgid "Kabul"
+msgstr "Кабул"
+
+msgid "Kaliningrad"
+msgstr "Калининград"
+
+msgid "Kamchatka"
+msgstr "Камчатка"
+
+msgid "Kampala"
+msgstr "Кампала"
+
+msgid "Kanton"
+msgstr "Кантон"
+
+msgid "Karachi"
+msgstr "Карачи"
+
+msgid "Kashgar"
+msgstr "Кашгар"
+
+msgid "Kathmandu"
+msgstr "Катманду"
+
+msgid "Katmandu"
+msgstr "Катманду"
+
+msgid "Kerguelen"
+msgstr "Кергелен"
+
+msgid "Khandyga"
+msgstr "Хандыга"
+
+msgid "Khartoum"
+msgstr "Хартум"
+
+msgid "Kiev"
+msgstr "Киев"
+
+msgid "Kigali"
+msgstr "Кигали"
+
+msgid "Kinshasa"
+msgstr "Киншаса"
+
+msgid "Kiritimati"
+msgstr "Киритимати"
+
+msgid "Kirov"
+msgstr "Киров"
+
+msgid "Knox"
+msgstr "Ноксвилл"
+
+msgid "Knox_IN"
+msgstr "Нокс_IN"
+
+msgid "Kolkata"
+msgstr "Калькутта"
+
+msgid "Kralendijk"
+msgstr "Кралендейк"
+
+msgid "Krasnoyarsk"
+msgstr "Красноярск"
+
+msgid "Kuala_Lumpur"
+msgstr "Куала-Лумпур"
+
+msgid "Kuching"
+msgstr "Кучинг"
+
+msgid "Kuwait"
+msgstr "Кувейт"
+
+msgid "Kwajalein"
+msgstr "Кваджалейн"
+
+msgid "Kyiv"
+msgstr "Киев"
+
+msgid "LHI"
+msgstr "Лхи"
+
+msgid "La_Paz"
+msgstr "Ла_Пас"
+
+msgid "La_Rioja"
+msgstr "Риоха"
+
+msgid "Lagos"
+msgstr "Лагос"
+
+msgid "Libreville"
+msgstr "Либревиль"
+
+msgid "Lima"
+msgstr "Лима"
+
+msgid "Lindeman"
+msgstr "Линдеман"
+
+msgid "Lisbon"
+msgstr "Лиссабон"
+
+msgid "Ljubljana"
+msgstr "Любляна"
+
+msgid "Lome"
+msgstr "Ломе"
+
+msgid "London"
+msgstr "Лондон"
+
+msgid "Longyearbyen"
+msgstr "Лонгйир"
+
+msgid "Lord_Howe"
+msgstr "Лорд_Хау"
+
+msgid "Los_Angeles"
+msgstr "Лос-Анджелес"
+
+msgid "Louisville"
+msgstr "Луисвилл"
+
+msgid "Lower_Princes"
+msgstr "Лоуэр-Принс-Куотер"
+
+msgid "Luanda"
+msgstr "Луанда"
+
+msgid "Lubumbashi"
+msgstr "Лубумбаши"
+
+msgid "Lusaka"
+msgstr "Лусака"
+
+msgid "Luxembourg"
+msgstr "Люксембург"
+
+msgid "Macao"
+msgstr "Макао"
+
+msgid "Macau"
+msgstr "Макао"
+
+msgid "Maceio"
+msgstr "Масейо"
+
+msgid "Macquarie"
+msgstr "Маккуори"
+
+msgid "Madeira"
+msgstr "Мадейра"
+
+msgid "Madrid"
+msgstr "Мадрид"
+
+msgid "Magadan"
+msgstr "Магадан"
+
+msgid "Mahe"
+msgstr "Маэ"
+
+msgid "Majuro"
+msgstr "Маджуро"
+
+msgid "Makassar"
+msgstr "Макассар"
+
+msgid "Malabo"
+msgstr "Малабо"
+
+msgid "Maldives"
+msgstr "Мальдивы"
+
+msgid "Malta"
+msgstr "Мальта"
+
+msgid "Managua"
+msgstr "Манагуа"
+
+msgid "Manaus"
+msgstr "Манаус"
+
+msgid "Manila"
+msgstr "Манила"
+
+msgid "Maputo"
+msgstr "Мапуту"
+
+msgid "Marengo"
+msgstr "Маренго"
+
+msgid "Mariehamn"
+msgstr "Мариехамн"
+
+msgid "Marigot"
+msgstr "Мариго"
+
+msgid "Marquesas"
+msgstr "Маркизские острова"
+
+msgid "Martinique"
+msgstr "Мартиника"
+
+msgid "Maseru"
+msgstr "Масеру"
+
+msgid "Matamoros"
+msgstr "Матаморос"
+
+msgid "Mauritius"
+msgstr "Маврикий"
+
+msgid "Mawson"
+msgstr "Моусон"
+
+msgid "Mayotte"
+msgstr "Майотта"
+
+msgid "Mazatlan"
+msgstr "Масатлан"
+
+msgid "Mbabane"
+msgstr "Мбабане"
+
+msgid "McMurdo"
+msgstr "МакМердо"
+
+msgid "Melbourne"
+msgstr "Мельбурн"
+
+msgid "Mendoza"
+msgstr "Мендоса"
+
+msgid "Menominee"
+msgstr "Меномини"
+
+msgid "Merida"
+msgstr "Мерида"
+
+msgid "Metlakatla"
+msgstr "Метлакатла"
+
+msgid "Mexico"
+msgstr "Мексика"
+
+msgid "Mexico_City"
+msgstr "Мехико"
+
+msgid "Michigan"
+msgstr "Мичиган"
+
+msgid "Midway"
+msgstr "Мидуэй"
+
+msgid "Minsk"
+msgstr "Минск"
+
+msgid "Minutes"
+msgstr "Минуты"
+
+msgid "Miquelon"
+msgstr "Микелон"
+
+msgid "Mogadishu"
+msgstr "Могадишо"
+
+msgid "Monaco"
+msgstr "Монако"
+
+msgid "Moncton"
+msgstr "Монктон"
+
+msgid "Monrovia"
+msgstr "Монровия"
+
+msgid "Monterrey"
+msgstr "Монтеррей"
+
+msgid "Montevideo"
+msgstr "Монтевидео"
+
+msgid "Monticello"
+msgstr "Монтиселло"
+
+msgid "Montreal"
+msgstr "Монреаль"
+
+msgid "Montserrat"
+msgstr "Монтсеррат"
+
+msgid "Moscow"
+msgstr "Москва"
+
+msgid "Mountain"
+msgstr "Маунтин-Вью"
+
+msgid "Muscat"
+msgstr "Мускат"
+
+msgid "NSW"
+msgstr "Новый Южный Уэльс"
+
+msgid "Nairobi"
+msgstr "Найроби"
+
+msgid "Nassau"
+msgstr "Нассау"
+
+msgid "Nauru"
+msgstr "Науру"
+
+msgid "Ndjamena"
+msgstr "Нджамена"
+
+msgid "New_Salem"
+msgstr "Нью-Салем"
+
+msgid "New_York"
+msgstr "Нью-Йорк"
+
+msgid "Newfoundland"
+msgstr "Ньюфаундленд"
+
+msgid "Niamey"
+msgstr "Ниамей"
+
+msgid "Nicosia"
+msgstr "Никосия"
+
+msgid "Nipigon"
+msgstr "Нипигон"
+
+msgid "Niue"
+msgstr "Ниуэ"
+
+msgid "Nome"
+msgstr "Ном"
+
+msgid "Norfolk"
+msgstr "Норфолк"
+
+msgid "Noronha"
+msgstr "Норонья"
+
+msgid "North"
+msgstr "Север"
+
+msgid "North_Dokota"
+msgstr "Северная Докота"
+
+msgid "Nouakchott"
+msgstr "Нуакшот"
+
+msgid "Noumea"
+msgstr "Нумеа"
+
+msgid "Novokuznetsk"
+msgstr "Новокузнецк"
+
+msgid "Novosibirsk"
+msgstr "Новосибирск"
+
+msgid "Nuuk"
+msgstr "Нуук"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Ojinaga"
+msgstr "Охинага"
+
+msgid "Omsk"
+msgstr "Омск"
+
+msgid "Oral"
+msgstr "Уральск"
+
+msgid "Oslo"
+msgstr "Осло"
+
+msgid "Ouagadougou"
+msgstr "Уагадугу"
+
+msgid "Pacific"
+msgstr "Тихий океан"
+
+msgid "Pago_Pago"
+msgstr "Паго_Паго"
+
+msgid "Palau"
+msgstr "Палау"
+
+msgid "Palmer"
+msgstr "Палмер"
+
+msgid "Panama"
+msgstr "Панама"
+
+msgid "Pangnirtung"
+msgstr "Пангниртунг"
+
+msgid "Paramaribo"
+msgstr "Парамарибо"
+
+msgid "Paris"
+msgstr "Париж"
+
+msgid "Perth"
+msgstr "Перт"
+
+msgid "Petersburg"
+msgstr "Петербург"
+
+msgid "Phnom_Penh"
+msgstr "Пномпень"
+
+msgid "Phoenix"
+msgstr "Феникс"
+
+msgid "Pitcairn"
+msgstr "Питкэрн"
+
+msgid "Podgorica"
+msgstr "Подгорица"
+
+msgid "Pohnpei"
+msgstr "Понпеи"
+
+msgid "Ponape"
+msgstr "Понапе"
+
+msgid "Pontianak"
+msgstr "Понтианак"
+
+msgid "Port-au-Prince"
+msgstr "Порт-о-Пренс"
+
+msgid "Port_Moresby"
+msgstr "Порт_Морсби"
+
+msgid "Port_of_Spain"
+msgstr "Порт-оф-Спейн"
+
+msgid "Porto-Novo"
+msgstr "Порто-Ново"
+
+msgid "Porto_Acre"
+msgstr "Порту_Акр"
+
+msgid "Porto_Velho"
+msgstr "Порту-Велью"
+
+msgid "Prague"
+msgstr "Прага"
+
+msgid "Puerto_Rico"
+msgstr "Пуэрто-Рико"
+
+msgid "Punta_Arenas"
+msgstr "Пунта_Аренас"
+
+msgid "Pyongyang"
+msgstr "Пхеньян"
+
+msgid "Qatar"
+msgstr "Катар"
+
+msgid "Qostanay"
+msgstr "Костанай"
+
+msgid "Queensland"
+msgstr "Квинсленд"
+
+msgid "Qyzylorda"
+msgstr "Кызылорда"
+
+msgid "Rainy_River"
+msgstr "Рейни-Ривер"
+
+msgid "Rangoon"
+msgstr "Рангун"
+
+msgid "Rankin_Inlet"
+msgstr "Ранкин-Инлет"
+
+msgid "Rarotonga"
+msgstr "Раротонга"
+
+msgid "Recife"
+msgstr "Ресифи"
+
+msgid "Regina"
+msgstr "Реджайна"
+
+msgid "Resolute"
+msgstr "Резольют"
+
+msgid "Reunion"
+msgstr "Воссоединение"
+
+msgid "Reykjavik"
+msgstr "Рейкьявик"
+
+msgid "Riga"
+msgstr "Рига"
+
+msgid "Rio_Branco"
+msgstr "Рио_Бранко"
+
+msgid "Rio_Gallegos"
+msgstr "Рио-Гальегос"
+
+msgid "Riyadh"
+msgstr "Эр-Рияд"
+
+msgid "Rome"
+msgstr "Рим"
+
+msgid "Rosario"
+msgstr "Росарио"
+
+msgid "Rothera"
+msgstr "Ротера"
+
+msgid "Saigon"
+msgstr "Сайгон"
+
+msgid "Saipan"
+msgstr "Сайпан"
+
+msgid "Sakhalin"
+msgstr "Сахалин"
+
+msgid "Salta"
+msgstr "Сальта"
+
+msgid "Samara"
+msgstr "Самара"
+
+msgid "Samarkand"
+msgstr "Самарканд"
+
+msgid "Samoa"
+msgstr "Самоа"
+
+msgid "San_Juan"
+msgstr "Сан-Хуан"
+
+msgid "San_Luis"
+msgstr "Сан-Луис"
+
+msgid "San_Marino"
+msgstr "Сан Марино"
+
+msgid "Santa_Isabel"
+msgstr "Санта_Изабель"
+
+msgid "Santarem"
+msgstr "Сантарен"
+
+msgid "Santiago"
+msgstr "Сантьяго"
+
+msgid "Santo_Domingo"
+msgstr "Санто-Доминго"
+
+msgid "Sao_Paulo"
+msgstr "Сан-Паулу"
+
+msgid "Sao_Tome"
+msgstr "Сан-Томе"
+
+msgid "Sarajevo"
+msgstr "Сараево"
+
+msgid "Saratov"
+msgstr "Саратов"
+
+msgid "Saskatchewan"
+msgstr "Саскачеван"
+
+msgid "Scoresbysund"
+msgstr "Скорсби"
+
+msgid "Seoul"
+msgstr "Сеул"
+
+msgid "Shanghai"
+msgstr "Шанхай"
+
+msgid "Shiprock"
+msgstr "Шипрок"
+
+msgid "Simferopol"
+msgstr "Симферополь"
+
+msgid "Singapore"
+msgstr "Сингапур"
+
+msgid "Sitka"
+msgstr "Ситка"
+
+msgid "Skopje"
+msgstr "Скопье"
+
+msgid "Sofia"
+msgstr "София"
+
+msgid "South"
+msgstr "Саутф"
+
+msgid "South_Georgia"
+msgstr "Южная Грузия"
+
+msgid "South_Pole"
+msgstr "Южный полюс"
+
+msgid "Srednekolymsk"
+msgstr "Среднеколымск"
+
+msgid "St_Barthelemy"
+msgstr "Святой Бартелеми"
+
+msgid "St_Helena"
+msgstr "Сент-Хелина"
+
+msgid "St_Johns"
+msgstr "Сент-Джонс"
+
+msgid "St_Kitts"
+msgstr "Сент-Китс"
+
+msgid "St_Lucia"
+msgstr "Святая Люсия"
+
+msgid "St_Thomas"
+msgstr "Сент-Томас"
+
+msgid "St_Vincent"
+msgstr "Сент-Винсент"
+
+msgid "Stanley"
+msgstr "Стэнли"
+
+msgid "Stockholm"
+msgstr "Стокгольм"
+
+msgid "Swift_Current"
+msgstr "Суифт-Каррент"
+
+msgid "Sydney"
+msgstr "Сидней"
+
+msgid "Syowa"
+msgstr "Сёва"
+
+msgid "Tahiti"
+msgstr "Таити"
+
+msgid "Taipei"
+msgstr "Тайбэй"
+
+msgid "Tallinn"
+msgstr "Таллинн"
+
+msgid "Tarawa"
+msgstr "Тарава"
+
+msgid "Tashkent"
+msgstr "Ташкент"
+
+msgid "Tasmania"
+msgstr "Тасмания"
+
+msgid "Tbilisi"
+msgstr "Тбилиси"
+
+msgid "Tegucigalpa"
+msgstr "Тегусигальпа"
+
+msgid "Tehran"
+msgstr "Тегеран"
+
+msgid "Tel_Aviv"
+msgstr "Тель-Авив"
+
+msgid "Tell_City"
+msgstr "Телл-Сити"
+
+msgid "Thimbu"
+msgstr "Тимбу"
+
+msgid "Thimphu"
+msgstr "Тхимпху"
+
+msgid "Thule"
+msgstr "Туле"
+
+msgid "Thunder_Bay"
+msgstr "Тандер-Бей"
+
+msgid "Tijuana"
+msgstr "Тихуана"
+
+msgid "Timbuktu"
+msgstr "Тимбукту"
+
+msgid "Tirane"
+msgstr "Тиран"
+
+msgid "Tiraspol"
+msgstr "Тирасполь"
+
+msgid "Tokyo"
+msgstr "Токио"
+
+msgid "Tomsk"
+msgstr "Томск"
+
+msgid "Tongatapu"
+msgstr "Тонгатапу"
+
+msgid "Toronto"
+msgstr "Торонто"
+
+msgid "Tortola"
+msgstr "Тортола"
+
+msgid "Tripoli"
+msgstr "Триполи"
+
+msgid "Troll"
+msgstr "Тролль"
+
+msgid "Truk"
+msgstr "Трук"
+
+msgid "Tucuman"
+msgstr "Тукуман"
+
+msgid "Tunis"
+msgstr "Тунис"
+
+msgid "US"
+msgstr "США"
+
+msgid "Ujung_Pandang"
+msgstr "Уджунг_Панданг"
+
+msgid "Ulaanbaatar"
+msgstr "Улан-Батор"
+
+msgid "Ulan_Bator"
+msgstr "Улан_Батор"
+
+msgid "Ulyanovsk"
+msgstr "Ульяновск"
+
+msgid "Universal"
+msgstr "Юнивёрсал-Сити"
+
+msgid "Urumqi"
+msgstr "Урумчи"
+
+msgid "Ushuaia"
+msgstr "Ушуая"
+
+msgid "Ust-Nera"
+msgstr "Усть-Нера"
+
+msgid "Uzhgorod"
+msgstr "Ужгород"
+
+msgid "Vaduz"
+msgstr "Вадуц"
+
+msgid "Vancouver"
+msgstr "Ванкувер"
+
+msgid "Vatican"
+msgstr "Ватикан"
+
+msgid "Vevay"
+msgstr "Вевей"
+
+msgid "Victoria"
+msgstr "Виктория"
+
+msgid "Vienna"
+msgstr "Вена"
+
+msgid "Vientiane"
+msgstr "Вьентьян"
+
+msgid "Vilnius"
+msgstr "Вильнюс"
+
+msgid "Vincennes"
+msgstr "Венсен"
+
+msgid "Virgin"
+msgstr "Виргин"
+
+msgid "Vladivostok"
+msgstr "Владивосток"
+
+msgid "Volgograd"
+msgstr "Волгоград"
+
+msgid "Vostok"
+msgstr "Восток"
+
+msgid "Wake"
+msgstr "Уэйко"
+
+msgid "Wallis"
+msgstr "Уоллис"
+
+msgid "Warsaw"
+msgstr "Варшава"
+
+msgid "West"
+msgstr "Запад"
+
+msgid "Whitehorse"
+msgstr "Уайтхорс"
+
+msgid "Winamac"
+msgstr "Винамаке"
+
+msgid "Windhoek"
+msgstr "Виндхук"
+
+msgid "Winnipeg"
+msgstr "Виннипег"
+
+msgid "Yakutat"
+msgstr "Якутат"
+
+msgid "Yakutsk"
+msgstr "Якутск"
+
+msgid "Yancowinna"
+msgstr "Янковина"
+
+msgid "Yangon"
+msgstr "Янгон"
+
+msgid "Yap"
+msgstr "Яп"
+
+msgid "Yekaterinburg"
+msgstr "Екатеринбург"
+
+msgid "Yellowknife"
+msgstr "Йеллоунайф"
+
+msgid "Yerevan"
+msgstr "Ереван"
+
+msgid "Yukon"
+msgstr "Юкон"
+
+msgid "Zagreb"
+msgstr "Загреб"
+
+msgid "Zaporozhye"
+msgstr "Запорожье"
+
+msgid "Zulu"
+msgstr "Зулу"
+
+msgid "Zurich"
+msgstr "Цюрих"