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/) +![ubinstall-icon-gui](ublinux-ubinstall_gui.svg) ![ubinstall-icon-console](ublinux-ubinstall_console.svg) + +## Описание + +Установщик оерационной системы 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 @@ + + + + + + 200 + 400 + False + 800 + com.ublinux.libublsettingsui-gtk3 + + + True + False + vertical + 5 + + + True + False + vertical + + + + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + vertical + 5 + + + True + True + in + + + True + True + False + + + + + + column + + + + 2 + 3 + + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + + + + + True + True + 1 + + + + + True + True + 1 + + + + + + + True + False + + + True + False + Keyboard layout language + + + + + + + + True + False + 32 + com.ublinux.libublsettingsui-gtk3 + + + + + Cancel + True + True + True + + + 1 + + + + + Apply + True + True + True + + + end + 2 + + + + + + + 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 + + + + + + + True + False + + + True + False + Available languages ​​in the system + + + + + + + + True + False + 32 + com.ublinux.ubinstall-gui + + + + + Cancel + True + True + True + + + 1 + + + + + Apply + True + True + True + + + end + 2 + + + + + + + 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 + + + + True + False + + + True + False + + + 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 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + UBLinux installation + + + + + + + + True + True + False + True + menu1 + + + True + False + + + True + False + Load + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + + + True + True + True + False + True + True + menu2 + none + + + + + + + end + 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 "Цюрих"