From c330f35f646f1b13cdeb052b815c927cfd050b7d Mon Sep 17 00:00:00 2001 From: Eugene Zamriy Date: Thu, 18 May 2023 11:38:45 +0300 Subject: [PATCH 11/11] Add MSVSphere identification support --- data/liveinst/gnome/fedora-welcome.desktop | 4 +- data/liveinst/gnome/fedora-welcome.js | 2 +- po/ru.po | 136 +++++++++++++----- pyanaconda/product.py | 30 +++- .../ui/gui/spokes/installation_progress.py | 8 +- .../ui/gui/spokes/lib/storage_dialogs.py | 4 +- pyanaconda/ui/gui/spokes/welcome.py | 15 +- pyanaconda/vnc.py | 27 +++- 8 files changed, 173 insertions(+), 53 deletions(-) diff --git a/data/liveinst/gnome/fedora-welcome.desktop b/data/liveinst/gnome/fedora-welcome.desktop index 90f5678..abbbff3 100644 --- a/data/liveinst/gnome/fedora-welcome.desktop +++ b/data/liveinst/gnome/fedora-welcome.desktop @@ -1,6 +1,6 @@ [Desktop Entry] -Name=Welcome to MSVSphere -Name[ru]=Добро пожаловать в МСВСфера +Name=Welcome to MSVSphere ARM +Name[ru]=Добро пожаловать в МСВСфера АРМ Exec=/usr/share/anaconda/gnome/fedora-welcome Terminal=false Type=Application diff --git a/data/liveinst/gnome/fedora-welcome.js b/data/liveinst/gnome/fedora-welcome.js index 4c0a66a..120d718 100755 --- a/data/liveinst/gnome/fedora-welcome.js +++ b/data/liveinst/gnome/fedora-welcome.js @@ -62,7 +62,7 @@ const WelcomeWindow = new Lang.Class({ default_width: 600, default_height: 550, skip_taskbar_hint: true, - title: _("Welcome to MSVSphere"), + title: _("Welcome to MSVSphere ARM"), window_position: Gtk.WindowPosition.CENTER }); this.window.connect('key-press-event', Lang.bind(this, function(w, event) { diff --git a/po/ru.po b/po/ru.po index c478f3f..914b54c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -375,7 +375,22 @@ msgid "" "Would you like to ignore this and continue with installation?" msgstr "" -#: pyanaconda/product.py:69 +#: pyanaconda/product.py:83 +#, python-format +msgid "MSVSphere %(productVersion)s Server INSTALLATION" +msgstr "УСТАНОВКА МСВСфера %(productVersion)s Сервер" + +#: pyanaconda/product.py:85 +#, python-format +msgid "MSVSphere %(productVersion)s ARM INSTALLATION" +msgstr "УСТАНОВКА МСВСфера %(productVersion)s АРМ" + +#: pyanaconda/product.py:87 +#, python-format +msgid "MSVSphere %(productVersion)s OS INSTALLATION" +msgstr "УСТАНОВКА МСВСфера %(productVersion)s ОС" + +#: pyanaconda/product.py:89 #, python-format msgid "%(productName)s %(productVersion)s INSTALLATION" msgstr "УСТАНОВКА %(productName)s %(productVersion)s" @@ -1152,7 +1167,7 @@ msgstr "" #: pyanaconda/ui/gui/__init__.py:365 widgets/src/BaseWindow.c:151 msgid "Help!" -msgstr "Помогите!" +msgstr "Справка" #: pyanaconda/ui/gui/__init__.py:854 #: pyanaconda/ui/gui/spokes/lib/detailederror.py:58 @@ -1182,7 +1197,7 @@ msgid "" "\"\">Click for details." msgstr "" "Предупреждение: в процессоре включена одновременная многопоточность (SMT). " -"Нжмите для получения дополнительной информации." +"Нажмите для получения дополнительной информации." #: pyanaconda/ui/gui/hubs/summary.py:103 msgid "" @@ -1424,7 +1439,22 @@ msgctxt "GUI|Custom Partitioning|Reset Dialog" msgid "_Preserve current selections" msgstr "О_ставить текущий выбор" -#: pyanaconda/ui/gui/spokes/welcome.py:274 +#: pyanaconda/ui/gui/spokes/welcome.py:278 +#, python-format +msgid "WELCOME TO MSVSphere %(version)s Server" +msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s Сервер" + +#: pyanaconda/ui/gui/spokes/welcome.py:280 +#, python-format +msgid "WELCOME TO MSVSphere %(version)s ARM" +msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s АРМ" + +#: pyanaconda/ui/gui/spokes/welcome.py:282 +#, python-format +msgid "WELCOME TO MSVSphere %(version)s OS" +msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s ОС" + +#: pyanaconda/ui/gui/spokes/welcome.py:284 #, python-format msgid "WELCOME TO %(name)s %(version)s." msgstr "ДОБРО ПОЖАЛОВАТЬ В %(name)s %(version)s." @@ -1944,7 +1974,7 @@ msgid "" "You haven't created any mount points for your %(product)s %(version)s " "installation yet. You can:" msgstr "" -"Вы еще не создали точки монтирования для установки %(product)s %(version)s. " +"Вы еще не создали точки монтирования для установки МСВСфера %(version)s ОС. " "Вы можете:" #: pyanaconda/ui/gui/spokes/lib/accordion.py:479 @@ -2024,7 +2054,7 @@ msgid "" "of available space, including %(software)s for software and " "%(swap)s for swap space." msgstr "" -"Для установки %(product)s требуется %(total)s, в том числе " +"Для установки МСВСфера ОС требуется %(total)s, в том числе " "%(software)s для программ и %(swap)s для подкачки." #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:81 @@ -2035,7 +2065,7 @@ msgid "" "%(software)s for software and %(swap)s for swap space." msgstr "" "Для программного обеспечения " -"%(product)s требуется %(total)s пространства, в том числе " +"МСВСфера ОС требуется %(total)s пространства, в том числе " "%(software)s для программ и %(swap)s для подкачки." #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:132 @@ -2046,11 +2076,11 @@ msgstr "%s На выбранных дисках доступно:" #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:142 #, python-format msgid "" -"You don't have enough space available to install %s. You can shrink " +"You don't have enough space available to install %(name)s. You can shrink " "or remove existing partitions via our guided reclaim space tool, or you can " "adjust your partitions on your own in the custom partitioning interface." msgstr "" -"Недостаточно места для установки %s. Можно уменьшить или удалить " +"Недостаточно места для установки МСВСфера ОС. Можно уменьшить или удалить " "существующие разделы с помощью помощника или самостоятельно выбрать размеры " "разделов в окне настройки разделов." @@ -2060,7 +2090,7 @@ msgid "" " You don't have enough space available to install %(product)s, even " "if you used all of the free space available on the selected disks." msgstr "" -" Недостаточно места для установки %(product)s, даже если " +" Недостаточно места для установки МСВСфера ОС, даже если " "использовать все свободное место на выбранных дисках." #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:178 @@ -2071,10 +2101,10 @@ msgid "" "could add more disks for additional space, modify your software selection to " "install a smaller version of %(productName)s, or quit the installer." msgstr "" -"Недостаточно места для установки %(productName)s, даже если " +"Недостаточно места для установки МСВСфера ОС, даже если " "использовать всё свободное место на выбранных дисках. Можно добавить ещё " "диски, чтобы получить дополнительное место, изменить выбор программного " -"обеспечения, чтобы установить меньший вариант %(productName)s, или " +"обеспечения, чтобы установить меньший вариант МСВСфера ОС, или " "покинуть программу установки." #: pyanaconda/ui/gui/spokes/lib/detailederror.py:48 @@ -2272,20 +2302,20 @@ msgstr "_Завершить установку" #: pyanaconda/ui/gui/spokes/installation_progress.py:158 #, python-format msgid "" -"%s is now successfully installed and ready for you to use!\n" +"%(name)s is now successfully installed and ready for you to use!\n" "Go ahead and reboot your system to start using it!" msgstr "" -"%s успешно установлена и готова к использованию!\n" -"Давайте, перезагружайте систему и начинайте использовать ее!" +"МСВСфера ОС установлена и готова к работе.\n" +"Необходимо перезагрузить систему чтобы приступить к использованию." #: pyanaconda/ui/gui/spokes/installation_progress.py:163 #, python-format msgid "" -"%s is now successfully installed and ready for you to use!\n" +"%(name)s is now successfully installed and ready for you to use!\n" "Go ahead and quit the application to start using it!" msgstr "" -"%s успешно установлено и готово к использованию!\n" -"Выйдите из приложения и начните использовать его!" +"МСВСфера ОС установлена и готова к работе.\n" +"Необходимо выйти из приложения чтобы приступить к использованию." #: pyanaconda/ui/gui/spokes/software_selection.py:66 msgctxt "GUI|Spoke" @@ -2448,7 +2478,7 @@ msgid "" "you'll be able to view their details here." msgstr "" "Здесь будет показана информация о созданных точках монтирования для " -"установки %(name)s %(version)s." +"установки МСВСфера %(version)s ОС." #: pyanaconda/ui/gui/spokes/custom_storage.py:615 #: pyanaconda/ui/gui/spokes/advstorage/nvdimm.glade:178 @@ -2868,7 +2898,7 @@ msgid "" "recommended for a normal %(productName)s install." msgstr "" "Размер раздела %(mount)s меньше %(size)s, что меньше рекомендованного " -"размера для обычной установки %(productName)s." +"размера для обычной установки МСВСфера ОС." #: pyanaconda/modules/storage/checker/utils.py:131 #, python-format @@ -3548,7 +3578,7 @@ msgstr "Не удалось продолжить установку." #: pyanaconda/modules/storage/partitioning/interactive/utils.py:213 #, python-brace-format msgid "New {name} {version} Installation" -msgstr "Новая установка {name} {version}" +msgstr "Новая установка МСВСфера {version} ОС" #: pyanaconda/modules/storage/partitioning/interactive/utils.py:275 msgid "Cannot set label on file system." @@ -3959,13 +3989,13 @@ msgstr "" #: pyanaconda/core/constants.py:159 msgid "" -"This hardware (or a combination thereof) is not supported by Red Hat. For " -"more information on supported hardware, please refer to http://www.redhat." -"com/hardware." +"This hardware (or a combination thereof) is not supported by MSVSphere. " +"For more information on supported hardware, please refer to " +"https://msvsphere.ru." msgstr "" -"Это аппаратное обеспечение (или их комбинация) не поддерживается Red Hat. " -"Для получения дополнительной информации о поддерживаемом оборудовании см. " -"http://www.redhat.com/hardware." +"Это аппаратное обеспечение (или их комбинация) не поддерживается " +"МСВСфера ОС. Для получения дополнительной информации о поддерживаемом " +"оборудовании см. https://msvsphere.ru." #: pyanaconda/core/constants.py:165 msgid "" @@ -4303,12 +4333,42 @@ msgstr "не настроено" msgid "Full name cannot contain colon characters" msgstr "Полное имя не может содержать двоеточий" -#: pyanaconda/vnc.py:79 +#: pyanaconda/vnc.py:81 +#, python-format +msgid "MSVSphere %(productVersion)s Server installation" +msgstr "Установка МСВСфера %(productVersion)s Сервер" + +#: pyanaconda/vnc.py:83 +#, python-format +msgid "MSVSphere %(productVersion)s ARM installation" +msgstr "Установка МСВСфера %(productVersion)s АРМ" + +#: pyanaconda/vnc.py:85 +#, python-format +msgid "MSVSphere %(productVersion)s OS installation" +msgstr "Установка МСВСфера %(productVersion)s ОС" + +#: pyanaconda/vnc.py:87 #, python-format msgid "%(productName)s %(productVersion)s installation" msgstr "Установка %(productName)s %(productVersion)s" -#: pyanaconda/vnc.py:148 +#: pyanaconda/vnc.py:159 +#, python-format +msgid "MSVSphere %(productVersion)s Server installation on host %(name)s" +msgstr "Установка МСВСфера %(productVersion)s Сервер на %(name)s" + +#: pyanaconda/vnc.py:162 +#, python-format +msgid "MSVSphere %(productVersion)s ARM installation on host %(name)s" +msgstr "Установка МСВСфера %(productVersion)s АРМ на %(name)s" + +#: pyanaconda/vnc.py:165 +#, python-format +msgid "MSVSphere %(productVersion)s OS installation on host %(name)s" +msgstr "Установка МСВСфера %(productVersion)s ОС на %(name)s" + +#: pyanaconda/vnc.py:168 #, python-format msgid "%(productName)s %(productVersion)s installation on host %(name)s" msgstr "Установка %(productName)s %(productVersion)s на %(name)s" @@ -7556,22 +7616,22 @@ msgstr "Установить Live CD на жёсткий диск" #: data/liveinst/gnome/fedora-welcome.desktop:3 #: data/liveinst/gnome/fedora-welcome.js:65 -msgid "Welcome to Fedora" -msgstr "Добро пожаловать в Fedora" +msgid "Welcome to MSVSphere ARM" +msgstr "Добро пожаловать в МСВСфера АРМ" #: data/liveinst/gnome/fedora-welcome.js:94 -msgid "Try Fedora" -msgstr "Попробуйте Fedora" +msgid "Try MSVSphere" +msgstr "Попробовать в режиме Live" #: data/liveinst/gnome/fedora-welcome.js:110 msgid "" -"You are currently running Fedora from live media.\n" -"You can install Fedora now, or choose \"Install to Hard Drive\" in the " +"You are currently running MSVSphere from live media.\n" +"You can install MSVSphere now, or choose \"Install to Hard Drive\" in the " "Activities Overview at any later time." msgstr "" -"Fedora запущена с установочного диска.\n" -"Вы можете установить Fedora сейчас или в любое время выбрать «Установить на " -"жесткий диск» в меню «Обзор»." +"МСВСфера АРМ запущена с установочного диска.\n" +"Вы можете установить операционную систему сейчас или в любое время выбрать " +"«Установить на жесткий диск» в меню «Обзор»." #: data/liveinst/gnome/fedora-welcome.js:130 msgid "" diff --git a/pyanaconda/product.py b/pyanaconda/product.py index 9dbfe1f..34118d0 100644 --- a/pyanaconda/product.py +++ b/pyanaconda/product.py @@ -19,6 +19,7 @@ import configparser import os +import re from pyanaconda.core.i18n import _ @@ -64,9 +65,36 @@ def trim_product_version_for_ui(version): productVersion = trim_product_version_for_ui(productVersion) +if productName.startswith("MSVSphere"): + productBase = "MSVSphere" + if productName == "MSVSphere Server" or \ + (productName == "MSVSphere" and productVariant == "Minimal"): + productFlavor = "Server" + elif productName == "MSVSphere" and productVariant == "BaseOS": + productFlavor = "OS" + elif productName == "MSVSphere": + os_release = open("/etc/os-release", "r") + for line in os_release: + match = re.match("PRETTY_NAME=.*\((.*?)\)", line) + if match: + productFlavor = match.group(1) + else: + productFlavor = "OS" +else: + productBase = productName + productFlavor = None + def distributionText(): - return _("%(productName)s %(productVersion)s INSTALLATION") % { + if productBase == "MSVSphere" and productFlavor == "Server": + distro_text = _("MSVSphere %(productVersion)s Server INSTALLATION") + elif productBase == "MSVSphere" and productFlavor == "ARM": + distro_text = _("MSVSphere %(productVersion)s ARM INSTALLATION") + elif productBase == "MSVSphere" and productFlavor == "OS": + distro_text = _("MSVSphere %(productVersion)s OS INSTALLATION") + else: + distro_text = _("%(productName)s %(productVersion)s INSTALLATION") + return distro_text % { "productName": productName.upper(), "productVersion": productVersion.upper() } diff --git a/pyanaconda/ui/gui/spokes/installation_progress.py b/pyanaconda/ui/gui/spokes/installation_progress.py index c2dfbaf..de1fe76 100644 --- a/pyanaconda/ui/gui/spokes/installation_progress.py +++ b/pyanaconda/ui/gui/spokes/installation_progress.py @@ -155,14 +155,14 @@ class ProgressSpoke(StandaloneSpoke): # Set the reboot label. if conf.target.is_hardware: continue_text = _( - "%s is now successfully installed and ready for you to use!\n" + "%(name)s is now successfully installed and ready for you to use!\n" "Go ahead and reboot your system to start using it!" - ) % productName + ) % {"name": productName} else: continue_text = _( - "%s is now successfully installed and ready for you to use!\n" + "%(name)s is now successfully installed and ready for you to use!\n" "Go ahead and quit the application to start using it!" - ) % productName + ) % {"name": productName} label = self.builder.get_object("rebootLabel") label.set_text(continue_text) diff --git a/pyanaconda/ui/gui/spokes/lib/storage_dialogs.py b/pyanaconda/ui/gui/spokes/lib/storage_dialogs.py index 2f8338b..e330641 100644 --- a/pyanaconda/ui/gui/spokes/lib/storage_dialogs.py +++ b/pyanaconda/ui/gui/spokes/lib/storage_dialogs.py @@ -140,10 +140,10 @@ class NeedSpaceDialog(InstallOptionsDialogBase): self._set_free_space_labels(disk_free, fs_free) label_text = _("You don't have enough space available to install " - "%s. You can shrink or remove existing partitions " + "%(name)s. You can shrink or remove existing partitions " "via our guided reclaim space tool, or you can adjust your " "partitions on your own in the custom partitioning " - "interface.") % escape_markup(productName) + "interface.") % {"name": escape_markup(productName)} self.builder.get_object("need_space_options_label").set_markup(label_text) self._add_modify_watcher(label) diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py index 2d8f6b2..4e1fd87 100644 --- a/pyanaconda/ui/gui/spokes/welcome.py +++ b/pyanaconda/ui/gui/spokes/welcome.py @@ -34,7 +34,10 @@ from pyanaconda.ui.gui.spokes.lib.lang_locale_handler import LangLocaleHandler from pyanaconda.ui.gui.spokes.lib.unsupported_hardware import UnsupportedHardwareDialog from pyanaconda import localization -from pyanaconda.product import distributionText, isFinal, productName, productVersion +from pyanaconda.product import ( + distributionText, isFinal, productName, productVersion, productBase, + productFlavor +) from pyanaconda import flags from pyanaconda import geoloc from pyanaconda.core.i18n import _, C_ @@ -271,7 +274,15 @@ class WelcomeLanguageSpoke(StandaloneSpoke, LangLocaleHandler): # substituted. welcomeLabel = self.builder.get_object("welcomeLabel") - welcomeLabel.set_text(_("WELCOME TO %(name)s %(version)s.") % + if productBase == "MSVSphere" and productFlavor == "Server": + welcome_text = _("WELCOME TO MSVSphere %(version)s Server") + elif productBase == "MSVSphere" and productFlavor == "ARM": + welcome_text = _("WELCOME TO MSVSphere %(version)s ARM") + elif productBase == "MSVSphere" and productFlavor == "OS": + welcome_text = _("WELCOME TO MSVSphere %(version)s OS") + else: + welcome_text = _("WELCOME TO %(name)s %(version)s") + welcomeLabel.set_text(welcome_text % {"name" : productName.upper(), "version" : productVersion}) # pylint: disable=no-member # Retranslate the language (filtering) entry's placeholder text diff --git a/pyanaconda/vnc.py b/pyanaconda/vnc.py index 5fadcde..c53249f 100644 --- a/pyanaconda/vnc.py +++ b/pyanaconda/vnc.py @@ -76,7 +76,16 @@ class VncServer(object): self.anaconda = None self.log = get_stdout_logger() - self.desktop = _("%(productName)s %(productVersion)s installation")\ + is_sphere = product.productBase == "MSVSphere" + if is_sphere and product.productFlavor == "Server": + desktop_text = _("MSVSphere %(productVersion)s Server installation") + elif is_sphere and product.productFlavor == "ARM": + desktop_text = _("MSVSphere %(productVersion)s ARM installation") + elif is_sphere and product.productFlavor == "OS": + desktop_text = _("MSVSphere %(productVersion)s OS installation") + else: + desktop_text = _("%(productName)s %(productVersion)s installation") + self.desktop = desktop_text \ % {'productName': product.productName, 'productVersion': product.productVersion} @@ -145,8 +154,20 @@ class VncServer(object): # figure out product info if host: - self.desktop = _("%(productName)s %(productVersion)s installation " - "on host %(name)s") \ + is_sphere = product.productBase == "MSVSphere" + if is_sphere and product.productFlavor == "Server": + desktop_text = _("MSVSphere %(productVersion)s Server " + "installation on host %(name)s") + elif is_sphere and product.productFlavor == "ARM": + desktop_text = _("MSVSphere %(productVersion)s ARM " + "installation on host %(name)s") + elif is_sphere and product.productFlavor == "OS": + desktop_text = _("MSVSphere %(productVersion)s OS " + "installation on host %(name)s") + else: + desktop_text = _("%(productName)s %(productVersion)s " + "installation on host %(name)s") + self.desktop = desktop_text \ % {'productName': product.productName, 'productVersion': product.productVersion, 'name': host} -- 2.41.0