diff --git a/SOURCES/0001-Disable-subscription.patch b/SOURCES/0001-Disable-subscription.patch new file mode 100644 index 0000000..eb66742 --- /dev/null +++ b/SOURCES/0001-Disable-subscription.patch @@ -0,0 +1,27 @@ +From 9c5bf55836e7f308d6ec86d97eb0668c1db91892 Mon Sep 17 00:00:00 2001 +From: Eugene Zamriy +Date: Fri, 14 Apr 2023 12:53:14 +0300 +Subject: [PATCH 01/15] Disable subscription + +--- + pyanaconda/ui/gui/spokes/subscription.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/pyanaconda/ui/gui/spokes/subscription.py b/pyanaconda/ui/gui/spokes/subscription.py +index e8cf442..5c5db81 100644 +--- a/pyanaconda/ui/gui/spokes/subscription.py ++++ b/pyanaconda/ui/gui/spokes/subscription.py +@@ -540,6 +540,10 @@ class SubscriptionSpoke(NormalSpoke): + # also set the spoke warning banner + self.show_warning_message(error_message) + ++ @property ++ def showable(self): ++ return False ++ + def initialize(self): + NormalSpoke.initialize(self) + self.initialize_start() +-- +2.43.5 + diff --git a/SOURCES/0002-Hide-CDN-source-button.patch b/SOURCES/0002-Hide-CDN-source-button.patch new file mode 100644 index 0000000..1dc0653 --- /dev/null +++ b/SOURCES/0002-Hide-CDN-source-button.patch @@ -0,0 +1,25 @@ +From 1b180235392825e31536fe58381c4183228309b6 Mon Sep 17 00:00:00 2001 +From: Eugene Zamriy +Date: Fri, 14 Apr 2023 12:54:58 +0300 +Subject: [PATCH 02/15] Hide CDN source button + +--- + pyanaconda/ui/gui/spokes/installation_source.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/pyanaconda/ui/gui/spokes/installation_source.py b/pyanaconda/ui/gui/spokes/installation_source.py +index 0c98e17..6fa4475 100644 +--- a/pyanaconda/ui/gui/spokes/installation_source.py ++++ b/pyanaconda/ui/gui/spokes/installation_source.py +@@ -353,6 +353,8 @@ class SourceSpoke(NormalSpoke, GUISpokeInputCheckHandler, SourceSwitchHandler): + self._network_button = self.builder.get_object("networkRadioButton") + self._network_box = self.builder.get_object("networkBox") + ++ really_hide(self._cdn_button) ++ + self._url_entry = self.builder.get_object("urlEntry") + self._protocol_combo_box = self.builder.get_object("protocolComboBox") + self._iso_chooser_button = self.builder.get_object("isoChooserButton") +-- +2.43.5 + diff --git a/SOURCES/0003-Set-MSVSphere-installer-colors.patch b/SOURCES/0003-Set-MSVSphere-installer-colors.patch new file mode 100644 index 0000000..83d4c6c --- /dev/null +++ b/SOURCES/0003-Set-MSVSphere-installer-colors.patch @@ -0,0 +1,37 @@ +From d9fe80cb2d797a077d604d8f9a69ceaf5167e51b Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:13:04 +0300 +Subject: [PATCH 03/15] Set MSVSphere installer colors + +--- + data/anaconda-gtk.css | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/data/anaconda-gtk.css b/data/anaconda-gtk.css +index f83cf15..ef557ee 100644 +--- a/data/anaconda-gtk.css ++++ b/data/anaconda-gtk.css +@@ -96,9 +96,10 @@ infobar.error box { + */ + + @define-color anaconda_bg_color #2f4265; ++@define-color msvsphere #343434; + + .logo-sidebar { +- background-color: @anaconda_bg_color; ++ background-color: @msvsphere; + } + + /* This is a placeholder to be filled by a product-specific logo. */ +@@ -114,7 +115,7 @@ infobar.error box { + } + + AnacondaSpokeWindow #nav-box { +- background-color: @anaconda_bg_color; ++ background-color: @msvsphere; + color: white; + } + +-- +2.43.5 + diff --git a/SOURCES/0004-Add-Minimal-and-Server-repository-support.patch b/SOURCES/0004-Add-Minimal-and-Server-repository-support.patch new file mode 100644 index 0000000..7587337 --- /dev/null +++ b/SOURCES/0004-Add-Minimal-and-Server-repository-support.patch @@ -0,0 +1,26 @@ +From 390568b415c06b3c129bbb122f5eb103e88e4080 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:19:04 +0300 +Subject: [PATCH 04/15] Add Minimal and Server repository support + +--- + pyanaconda/core/constants.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/pyanaconda/core/constants.py b/pyanaconda/core/constants.py +index 5232e6d..3d0b56d 100644 +--- a/pyanaconda/core/constants.py ++++ b/pyanaconda/core/constants.py +@@ -58,6 +58,9 @@ DEFAULT_REPOS = [ + "BaseOS", # Used by RHEL + "baseos", # Used by CentOS Stream + "eln-baseos", # Used by Fedora ELN ++ "Server", # Used by MSVSphere ++ "Certified", # Used by MSVSphere Certified ++ "Minimal", # Used by MSVSphere + ] + + DBUS_ANACONDA_SESSION_ADDRESS = "DBUS_ANACONDA_SESSION_BUS_ADDRESS" +-- +2.43.5 + diff --git a/SOURCES/0005-Set-default-timezone-to-Europe-Moscow.patch b/SOURCES/0005-Set-default-timezone-to-Europe-Moscow.patch new file mode 100644 index 0000000..7a36cad --- /dev/null +++ b/SOURCES/0005-Set-default-timezone-to-Europe-Moscow.patch @@ -0,0 +1,55 @@ +From 028412d2e031a850831d0a521af49051299e1b10 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:24:09 +0300 +Subject: [PATCH 05/15] Set default timezone to Europe/Moscow + +--- + pyanaconda/modules/timezone/installation.py | 4 ++-- + pyanaconda/modules/timezone/timezone.py | 2 +- + pyanaconda/ui/gui/spokes/datetime_spoke.py | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/pyanaconda/modules/timezone/installation.py b/pyanaconda/modules/timezone/installation.py +index 0cd7510..024a881 100644 +--- a/pyanaconda/modules/timezone/installation.py ++++ b/pyanaconda/modules/timezone/installation.py +@@ -96,8 +96,8 @@ class ConfigureTimezoneTask(Task): + if not is_valid_timezone(self._timezone): + # this should never happen, but for pity's sake + log.warning("Timezone %s set in kickstart is not valid, " +- "falling back to default (America/New_York).", self._timezone) +- self._timezone = "America/New_York" ++ "falling back to default (Europe/Moscow).", self._timezone) ++ self._timezone = "Europe/Moscow" + + def _make_timezone_symlink(self): + """Create the symlink that actually defines timezone.""" +diff --git a/pyanaconda/modules/timezone/timezone.py b/pyanaconda/modules/timezone/timezone.py +index 1640d9f..40fe8ea 100644 +--- a/pyanaconda/modules/timezone/timezone.py ++++ b/pyanaconda/modules/timezone/timezone.py +@@ -51,7 +51,7 @@ class TimezoneService(KickstartService): + def __init__(self): + super().__init__() + self.timezone_changed = Signal() +- self._timezone = "America/New_York" ++ self._timezone = "Europe/Moscow" + self._priority = TIMEZONE_PRIORITY_DEFAULT + + self.geolocation_result_changed = Signal() +diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.py b/pyanaconda/ui/gui/spokes/datetime_spoke.py +index c379b39..dea5af7 100644 +--- a/pyanaconda/ui/gui/spokes/datetime_spoke.py ++++ b/pyanaconda/ui/gui/spokes/datetime_spoke.py +@@ -57,7 +57,7 @@ log = get_module_logger(__name__) + + __all__ = ["DatetimeSpoke"] + +-DEFAULT_TZ = "America/New_York" ++DEFAULT_TZ = "Europe/Moscow" + + SPLIT_NUMBER_SUFFIX_RE = re.compile(r'([^0-9]*)([-+])([0-9]+)') + +-- +2.43.5 + diff --git a/SOURCES/0006-Add-MSVSphere-product-config.patch b/SOURCES/0006-Add-MSVSphere-product-config.patch new file mode 100644 index 0000000..10c2c25 --- /dev/null +++ b/SOURCES/0006-Add-MSVSphere-product-config.patch @@ -0,0 +1,43 @@ +From 64f8019f5383344dc0abdb5b84f4049b9cb531f1 Mon Sep 17 00:00:00 2001 +From: Eugene Zamriy +Date: Fri, 14 Apr 2023 14:59:53 +0300 +Subject: [PATCH 06/15] Add MSVSphere product config + +--- + data/product.d/msvsphere.conf | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + create mode 100644 data/product.d/msvsphere.conf + +diff --git a/data/product.d/msvsphere.conf b/data/product.d/msvsphere.conf +new file mode 100644 +index 0000000..28d3109 +--- /dev/null ++++ b/data/product.d/msvsphere.conf +@@ -0,0 +1,24 @@ ++# Anaconda configuration file for MSVSphere. ++ ++[Product] ++product_name = MSVSphere ++ ++[Base Product] ++product_name = Red Hat Enterprise Linux ++ ++[Anaconda] ++forbidden_modules = ++ org.fedoraproject.Anaconda.Modules.Subscription ++ ++[Bootloader] ++efi_dir = msvsphere ++ ++[Payload] ++enable_closest_mirror = True ++default_source = CLOSEST_MIRROR ++ ++[User Interface] ++help_directory = /usr/share/anaconda/help/rhel ++ ++[License] ++eula = /usr/share/sphere-release/EULA +-- +2.43.5 + diff --git a/SOURCES/0007-Set-Russian-language-as-default.patch b/SOURCES/0007-Set-Russian-language-as-default.patch new file mode 100644 index 0000000..6e75f55 --- /dev/null +++ b/SOURCES/0007-Set-Russian-language-as-default.patch @@ -0,0 +1,25 @@ +From 5b6dfb604760f76121e6152ed387c4f939ded693 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:25:45 +0300 +Subject: [PATCH 07/15] Set Russian language as default + +--- + pyanaconda/core/constants.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyanaconda/core/constants.py b/pyanaconda/core/constants.py +index 3d0b56d..e2f5d1a 100644 +--- a/pyanaconda/core/constants.py ++++ b/pyanaconda/core/constants.py +@@ -78,7 +78,7 @@ WEBUI_VIEWER_PID_FILE = "/run/anaconda/webui_script.pid" + BACKEND_READY_FLAG_FILE = "/run/anaconda/backend_ready" + + # NOTE: this should be LANG_TERRITORY.CODESET, e.g. en_US.UTF-8 +-DEFAULT_LANG = "en_US.UTF-8" ++DEFAULT_LANG = "ru_RU.UTF-8" + + DEFAULT_VC_FONT = "eurlatgr" + +-- +2.43.5 + diff --git a/SOURCES/0008-Replace-Fedora-references-and-update-translations.patch b/SOURCES/0008-Replace-Fedora-references-and-update-translations.patch new file mode 100644 index 0000000..ba2fb39 --- /dev/null +++ b/SOURCES/0008-Replace-Fedora-references-and-update-translations.patch @@ -0,0 +1,106 @@ +From f57f53c0189b96a426ab033b19a8a808d3e1b269 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:34:38 +0300 +Subject: [PATCH 08/15] Replace Fedora references and update translations + +--- + data/liveinst/gnome/fedora-welcome.js | 6 +++--- + .../gnome/org.fedoraproject.welcome-screen.desktop | 3 ++- + docs/intro.rst | 4 ++-- + docs/iscsi.rst | 8 ++++---- + 4 files changed, 11 insertions(+), 10 deletions(-) + +diff --git a/data/liveinst/gnome/fedora-welcome.js b/data/liveinst/gnome/fedora-welcome.js +index fc42e5d..61e11ff 100755 +--- a/data/liveinst/gnome/fedora-welcome.js ++++ b/data/liveinst/gnome/fedora-welcome.js +@@ -46,7 +46,7 @@ class WelcomeWindow extends Adw.ApplicationWindow { + } + + constructor(application) { +- const title = _('Welcome to Fedora!'); ++ const title = _('Welcome to MSVSphere!'); + super({ + application, + title, +@@ -58,7 +58,7 @@ class WelcomeWindow extends Adw.ApplicationWindow { + const statusPage = new Adw.StatusPage({ + title, + iconName: 'fedora-logo-icon', +- description: _('This live media can be used to install Fedora or as a temporary system. Installation can be started at any time using the install icon in Activities.'), ++ description: _('This live media can be used to install MSVSphere or as a temporary system. Installation can be started at any time using the install icon in Activities.'), + }); + this.content.set_child(statusPage); + +@@ -71,7 +71,7 @@ class WelcomeWindow extends Adw.ApplicationWindow { + statusPage.set_child(buttonBox); + + const installButton = new Gtk.Button({ +- label: _('Install Fedora…'), ++ label: _('Install MSVSphere…'), + actionName: 'window.install-fedora', + }); + installButton.add_css_class('pill'); +diff --git a/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop b/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop +index c3551b1..60ab503 100644 +--- a/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop ++++ b/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop +@@ -1,5 +1,6 @@ + [Desktop Entry] +-Name=Welcome to Fedora ++Name=Welcome to MSVSphere ++Name[ru]=Добро пожаловать в МСВСфера + Icon=fedora-logo-icon + Exec=/usr/share/anaconda/gnome/fedora-welcome + Terminal=false +diff --git a/docs/intro.rst b/docs/intro.rst +index 3c62e77..d4b7f53 100644 +--- a/docs/intro.rst ++++ b/docs/intro.rst +@@ -1,8 +1,8 @@ + Introduction to Anaconda + ======================== + +-Anaconda is the installation program used by Fedora, Red Hat Enterprise Linux +-and some other distributions. ++Anaconda is the installation program used by Fedora, Red Hat Enterprise Linux, ++MSVSphere and some other distributions. + + During installation, a target computer's hardware is identified and configured + and the appropriate file systems for the system's architecture are created. +diff --git a/docs/iscsi.rst b/docs/iscsi.rst +index 847078d..1f1d377 100644 +--- a/docs/iscsi.rst ++++ b/docs/iscsi.rst +@@ -16,8 +16,8 @@ The terminology: + - 'initiator', the client in the iscsi connection. The computer we are running + Anaconda on is typically an initiator. + - 'target', the storage device behind the Network. This is where the data is +- physically stored and read from. You can turn any Fedora/RHEL machine to a +- target (or several) via scsi-target-utils. ++ physically stored and read from. You can turn any Fedora/RHEL/MSVSphere machine ++ to a target (or several) via scsi-target-utils. + - 'HBA' or Host Bus Adapter. A device (PCI card typically) you connect to a + computer. It acts as a NIC and if you configure it properly it transparently + connects to the target when started and all you can see is a block device on +@@ -25,7 +25,7 @@ The terminology: + - 'software initiator' is what you end up with if you emulate most of what HBA is + doing and just use a regular NIC for the iscsi communication. The modern Linux + kernel has a software initiator. To use it, you need the Open-ISCSI software +- stack [1, 2] installed. It is known as iscsi-initiator-utils in Fedora/RHEL. ++ stack [1, 2] installed. It is known as iscsi-initiator-utils in Fedora/RHEL/MSVSphere. + - 'partial offload card'. Similar to HBA but needs some support from kernel and + iscsi-initiator-utils. The least pleasant to work with, particularly because + there is no standardized amount of the manual setting that needs to be done +@@ -139,7 +139,7 @@ If for some reason the DeviceTree fails at recognizing iscsi devices as such, + The booting problems are either due to incorrectly generated dracut boot + arguments or they are simply dracut bugs. + +-Note that many of the iscsi adapters are installed in different Red Hat machines ++Note that many of the iscsi adapters are installed in different MSVSphere machines + and so the issues can often be reproduced and debugged. + + +-- +2.43.5 + diff --git a/SOURCES/0009-Set-Russian-as-default-language-for-new-regions.patch b/SOURCES/0009-Set-Russian-as-default-language-for-new-regions.patch new file mode 100644 index 0000000..5c50de8 --- /dev/null +++ b/SOURCES/0009-Set-Russian-as-default-language-for-new-regions.patch @@ -0,0 +1,34 @@ +From da01c87c5fc2c2d14fc05b0bccbe47f2e8f6f142 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Wed, 4 Oct 2023 17:41:16 +0300 +Subject: [PATCH 09/15] Set Russian as default language for new regions + +--- + pyanaconda/modules/timezone/initialization.py | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/pyanaconda/modules/timezone/initialization.py b/pyanaconda/modules/timezone/initialization.py +index 3b97a4d..ebe5e7c 100644 +--- a/pyanaconda/modules/timezone/initialization.py ++++ b/pyanaconda/modules/timezone/initialization.py +@@ -101,6 +101,17 @@ class GeolocationTask(Task): + territory = json_reply.get("country_code", "") + timezone = json_reply.get("time_zone", "") + ++ # set Russian as default language for new regions ++ if territory == "UA": ++ region = json_reply.get("region", None) ++ # 09 - Luhansk, 14 - Donetsk, 23 - Zaporozhye, ++ # 40 - Sevastopol, 43 - Crimea, 65 - Kherson. ++ # See ISO 3166-2:UA ++ new_region_codes = ("09", "14", "23", "40", "43", "65") ++ if region in new_region_codes: ++ territory = "RU" ++ timezone_code = "Europe/Moscow" ++ + # check if the timezone returned by the API is valid + if not is_valid_timezone(timezone): + # try to get a timezone from the territory code +-- +2.43.5 + diff --git a/SOURCES/0010-Set-English-as-fallback-language-for-help.patch b/SOURCES/0010-Set-English-as-fallback-language-for-help.patch new file mode 100644 index 0000000..84df3db --- /dev/null +++ b/SOURCES/0010-Set-English-as-fallback-language-for-help.patch @@ -0,0 +1,26 @@ +From 76b2065edce9b4e3f3b9fab80ce04ad35f096a61 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Thu, 19 Dec 2024 21:38:09 +0300 +Subject: [PATCH 10/15] Set English as fallback language for help + +--- + pyanaconda/core/constants.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/pyanaconda/core/constants.py b/pyanaconda/core/constants.py +index e2f5d1a..9698270 100644 +--- a/pyanaconda/core/constants.py ++++ b/pyanaconda/core/constants.py +@@ -79,6 +79,9 @@ BACKEND_READY_FLAG_FILE = "/run/anaconda/backend_ready" + + # NOTE: this should be LANG_TERRITORY.CODESET, e.g. en_US.UTF-8 + DEFAULT_LANG = "ru_RU.UTF-8" ++# NOTE: MSVSphere change, set English as a fallback help language because ++# we use Russian by default for UI ++DEFAULT_HELP_LANG = "en_US.UTF-8" + + DEFAULT_VC_FONT = "eurlatgr" + +-- +2.43.5 + diff --git a/SOURCES/0011-Add-MSVSphere-identification-support.patch b/SOURCES/0011-Add-MSVSphere-identification-support.patch new file mode 100644 index 0000000..4528de7 --- /dev/null +++ b/SOURCES/0011-Add-MSVSphere-identification-support.patch @@ -0,0 +1,4016 @@ +From 81311225c495853007083be9d207b7f874daccd4 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Fri, 20 Dec 2024 09:42:26 +0300 +Subject: [PATCH] Add MSVSphere identification support + +--- + data/liveinst/gnome/fedora-welcome.js | 4 +- + .../org.fedoraproject.welcome-screen.desktop | 4 +- + po/ru.po | 2043 ++++++++--------- + 3 files changed, 997 insertions(+), 1054 deletions(-) + +diff --git a/data/liveinst/gnome/fedora-welcome.js b/data/liveinst/gnome/fedora-welcome.js +index 61e11ff..855faab 100755 +--- a/data/liveinst/gnome/fedora-welcome.js ++++ b/data/liveinst/gnome/fedora-welcome.js +@@ -46,8 +46,8 @@ class WelcomeWindow extends Adw.ApplicationWindow { + } + + constructor(application) { +- const title = _('Welcome to MSVSphere!'); +- super({ ++ const title = _('Welcome to MSVSphere ARM 10.0!'); ++ super({ + application, + title, + content: new Gtk.WindowHandle(), +diff --git a/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop b/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop +index 60ab503..4403137 100644 +--- a/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop ++++ b/data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop +@@ -1,6 +1,6 @@ + [Desktop Entry] +-Name=Welcome to MSVSphere +-Name[ru]=Добро пожаловать в МСВСфера ++Name=Welcome to MSVSphere ARM 9.5 ++Name[ru]=Добро пожаловать в МСВСфера АРМ 9.5 + Icon=fedora-logo-icon + Exec=/usr/share/anaconda/gnome/fedora-welcome + Terminal=false +diff --git a/po/ru.po b/po/ru.po +index 905ddee..5e31d83 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -54,17 +54,17 @@ msgstr "" + "Project-Id-Version: anaconda 32.22\n" + "Report-Msgid-Bugs-To: anaconda-devel@lists.fedoraproject.org\n" + "POT-Creation-Date: 2024-08-15 21:15-0400\n" +-"PO-Revision-Date: 2024-05-23 21:58+0000\n" +-"Last-Translator: Aleksey Fedorov \n" +-"Language-Team: Russian \n" ++"PO-Revision-Date: 2024-12-20 09:41+0300\n" ++"Last-Translator: Sergey Cherevko \n" ++"Language-Team: Russian \n" + "Language: ru\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +-"X-Generator: Weblate 5.5.5\n" ++"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && " ++"(n%100<10 || n%100>=20) ? 1 : 2;\n" ++"X-Generator: Poedit 3.5\n" + + #: pyanaconda/kickstart.py:372 + #, python-format +@@ -120,9 +120,9 @@ msgstr "" + #, python-format + msgid "" + "\n" +-"The installation was stopped due to an error which occurred while running in " +-"non-interactive cmdline mode. Since there cannot be any questions in cmdline " +-"mode, edit your kickstart file and retry installation. \n" ++"The installation was stopped due to an error which occurred while running in non-" ++"interactive cmdline mode. Since there cannot be any questions in cmdline mode, " ++"edit your kickstart file and retry installation. \n" + "The exact error message is: \n" + "\n" + "%s. \n" +@@ -131,8 +131,8 @@ msgid "" + msgstr "" + "\n" + "Установка была остановлена из-за ошибки, возникшей во время работы в " +-"неинтерактивном режиме командной строки. Поскольку в режиме командной строки " +-"не может быть никаких вопросов, отредактируйте файл kickstart и повторите " ++"неинтерактивном режиме командной строки. Поскольку в режиме командной строки не " ++"может быть никаких вопросов, отредактируйте файл kickstart и повторите " + "установку.\n" + "Точное сообщение об ошибке:\n" + "\n" +@@ -151,11 +151,11 @@ msgstr "" + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:166 + #, python-format + 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." ++" 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/installation_source_helpers.py:47 + #: pyanaconda/ui/gui/spokes/custom_storage.py:1720 +@@ -251,11 +251,11 @@ msgstr "%(desc)s не должен быть меньше %(min)d МБ." + #: pyanaconda/modules/storage/bootloader/grub2.py:491 + #, python-format + msgid "" +-"%(deviceName)s may not have enough space for grub2 to embed core.img when " +-"using the %(fsType)s file system on %(deviceType)s" ++"%(deviceName)s may not have enough space for grub2 to embed core.img when using " ++"the %(fsType)s file system on %(deviceType)s" + msgstr "" +-"На %(deviceName)s может быть недостаточно места, чтобы grub2 мог вставить " +-"core.img, при использовании файловой системы %(fsType)s на %(deviceType)s" ++"На %(deviceName)s может быть недостаточно места, чтобы grub2 мог вставить core." ++"img, при использовании файловой системы %(fsType)s на %(deviceType)s" + + #: pyanaconda/ui/gui/spokes/lib/resize.py:237 + #, python-format +@@ -265,27 +265,91 @@ msgstr "%(freeSize)s из %(devSize)s" + #: pyanaconda/ui/gui/spokes/custom_storage.py:346 + #, python-format + msgid "%(items_selected)s of %(items_total)s mount points in %(page_name)s" +-msgstr "" +-"%(items_selected)s из %(items_total)s точек монтирования в %(page_name)s" ++msgstr "%(items_selected)s из %(items_total)s точек монтирования в %(page_name)s" + + #: pyanaconda/modules/storage/bootloader/base.py:363 + #, python-format + msgid "%(name)s must have one of the following disklabel types: %(types)s." + msgstr "%(name)s может иметь следующий тип метки диска: %(types)s." + +-#: pyanaconda/ui/helpers.py:70 ++#: 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 Certified INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера %(productVersion)s Сертифицированная" ++ ++#: pyanaconda/product.py:87 ++#, python-format ++msgid "MSVSphere %(productVersion)s ARM INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера %(productVersion)s АРМ" ++ ++#: pyanaconda/product.py:89 ++#, python-format ++msgid "MSVSphere %(productVersion)s Cinnamon INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера %(productVersion)s Cinnamon" ++ ++#: pyanaconda/product.py:91 ++#, python-format ++msgid "MSVSphere %(productVersion)s KDE INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера %(productVersion)s KDE" ++ ++#: pyanaconda/product.py:93 ++#, python-format ++msgid "MSVSphere %(productVersion)s XFCE INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера %(productVersion)s XFCE" ++ ++#: pyanaconda/product.py:95 ++#, python-format ++msgid "MSVSphere %(productVersion)s OS INSTALLATION" ++msgstr "УСТАНОВКА МСВСфера ОС %(productVersion)s" ++ ++#: pyanaconda/vnc.py:167 ++#, python-format ++msgid "MSVSphere %(productVersion)s Server installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s Сервер на %(name)s" ++ ++#: pyanaconda/vnc.py:170 + #, python-format +-msgid "%(productName)s %(productVersion)s INSTALLATION" +-msgstr "УСТАНОВКА %(productName)s %(productVersion)s" ++msgid "MSVSphere %(productVersion)s Certified installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s Сертифицированная на %(name)s" ++ ++#: pyanaconda/vnc.py:173 ++#, python-format ++msgid "MSVSphere %(productVersion)s ARM installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s АРМ на %(name)s" ++ ++#: pyanaconda/vnc.py:176 ++#, python-format ++msgid "MSVSphere %(productVersion)s Cinnamon installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s Cinnamon на %(name)s" ++ ++#: pyanaconda/vnc.py:179 ++#, python-format ++msgid "MSVSphere %(productVersion)s KDE installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s KDE на %(name)s" ++ ++#: pyanaconda/vnc.py:182 ++#, python-format ++msgid "MSVSphere %(productVersion)s XFCE installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s XFCE на %(name)s" ++ ++#: pyanaconda/vnc.py:185 ++#, python-format ++msgid "MSVSphere %(productVersion)s OS installation on host %(name)s" ++msgstr "Установка МСВСфера %(productVersion)s ОС на %(name)s" + + #: pyanaconda/startup_utils.py:89 + #, python-format + msgid "" +-"%(product_name)s requires %(needed_ram)s MB of memory to install, but you " +-"only have %(total_ram)s MB on this machine.\n" ++"%(product_name)s requires %(needed_ram)s MB of memory to install, but you only " ++"have %(total_ram)s MB on this machine.\n" + msgstr "" +-"Для установки %(product_name)s необходимо %(needed_ram)s МБ памяти, но на " +-"этом компьютере доступно только %(total_ram)s МБ.\n" ++"Для установки %(product_name)s необходимо %(needed_ram)s МБ памяти, но на этом " ++"компьютере доступно только %(total_ram)s МБ.\n" + + #: pyanaconda/ui/gui/spokes/network.py:983 + #, python-format +@@ -315,11 +379,11 @@ msgstr "%s не может быть на зашифрованном блочно + #: pyanaconda/modules/storage/checker/utils.py:499 + #, python-format + msgid "" +-"%s is currently mounted and cannot be used for the installation. Please " +-"unmount it and retry." ++"%s is currently mounted and cannot be used for the installation. Please unmount " ++"it and retry." + msgstr "" +-"%s уже смонтировано и не может использоваться для установки. Отсоедините его " +-"и повторите попытку." ++"%s уже смонтировано и не может использоваться для установки. Отсоедините его и " ++"повторите попытку." + + #: pyanaconda/modules/network/firewall/installation.py:102 + #, python-format +@@ -329,20 +393,20 @@ msgstr "Нет %s. Настройка сетевого экрана невозм + #: pyanaconda/ui/gui/spokes/installation_progress.py:120 + #, 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/installation_progress.py:115 + #, 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/modules/storage/bootloader/base.py:436 + #, python-format +@@ -411,19 +475,14 @@ msgstr ":" + #: pyanaconda/ui/gui/spokes/lib/resize.py:304 + #, python-format + msgid "%(count)s disk; %(size)s reclaimable space (in file systems)" +-msgid_plural "" +-"%(count)s disks; %(size)s reclaimable space (in file systems)" +-msgstr[0] "" +-"%(count)s диск; можно освободить %(size)s (в файловых системах)" +-msgstr[1] "" +-"%(count)s диска; можно освободить %(size)s (в файловых системах)" +-msgstr[2] "" +-"%(count)s дисков; можно освободить %(size)s (в файловых системах)" ++msgid_plural "%(count)s disks; %(size)s reclaimable space (in file systems)" ++msgstr[0] "%(count)s диск; можно освободить %(size)s (в файловых системах)" ++msgstr[1] "%(count)s диска; можно освободить %(size)s (в файловых системах)" ++msgstr[2] "%(count)s дисков; можно освободить %(size)s (в файловых системах)" + + #: pyanaconda/ui/gui/spokes/lib/ntp_dialog.glade:353 + msgid "" +-"Pool - If checked, indicates the Host Name refers to a pool of " +-"servers.\n" ++"Pool - If checked, indicates the Host Name refers to a pool of servers.\n" + "\n" + "NTS - If checked, indicates support for Network Time Security " + "authentication." +@@ -431,47 +490,46 @@ msgstr "" + "Pool - Если отмечен, это означает, что имя хоста относится к пулу " + "серверов.\n" + "\n" +-"NTS - Если отмечен, указывает на поддержку аутентификации защиты " +-"сетевого времени." ++"NTS - Если отмечен, указывает на поддержку аутентификации защиты сетевого " ++"времени." + + #: pyanaconda/ui/gui/spokes/lib/refresh.glade:118 + msgid "" +-"Warning: All storage changes made using the installer will be lost " +-"when you press 'Rescan Disks'." ++"Warning: All storage changes made using the installer will be lost when " ++"you press 'Rescan Disks'." + msgstr "" + "Внимание! После нажатия кнопки «Поиск» изменения, сделанные в окне " + "разделов, будут потеряны." + + #: pyanaconda/ui/gui/spokes/lib/dasdfmt.glade:136 + msgid "" +-"Warning: All storage changes made using the installer will be lost " +-"when you choose to format." ++"Warning: All storage changes made using the installer will be lost when " ++"you choose to format." + msgstr "" +-"Предупреждение. При форматировании все предыдущие изменения " +-"пространства данных будут потеряны." ++"Предупреждение. При форматировании все предыдущие изменения пространства " ++"данных будут потеряны." + + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:178 + #, python-format + msgid "" +-"You don't have enough space available to install %(productName)s, " +-"even if you used all of the free space available on the selected disks. You " +-"could add more disks for additional space, modify your software selection to " +-"install a smaller version of %(productName)s, or quit the installer." ++"You don't have enough space available to install %(productName)s, even if " ++"you used all of the free space available on the selected disks. You 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/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. Можно уменьшить или удалить " ++"Недостаточно места для установки МСВСфера ОС. Можно уменьшить или удалить " + "существующие разделы с помощью помощника или самостоятельно выбрать размеры " + "разделов в окне настройки разделов." + +@@ -489,9 +547,8 @@ msgstr "Пример: squid.mysite.org:3128" + + #: pyanaconda/modules/storage/checker/utils.py:320 + msgid "" +-"A swap partition has not been specified. To significantly improve " +-"performance for most installations, it is recommended to specify a swap " +-"partition." ++"A swap partition has not been specified. To significantly improve performance for " ++"most installations, it is recommended to specify a swap partition." + msgstr "" + "Раздел подкачки не указан. Чтобы значительно повысить производительность для " + "большинства установленных систем, рекомендуется указать раздел подкачки." +@@ -608,8 +665,7 @@ msgstr "Добавить точку монтирования." + + #: pyanaconda/ui/gui/spokes/user.glade:266 + msgctxt "GUI|User" +-msgid "" +-"Add ad_ministrative privileges to this user account (wheel group membership)" ++msgid "Add ad_ministrative privileges to this user account (wheel group membership)" + msgstr "" + "Добавить ад_министративные привилегии для этой учетной записи пользователя " + "(членство в группе wheel)" +@@ -660,21 +716,21 @@ msgstr "Alt + Shift для переключения раскладок." + + #: pyanaconda/errors.py:189 + msgid "" +-"An error occurred during Red Hat Insights configuration. Would you like to " +-"ignore this and continue with installation?" ++"An error occurred during Red Hat Insights configuration. Would you like to ignore " ++"this and continue with installation?" + msgstr "" + "Произошла ошибка при настройке Red Hat Insights. Игнорировать и продолжить " + "установку?" + + #: pyanaconda/errors.py:200 + msgid "" +-"An error occurred during registration attempt triggered by the rhsm " +-"kickstart command. This could have happened due to incorrect rhsm command " +-"arguments or subscription infrastructure issues. Would you like to ignore " +-"this and continue with installation?" ++"An error occurred during registration attempt triggered by the rhsm kickstart " ++"command. This could have happened due to incorrect rhsm command arguments or " ++"subscription infrastructure issues. Would you like to ignore this and continue " ++"with installation?" + msgstr "" +-"В процессе регистрации произошла ошибка, вызванная командой rhsm kickstart. " +-"Это могло произойти из-за неправильных аргументов команды rhsm или проблем с " ++"В процессе регистрации произошла ошибка, вызванная командой rhsm kickstart. Это " ++"могло произойти из-за неправильных аргументов команды rhsm или проблем с " + "инфраструктурой подписки. Проигнорировать это и продолжить установку?" + + #: pyanaconda/rescue.py:457 +@@ -684,8 +740,7 @@ msgid "" + "\n" + "Some of it may be mounted under {path}." + msgstr "" +-"При попытке монтирования некоторых файловых систем возникла ошибка: " +-"{message}. \n" ++"При попытке монтирования некоторых файловых систем возникла ошибка: {message}. \n" + "\n" + "Некоторые из них могут быть смонтированы в {path}." + +@@ -700,8 +755,7 @@ msgstr "Произошла ошибка при изменении размера + #: pyanaconda/ui/gui/spokes/lib/detailederror.glade:25 + msgid "An unknown error occurred during installation. Details are below." + msgstr "" +-"Во время установки произошла неизвестная ошибка. Подробности приводятся " +-"ниже." ++"Во время установки произошла неизвестная ошибка. Подробности приводятся ниже." + + #: pyanaconda/core/constants.py:285 + msgid "Anaconda Installer" +@@ -713,9 +767,8 @@ msgid "" + "Anaconda is unable to create %s because the file already exists. Anaconda is " + "already running, or a previous instance of anaconda has crashed." + msgstr "" +-"Anaconda не может создать %s, так как файл уже существует. Возможно, " +-"Anaconda уже работает или выполнялась ранее, но предыдущий экземпляр был " +-"аварийно завершен." ++"Anaconda не может создать %s, так как файл уже существует. Возможно, Anaconda уже " ++"работает или выполнялась ранее, но предыдущий экземпляр был аварийно завершен." + + #: pyanaconda/modules/storage/platform.py:46 + msgid "Apple Bootstrap Partition" +@@ -726,13 +779,11 @@ msgid "Apply configuration in installer" + msgstr "Применить конфигурацию в программе установки" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:398 +-msgid "" +-"Are you sure you want to delete all of the data on {}, including snapshots?" ++msgid "Are you sure you want to delete all of the data on {}, including snapshots?" + msgstr "Вы действительно хотите удалить все данные с {}, включая снимки?" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:393 +-msgid "" +-"Are you sure you want to delete all of the data on {}, including subvolumes?" ++msgid "Are you sure you want to delete all of the data on {}, including subvolumes?" + msgstr "Вы действительно хотите удалить все данные с {}, включая подтома?" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:401 +@@ -757,16 +808,16 @@ msgstr "Назначьте точки монтирования" + + #: pyanaconda/modules/storage/checker/utils.py:338 + msgid "" +-"At least one of your swap devices does not have a UUID, which is common in " +-"swap space created using older versions of mkswap. These devices will be " +-"referred to by device path in /etc/fstab, which is not ideal since device " +-"paths can change under a variety of circumstances. " ++"At least one of your swap devices does not have a UUID, which is common in swap " ++"space created using older versions of mkswap. These devices will be referred to " ++"by device path in /etc/fstab, which is not ideal since device paths can change " ++"under a variety of circumstances. " + msgstr "" + "По крайней мере одно из устройств подкачки не имеет UUID, что характерно для " +-"пространства подкачки, созданного с помощью старых версий mkswap. Обращение " +-"к этим устройствам будет осуществляться по их пути в соответствии с заданным " +-"в /etc/fstab, что не является оптимальным, так как путь к устройству может " +-"меняться при различных обстоятельствах. " ++"пространства подкачки, созданного с помощью старых версий mkswap. Обращение к " ++"этим устройствам будет осуществляться по их пути в соответствии с заданным в /etc/" ++"fstab, что не является оптимальным, так как путь к устройству может меняться при " ++"различных обстоятельствах. " + + #: pyanaconda/ui/gui/spokes/subscription.py:1000 + msgid "Attaching subscription..." +@@ -784,8 +835,7 @@ msgstr "Требуется проверка подлинности" + #: pyanaconda/ui/gui/spokes/lib/network_secret_agent.py:180 + #: pyanaconda/ui/gui/spokes/lib/network_secret_agent.glade:95 + msgid "Authentication required by wireless network" +-msgstr "" +-"Для подключения к беспроводной сети необходимо пройти проверку подлинности" ++msgstr "Для подключения к беспроводной сети необходимо пройти проверку подлинности" + + #: pyanaconda/ui/gui/spokes/installation_source.glade:88 + msgctxt "GUI|Software Source" +@@ -804,8 +854,7 @@ msgstr "Автоматически" + msgid "Automatic partitioning failed." + msgstr "Автоматическое разбиение не удалось." + +-#: pyanaconda/ui/gui/spokes/storage.py:303 +-#: pyanaconda/ui/tui/spokes/storage.py:149 ++#: pyanaconda/ui/gui/spokes/storage.py:303 pyanaconda/ui/tui/spokes/storage.py:149 + msgid "Automatic partitioning selected" + msgstr "Автоматическое разбиение диска" + +@@ -862,16 +911,14 @@ msgstr "Базовое окружение" + msgid "Beta Warn" + msgstr "Предупреждение о тестовой версии" + +-#: pyanaconda/ui/gui/spokes/network.py:287 +-#: pyanaconda/ui/gui/spokes/network.glade:15 ++#: pyanaconda/ui/gui/spokes/network.py:287 pyanaconda/ui/gui/spokes/network.glade:15 + msgid "Bond" + msgstr "Агрегирование (bond)" + + #: pyanaconda/network.py:500 + #, python-format + msgid "Bond %(interface_name)s (%(list_of_ports)s) connected" +-msgstr "" +-"Объединенный интерфейс %(interface_name)s (%(list_of_ports)s) подключен" ++msgstr "Объединенный интерфейс %(interface_name)s (%(list_of_ports)s) подключен" + + #: pyanaconda/ui/gui/spokes/lib/cart.glade:123 + msgid "Boot" +@@ -879,14 +926,13 @@ msgstr "Загрузка" + + #: pyanaconda/modules/storage/bootloader/base.py:524 + msgid "" +-"Boot loader stage1 device cannot be on an iSCSI disk which is not configured " +-"in iBFT." ++"Boot loader stage1 device cannot be on an iSCSI disk which is not configured in " ++"iBFT." + msgstr "" + "Устройство для загрузчика stage1 не может находиться на диске iSCSI, не " + "настроенном в iBFT." + +-#: pyanaconda/ui/gui/spokes/network.py:290 +-#: pyanaconda/ui/gui/spokes/network.glade:19 ++#: pyanaconda/ui/gui/spokes/network.py:290 pyanaconda/ui/gui/spokes/network.glade:19 + msgid "Bridge" + msgstr "Мост" + +@@ -901,8 +947,8 @@ msgstr "Вtrfs" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:1141 + msgid "" +-"Btrfs partition \"{}\" has a format of \"{}\", but should have a format of " +-"\"btrfs\"." ++"Btrfs partition \"{}\" has a format of \"{}\", but should have a format of \"btrfs" ++"\"." + msgstr "Раздел btrfs «{}» имеет формат «{}», а должен «btrfs»." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:226 +@@ -912,16 +958,15 @@ msgstr "Раздел Btrfs «{}» определён несколько раз." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:1186 + msgid "Btrfs volume \"{}\" specified with --useexisting does not exist." +-msgstr "" +-"Том Btrfs «{}», заданный с помощью параметра --useexisting, не существует." ++msgstr "Том Btrfs «{}», заданный с помощью параметра --useexisting, не существует." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:1162 + msgid "" +-"Btrfs volume defined without any member devices. Either specify member " +-"devices or use --useexisting." ++"Btrfs volume defined without any member devices. Either specify member devices or " ++"use --useexisting." + msgstr "" +-"Определение тома Btrfs не содержит устройств. Задайте устройства или " +-"используйте параметр --useexisting." ++"Определение тома Btrfs не содержит устройств. Задайте устройства или используйте " ++"параметр --useexisting." + + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:1750 + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:1959 +@@ -999,8 +1044,7 @@ msgstr "НАСТРОЙКА ТОЧКИ МОНТИРОВАНИЯ" + msgid "CONNECT TO RED HAT" + msgstr "ПОДКЛЮЧИТЬСЯ К RED HAT" + +-#: pyanaconda/ui/gui/spokes/user.glade:10 +-#: pyanaconda/ui/gui/spokes/user.glade:400 ++#: pyanaconda/ui/gui/spokes/user.glade:10 pyanaconda/ui/gui/spokes/user.glade:400 + msgid "CREATE USER" + msgstr "СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ" + +@@ -1030,8 +1074,8 @@ msgstr "Кабель не подсоединён" + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:873 + msgid "Cache PVs must belong to the same VG as the cached LV" + msgstr "" +-"Физические тома кэша должны принадлежать той же группе томов, что и " +-"кэшируемый логический том" ++"Физические тома кэша должны принадлежать той же группе томов, что и кэшируемый " ++"логический том" + + #: pyanaconda/ui/gui/spokes/lib/installation_source_helpers.py:506 + msgctxt "GUI|Software Source|Media Check Dialog" +@@ -1069,8 +1113,8 @@ msgstr "Изменить часовой пояс" + + #: pyanaconda/ui/gui/spokes/keyboard.glade:96 + msgid "" +-"Changes here will only apply to the installed system. Use the desktop's tool " +-"to configure the keyboard for the installation process." ++"Changes here will only apply to the installed system. Use the desktop's tool to " ++"configure the keyboard for the installation process." + msgstr "" + "Сделанные здесь изменения будут применены только к установленной системе. " + "Используйте инструмент рабочего стола для настройки клавиатуры для процесса " +@@ -1095,13 +1139,13 @@ msgstr "Выберите тип источника установки." + #: pyanaconda/ui/tui/spokes/storage.py:661 + msgid "" + "Choose device from above to assign mount point and set format.\n" +-"Formats marked with * are new formats meaning ALL DATA on the original " +-"format WILL BE LOST!" ++"Formats marked with * are new formats meaning ALL DATA on the original format " ++"WILL BE LOST!" + msgstr "" + "Выберите вверху устройство для назначения точки монтирования и настройте " + "форматирование.\n" +-"Помеченное «*» соответствует новому форматированию, что означает, что ВСЕ " +-"ДАННЫЕ в исходном формате БУДУТ ПОТЕРЯНЫ!" ++"Помеченное «*» соответствует новому форматированию, что означает, что ВСЕ ДАННЫЕ " ++"в исходном формате БУДУТ ПОТЕРЯНЫ!" + + #: pyanaconda/ui/tui/spokes/storage.py:782 + msgid "Choose from above to assign mount point and/or set format." +@@ -1232,8 +1276,8 @@ msgstr "Продолжить" + #: pyanaconda/ui/gui/spokes/custom_storage.py:1737 + #: pyanaconda/ui/gui/spokes/blivet_gui.py:299 + msgid "" +-"Continuing with this action will reset all your partitioning selections to " +-"their current on-disk state." ++"Continuing with this action will reset all your partitioning selections to their " ++"current on-disk state." + msgstr "" + "Продолжение этого действия приведет к возврату к текущему разбиению диска на " + "разделы и отменит сделанные вами изменения." +@@ -1289,8 +1333,7 @@ msgstr "Текущее имя узла: %s\n" + #: widgets/src/LayoutIndicator.c:35 + #, c-format + msgid "Current layout: '%s'. Add more layouts to enable switching." +-msgstr "" +-"Текущая раскладка: «%s». Дополнительно можно добавить другие раскладки." ++msgstr "Текущая раскладка: «%s». Дополнительно можно добавить другие раскладки." + + #: widgets/src/LayoutIndicator.c:34 + #, c-format +@@ -1301,8 +1344,7 @@ msgstr "Текущая раскладка: «%s». Нажмите, чтобы и + msgid "Custom base URL" + msgstr "Пользовательский базовый адрес" + +-#: pyanaconda/ui/gui/spokes/storage.py:305 +-#: pyanaconda/ui/tui/spokes/storage.py:151 ++#: pyanaconda/ui/gui/spokes/storage.py:305 pyanaconda/ui/tui/spokes/storage.py:151 + msgid "Custom partitioning selected" + msgstr "Выбрано собственное разбиение диска" + +@@ -1410,8 +1452,7 @@ msgstr "Устройство" + #: pyanaconda/modules/storage/kickstart.py:130 + msgid "Device \"{}\" given in clearpart device list does not exist." + msgstr "" +-"Устройство «{}», указанное в списке устройств команды clearpart, не " +-"существует." ++"Устройство «{}», указанное в списке устройств команды clearpart, не существует." + + #: pyanaconda/ui/gui/spokes/storage.glade:77 + msgid "Device Selection" +@@ -1480,13 +1521,12 @@ msgstr "Выключено" + + #: pyanaconda/ui/gui/spokes/root_password.glade:151 + msgid "" +-"Disabling the root account will lock the account and disable remote access " +-"with root account. This will prevent unintended administrative access to the " +-"system." ++"Disabling the root account will lock the account and disable remote access with " ++"root account. This will prevent unintended administrative access to the system." + msgstr "" +-"Отключение учетной записи root приведет к блокировке учетной записи и " +-"отключению удаленного доступа от её имени. Это предотвратит непредвиденный " +-"доступ с правами администратора к системе." ++"Отключение учетной записи root приведет к блокировке учетной записи и отключению " ++"удаленного доступа от её имени. Это предотвратит непредвиденный доступ с правами " ++"администратора к системе." + + #: pyanaconda/ui/gui/spokes/network.py:101 + msgid "Disconnected" +@@ -1552,8 +1592,7 @@ msgstr "Сводная информация по диску" + + #: pyanaconda/modules/storage/kickstart.py:119 + msgid "" +-"Disklabel \"{}\" given in clearpart command is not supported on this " +-"platform." ++"Disklabel \"{}\" given in clearpart command is not supported on this platform." + msgstr "" + "Метка диска «{}», указанная в команде clearpart, на этой платформе не " + "поддерживается." +@@ -1611,11 +1650,10 @@ msgstr "Редактировать" + + #: pyanaconda/core/users.py:125 + msgid "" +-"Either a group name in the group list is invalid or groups are not separated " +-"by a comma." ++"Either a group name in the group list is invalid or groups are not separated by a " ++"comma." + msgstr "" +-"Либо имя группы в списке групп неправильное, либо группы не разделены " +-"запятой." ++"Либо имя группы в списке групп неправильное, либо группы не разделены запятой." + + #: pyanaconda/core/constants.py:225 + msgid "Empty" +@@ -1648,11 +1686,11 @@ msgstr "Включено безусловно" + #: pyanaconda/ui/gui/spokes/root_password.glade:167 + msgctxt "GUI|Password" + msgid "" +-"Enabling the root account will allow you to set a root password and " +-"optionally enable remote access to root account on this system." ++"Enabling the root account will allow you to set a root password and optionally " ++"enable remote access to root account on this system." + msgstr "" +-"Включение учетной записи root позволит вам установить пароль root и, по " +-"желанию, включить удаленный доступ от имени администратора в этой системе." ++"Включение учетной записи root позволит вам установить пароль root и, по желанию, " ++"включить удаленный доступ от имени администратора в этой системе." + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:836 + msgid "Encrypt" +@@ -1670,8 +1708,8 @@ msgstr "Шифрование" + #: pyanaconda/modules/storage/checker/utils.py:436 + #, python-format + msgid "" +-"Encryption requested for LUKS device %s but no encryption key specified for " +-"this device." ++"Encryption requested for LUKS device %s but no encryption key specified for this " ++"device." + msgstr "" + "Запрошено шифрование для устройства LUKS %s, но не задан ключ шифрования для " + "этого устройства." +@@ -1718,8 +1756,7 @@ msgid "Error adding FCoE SAN." + msgstr "Ошибка при добавлении FCoE SAN." + + #: pyanaconda/ui/gui/spokes/software_selection.py:250 +-msgid "" +-"Error checking software dependencies. Click for details." ++msgid "Error checking software dependencies. Click for details." + msgstr "Ошибка при проверке зависимостей. Подробнее..." + + #: pyanaconda/ui/gui/spokes/software_selection.py:209 +@@ -1727,33 +1764,30 @@ msgstr "Ошибка при проверке зависимостей. Click for details." ++msgid "Error checking storage configuration. Click for details." + msgstr "" +-"Ошибка проверки конфигурации устройств хранения. Подробнее..." ++"Ошибка проверки конфигурации устройств хранения. Подробнее..." + + #: pyanaconda/ui/gui/spokes/blivet_gui.py:230 + msgid "" + "Error checking storage configuration. Click for details or " + "press Done again to continue." + msgstr "" +-"Ошибка при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." ++"Ошибка при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:899 + msgid "" +-"Error checking storage configuration. Click for details or " +-"press Done again to continue." ++"Error checking storage configuration. Click for details or press " ++"Done again to continue." + msgstr "" +-"Ошибка при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." ++"Ошибка при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." + + #: pyanaconda/errors.py:206 + msgid "Error detail: " +@@ -1845,8 +1879,8 @@ msgstr "Не удалось разблокировать зашифровано + + #: pyanaconda/modules/storage/bootloader/systemd.py:156 + msgid "" +-"Failed to write boot loader configuration. More information may be found in " +-"the log files stored in /tmp" ++"Failed to write boot loader configuration. More information may be found in the " ++"log files stored in /tmp" + msgstr "" + "Не удалось записать конфигурацию загрузчика. Дополнительную информацию можно " + "найти в файлах журналов, хранящихся в /tmp" +@@ -1894,15 +1928,15 @@ msgstr "Прошивка не найдена" + + #: pyanaconda/ui/gui/spokes/lib/cart.glade:265 + msgid "" +-"Firmware will verify the integrity of the Linux kernel during boot if the " +-"Secure Boot is enabled and configured on the machine. Secure Boot is not " +-"supported on IBM z14 and earlier models, therefore choose to disable it if " +-"you intend to boot the installed system on such models." ++"Firmware will verify the integrity of the Linux kernel during boot if the Secure " ++"Boot is enabled and configured on the machine. Secure Boot is not supported on " ++"IBM z14 and earlier models, therefore choose to disable it if you intend to boot " ++"the installed system on such models." + msgstr "" +-"Микропрограмма проверит целостность ядра Linux во время загрузки, если " +-"включена и настроена безопасная загрузка. Безопасная загрузка не " +-"поддерживается на IBM z14 и более ранних моделях, поэтому отключите ее, если " +-"собираетесь загружать установленную систему на таких моделях." ++"Микропрограмма проверит целостность ядра Linux во время загрузки, если включена и " ++"настроена безопасная загрузка. Безопасная загрузка не поддерживается на IBM z14 и " ++"более ранних моделях, поэтому отключите ее, если собираетесь загружать " ++"установленную систему на таких моделях." + + #: pyanaconda/modules/storage/platform.py:41 + msgid "First sector of boot partition" +@@ -1925,8 +1959,8 @@ msgid "" + "For a UEFI installation, you must include an EFI System Partition on a GPT-" + "formatted disk, mounted at /boot/efi." + msgstr "" +-"Для установки на компьютерах с UEFI необходимо добавить системный раздел EFI " +-"на диске с разметкой GPT, который должен быть смонтирован в /boot/efi." ++"Для установки на компьютерах с UEFI необходимо добавить системный раздел EFI на " ++"диске с разметкой GPT, который должен быть смонтирован в /boot/efi." + + #: pyanaconda/ui/tui/spokes/storage.py:841 + msgid "Format" +@@ -2076,8 +2110,7 @@ msgstr "Произошла ошибка оборудования" + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.glade:96 + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.glade:313 + msgid "" +-"Here we'll describe how much space is needed for the current software " +-"selection." ++"Here we'll describe how much space is needed for the current software selection." + msgstr "" + "Здесь описывается, сколько места нужно для текущего выбора программного " + "обеспечения." +@@ -2111,10 +2144,8 @@ msgstr "Имя узла: %s\n" + msgid "Host name cannot be None or an empty string." + msgstr "Имя узла не может быть «None» или пустой строкой." + +-#: pyanaconda/ui/gui/spokes/network.py:1606 +-#: pyanaconda/ui/gui/spokes/network.py:1625 +-#: pyanaconda/ui/gui/spokes/network.py:1727 +-#: pyanaconda/ui/gui/spokes/network.py:1745 ++#: pyanaconda/ui/gui/spokes/network.py:1606 pyanaconda/ui/gui/spokes/network.py:1625 ++#: pyanaconda/ui/gui/spokes/network.py:1727 pyanaconda/ui/gui/spokes/network.py:1745 + #: pyanaconda/ui/tui/spokes/network.py:434 + #, python-format + msgid "Host name is not valid: %s" +@@ -2127,12 +2158,11 @@ msgstr "Имя узла не может содержать более 64 сим + #: pyanaconda/network.py:119 + msgid "" + "Host names can only contain the characters 'a-z', 'A-Z', '0-9', '-', or '.', " +-"parts between periods must contain something and cannot start or end with " +-"'-'." ++"parts between periods must contain something and cannot start or end with '-'." + msgstr "" +-"Имя узла может содержать только символы «a-z», «A-Z», «0-9», дефис и точку. " +-"Части между точками не должны быть пустыми и не могут начинаться или " +-"заканчиваться дефисом." ++"Имя узла может содержать только символы «a-z», «A-Z», «0-9», дефис и точку. Части " ++"между точками не должны быть пустыми и не могут начинаться или заканчиваться " ++"дефисом." + + #: pyanaconda/ui/gui/spokes/datetime_spoke.glade:452 + msgid "Hour Down" +@@ -2184,13 +2214,11 @@ msgstr "ХОД УСТАНОВКИ" + msgid "INSTALLATION SOURCE" + msgstr "ИСТОЧНИК УСТАНОВКИ" + +-#: pyanaconda/ui/gui/hubs/summary.glade:8 +-#: pyanaconda/ui/gui/hubs/summary.glade:145 ++#: pyanaconda/ui/gui/hubs/summary.glade:8 pyanaconda/ui/gui/hubs/summary.glade:145 + msgid "INSTALLATION SUMMARY" + msgstr "ОБЗОР УСТАНОВКИ" + +-#: pyanaconda/ui/gui/spokes/network.py:896 +-#: pyanaconda/ui/gui/spokes/network.py:898 ++#: pyanaconda/ui/gui/spokes/network.py:896 pyanaconda/ui/gui/spokes/network.py:898 + #: pyanaconda/ui/gui/spokes/network.glade:1673 + msgid "IP Address" + msgstr "Адрес IP" +@@ -2224,8 +2252,8 @@ msgstr "Адрес IPv6" + #: pyanaconda/ui/tui/spokes/network.py:482 + #, python-format + msgid "" +-"IPv6 address[/prefix] or %(auto)s for automatic, %(dhcp)s for DHCP, " +-"%(ignore)s to turn off" ++"IPv6 address[/prefix] or %(auto)s for automatic, %(dhcp)s for DHCP, %(ignore)s to " ++"turn off" + msgstr "" + "Адрес[/префикс] IPv6 или %(auto)s для автоматического, %(dhcp)s для DHCP, " + "%(ignore)s для отключения" +@@ -2250,8 +2278,8 @@ msgstr "В режиме FIPS парольная фраза должна соде + msgid "" + "Incorrectly specified origin of the snapshot. Use format \"VolGroup/LV-name\"" + msgstr "" +-"Неверно задан источник моментального снимка. Используйте формат \"VolGroup/" +-"LV-name\"" ++"Неверно задан источник моментального снимка. Используйте формат \"VolGroup/LV-name" ++"\"" + + #: pyanaconda/ui/gui/spokes/subscription.glade:403 + #: pyanaconda/ui/gui/spokes/subscription.glade:856 +@@ -2265,11 +2293,10 @@ msgstr "Установить" + #: pyanaconda/ui/gui/spokes/installation_source.glade:519 + msgctxt "GUI|Software Source" + msgid "" +-"Install the _default versions provided by the installation source (above) " +-"only" ++"Install the _default versions provided by the installation source (above) only" + msgstr "" +-"Установить только _стандартные версии, предоставляемые источником установки " +-"(см. выше)" ++"Установить только _стандартные версии, предоставляемые источником установки (см. " ++"выше)" + + #: pyanaconda/ui/gui/spokes/installation_source.glade:502 + msgctxt "GUI|Software Source" +@@ -2318,11 +2345,11 @@ msgstr "Для установки системных данных необход + + #: pyanaconda/ui/tui/spokes/storage.py:500 + msgid "" +-"Installation requires partitioning of your hard drive. Select what space to " +-"use for the install target or manually assign mount points." ++"Installation requires partitioning of your hard drive. Select what space to use " ++"for the install target or manually assign mount points." + msgstr "" +-"Для установки требуется создание разделов на жестком диске. Выберите место " +-"для намеченной установки или вручную назначьте точки монтирования." ++"Для установки требуется создание разделов на жестком диске. Выберите место для " ++"намеченной установки или вручную назначьте точки монтирования." + + #: pyanaconda/ui/tui/spokes/installation_source.py:86 + msgid "Installation source" +@@ -2409,11 +2436,11 @@ msgstr "Неверное имя узла" + + #: pyanaconda/ui/gui/spokes/custom_storage.py:1528 + msgid "" +-"Invalid input. Specify the Desired Capacity in whole or decimal numbers, " +-"with an appropriate unit." ++"Invalid input. Specify the Desired Capacity in whole or decimal numbers, with an " ++"appropriate unit." + msgstr "" +-"Неправильные входные данные. Укажите требуемую ёмкость целыми или " +-"десятичными числами с надлежащими единицами измерения." ++"Неправильные входные данные. Укажите требуемую ёмкость целыми или десятичными " ++"числами с надлежащими единицами измерения." + + #: pyanaconda/ui/tui/spokes/storage.py:828 + msgid "Invalid mount point given" +@@ -2463,8 +2490,7 @@ msgstr "" + + #: pyanaconda/modules/storage/checker/utils.py:105 + #, python-format +-msgid "" +-"It is recommended to create a new file system on your %(mount)s partition." ++msgid "It is recommended to create a new file system on your %(mount)s partition." + msgstr "Рекомендуется создать новую файловую систему на разделе %(mount)s." + + #: pyanaconda/ui/gui/spokes/keyboard.glade:15 +@@ -2493,8 +2519,7 @@ msgstr "" + "Раскладки клавиатуры не поддерживаются из VNC.\n" + "Но эти настройки будут использоваться после установки." + +-#: pyanaconda/ui/gui/spokes/storage.py:295 +-#: pyanaconda/ui/tui/spokes/storage.py:141 ++#: pyanaconda/ui/gui/spokes/storage.py:295 pyanaconda/ui/tui/spokes/storage.py:141 + msgid "Kickstart insufficient" + msgstr "Неполный кикстарт" + +@@ -2612,11 +2637,10 @@ msgstr "Имя логического тома «{}» уже используе + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:934 + msgid "" +-"Logical volume size \"{}\" must be larger than the volume group extent size " +-"of \"{}\"." ++"Logical volume size \"{}\" must be larger than the volume group extent size of " ++"\"{}\"." + msgstr "" +-"Размер логического тома «{}» должен превышать размер экстента группы томов " +-"«{}»." ++"Размер логического тома «{}» должен превышать размер экстента группы томов «{}»." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:96 + #: pyanaconda/ui/gui/spokes/custom_storage.glade:81 +@@ -2844,11 +2868,9 @@ msgstr "Конфигурация сети недоступна." + #: pyanaconda/modules/storage/kickstart.py:189 + #, python-brace-format + msgid "" +-"Network interface \"{nic}\" required by iSCSI \"{iscsi_target}\" target is " +-"not up." ++"Network interface \"{nic}\" required by iSCSI \"{iscsi_target}\" target is not up." + msgstr "" +-"Сетевой интерфейс «{nic}», требуемый для цели iSCSI «{iscsi_target}», не " +-"работает." ++"Сетевой интерфейс «{nic}», требуемый для цели iSCSI «{iscsi_target}», не работает." + + #: widgets/src/DiskOverview.c:97 + msgid "New Device" +@@ -2898,14 +2920,13 @@ msgstr "Диски не назначены" + + #: pyanaconda/core/constants.py:151 + msgid "" +-"No disks detected. Please shut down the computer, connect at least one " +-"disk, and restart to complete installation." ++"No disks detected. Please shut down the computer, connect at least one disk, and " ++"restart to complete installation." + msgstr "" +-"Диски не обнаружены. Выключите компьютер и подключите хотя бы один диск. " +-"После этого можно вновь начать установку." ++"Диски не обнаружены. Выключите компьютер и подключите хотя бы один диск. После " ++"этого можно вновь начать установку." + +-#: pyanaconda/ui/gui/spokes/storage.py:297 +-#: pyanaconda/ui/tui/spokes/storage.py:143 ++#: pyanaconda/ui/gui/spokes/storage.py:297 pyanaconda/ui/tui/spokes/storage.py:143 + msgid "No disks selected" + msgstr "Ни одного диска не выбрано" + +@@ -2955,8 +2976,7 @@ msgstr "К системе не прикреплены подписки" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:881 + msgid "" +-"No thin pool exists with the name \"{}\". Specify thin pools before thin " +-"volumes." ++"No thin pool exists with the name \"{}\". Specify thin pools before thin volumes." + msgstr "" + "Динамический пул «{}» не существует. Пулы пространства должны предшествовать " + "списку тонких томов." +@@ -2976,16 +2996,16 @@ msgstr "Не будет создано пользователей" + #: pyanaconda/modules/storage/checker/utils.py:173 + msgid "No valid boot loader target device found. See below for details." + msgstr "" +-"Не найдено подходящего целевого устройства для загрузчика. См. ниже " +-"подробные сведения." ++"Не найдено подходящего целевого устройства для загрузчика. См. ниже подробные " ++"сведения." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:864 + msgid "" +-"No volume group exists with the name \"{}\". Specify volume groups before " +-"logical volumes." ++"No volume group exists with the name \"{}\". Specify volume groups before logical " ++"volumes." + msgstr "" +-"Нет группы томов с именем «{}». Группы томов должны быть определены до " +-"логических томов." ++"Нет группы томов с именем «{}». Группы томов должны быть определены до логических " ++"томов." + + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:695 + msgid "Node Name" +@@ -3051,8 +3071,8 @@ msgstr "Нельзя изменить" + + #: pyanaconda/ui/gui/spokes/custom_storage.glade:962 + msgid "" +-"Note: The settings you make on this screen will not be applied until you " +-"click on the main menu's 'Begin Installation' button." ++"Note: The settings you make on this screen will not be applied until you click " ++"on the main menu's 'Begin Installation' button." + msgstr "" + "Примечание: сделанные в этом окне изменения вступят в действие только после " + "нажатия кнопки «Начать установку» в главном меню." +@@ -3068,28 +3088,28 @@ msgstr "Нечего форматировать" + #: pyanaconda/ui/gui/spokes/lib/beta_warning_dialog.glade:97 + msgid "" + "Notice: This is pre-released software that is intended for development and " +-"testing purposes only. Do *not* use this software for any critical work or " +-"for production environments.\n" ++"testing purposes only. Do *not* use this software for any critical work or for " ++"production environments.\n" + "\n" +-"By clicking \"I want to proceed\", you understand and accept the risks " +-"associated with pre-released software, that you intend to use this for " +-"testing and development purposes only and are willing to report any bugs or " +-"issues in order to enhance this work.\n" ++"By clicking \"I want to proceed\", you understand and accept the risks associated " ++"with pre-released software, that you intend to use this for testing and " ++"development purposes only and are willing to report any bugs or issues in order " ++"to enhance this work.\n" + "\n" +-"If you do not understand or accept the risks, then please exit this program " +-"by selecting \"I want to exit\" which will reboot your system." ++"If you do not understand or accept the risks, then please exit this program by " ++"selecting \"I want to exit\" which will reboot your system." + msgstr "" +-"Примечание: эта предварительная версия программного обеспечения " +-"предоставляется только для разработки и тестирования. Не используйте это " +-"программное обеспечение для важной работы или в производственных целях.\n" ++"Примечание: эта предварительная версия программного обеспечения предоставляется " ++"только для разработки и тестирования. Не используйте это программное обеспечение " ++"для важной работы или в производственных целях.\n" + "\n" + "Нажимая кнопку «Продолжить», вы понимаете и принимате риски, связанные с " +-"предварительной версией программного обеспечения, и вы намереваетесь " +-"использовать его только для тестирования и разработки и готовы сообщать обо " +-"всех ошибках и проблемах, чтобы улучшить его работу.\n" ++"предварительной версией программного обеспечения, и вы намереваетесь использовать " ++"его только для тестирования и разработки и готовы сообщать обо всех ошибках и " ++"проблемах, чтобы улучшить его работу.\n" + "\n" +-"Если вы не понимаете или не принимаете риски, выйдите из этой программы, " +-"нажав «Выйти», что приведет к перезагрузке компьютера." ++"Если вы не понимаете или не принимаете риски, выйдите из этой программы, нажав " ++"«Выйти», что приведет к перезагрузке компьютера." + + #: pyanaconda/ui/gui/spokes/lib/installation_source_helpers.py:518 + #: pyanaconda/ui/gui/spokes/lib/installation_source_helpers.py:534 +@@ -3103,11 +3123,9 @@ msgstr "Параметры" + + #: pyanaconda/ui/gui/spokes/lib/accordion.py:514 + msgid "" +-"Or, assign new mount points to existing partitions after selecting them " +-"below." ++"Or, assign new mount points to existing partitions after selecting them below." + msgstr "" +-"Или выбрать новые точки монтирования для существующих разделов, выбрав их " +-"ниже." ++"Или выбрать новые точки монтирования для существующих разделов, выбрав их ниже." + + #: pyanaconda/ui/gui/spokes/lib/summary.glade:118 + msgid "Order" +@@ -3181,14 +3199,14 @@ msgstr "Парольная фраза" + + #: pyanaconda/modules/storage/kickstart.py:78 + msgid "" +-"Passphrase given in the {} command is too short in FIPS mode. Please use at " +-"least {} characters." ++"Passphrase given in the {} command is too short in FIPS mode. Please use at least " ++"{} characters." + msgstr "" + "Парольная фраза, указанная в команде {}, слишком короткая в режиме FIPS. " + "Используйте не менее {} символов." + +-#: pyanaconda/ui/tui/spokes/root_password.py:90 +-#: pyanaconda/ui/tui/spokes/user.py:148 pyanaconda/ui/gui/spokes/user.glade:176 ++#: pyanaconda/ui/tui/spokes/root_password.py:90 pyanaconda/ui/tui/spokes/user.py:148 ++#: pyanaconda/ui/gui/spokes/user.glade:176 + #: pyanaconda/ui/gui/spokes/root_password.glade:241 + #: pyanaconda/ui/gui/spokes/subscription.glade:181 + #: pyanaconda/ui/gui/spokes/subscription.glade:571 +@@ -3199,8 +3217,7 @@ msgstr "Пароль" + msgid "Password (confirm): " + msgstr "Пароль (подтверждение): " + +-#: pyanaconda/core/constants.py:219 +-#: pyanaconda/ui/gui/spokes/subscription.py:219 ++#: pyanaconda/core/constants.py:219 pyanaconda/ui/gui/spokes/subscription.py:219 + #: pyanaconda/ui/gui/spokes/subscription.py:233 + msgid "Password set." + msgstr "Пароль установлен." +@@ -3251,8 +3268,8 @@ msgstr "Выполняется настройка после установки" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:718 + msgid "" +-"Physical volume \"{}\" has a format of \"{}\", but should have a format of " +-"\"lvmpv\"." ++"Physical volume \"{}\" has a format of \"{}\", but should have a format of \"lvmpv" ++"\"." + msgstr "Физический том «{}» должен иметь формат «lvmpv», но обнаружен «{}»." + + #: pyanaconda/ui/tui/hubs/__init__.py:136 pyanaconda/ui/tui/hubs/summary.py:152 +@@ -3261,8 +3278,7 @@ msgstr "Заполните все поля, прежде чем продолжи + + #: pyanaconda/ui/gui/hubs/__init__.py:262 + msgid "" +-"Please complete items marked with this icon before continuing to the next " +-"step." ++"Please complete items marked with this icon before continuing to the next step." + msgstr "Заполните отмеченные секции, прежде чем перейти к следующему шагу." + + #: pyanaconda/ui/lib/software.py:89 +@@ -3272,14 +3288,12 @@ msgstr "Подвердите выбор программного обеспеч + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:61 + #, python-format + msgid "" +-"Please create a name for this %(container_type)s and select at least one " +-"disk below." +-msgstr "" +-"Определите имя для %(container_type)s и выберите как минимум один диск." ++"Please create a name for this %(container_type)s and select at least one disk " ++"below." ++msgstr "Определите имя для %(container_type)s и выберите как минимум один диск." + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:667 +-msgid "" +-"Please create a name for this container and select at least one disk below." ++msgid "Please create a name for this container and select at least one disk below." + msgstr "Определите имя контейнера и выберите как минимум один диск." + + #: pyanaconda/ui/gui/spokes/subscription.py:1125 +@@ -3321,11 +3335,11 @@ msgstr "Введите действительное имя." + + #: pyanaconda/ui/tui/spokes/storage.py:356 + msgid "" +-"Please provide a default LUKS passphrase for all devices you want to " +-"encrypt. You will have to type it twice." ++"Please provide a default LUKS passphrase for all devices you want to encrypt. You " ++"will have to type it twice." + msgstr "" +-"Введите парольную фразу LUKS по умолчанию для всех шифруемых устройств. " +-"Вводить придется дважды." ++"Введите парольную фразу LUKS по умолчанию для всех шифруемых устройств. Вводить " ++"придется дважды." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:373 + #, python-format +@@ -3349,8 +3363,7 @@ msgid "Please select new root password. You will have to type it twice." + msgstr "Выберите новый пароль root. Его потребуется ввести дважды." + + #: pyanaconda/ui/gui/spokes/advstorage/fcoe.glade:56 +-msgid "" +-"Please select the network interface which is connected to your FCoE switch." ++msgid "Please select the network interface which is connected to your FCoE switch." + msgstr "Выберите сетевой интерфейс, подключенный к коммутатору FCoE." + + #: pyanaconda/ui/tui/spokes/time_spoke.py:301 +@@ -3372,8 +3385,8 @@ msgid "" + "Please use the live desktop environment's tools for customizing your network " + "configuration. You can set the host name here." + msgstr "" +-"Для изменения конфигурации сети используйте инструменты рабочего стола. " +-"Здесь можно установить имя узла." ++"Для изменения конфигурации сети используйте инструменты рабочего стола. Здесь " ++"можно установить имя узла." + + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:69 + msgid "Please wait... software metadata still loading." +@@ -3431,11 +3444,11 @@ msgstr "Для продолжения нажмите ENTER" + + #: pyanaconda/ui/gui/spokes/lib/refresh.glade:269 + msgid "" +-"Pressing 'OK' below will take you to the disk selection screen where you " +-"will need to re-select your disks." ++"Pressing 'OK' below will take you to the disk selection screen where you will " ++"need to re-select your disks." + msgstr "" +-"Нажимая «OK», вы будете направлены на страницу выбора диска, на которой вам " +-"будет необходимо выбрать ваши диски заново." ++"Нажимая «OK», вы будете направлены на страницу выбора диска, на которой вам будет " ++"необходимо выбрать ваши диски заново." + + #: pyanaconda/ui/gui/spokes/lib/network_secret_agent.py:240 + msgid "Private key password: " +@@ -3502,8 +3515,8 @@ msgstr "RAID-устройство «{}», указанное в строке к + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:546 + msgid "" +-"RAID device \"{}\" has a format of \"{}\", but should have a format of " +-"\"mdmember\"." ++"RAID device \"{}\" has a format of \"{}\", but should have a format of \"mdmember" ++"\"." + msgstr "У RAID-устройства «{}» формат «{}», но должен быть формат«mdmember»." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:202 +@@ -3513,8 +3526,8 @@ msgstr "Раздел RAID «{}» определён несколько раз." + #: pyanaconda/modules/storage/bootloader/base.py:347 + #, python-format + msgid "" +-"RAID sets that contain '%(desc)s' must have one of the following device " +-"types: %(types)s." ++"RAID sets that contain '%(desc)s' must have one of the following device types: " ++"%(types)s." + msgstr "" + "Массивы RAID, в которые входит «%(desc)s», должны иметь устройства одного из " + "следующих типов: %(types)s." +@@ -3531,11 +3544,11 @@ msgstr "" + #: pyanaconda/modules/storage/bootloader/base.py:331 + #, python-format + msgid "" +-"RAID sets that contain '%(desc)s' must have one of the following raid " +-"levels: %(raid_level)s." ++"RAID sets that contain '%(desc)s' must have one of the following raid levels: " ++"%(raid_level)s." + msgstr "" +-"Массивы RAID, в которые входит «%(desc)s», должны иметь один из следующих " +-"уровней raid: %(raid_level)s." ++"Массивы RAID, в которые входит «%(desc)s», должны иметь один из следующих уровней " ++"raid: %(raid_level)s." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:593 + msgid "RAID volume \"{}\" specified with --useexisting does not exist." +@@ -3643,15 +3656,14 @@ msgstr "Для Red Hat CDN требуется регистрация." + #: pyanaconda/ui/gui/spokes/subscription.glade:420 + msgid "" + "Red Hat Insights aims to increase your IT efficiency and speed across hybrid " +-"infrastructures by identifying and prioritizing risks, managing " +-"vulnerabilities, and compliance, and analyzing costs. For more information, " +-"visit the Red Hat Insights information page." ++"infrastructures by identifying and prioritizing risks, managing vulnerabilities, " ++"and compliance, and analyzing costs. For more information, visit the Red Hat " ++"Insights information page." + msgstr "" +-"Red Hat Insights направлена на повышение эффективности и скорости ИТ в " +-"гибридных инфраструктурах за счет выявления и приоритизации рисков, " +-"управления уязвимостями, соблюдения нормативных требований и анализа затрат. " +-"Для получения дополнительной информации посетите информационную страницу Red " +-"Hat Insights." ++"Red Hat Insights направлена на повышение эффективности и скорости ИТ в гибридных " ++"инфраструктурах за счет выявления и приоритизации рисков, управления " ++"уязвимостями, соблюдения нормативных требований и анализа затрат. Для получения " ++"дополнительной информации посетите информационную страницу Red Hat Insights." + + #: pyanaconda/ui/gui/spokes/installation_source.glade:197 + msgctxt "GUI|Software Source" +@@ -3669,11 +3681,11 @@ msgstr "Переформатирование" + + #: pyanaconda/modules/storage/partitioning/manual/manual_partitioning.py:112 + msgid "" +-"Reformatting the '{}' subvolume will remove the following nested subvolumes " +-"which cannot be reused: {}" ++"Reformatting the '{}' subvolume will remove the following nested subvolumes which " ++"cannot be reused: {}" + msgstr "" +-"Переформатирование подтома «{}» приведет к удалению следующих вложенных " +-"подтомов, которые нельзя использовать повторно: {}" ++"Переформатирование подтома «{}» приведет к удалению следующих вложенных подтомов, " ++"которые нельзя использовать повторно: {}" + + #: pyanaconda/ui/gui/spokes/custom_storage.glade:203 + msgctxt "GUI|Custom Partitioning" +@@ -3776,11 +3788,11 @@ msgstr "_Повторить вход" + #: pyanaconda/ui/gui/spokes/custom_storage.glade:1452 + msgctxt "GUI|Custom Partitioning" + msgid "" +-"Return partitioning to the original state before you made any changes. This " +-"is not a destructive operation." ++"Return partitioning to the original state before you made any changes. This is " ++"not a destructive operation." + msgstr "" +-"Верните разбиение на разделы в первоначальное состояние до внесения " +-"изменений. Это неразрушающая операция." ++"Верните разбиение на разделы в первоначальное состояние до внесения изменений. " ++"Это неразрушающая операция." + + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:431 + msgctxt "GUI|Advanced Storage|iSCSI|Configure|Reverse CHAP" +@@ -3952,8 +3964,8 @@ msgstr "Ключ" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:436 + msgid "" +-"Select a drive for the mount point to be created on. If you select multiple, " +-"only 1 drive will be used." ++"Select a drive for the mount point to be created on. If you select multiple, only " ++"1 drive will be used." + msgstr "" + "Выберите диск, на котором будет создана точка монтирования. Если вы выберете " + "несколько, будет использоваться только 1 диск." +@@ -3979,8 +3991,7 @@ msgid "Select all" + msgstr "Выбрать все" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:433 +-msgid "" +-"Select all of the drives you would like the mount point to be created on." ++msgid "Select all of the drives you would like the mount point to be created on." + msgstr "Выберите все диски, на которых вы хотите создать точку монтирования." + + #: pyanaconda/ui/tui/spokes/installation_source.py:472 +@@ -3997,12 +4008,11 @@ msgstr "Выберите устройство с файлом ISO" + + #: pyanaconda/ui/gui/spokes/storage.glade:96 + msgid "" +-"Select the device(s) you'd like to install to. They will be left untouched " +-"until you click on the main menu's \"Begin Installation\" button." ++"Select the device(s) you'd like to install to. They will be left untouched until " ++"you click on the main menu's \"Begin Installation\" button." + msgstr "" +-"Выберите устройства для установки операционной системы. Они не будут " +-"изменены до тех пор, пока вы не нажмете кнопку «Начать установку» в главном " +-"окне." ++"Выберите устройства для установки операционной системы. Они не будут изменены до " ++"тех пор, пока вы не нажмете кнопку «Начать установку» в главном окне." + + #: pyanaconda/ui/gui/spokes/custom_storage.glade:268 + #: pyanaconda/ui/gui/spokes/custom_storage.glade:1007 +@@ -4021,11 +4031,11 @@ msgstr "Выбранные диски" + + #: pyanaconda/modules/storage/checker/utils.py:534 + msgid "" +-"Selected disks {} contain volume group '{}' that also uses further " +-"unselected disks. You must select or de-select all these disks as a set." ++"Selected disks {} contain volume group '{}' that also uses further unselected " ++"disks. You must select or de-select all these disks as a set." + msgstr "" +-"Выбранные диски {} содержaт группу устройств {}, использующих невыбранные " +-"диски. Выберите их или отмените выбор всех этих дисков." ++"Выбранные диски {} содержaт группу устройств {}, использующих невыбранные диски. " ++"Выберите их или отмените выбор всех этих дисков." + + #: pyanaconda/ui/lib/software.py:94 + msgid "Selected environment is not valid" +@@ -4117,33 +4127,31 @@ msgstr "Выбор _размера:" + + #: pyanaconda/core/constants.py:171 + msgid "" +-"Simultaneous Multithreading (SMT) may improve performance for certain " +-"workloads, but introduces several publicly disclosed security issues. You " +-"can disable SMT, which may impact performance. Please read https://red.ht/" +-"rhel-smt to understand potential risks and learn about ways to mitigate " +-"these risks." ++"Simultaneous Multithreading (SMT) may improve performance for certain workloads, " ++"but introduces several publicly disclosed security issues. You can disable SMT, " ++"which may impact performance. Please read https://red.ht/rhel-smt to understand " ++"potential risks and learn about ways to mitigate these risks." + msgstr "" + "Одновременная многопоточность (SMT) может увеличить производительность при " + "определенных рабочих нагрузках, но привносит несколько известных проблем " + "безопасности. Можно отключить SMT, что может повлиять на производительность. " +-"Прочитайте https://red.ht/rhel-smt для понимания потенциальных рисков и " +-"чтобы узнать о способах снижения этих рисков." ++"Прочитайте https://red.ht/rhel-smt для понимания потенциальных рисков и чтобы " ++"узнать о способах снижения этих рисков." + + #: pyanaconda/core/constants.py:161 + msgid "" +-"Simultaneous Multithreading (SMT) technology can provide performance " +-"improvements for certain workloads, but introduces several publicly " +-"disclosed security issues. You have the option of disabling SMT, which may " +-"impact performance. If you choose to leave SMT enabled, please read https://" +-"red.ht/rhel-smt to understand your potential risks and learn about other " +-"ways to mitigate these risks." ++"Simultaneous Multithreading (SMT) technology can provide performance improvements " ++"for certain workloads, but introduces several publicly disclosed security issues. " ++"You have the option of disabling SMT, which may impact performance. If you choose " ++"to leave SMT enabled, please read https://red.ht/rhel-smt to understand your " ++"potential risks and learn about other ways to mitigate these risks." + msgstr "" + "Технология одновременной многопоточности (SMT) может обеспечить повышение " +-"производительности при определенных рабочих нагрузках, но привносит " +-"несколько известных проблем безопасности. Вы можете отключить SMT, что может " +-"повлиять на производительность. Если вы решите оставить SMT включенным, " +-"прочитайте https://red.ht/rhel-smt для понимания потенциальных рисков и " +-"чтобы узнать о других способах снижения этих рисков." ++"производительности при определенных рабочих нагрузках, но привносит несколько " ++"известных проблем безопасности. Вы можете отключить SMT, что может повлиять на " ++"производительность. Если вы решите оставить SMT включенным, прочитайте https://" ++"red.ht/rhel-smt для понимания потенциальных рисков и чтобы узнать о других " ++"способах снижения этих рисков." + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:557 + msgid "Single" +@@ -4167,11 +4175,10 @@ msgid "Snapshot: origin \"{}\" doesn't exist!" + msgstr "Моментальный снимок: источник «{}» не существует!" + + #: pyanaconda/modules/storage/snapshot/device.py:50 +-msgid "" +-"Snapshot: origin \"{}\" of snapshot \"{}\" is not a valid thin LV device." ++msgid "Snapshot: origin \"{}\" of snapshot \"{}\" is not a valid thin LV device." + msgstr "" +-"Моментальный снимок: источник «{}» снимка «{}» не является допустимым " +-"устройством тонкого логического тома." ++"Моментальный снимок: источник «{}» снимка «{}» не является допустимым устройством " ++"тонкого логического тома." + + #: pyanaconda/ui/tui/spokes/software_selection.py:68 + #: pyanaconda/ui/tui/spokes/software_selection.py:324 +@@ -4216,25 +4223,25 @@ msgstr "ID _пользователя:" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:64 + msgid "" +-"Specify the Desired Capacity in whole or decimal numbers, with an " +-"appropriate unit.\n" ++"Specify the Desired Capacity in whole or decimal numbers, with an appropriate " ++"unit.\n" + "\n" +-"Spaces separating digit groups are not allowed. Units consist of a decimal " +-"or binary prefix, and optionally the letter B. Letter case does not matter " +-"for units. The default unit used when units are left out is MiB.\n" ++"Spaces separating digit groups are not allowed. Units consist of a decimal or " ++"binary prefix, and optionally the letter B. Letter case does not matter for " ++"units. The default unit used when units are left out is MiB.\n" + "\n" + "Examples of valid input:\n" + "'100 GiB' = 100 gibibytes\n" + "'512m' = 512 megabytes\n" + "'123456789' = 123 terabytes and a bit less than a half\n" + msgstr "" +-"Укажите требуемую ёмкость в целых или десятичных цифрах с надлежащими " +-"единицами измерения.\n" ++"Укажите требуемую ёмкость в целых или десятичных цифрах с надлежащими единицами " ++"измерения.\n" + "\n" +-"Не допускаются пробелы, разделяющие группы цифр. Единицы измерения состоят " +-"из десятичного или двоичного префикса и, возможно, буквы «B». Регистр букв " +-"не имеет значения для единиц измерения. Типовой единицей измерения, если " +-"единицы не указаны, является МиБ.\n" ++"Не допускаются пробелы, разделяющие группы цифр. Единицы измерения состоят из " ++"десятичного или двоичного префикса и, возможно, буквы «B». Регистр букв не имеет " ++"значения для единиц измерения. Типовой единицей измерения, если единицы не " ++"указаны, является МиБ.\n" + "\n" + "Примеры правильного ввода:\n" + "'100 GiB' = 100 гигабайтов\n" +@@ -4326,8 +4333,7 @@ msgstr "Цель системы" + + #: pyanaconda/ui/lib/software.py:119 + msgid "System performance gains for memory-intensive workloads" +-msgstr "" +-"Повышение производительности системы при нагрузках с большим объемом памяти" ++msgstr "Повышение производительности системы при нагрузках с большим объемом памяти" + + #: pyanaconda/modules/storage/bootloader/systemd.py:83 + msgid "" +@@ -4363,8 +4369,7 @@ msgstr "WWID цели" + msgid "Target size \"{size}\" for device \"{device}\" is invalid." + msgstr "Задан недопустимый размер «{size}» для устройства «{device}»." + +-#: pyanaconda/ui/gui/spokes/network.py:289 +-#: pyanaconda/ui/gui/spokes/network.glade:23 ++#: pyanaconda/ui/gui/spokes/network.py:289 pyanaconda/ui/gui/spokes/network.glade:23 + msgid "Team" + msgstr "Агрегирование (team)" + +@@ -4380,18 +4385,17 @@ msgstr "Проверка конфигурации раскладки недос + #: pyanaconda/display.py:345 + #, fuzzy + #| msgid "" +-#| "Text mode provides a limited set of installation options. It does not " +-#| "offer custom partitioning for full control over the disk layout. Would " +-#| "you like to use VNC mode instead?" ++#| "Text mode provides a limited set of installation options. It does not offer " ++#| "custom partitioning for full control over the disk layout. Would you like to " ++#| "use VNC mode instead?" + msgid "" + "Text mode provides a limited set of installation options. It does not offer " +-"custom partitioning for full control over the disk layout. Would you like to " +-"use remote graphical access via the RDP protocol instead?" ++"custom partitioning for full control over the disk layout. Would you like to use " ++"remote graphical access via the RDP protocol instead?" + msgstr "" +-"Текстовый режим предоставляет ограниченный выбор параметров установки. В нём " +-"не предлагается сделать собственное разбиение на разделы, позволяющее " +-"получить полный контроль над разбиением дисков. Использовать режим VNC " +-"вместо этого?" ++"Текстовый режим предоставляет ограниченный выбор параметров установки. В нём не " ++"предлагается сделать собственное разбиение на разделы, позволяющее получить " ++"полный контроль над разбиением дисков. Использовать режим VNC вместо этого?" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:461 + msgid "" +@@ -4419,11 +4423,11 @@ msgstr "Файловая система «{}» не поддерживается + #: pyanaconda/startup_utils.py:91 + #, python-format + msgid "" +-"The %(product_name)s graphical installer requires %(needed_ram)s MB of " +-"memory, but you only have %(total_ram)s MB.\n" ++"The %(product_name)s graphical installer requires %(needed_ram)s MB of memory, " ++"but you only have %(total_ram)s MB.\n" + msgstr "" +-"Для установки %(product_name)s в графическом режиме необходимо " +-"%(needed_ram)s МБ памяти, но доступно только %(total_ram)s МБ.\n" ++"Для установки %(product_name)s в графическом режиме необходимо %(needed_ram)s МБ " ++"памяти, но доступно только %(total_ram)s МБ.\n" + + #: pyanaconda/core/storage.py:109 + msgid "" +@@ -4460,8 +4464,7 @@ msgstr "" + #: pyanaconda/modules/payloads/payload/dnf/repositories.py:145 + #, python-brace-format + msgid "The '{name}' repository has no mirror, baseurl or metalink set." +-msgstr "" +-"У репозитория «{name}» нет зеркала, базового адреса или набора металинков." ++msgstr "У репозитория «{name}» нет зеркала, базового адреса или набора металинков." + + #: pyanaconda/modules/payloads/payload/dnf/repositories.py:164 + #, python-brace-format +@@ -4487,8 +4490,8 @@ msgstr "" + #: pyanaconda/modules/storage/checker/utils.py:83 + #, python-brace-format + msgid "" +-"The LDL DASD disk {name} ({busid}) cannot be used for the installation. " +-"Please format it." ++"The LDL DASD disk {name} ({busid}) cannot be used for the installation. Please " ++"format it." + msgstr "" + "LDL DASD диск {name} ({busid}) не может быть использован для установки. " + "Отформатируйте его." +@@ -4504,11 +4507,11 @@ msgstr "" + #: pyanaconda/modules/storage/partitioning/interactive/utils.py:354 + #, python-brace-format + msgid "" +-"The RAID level you have selected ({level}) requires more disks ({min}) than " +-"you currently have selected ({count})." ++"The RAID level you have selected ({level}) requires more disks ({min}) than you " ++"currently have selected ({count})." + msgstr "" +-"Для выбранного уровня RAID ({level}) требуется больше дисков ({min}), чем " +-"сейчас выбрано ({count})." ++"Для выбранного уровня RAID ({level}) требуется больше дисков ({min}), чем сейчас " ++"выбрано ({count})." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:604 + msgid "The RAID volume name \"{}\" is already in use." +@@ -4524,8 +4527,8 @@ msgid "" + "The available memory is less than %(size)s which can be too small for LUKS2 " + "format. It may fail." + msgstr "" +-"Доступная память меньше, чем %(size)s, что может быть слишком мало для " +-"формата LUKS2. Может не получиться." ++"Доступная память меньше, чем %(size)s, что может быть слишком мало для формата " ++"LUKS2. Может не получиться." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:794 + msgid "The container is encrypted." +@@ -4533,37 +4536,36 @@ msgstr "Контейнер зашифрован." + + #: pyanaconda/modules/storage/checker/utils.py:415 + msgid "" +-"The existing unlocked LUKS device {} cannot be used for the installation " +-"without an encryption key specified for this device. Please, rescan the " +-"storage." ++"The existing unlocked LUKS device {} cannot be used for the installation without " ++"an encryption key specified for this device. Please, rescan the storage." + msgstr "" + "Существующее разблокированное устройство LUKS {} нельзя использовать для " +-"установки без ключа шифрования, указанного для этого устройства. " +-"Просканируйте хранилище ещё раз." ++"установки без ключа шифрования, указанного для этого устройства. Просканируйте " ++"хранилище ещё раз." + + #: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:227 + msgid "" +-"The following error occurred discovering DASD devices. Please double check " +-"your configuration information and try again." ++"The following error occurred discovering DASD devices. Please double check your " ++"configuration information and try again." + msgstr "" + "Произошла ошибка при поиске устройств DASD. Еще раз роверьте конфигурацию и " + "повторите попытку." + + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:556 + msgid "" +-"The following error occurred discovering iSCSI targets. Please double check " +-"your authorization information and try again." ++"The following error occurred discovering iSCSI targets. Please double check your " ++"authorization information and try again." + msgstr "" +-"Ошибка при поиске iSCSI-целей. Внимательно проверьте информацию о своем " +-"доступе и повторите попытку." ++"Ошибка при поиске iSCSI-целей. Внимательно проверьте информацию о своем доступе " ++"и повторите попытку." + + #: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:269 + msgid "" +-"The following error occurred discovering zFCP devices. Please double check " +-"your configuration information and try again." ++"The following error occurred discovering zFCP devices. Please double check your " ++"configuration information and try again." + msgstr "" +-"Произошла ошибка при поиске устройств zFCP. Еще раз проверьте конфигурацию " +-"и повторите попытку." ++"Произошла ошибка при поиске устройств zFCP. Еще раз проверьте конфигурацию и " ++"повторите попытку." + + #: pyanaconda/errors.py:179 + #, python-brace-format +@@ -4582,48 +4584,44 @@ msgstr "" + + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1084 + msgid "" +-"The following error occurred logging into the selected iSCSI node. Please " +-"double check your authorization information and try again." ++"The following error occurred logging into the selected iSCSI node. Please double " ++"check your authorization information and try again." + msgstr "" +-"Ошибка авторизации на узле iSCSI. Проверьте данные доступа и повторите " +-"попытку." ++"Ошибка авторизации на узле iSCSI. Проверьте данные доступа и повторите попытку." + + #: pyanaconda/ui/gui/spokes/advstorage/fcoe.glade:215 + msgid "" +-"The following error occurred while attempting to add an FCoE SAN. Please " +-"check your configuration and try again" +-msgstr "" +-"Ошибка при добавлении FCoE SAN. Проверьте настройки и повторите попытку" ++"The following error occurred while attempting to add an FCoE SAN. Please check " ++"your configuration and try again" ++msgstr "Ошибка при добавлении FCoE SAN. Проверьте настройки и повторите попытку" + + #: pyanaconda/errors.py:167 + msgid "" +-"The following error occurred while installing the boot loader. The system " +-"will not be bootable. Would you like to ignore this and continue with " +-"installation?" ++"The following error occurred while installing the boot loader. The system will " ++"not be bootable. Would you like to ignore this and continue with installation?" + msgstr "" + "Произошла следующая ошибка при установке загрузчика. Загрузка системы будет " + "невозможна. Игнорировать и продолжить установку?" + + #: pyanaconda/errors.py:159 + msgid "" +-"The following error occurred while installing the payload. This is a fatal " +-"error and installation will be aborted." ++"The following error occurred while installing the payload. This is a fatal error " ++"and installation will be aborted." + msgstr "" + "Следующая ошибка произошла во время установки. Это неустранимая ошибка, и " + "установка будет прервана." + + #: pyanaconda/errors.py:151 + msgid "" +-"The following error occurred while setting up the payload. This is a fatal " +-"error and installation will be aborted." ++"The following error occurred while setting up the payload. This is a fatal error " ++"and installation will be aborted." + msgstr "" + "Следующая ошибка произошла во время установки. Это неустранимая ошибка, и " + "установка будет прервана." + + #: pyanaconda/modules/storage/devicetree/utils.py:93 + msgid "" +-"The following error was encountered while downloading the escrow " +-"certificate:\n" ++"The following error was encountered while downloading the escrow certificate:\n" + "\n" + "{}" + msgstr "" +@@ -4633,16 +4631,16 @@ msgstr "" + + #: pyanaconda/ui/gui/spokes/storage.py:889 + msgid "" +-"The following errors were encountered when checking your disk selection. You " +-"can modify your selection or quit the installer." ++"The following errors were encountered when checking your disk selection. You can " ++"modify your selection or quit the installer." + msgstr "" +-"Во время проверки выбранного диска обнаружены ошибки. Вы можете изменить " +-"свой выбор или выйти из программы установки." ++"Во время проверки выбранного диска обнаружены ошибки. Вы можете изменить свой " ++"выбор или выйти из программы установки." + + #: pyanaconda/ui/gui/spokes/storage.py:910 + msgid "" +-"The following errors were encountered when checking your storage " +-"configuration. You can modify your storage layout or quit the installer." ++"The following errors were encountered when checking your storage configuration. " ++"You can modify your storage layout or quit the installer." + msgstr "" + "Во время проверки конфигурации устройств хранения были обнаружены ошибки. Вы " + "можете изменить схему устройств хранения или прервать установку." +@@ -4658,59 +4656,57 @@ msgstr "Не завершены обязательные шаги:" + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.py:158 + #, python-format + msgid "" +-"The following nodes were discovered using the iSCSI initiator " +-"%(initiatorName)s using the portal IP address %(portalAddress)s. Please select which nodes you wish to log into:" ++"The following nodes were discovered using the iSCSI initiator " ++"%(initiatorName)s using the portal IP address %(portalAddress)s. " ++"Please select which nodes you wish to log into:" + msgstr "" +-"Следующие узлы были обнаружены с помощью инициатора iSCSI " +-"%(initiatorName)s с использованием портала с IP-адресом " +-"%(portalAddress)s. Выберите узлы для входа:" ++"Следующие узлы были обнаружены с помощью инициатора iSCSI %(initiatorName)s с использованием портала с IP-адресом %(portalAddress)s. Выберите узлы " ++"для входа:" + + #: pyanaconda/modules/payloads/payload/dnf/dnf_manager.py:614 + msgid "" + "The following software marked for installation has errors.\n" + "This is likely caused by an error with your installation source." + msgstr "" +-"Следующее программное обеспечение, помеченное для установки, содержит " +-"ошибки.\n" ++"Следующее программное обеспечение, помеченное для установки, содержит ошибки.\n" + "Вероятно, это вызвано ошибкой в источнике установки." + + #: pyanaconda/ui/gui/spokes/lib/dasdfmt.glade:70 + msgid "" +-"The following unformatted or LDL DASDs have been detected on your system. " +-"You can choose to format them now with dasdfmt or cancel to leave them " +-"unformatted. Unformatted DASDs cannot be used during installation." ++"The following unformatted or LDL DASDs have been detected on your system. You can " ++"choose to format them now with dasdfmt or cancel to leave them unformatted. " ++"Unformatted DASDs cannot be used during installation." + msgstr "" +-"Обнаружены неформатированные устройства LDL DASD. Можно отформатировать их " +-"сразу с помощью dasdfmt или оставить неформатированными. Для участия в " +-"процессе установки устройства DASD должны быть отформатированы." ++"Обнаружены неформатированные устройства LDL DASD. Можно отформатировать их сразу " ++"с помощью dasdfmt или оставить неформатированными. Для участия в процессе " ++"установки устройства DASD должны быть отформатированы." + + #: pyanaconda/ui/tui/spokes/storage.py:323 + msgid "" +-"The following unformatted or LDL DASDs have been detected on your system. " +-"You can choose to format them now with dasdfmt or cancel to leave them " +-"unformatted. Unformatted DASDs cannot be used during installation.\n" ++"The following unformatted or LDL DASDs have been detected on your system. You can " ++"choose to format them now with dasdfmt or cancel to leave them unformatted. " ++"Unformatted DASDs cannot be used during installation.\n" + "\n" + msgstr "" +-"Обнаружены неформатированные устройства LDL DASD. Можно сразу их " +-"отформатировать с помощью dasdfmt или пропустить форматирование. Для участия " +-"в процессе установки устройства DASD должны быть отформатированы.\n" ++"Обнаружены неформатированные устройства LDL DASD. Можно сразу их отформатировать " ++"с помощью dasdfmt или пропустить форматирование. Для участия в процессе установки " ++"устройства DASD должны быть отформатированы.\n" + "\n" + + #: pyanaconda/ui/gui/hubs/summary.py:103 + msgid "" +-"The following warnings were encountered when checking your kernel " +-"configuration. These are not fatal, but you may wish to make changes to your " +-"kernel config." ++"The following warnings were encountered when checking your kernel configuration. " ++"These are not fatal, but you may wish to make changes to your kernel config." + msgstr "" +-"Следующие предупреждения были встречены при проверке конфигурации ядра. Это " +-"не критично, но может потребоваться изменить настройки ядра." ++"Следующие предупреждения были встречены при проверке конфигурации ядра. Это не " ++"критично, но может потребоваться изменить настройки ядра." + + #: pyanaconda/ui/gui/spokes/storage.py:930 + msgid "" + "The following warnings were encountered when checking your storage " +-"configuration. These are not fatal, but you may wish to make changes to " +-"your storage layout." ++"configuration. These are not fatal, but you may wish to make changes to your " ++"storage layout." + msgstr "" + "Следующие предупреждения были встречены при проверке конфигурации устройств " + "хранения. Это не критично, но может потребоваться изменить схему устройств " +@@ -4718,8 +4714,7 @@ msgstr "" + + #: pyanaconda/startup_utils.py:131 + msgid "The installation cannot continue and the system will be rebooted" +-msgstr "" +-"Установка не может быть продолжена, поэтому система будет перезагружена" ++msgstr "Установка не может быть продолжена, поэтому система будет перезагружена" + + #: pyanaconda/exception.py:109 + #, python-format +@@ -4757,11 +4752,11 @@ msgstr "Парольная фраза слишком короткая" + + #: pyanaconda/core/constants.py:216 + msgid "" +-"The passphrase you have provided contains non-ASCII characters. You may not " +-"be able to switch between keyboard layouts when typing it." ++"The passphrase you have provided contains non-ASCII characters. You may not be " ++"able to switch between keyboard layouts when typing it." + msgstr "" +-"Парольная фраза содержит символы, не входящие в набор ASCII. Функции " +-"переключения раскладки клавиатуры могут быть недоступны при её вводе." ++"Парольная фраза содержит символы, не входящие в набор ASCII. Функции переключения " ++"раскладки клавиатуры могут быть недоступны при её вводе." + + #: pyanaconda/core/constants.py:207 + msgid "The passphrase you have provided is weak." +@@ -4803,8 +4798,8 @@ msgstr "Пароль был задан в kickstart." + + #: pyanaconda/core/constants.py:215 + msgid "" +-"The password you have provided contains non-ASCII characters. You may not be " +-"able to switch between keyboard layouts when typing it." ++"The password you have provided contains non-ASCII characters. You may not be able " ++"to switch between keyboard layouts when typing it." + msgstr "" + "Пароль содержит символы, не входящие в набор ASCII. Функции переключения " + "раскладки клавиатуры могут быть недоступны при его вводе." +@@ -4828,22 +4823,21 @@ msgstr "Введенные пароли не совпадают. Повтори + #: pyanaconda/rescue.py:304 + #, python-format + msgid "" +-"The rescue environment will now attempt to find your Linux installation and " +-"mount it under the directory : %s. You can then make any changes required " +-"to your system. Choose '1' to proceed with this step.\n" ++"The rescue environment will now attempt to find your Linux installation and mount " ++"it under the directory : %s. You can then make any changes required to your " ++"system. Choose '1' to proceed with this step.\n" + "You can choose to mount your file systems read-only instead of read-write by " + "choosing '2'.\n" +-"If for some reason this process does not work choose '3' to skip directly to " +-"a shell.\n" ++"If for some reason this process does not work choose '3' to skip directly to a " ++"shell.\n" + "\n" + msgstr "" + "В режиме восстановления будет выполнена попытка найти установку Linux и " +-"смонтировать ее в %s. После этого можно сделать необходимые изменения в " +-"системе. Выберите «1» для продолжения этого пути.\n" +-"Вариант «2» подключит файловые системы в режиме чтения вместо чтения-" +-"записи. \n" +-"Если по каким-либо причинам это не удалось, выберите «3» для быстрого " +-"перехода в командную оболочку. \n" ++"смонтировать ее в %s. После этого можно сделать необходимые изменения в системе. " ++"Выберите «1» для продолжения этого пути.\n" ++"Вариант «2» подключит файловые системы в режиме чтения вместо чтения-записи. \n" ++"Если по каким-либо причинам это не удалось, выберите «3» для быстрого перехода в " ++"командную оболочку. \n" + "\n" + + #: pyanaconda/ui/gui/spokes/root_password.glade:73 +@@ -4851,15 +4845,14 @@ msgid "" + "The root account is used for administering the system.\n" + "\n" + "The root user (also known as super user) has complete access to the entire " +-"system. For this reason, logging into this system as the root user is best " +-"done only to perform system maintenance or administration." ++"system. For this reason, logging into this system as the root user is best done " ++"only to perform system maintenance or administration." + msgstr "" +-"Учетная запись администратора (root) используется для администрирования " +-"системы.\n" ++"Учетная запись администратора (root) используется для администрирования системы.\n" + "\n" +-"Администратор (он же супер-пользователь) имеет полный доступ ко всей " +-"системе. По этой причине вход в систему от имени администратора лучше всего " +-"выполнять только для обслуживания или администрирования системы." ++"Администратор (он же супер-пользователь) имеет полный доступ ко всей системе. По " ++"этой причине вход в систему от имени администратора лучше всего выполнять только " ++"для обслуживания или администрирования системы." + + #: pyanaconda/modules/storage/disk_selection/utils.py:36 + msgid "The selected disk {} is not recognized." +@@ -4871,27 +4864,26 @@ msgstr "Недопустимый размер «{}»." + + #: pyanaconda/ui/gui/spokes/software_selection.py:422 + msgid "" +-"The software marked for installation has the following errors. This is " +-"likely caused by an error with your installation source. You can quit the " +-"installer, change your software source, or change your software selections." ++"The software marked for installation has the following errors. This is likely " ++"caused by an error with your installation source. You can quit the installer, " ++"change your software source, or change your software selections." + msgstr "" +-"В программах, отмеченных для установки, имеются следующие ошибки. Вероятно, " +-"это вызвано ошибкой источника установки. Смените источник установки, " +-"выберите другие программы или закройте программу установки." ++"В программах, отмеченных для установки, имеются следующие ошибки. Вероятно, это " ++"вызвано ошибкой источника установки. Смените источник установки, выберите другие " ++"программы или закройте программу установки." + + #: pyanaconda/ui/gui/spokes/software_selection.py:454 + msgid "" +-"The software marked for installation has the following warnings. These are " +-"not fatal, but you may wish to make changes to your software selections." ++"The software marked for installation has the following warnings. These are not " ++"fatal, but you may wish to make changes to your software selections." + msgstr "" +-"В программах, отмеченных для установки, имеются следующие предупреждения. " +-"Это не критично, но вы можете внести изменения в свой выбор программного " +-"обеспечения." ++"В программах, отмеченных для установки, имеются следующие предупреждения. Это не " ++"критично, но вы можете внести изменения в свой выбор программного обеспечения." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:822 + msgid "" +-"The space available to this mount point can be changed by modifying the " +-"volume below." ++"The space available to this mount point can be changed by modifying the volume " ++"below." + msgstr "Место, доступное для этой точки монтирования, можно изменить ниже." + + #: pyanaconda/ui/gui/spokes/subscription.glade:736 +@@ -4904,13 +4896,13 @@ msgstr "Система в настоящее время не зарегистр + + #: pyanaconda/modules/storage/checker/utils.py:248 + msgid "" +-"The system will not be bootable. The firmware does not support XFS file " +-"system features on the boot file system. Upgrade the firmware or change the " +-"file system type." ++"The system will not be bootable. The firmware does not support XFS file system " ++"features on the boot file system. Upgrade the firmware or change the file system " ++"type." + msgstr "" +-"Система не будет загружаться. Микропрограмма не поддерживает функции " +-"файловой системы XFS в файловой системе /boot. Обновите микропрограмму или " +-"измените тип файловой системы." ++"Система не будет загружаться. Микропрограмма не поддерживает функции файловой " ++"системы XFS в файловой системе /boot. Обновите микропрограмму или измените тип " ++"файловой системы." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:764 + msgid "The volume group name \"{}\" is already in use." +@@ -4919,55 +4911,52 @@ msgstr "Имя группы томов «{}» уже используется." + #: pyanaconda/errors.py:126 + msgid "" + "There is a problem with your existing storage configuration or your initial " +-"settings, for example a kickstart file. You must resolve this matter before " +-"the installation can proceed. There is a shell available for use which you " +-"can access by pressing ctrl-alt-f1 and then ctrl-b 2.\n" ++"settings, for example a kickstart file. You must resolve this matter before the " ++"installation can proceed. There is a shell available for use which you can access " ++"by pressing ctrl-alt-f1 and then ctrl-b 2.\n" + "\n" +-"Once you have resolved the issue you can retry the storage scan. If you do " +-"not fix it you will have to exit the installer." ++"Once you have resolved the issue you can retry the storage scan. If you do not " ++"fix it you will have to exit the installer." + msgstr "" +-"Обнаружена проблема в конфигурации устройств хранения или в начальных " +-"настройках, например, в файле kickstart. Исправьте ее для продолжения " +-"установки. Для доступа к командной строке нажмите ctrl-alt-f1, затем ctrl-b " +-"2.\n" ++"Обнаружена проблема в конфигурации устройств хранения или в начальных настройках, " ++"например, в файле kickstart. Исправьте ее для продолжения установки. Для доступа " ++"к командной строке нажмите ctrl-alt-f1, затем ctrl-b 2.\n" + "\n" +-"После устранения проблемы можно запустить сканирование накопителя заново. " +-"Если проблема не будет исправлена, установку придется отменить." ++"После устранения проблемы можно запустить сканирование накопителя заново. Если " ++"проблема не будет исправлена, установку придется отменить." + + #: pyanaconda/ui/gui/spokes/lib/resize.py:156 + msgid "" + "There is also free space available in pre-existing file systems. While it's " +-"risky and we recommend you back up your data first, you can recover that " +-"free disk space and make it available for this installation below." ++"risky and we recommend you back up your data first, you can recover that free " ++"disk space and make it available for this installation below." + msgstr "" +-"В существующих файловых системах также есть свободное место. Хотя это " +-"рискованная операция, и перед ее проведением рекомендуется создать резервную " +-"копию данных, это свободное место можно получить и сделать доступным для " +-"данной установки." ++"В существующих файловых системах также есть свободное место. Хотя это рискованная " ++"операция, и перед ее проведением рекомендуется создать резервную копию данных, " ++"это свободное место можно получить и сделать доступным для данной установки." + + #: pyanaconda/modules/storage/devicetree/fsset.py:420 + #, python-brace-format + msgid "" +-"There is an entry in your /etc/fstab file that contains an invalid or " +-"incorrect file system type. The file says that {detected_type} at " +-"{mount_point} is {fstab_type}." ++"There is an entry in your /etc/fstab file that contains an invalid or incorrect " ++"file system type. The file says that {detected_type} at {mount_point} is " ++"{fstab_type}." + msgstr "" +-"В файле /etc/fstab есть запись с недопустимым или неправильным типом " +-"файловой системы. В файле написано, что {detected_type} в {mount_point} на " +-"самом деле {fstab_type}." ++"В файле /etc/fstab есть запись с недопустимым или неправильным типом файловой " ++"системы. В файле написано, что {detected_type} в {mount_point} на самом деле " ++"{fstab_type}." + + #: pyanaconda/ui/gui/spokes/storage.py:785 + msgid "There was a problem with your disk selection. Click here for details." + msgstr "" +-"Обнаружена проблема при выборе диска. Нажмите здесь для получения " +-"дополнительных сведений." ++"Обнаружена проблема при выборе диска. Нажмите здесь для получения дополнительных " ++"сведений." + + #: pyanaconda/errors.py:143 + #, python-format + msgid "" +-"There was an error running the kickstart script at line %(lineno)s. This is " +-"a fatal error and installation will be aborted. The details of this error " +-"are:\n" ++"There was an error running the kickstart script at line %(lineno)s. This is a " ++"fatal error and installation will be aborted. The details of this error are:\n" + "\n" + "%(details)s" + msgstr "" +@@ -4980,38 +4969,37 @@ msgstr "" + #: pyanaconda/modules/storage/partitioning/interactive/utils.py:1241 + #, python-format + msgid "" +-"This %(type)s device is missing member devices. You can remove it or select " +-"a different device." ++"This %(type)s device is missing member devices. You can remove it or select a " ++"different device." + msgstr "" +-"Устройство %(type)s не имеет составляющих элементов. Вы можете его удалить " +-"или выбрать другое устройство." ++"Устройство %(type)s не имеет составляющих элементов. Вы можете его удалить или " ++"выбрать другое устройство." + + #: pyanaconda/modules/storage/partitioning/interactive/utils.py:1237 + #, python-format + msgid "" +-"This LVM Volume Group is missing %(missingPVs)d of %(totalPVs)d physical " +-"volumes. You can remove it or select a different device." ++"This LVM Volume Group is missing %(missingPVs)d of %(totalPVs)d physical volumes. " ++"You can remove it or select a different device." + msgstr "" +-"В этой группе томов LVM отсутствует %(missingPVs)d из %(totalPVs)d " +-"физических томов. Можно удалить ее или выбрать другое устройство." ++"В этой группе томов LVM отсутствует %(missingPVs)d из %(totalPVs)d физических " ++"томов. Можно удалить ее или выбрать другое устройство." + + #: pyanaconda/modules/storage/partitioning/interactive/utils.py:1230 + #, python-format + msgid "" +-"This Software RAID array is missing %(missing)d of %(total)d member " +-"partitions. You can remove it or select a different device." ++"This Software RAID array is missing %(missing)d of %(total)d member partitions. " ++"You can remove it or select a different device." + msgstr "" +-"В этом программном RAID-массиве отсутствует %(missing)d из %(total)d " +-"входящих в его состав разделов. Можно удалить массив или выбрать другое " +-"устройство." ++"В этом программном RAID-массиве отсутствует %(missing)d из %(total)d входящих в " ++"его состав разделов. Можно удалить массив или выбрать другое устройство." + + #: pyanaconda/ui/gui/spokes/custom_storage.glade:1206 + msgid "" +-"This device cannot be edited directly. You can remove it or select a " +-"different device." ++"This device cannot be edited directly. You can remove it or select a different " ++"device." + msgstr "" +-"Это устройство не может быть изменено напрямую. Удалите его или выберите " +-"другое устройство." ++"Это устройство не может быть изменено напрямую. Удалите его или выберите другое " ++"устройство." + + #: pyanaconda/ui/gui/spokes/lib/resize.py:130 + msgid "This device contains the installation source." +@@ -5019,17 +5007,15 @@ msgstr "Это устройство содержит источник устан + + #: pyanaconda/ui/gui/spokes/custom_storage.glade:1059 + msgid "" +-"This device is encrypted and cannot be read without a valid passphrase. You " +-"may unlock it below." ++"This device is encrypted and cannot be read without a valid passphrase. You may " ++"unlock it below." + msgstr "" + "Устройство зашифровано, его данные недоступны без пароля. Ниже его можно " + "разблокировать." + + #: pyanaconda/ui/gui/spokes/datetime_spoke.glade:295 +-msgid "" +-"This feature requires connecting to an NTP (Network Time Protocol) server." +-msgstr "" +-"Эта функция требует подключения к серверу NTP (Протокол сетевого времени)." ++msgid "This feature requires connecting to an NTP (Network Time Protocol) server." ++msgstr "Эта функция требует подключения к серверу NTP (Протокол сетевого времени)." + + #: pyanaconda/ui/gui/spokes/installation_source.glade:455 + msgid "This field is optional." +@@ -5052,9 +5038,8 @@ msgid "" + "This may take a moment. You may go back to the main menu to " + "complete other installation options while formatting completes." + msgstr "" +-"Это может занять некоторое время. Пока выполняется форматирование, можно вернуться в главное меню, чтобы завершить другие этапы " +-"настройки." ++"Это может занять некоторое время. Пока выполняется форматирование, можно вернуться в главное меню, чтобы завершить другие этапы настройки." + + #: pyanaconda/ui/gui/spokes/lib/installation_source_helpers.py:526 + msgctxt "GUI|Software Source|Media Check Dialog" +@@ -5068,8 +5053,7 @@ msgstr "Этот носитель не подходит для установк + + #: pyanaconda/modules/storage/checker/utils.py:357 + #, python-format +-msgid "" +-"This mount point is invalid. The %s directory must be on the / file system." ++msgid "This mount point is invalid. The %s directory must be on the / file system." + msgstr "" + "Неправильная точка монтирования. Каталог %s должен располагаться в файловой " + "системе /." +@@ -5109,28 +5093,26 @@ msgstr "Для доступа к Red Hat CDN требуется действую + + #: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:90 + msgid "To use DASD disks, you must provide the device number." +-msgstr "" +-"Для использования дисков DASD необходимо предоставить номер устройства." ++msgstr "Для использования дисков DASD необходимо предоставить номер устройства." + + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:114 + msgid "" +-"To use iSCSI disks, you must provide the address of your iSCSI target and " +-"the iSCSI initiator name you've configured for your host." ++"To use iSCSI disks, you must provide the address of your iSCSI target and the " ++"iSCSI initiator name you've configured for your host." + msgstr "" +-"Чтобы использовать диски iSCSI, необходимо указать адрес устройства iSCSI и " +-"имя инициатора iSCSI, которое было настроено для данного узла." ++"Чтобы использовать диски iSCSI, необходимо указать адрес устройства iSCSI и имя " ++"инициатора iSCSI, которое было настроено для данного узла." + + #: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:106 + msgid "" +-"To use zFCP-attached SCSI disks, you must provide the FCP device number. " +-"Storage WWPN and FCP LUN are necessary if the zFCP adapter is not configured " +-"in NPIV mode or when automatic LUN scanning is disabled via a kernel module " +-"parameter." ++"To use zFCP-attached SCSI disks, you must provide the FCP device number. Storage " ++"WWPN and FCP LUN are necessary if the zFCP adapter is not configured in NPIV mode " ++"or when automatic LUN scanning is disabled via a kernel module parameter." + msgstr "" + "Чтобы использовать диски SCSI, подключенные к zFCP, необходимо указать номер " +-"устройства FCP. WWPN и FCP LUN устройства хранения необходимы, если адаптер " +-"zFCP не настроен в режиме NPIV или если автоматическое сканирование LUN " +-"отключено с помощью параметра модуля ядра." ++"устройства FCP. WWPN и FCP LUN устройства хранения необходимы, если адаптер zFCP " ++"не настроен в режиме NPIV или если автоматическое сканирование LUN отключено с " ++"помощью параметра модуля ядра." + + #: pyanaconda/core/constants.py:226 + msgid "Too short" +@@ -5159,14 +5141,12 @@ msgstr "" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:552 + msgid "Tried to use undefined partition \"{}\" in RAID specification." +-msgstr "" +-"Попытка использования неопределенного раздела «{}» в спецификации RAID." ++msgstr "Попытка использования неопределенного раздела «{}» в спецификации RAID." + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:724 + msgid "Tried to use undefined partition \"{}\" in Volume Group specification" + msgstr "" +-"Попытка использования неопределенного раздела «{}» в спецификации группы " +-"томов" ++"Попытка использования неопределенного раздела «{}» в спецификации группы томов" + + #: pyanaconda/ui/gui/spokes/lib/summary.glade:140 + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:1987 +@@ -5216,8 +5196,7 @@ msgstr "/bin/bash не найден. Оболочка не будет запущ + msgid "Unacceptable label format for file system." + msgstr "Недопустимый формат метки файловой системы." + +-#: pyanaconda/ui/gui/spokes/network.py:91 +-#: pyanaconda/ui/gui/spokes/network.py:95 ++#: pyanaconda/ui/gui/spokes/network.py:91 pyanaconda/ui/gui/spokes/network.py:95 + msgid "Unavailable" + msgstr "Недоступно" + +@@ -5310,14 +5289,13 @@ msgstr "" + #, python-format + msgid "Use of this product is subject to the license agreement found at %s" + msgstr "" +-"Использование этого продукта подпадает под действие лицензионного соглашения " +-"%s" ++"Использование этого продукта подпадает под действие лицензионного соглашения %s" + + #: pyanaconda/ui/tui/spokes/installation_progress.py:135 + msgid "Use of this product is subject to the license agreement found at:" + msgstr "" +-"Использование этого продукта подпадает под действие лицензионного " +-"соглашения, находящегося в:" ++"Использование этого продукта подпадает под действие лицензионного соглашения, " ++"находящегося в:" + + #: pyanaconda/ui/tui/spokes/user.py:143 + msgid "Use password" +@@ -5376,8 +5354,7 @@ msgstr "Имя пользователя: " + msgid "User name: " + msgstr "Имя пользователя: " + +-#: pyanaconda/ui/gui/spokes/network.py:288 +-#: pyanaconda/ui/gui/spokes/network.glade:27 ++#: pyanaconda/ui/gui/spokes/network.py:288 pyanaconda/ui/gui/spokes/network.glade:27 + msgid "VLAN" + msgstr "VLAN" + +@@ -5425,8 +5402,8 @@ msgstr "Группа томов" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:732 + msgid "" +-"Volume group \"{}\" defined without any physical volumes. Either specify " +-"physical volumes or use --useexisting." ++"Volume group \"{}\" defined without any physical volumes. Either specify physical " ++"volumes or use --useexisting." + msgstr "" + "Определение группы томов «{}» не содержит физических томов. Настройте список " + "физических томов или используйте флаг --useexisting." +@@ -5440,14 +5417,49 @@ msgid "" + "Volume group given physical extent size of \"{}\", but must be one of:\n" + "{}." + msgstr "" +-"Размер физических экстентов группы томов составляет «{}», а должен иметь " +-"одно из таких значений:\n" ++"Размер физических экстентов группы томов составляет «{}», а должен иметь одно из " ++"таких значений:\n" + "{}." + + #: pyanaconda/ui/gui/spokes/welcome.glade:292 + msgid "WELCOME" + msgstr "ДОБРО ПОЖАЛОВАТЬ" + ++#: pyanaconda/ui/gui/spokes/welcome.py:213 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s Server" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s Сервер" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:215 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s Certified" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s Сертифицированная" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:217 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s ARM" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s АРМ" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:219 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s Cinnamon" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s Cinnamon" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:221 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s KDE" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s KDE" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:223 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s XFCE" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s XFCE" ++ ++#: pyanaconda/ui/gui/spokes/welcome.py:225 ++#, python-format ++msgid "WELCOME TO MSVSphere %(version)s OS" ++msgstr "ДОБРО ПОЖАЛОВАТЬ В МСВСфера %(version)s ОС" ++ + #: pyanaconda/ui/gui/spokes/welcome.py:208 + #, python-format + msgid "WELCOME TO %(name)s %(version)s." +@@ -5486,8 +5498,7 @@ msgid "Waiting for %s threads to finish" + msgstr "Ожидание завершения %s потоков" + + #: pyanaconda/ui/gui/spokes/software_selection.py:255 +-msgid "" +-"Warning checking software dependencies. Click for details." ++msgid "Warning checking software dependencies. Click for details." + msgstr "Ошибка при проверке зависимостей. Подробнее..." + + #: pyanaconda/ui/gui/spokes/software_selection.py:211 +@@ -5495,33 +5506,31 @@ msgstr "Ошибка при проверке зависимостей. Click for details." ++msgid "Warning checking storage configuration. Click for details." + msgstr "" +-"Предупреждение при проверке конфигурации устройств хранения. Подробнее..." ++"Предупреждение при проверке конфигурации устройств хранения. Подробнее..." + + #: pyanaconda/ui/gui/spokes/blivet_gui.py:232 + msgid "" +-"Warning checking storage configuration. Click for details " +-"or press Done again to continue." ++"Warning checking storage configuration. Click for details or " ++"press Done again to continue." + msgstr "" +-"Предупреждение при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." ++"Предупреждение при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." + + #: pyanaconda/ui/gui/spokes/custom_storage.py:903 + msgid "" +-"Warning checking storage configuration. Click for details " +-"or press Done again to continue." ++"Warning checking storage configuration. Click for details or " ++"press Done again to continue." + msgstr "" +-"Предупреждение при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." ++"Предупреждение при проверке конфигурации устройств хранения. Подробнее... или нажмите «Готово» для продолжения." + + #: pyanaconda/ui/tui/spokes/storage.py:330 + msgid "" +@@ -5530,24 +5539,23 @@ msgid "" + "\n" + "Proceed to run dasdfmt?\n" + msgstr "" +-"Предупреждение: при форматировании предыдущие изменения устройств хранения " +-"данных будут потеряны.\n" ++"Предупреждение: при форматировании предыдущие изменения устройств хранения данных " ++"будут потеряны.\n" + "\n" + "Запустить dasdfmt?\n" + + #: pyanaconda/ui/tui/spokes/kernel_warning.py:40 + msgid "Warning: Processor has Simultaneous Multithreading (SMT) enabled" + msgstr "" +-"Предупреждение: у процессора включена одновременная многопотоковая передача " +-"(SMT)" ++"Предупреждение: у процессора включена одновременная многопотоковая передача (SMT)" + + #: pyanaconda/ui/gui/hubs/summary.py:93 + msgid "" +-"Warning: Processor has Simultaneous Multithreading (SMT) enabled. Click for details." ++"Warning: Processor has Simultaneous Multithreading (SMT) enabled. Click for details." + msgstr "" +-"Предупреждение: в процессоре включена одновременная многопоточность (SMT). " +-"Нажмите для получения дополнительной информации." ++"Предупреждение: в процессоре включена одновременная многопоточность (SMT). Нажмите для получения дополнительной информации." + + #: pyanaconda/rescue.py:439 + msgid "" +@@ -5566,8 +5574,8 @@ msgstr "" + + #: pyanaconda/ui/gui/spokes/lib/passphrase.glade:275 + msgid "" +-"Warning: You won't be able to switch between keyboard layouts (from the " +-"default one) when you decrypt your disks after install." ++"Warning: You won't be able to switch between keyboard layouts (from the default " ++"one) when you decrypt your disks after install." + msgstr "" + "Предупреждение: не удастся сменить раскладку клавиатуры (со стандартной) при " + "дешифровании дисков после установки." +@@ -5575,32 +5583,31 @@ msgstr "" + #: pyanaconda/display.py:393 + #, fuzzy + #| msgid "" +-#| "X was unable to start on your machine. Would you like to start VNC to " +-#| "connect to this computer from another computer and perform a graphical " +-#| "installation or continue with a text mode installation?" ++#| "X was unable to start on your machine. Would you like to start VNC to connect " ++#| "to this computer from another computer and perform a graphical installation or " ++#| "continue with a text mode installation?" + msgid "" + "Wayland was unable to start on your machine. Would you like to start an RDP " +-"session to connect to this computer from another computer and perform a " +-"graphical installation or continue with a text mode installation?" ++"session to connect to this computer from another computer and perform a graphical " ++"installation or continue with a text mode installation?" + msgstr "" +-"Не удалось запустить графическую подсистему X на вашей машине. Запустить " +-"VNC, чтобы подключиться к данному компьютеру с другой машины и выполнить " +-"установку в графическом режиме, или продолжить установку в текстовом режиме?" ++"Не удалось запустить графическую подсистему X на вашей машине. Запустить VNC, " ++"чтобы подключиться к данному компьютеру с другой машины и выполнить установку в " ++"графическом режиме, или продолжить установку в текстовом режиме?" + + #: pyanaconda/ui/gui/hubs/summary.glade:128 + msgid "We won't touch your disks until you click 'Begin Installation'." + msgstr "" +-"Диски не подвергнутся изменениям до тех пор, пока вы не нажмете кнопку " +-"начала установки." ++"Диски не подвергнутся изменениям до тех пор, пока вы не нажмете кнопку начала " ++"установки." + + #: pyanaconda/ui/gui/spokes/network.glade:421 + msgid "" +-"We'll need network access to fetch information about your location and to " +-"make software updates available for you." ++"We'll need network access to fetch information about your location and to make " ++"software updates available for you." + msgstr "" +-"Необходим доступ к сети для того, чтобы мы смогли получить информацию о " +-"вашем местонахождении и предоставить доступ к обновлениям программного " +-"обеспечения." ++"Необходим доступ к сети для того, чтобы мы смогли получить информацию о вашем " ++"местонахождении и предоставить доступ к обновлениям программного обеспечения." + + #: pyanaconda/core/constants.py:227 + #: pyanaconda/ui/gui/spokes/lib/passphrase.glade:182 +@@ -5608,8 +5615,8 @@ msgid "Weak" + msgstr "Простой" + + #: data/liveinst/gnome/org.fedoraproject.welcome-screen.desktop:3 +-msgid "Welcome to Fedora" +-msgstr "Добро пожаловать в Fedora" ++msgid "Welcome to MSVSphere ARM 10.0" ++msgstr "Добро пожаловать в МСВСфера АРМ 10.0" + + #: pyanaconda/ui/gui/spokes/welcome.py:202 + #: pyanaconda/ui/gui/spokes/welcome.glade:101 +@@ -5617,18 +5624,17 @@ msgid "What language would you like to use during the installation process?" + msgstr "Какой язык вы хотите использовать в процессе установки?" + + #: pyanaconda/rescue.py:427 +-msgid "" +-"When finished, please exit from the shell and your system will reboot.\n" ++msgid "When finished, please exit from the shell and your system will reboot.\n" + msgstr "После завершения выйдите из оболочки и система перезагрузится.\n" + + #: pyanaconda/ui/gui/spokes/custom_storage.py:378 + #, python-format + msgid "" +-"When you create mount points for your %(name)s %(version)s installation, " +-"you'll be able to view their details here." ++"When you create mount points for your %(name)s %(version)s installation, you'll " ++"be able to view their details here." + msgstr "" +-"Здесь будет показана информация о созданных точках монтирования для " +-"установки %(name)s %(version)s." ++"Здесь будет показана информация о созданных точках монтирования для установки " ++"МСВСфера %(version)s ОС." + + #: pyanaconda/ui/gui/spokes/keyboard.glade:670 + msgid "" +@@ -5641,11 +5647,11 @@ msgstr "Какой источник установки выберите?" + + #: pyanaconda/ui/gui/spokes/keyboard.glade:56 + msgid "" +-"Which keyboard layouts would you like to use on this system? You may move " +-"any layout to the top of the list to select it as the default." ++"Which keyboard layouts would you like to use on this system? You may move any " ++"layout to the top of the list to select it as the default." + msgstr "" +-"Выберите раскладку клавиатуры. Первая раскладка в списке будет " +-"использоваться по умолчанию." ++"Выберите раскладку клавиатуры. Первая раскладка в списке будет использоваться по " ++"умолчанию." + + #: pyanaconda/ui/gui/spokes/network.glade:153 + #: pyanaconda/ui/gui/spokes/network.glade:286 +@@ -5679,37 +5685,37 @@ msgstr "Установлено беспроводное соединение с + #: pyanaconda/modules/storage/constants.py:30 + msgid "" + "Workarounds for manual installations:\n" +-"* Select only the disks with the same sector size during manual installation " +-"in graphical or text mode.\n" +-"* When disks with inconsistent sector size are selected for the " +-"installation, restrict each created LVM Volume Group to use Physical Volumes " +-"with the same sector size. This can only be done in graphical mode in the " +-"Custom partitioning spoke.\n" ++"* Select only the disks with the same sector size during manual installation in " ++"graphical or text mode.\n" ++"* When disks with inconsistent sector size are selected for the installation, " ++"restrict each created LVM Volume Group to use Physical Volumes with the same " ++"sector size. This can only be done in graphical mode in the Custom partitioning " ++"spoke.\n" + "\n" + "Workarounds for kickstart installations:\n" +-"* Restrict what disks are used for the partitioning by specifying " +-"'ignoredisk --drives=..' or 'ignoredisk --only-use=..'.\n" ++"* Restrict what disks are used for the partitioning by specifying 'ignoredisk --" ++"drives=..' or 'ignoredisk --only-use=..'.\n" + "* Specify what disks should be used for each created LVM Physical Volume: " + "'partition pv.1 --ondisk=..'.\n" + "\n" + "General workarounds:\n" + "* Plain partitioning scheme can be used instead of LVM.\n" +-"* Some drives support re-configuration of sector sizes, for example by " +-"running 'hdparm --set-sector-size= '.\n" ++"* Some drives support re-configuration of sector sizes, for example by running " ++"'hdparm --set-sector-size= '.\n" + msgstr "" + "Обходные решения для ручной установки:\n" +-"* Выбирайте только диски с одинаковым размером сектора при ручной установке " +-"в графическом или текстовом режиме.\n" +-"* Если для установки выбраны диски с несовместимым размером сектора, " +-"ограничьте каждую созданную группу томов LVM использованием физических томов " +-"с одинаковым размером сектора. Это можно сделать только в графическом режиме " +-"при пользовательском разбиении разделов.\n" ++"* Выбирайте только диски с одинаковым размером сектора при ручной установке в " ++"графическом или текстовом режиме.\n" ++"* Если для установки выбраны диски с несовместимым размером сектора, ограничьте " ++"каждую созданную группу томов LVM использованием физических томов с одинаковым " ++"размером сектора. Это можно сделать только в графическом режиме при " ++"пользовательском разбиении разделов.\n" + "\n" + "Обходные решения для установок с kickstart-файла:\n" +-"* Ограничьте, какие диски будут использоваться для разбиения, указав " +-"«ignoredisk --drives = ..» или «ignoredisk --only-use = ..».\n" +-"* Укажите, какие диски следует использовать для каждого созданного " +-"физического тома LVM: «partition pv.1 --ondisk=..».\n" ++"* Ограничьте, какие диски будут использоваться для разбиения, указав «ignoredisk " ++"--drives = ..» или «ignoredisk --only-use = ..».\n" ++"* Укажите, какие диски следует использовать для каждого созданного физического " ++"тома LVM: «partition pv.1 --ondisk=..».\n" + "\n" + "Общие обходные решения:\n" + "* Вместо LVM можно использовать простую схему разбиения.\n" +@@ -5730,17 +5736,17 @@ msgstr "Запись объектов" + + #: pyanaconda/ui/gui/spokes/lib/resize.py:149 + msgid "" +-"You can remove existing file systems you no longer need to free up space for " +-"this installation. Removing a file system will permanently delete all of " +-"the data it contains." ++"You can remove existing file systems you no longer need to free up space for this " ++"installation. Removing a file system will permanently delete all of the data it " ++"contains." + msgstr "" + "Чтобы освободить место, можно удалить ненужные файловые системы. Удаление " + "файловой системы уничтожит и все данные, которые она содержит." + + #: pyanaconda/ui/gui/spokes/lib/refresh.glade:87 + msgid "" +-"You can remove or insert additional disks at this time and press 'Rescan " +-"Disks' below for the changes to take effect." ++"You can remove or insert additional disks at this time and press 'Rescan Disks' " ++"below for the changes to take effect." + msgstr "" + "Вы можете добавить или удалить диски, а потом нажать кнопку «Поиск», чтобы " + "применить изменения." +@@ -5748,16 +5754,14 @@ msgstr "" + #: pyanaconda/ui/gui/spokes/lib/passphrase.glade:81 + msgid "" + "You have chosen to encrypt some of your data. You will need to create a " +-"passphrase that you will use to access your data when you start your " +-"computer." ++"passphrase that you will use to access your data when you start your computer." + msgstr "" +-"Вы выбрали шифрование данных. Необходимо создать пароль для доступа к диску " +-"при запуске операционной системы." ++"Вы выбрали шифрование данных. Необходимо создать пароль для доступа к диску при " ++"запуске операционной системы." + + #: pyanaconda/ui/gui/spokes/storage.py:599 + msgid "" +-"You have chosen to skip boot loader installation. Your system may not be " +-"bootable." ++"You have chosen to skip boot loader installation. Your system may not be bootable." + msgstr "" + "Вы решили пропустить установку загрузчика. Это может привести к тому, что " + "загрузка системы будет невозможна." +@@ -5773,30 +5777,29 @@ msgstr "Не создан загрузочный раздел." + #: pyanaconda/modules/storage/checker/utils.py:52 + #, python-format + msgid "" +-"You have not defined a root partition (/), which is required for " +-"installation of %s to continue." ++"You have not defined a root partition (/), which is required for installation of " ++"%s to continue." + msgstr "Не определен корневой раздел (/), обязательный для установки %s." + + #: pyanaconda/modules/storage/checker/utils.py:306 + #, python-format + msgid "" +-"You have not specified a swap partition. %(requiredMem)s of memory is " +-"recommended to continue installation without a swap partition, but you only " +-"have %(installedMem)s." +-msgstr "" +-"Не задан раздел подкачки. Для продолжения установки без создания раздела " +-"подкачки рекомендуется %(requiredMem)s памяти, но имеется лишь " ++"You have not specified a swap partition. %(requiredMem)s of memory is recommended " ++"to continue installation without a swap partition, but you only have " + "%(installedMem)s." ++msgstr "" ++"Не задан раздел подкачки. Для продолжения установки без создания раздела подкачки " ++"рекомендуется %(requiredMem)s памяти, но имеется лишь %(installedMem)s." + + #: pyanaconda/modules/storage/checker/utils.py:313 + #, python-format + msgid "" +-"You have not specified a swap partition. %(requiredMem)s of memory is " +-"required to continue installation without a swap partition, but you only " +-"have %(installedMem)s." ++"You have not specified a swap partition. %(requiredMem)s of memory is required to " ++"continue installation without a swap partition, but you only have " ++"%(installedMem)s." + msgstr "" +-"Не задан раздел подкачки. Для продолжения установки без создания раздела " +-"подкачки необходимо %(requiredMem)s памяти, но имеется лишь %(installedMem)s." ++"Не задан раздел подкачки. Для продолжения установки без создания раздела подкачки " ++"необходимо %(requiredMem)s памяти, но имеется лишь %(installedMem)s." + + #: pyanaconda/ui/gui/spokes/lib/accordion.py:469 + #, python-format +@@ -5804,16 +5807,15 @@ 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/refresh.glade:223 + msgid "" + "You may go back to the main menu to complete other\n" + "installation options while this scan completes." + msgstr "" +-"Пока выполняется сканирование, можно вернуться в главное меню, \n" ++"Пока выполняется сканирование, можно вернуться в главное меню, \n" + "чтобы завершить другие шаги настройки." + + #: pyanaconda/ui/gui/spokes/keyboard.glade:482 +@@ -5822,9 +5824,8 @@ msgstr "Можно добавить раскладку клавиатуры, в + + #: pyanaconda/ui/gui/spokes/advanced_user.glade:367 + msgid "" +-"You may input a comma-separated list of group names and group IDs here. " +-"Groups that do not already exist will be created; specify their GID in " +-"parentheses. " ++"You may input a comma-separated list of group names and group IDs here. Groups " ++"that do not already exist will be created; specify their GID in parentheses. " + msgstr "" + "Введите список групп и их идентификаторов через запятую. Если группы не " + "существуют, они будут созданы; укажите их идентификаторы в скобках. " +@@ -5836,32 +5837,28 @@ msgstr "Вы должны создать новую файловую систе + + #: pyanaconda/modules/storage/platform.py:265 + msgid "" +-"You must include a PReP Boot Partition within the first 4GiB of an MBR- or " +-"GPT-formatted disk." ++"You must include a PReP Boot Partition within the first 4GiB of an MBR- or GPT-" ++"formatted disk." + msgstr "" +-"Загрузочный раздел PReP необходимо разместить в первых 4 ГиБ диска с " +-"таблицей MBR или GPT." ++"Загрузочный раздел PReP необходимо разместить в первых 4 ГиБ диска с таблицей MBR " ++"или GPT." + + #: pyanaconda/modules/storage/platform.py:304 + msgid "" +-"You must include an Apple Bootstrap Partition on an Apple Partition Map-" +-"formatted disk." ++"You must include an Apple Bootstrap Partition on an Apple Partition Map-formatted " ++"disk." + msgstr "" +-"Необходимо добавить раздел Apple Bootstrap на диске со схемой Apple " +-"Partition Map." ++"Необходимо добавить раздел Apple Bootstrap на диске со схемой Apple Partition Map." + + #: pyanaconda/modules/storage/platform.py:354 + msgid "" +-"You must include at least one MBR- or DASD-formatted disk as an install " +-"target." ++"You must include at least one MBR- or DASD-formatted disk as an install target." + msgstr "Для установки необходимо добавить хотя бы один диск с MBR или DASD." + + #: pyanaconda/modules/storage/platform.py:153 + msgid "" +-"You must include at least one MBR- or GPT-formatted disk as an install " +-"target." +-msgstr "" +-"Для установки необходимо выбрать хотя бы один диск с разметкой MBR или GPT." ++"You must include at least one MBR- or GPT-formatted disk as an install target." ++msgstr "Для установки необходимо выбрать хотя бы один диск с разметкой MBR или GPT." + + #: pyanaconda/modules/storage/platform.py:392 + msgid "You must include at least one MBR-formatted disk as an install target." +@@ -5887,17 +5884,14 @@ msgstr "Для использования NTP нужно сначала наст + #: pyanaconda/modules/storage/disk_selection/utils.py:46 + #, python-format + msgid "" +-"You selected disk %(selected)s, which contains devices that also use " +-"unselected disk %(unselected)s. You must select or de-select these disks as " +-"a set." ++"You selected disk %(selected)s, which contains devices that also use unselected " ++"disk %(unselected)s. You must select or de-select these disks as a set." + msgid_plural "" +-"You selected disk %(selected)s, which contains devices that also use " +-"unselected disks %(unselected)s. You must select or de-select these disks as " +-"a set." ++"You selected disk %(selected)s, which contains devices that also use unselected " ++"disks %(unselected)s. You must select or de-select these disks as a set." + msgstr[0] "" + "Выбранный диск %(selected)s содержит устройства, которые также используют " +-"невыбранный диск %(unselected)s. Выберите его или отмените выбор всех этих " +-"дисков." ++"невыбранный диск %(unselected)s. Выберите его или отмените выбор всех этих дисков." + msgstr[1] "" + "Выбранный диск %(selected)s содержит устройства, которые также используют " + "невыбранные диски %(unselected)s. Выберите его или отмените выбор всех этих " +@@ -5924,29 +5918,29 @@ msgstr "Пароль будет установлен позднее." + #: pyanaconda/modules/storage/checker/utils.py:121 + #, python-format + msgid "" +-"Your %(mount)s partition is less than %(size)s which is lower than " +-"recommended for a normal %(productName)s install." ++"Your %(mount)s partition is less than %(size)s which is lower than recommended " ++"for a normal %(productName)s install." + msgstr "" +-"Размер раздела %(mount)s меньше %(size)s, что меньше рекомендованного " +-"размера для обычной установки %(productName)s." ++"Размер раздела %(mount)s меньше %(size)s, что меньше рекомендованного размера для " ++"обычной установки МСВСфера ОС." + + #: pyanaconda/modules/storage/checker/utils.py:155 + #, python-format + msgid "" +-"Your %(mount)s partition is too large for %(format)s formatting (allowable " +-"size is %(minSize)s to %(maxSize)s)" ++"Your %(mount)s partition is too large for %(format)s formatting (allowable size " ++"is %(minSize)s to %(maxSize)s)" + msgstr "" +-"Раздел %(mount)s слишком велик для форматирования %(format)s (допустимый " +-"размер от %(minSize)s до %(maxSize)s)" ++"Раздел %(mount)s слишком велик для форматирования %(format)s (допустимый размер " ++"от %(minSize)s до %(maxSize)s)" + + #: pyanaconda/modules/storage/checker/utils.py:149 + #, python-format + msgid "" +-"Your %(mount)s partition is too small for %(format)s formatting (allowable " +-"size is %(minSize)s to %(maxSize)s)" ++"Your %(mount)s partition is too small for %(format)s formatting (allowable size " ++"is %(minSize)s to %(maxSize)s)" + msgstr "" +-"Раздел %(mount)s слишком мал для форматирования %(format)s (допустимый " +-"размер от %(minSize)s до %(maxSize)s)" ++"Раздел %(mount)s слишком мал для форматирования %(format)s (допустимый размер от " ++"%(minSize)s до %(maxSize)s)" + + #: pyanaconda/modules/storage/checker/utils.py:129 + #, python-format +@@ -5960,42 +5954,41 @@ msgstr "%s должен быть на отдельном разделе или + + #: pyanaconda/modules/storage/checker/utils.py:223 + msgid "" +-"Your BIOS-based system needs a special partition to boot from a GPT disk " +-"label. To continue, please create a 1MiB 'biosboot' type partition on the {} " +-"disk." ++"Your BIOS-based system needs a special partition to boot from a GPT disk label. " ++"To continue, please create a 1MiB 'biosboot' type partition on the {} disk." + msgstr "" +-"Cистеме на оборудовании с BIOS требуется специальный раздел для загрузки " +-"диска с разметкой GPT. Чтобы продолжить, создайте раздел «biosboot» размером " +-"1 МиБ на диске {}." ++"Cистеме на оборудовании с BIOS требуется специальный раздел для загрузки диска с " ++"разметкой GPT. Чтобы продолжить, создайте раздел «biosboot» размером 1 МиБ на " ++"диске {}." + + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:81 + #, python-format + msgid "" + "Your current %(product)s software " +-"selection requires %(total)s of available space, including " +-"%(software)s for software and %(swap)s for swap space." ++"selection requires %(total)s of available space, including " ++"%(software)s for software and %(swap)s for swap space." + msgstr "" +-"Для программного обеспечения " +-"%(product)s требуется %(total)s пространства, в том числе " +-"%(software)s для программ и %(swap)s для подкачки." ++"Для программного обеспечения МСВСфера ОС требуется %(total)s пространства, в том числе %(software)s " ++"для программ и %(swap)s для подкачки." + + #: pyanaconda/ui/gui/spokes/lib/storage_dialogs.py:72 + #, python-format + msgid "" +-"Your current %(product)s software selection requires %(total)s " +-"of available space, including %(software)s for software and " +-"%(swap)s for swap space." ++"Your current %(product)s software selection requires %(total)s of " ++"available space, including %(software)s for software and %(swap)s " ++"for swap space." + msgstr "" +-"Для установки %(product)s требуется %(total)s, в том числе " +-"%(software)s для программ и %(swap)s для подкачки." ++"Для установки МСВСфера ОС требуется %(total)s, в том числе " ++"%(software)s для программ и %(swap)s для подкачки." + + #: pyanaconda/ui/gui/spokes/lib/summary.glade:89 + msgid "" +-"Your customizations will result in the following changes taking effect after " +-"you return to the main menu and begin installation:" ++"Your customizations will result in the following changes taking effect after you " ++"return to the main menu and begin installation:" + msgstr "" +-"Новые настройки приведут к следующим изменениям, которые вступят в силу " +-"после возврата в главное меню и начала установки:" ++"Новые настройки приведут к следующим изменениям, которые вступят в силу после " ++"возврата в главное меню и начала установки:" + + #: pyanaconda/modules/storage/checker/utils.py:64 + #, python-format +@@ -6007,16 +6000,16 @@ msgstr "Корневой раздел должен быть на устройс + msgid "" + "Your system has been mounted under %(mountpoint)s.\n" + "\n" +-"If you would like to make the root of your system the root of the active " +-"system, run the command:\n" ++"If you would like to make the root of your system the root of the active system, " ++"run the command:\n" + "\n" + "\tchroot %(mountpoint)s\n" + "\n" + msgstr "" + "Ваша система смонтирована в %(mountpoint)s.\n" + "\n" +-"Чтобы сделать корневой каталог вашей системы корневым каталогом активной " +-"системы, выполните команду:\n" ++"Чтобы сделать корневой каталог вашей системы корневым каталогом активной системы, " ++"выполните команду:\n" + "\n" + "\tchroot %(mountpoint)s\n" + "\n" +@@ -6077,8 +6070,7 @@ msgid "_Add zFCP LUN..." + msgstr "_Добавить zFCP LUN..." + + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:1430 +-msgctxt "" +-"GUI|Installation Destination|Filter|NVMe Fabrics Devices|Transport Address" ++msgctxt "GUI|Installation Destination|Filter|NVMe Fabrics Devices|Transport Address" + msgid "_Address:" + msgstr "_Адрес:" + +@@ -6110,8 +6102,7 @@ msgstr "_Начать установку" + #: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:619 + msgctxt "GUI|Advanced Storage|iSCSI|Configure" + msgid "_Bind targets to network interfaces This may take a moment..." +-msgstr "" +-"_Сопоставить цели сетевым интерфейсам. Это может занять некоторое время." ++msgstr "_Сопоставить цели сетевым интерфейсам. Это может занять некоторое время." + + #: pyanaconda/ui/gui/spokes/blivet_gui.py:97 + msgctxt "GUI|Spoke" +@@ -6701,8 +6692,7 @@ msgctxt "GUI|Standalone Navigation" + msgid "_Quit" + msgstr "В_ыход" + +-#: pyanaconda/ui/gui/spokes/storage.py:894 +-#: pyanaconda/ui/gui/spokes/storage.py:915 ++#: pyanaconda/ui/gui/spokes/storage.py:894 pyanaconda/ui/gui/spokes/storage.py:915 + msgctxt "GUI|Storage|Error Dialog" + msgid "_Quit" + msgstr "_Выход" +@@ -7004,34 +6994,33 @@ msgstr "_Устройства zSeries" + #: pyanaconda/modules/storage/bootloader/grub2.py:537 + #, python-format + msgid "" +-"boot loader stage2 device %(stage2dev)s is on a multi-disk array, but boot " +-"loader stage1 device %(stage1dev)s is not part of this array. The stage1 " +-"boot loader will only be installed to a single drive." ++"boot loader stage2 device %(stage2dev)s is on a multi-disk array, but boot loader " ++"stage1 device %(stage1dev)s is not part of this array. The stage1 boot loader " ++"will only be installed to a single drive." + msgstr "" +-"устройство загрузчика второй стадии, %(stage2dev)s, находится в " +-"многодисковом массиве, а устройство загрузчика первой стадии, %(stage1dev)s, " +-"не является частью этого массива. Загрузчик первой стадии будет установлен " +-"только на одиночный привод." ++"устройство загрузчика второй стадии, %(stage2dev)s, находится в многодисковом " ++"массиве, а устройство загрузчика первой стадии, %(stage1dev)s, не является частью " ++"этого массива. Загрузчик первой стадии будет установлен только на одиночный " ++"привод." + + #: pyanaconda/modules/storage/bootloader/grub2.py:530 + #, python-format + msgid "" +-"boot loader stage2 device %(stage2dev)s is on a multi-disk array, but boot " +-"loader stage1 device %(stage1dev)s is not. A drive failure in %(stage2dev)s " +-"could render the system unbootable." ++"boot loader stage2 device %(stage2dev)s is on a multi-disk array, but boot loader " ++"stage1 device %(stage1dev)s is not. A drive failure in %(stage2dev)s could render " ++"the system unbootable." + msgstr "" +-"устройство загрузчика второй стадии, %(stage2dev)s, находится в " +-"многодисковом массиве, а устройство загрузчика первой стадии, %(stage1dev)s, " +-"— нет. Сбой диска в %(stage2dev)s может привести к невозможности загрузки " +-"системы." ++"устройство загрузчика второй стадии, %(stage2dev)s, находится в многодисковом " ++"массиве, а устройство загрузчика первой стадии, %(stage1dev)s, — нет. Сбой диска " ++"в %(stage2dev)s может привести к невозможности загрузки системы." + + #: pyanaconda/modules/storage/bootloader/systemd.py:177 + msgid "" +-"bootctl failed to install UEFI boot loader. More information may be found in " +-"the log files stored in /tmp" ++"bootctl failed to install UEFI boot loader. More information may be found in the " ++"log files stored in /tmp" + msgstr "" +-"bootctl не удалось установить загрузчик UEFI. Дополнительную информацию " +-"можно найти в файлах журналов, хранящихся в /tmp" ++"bootctl не удалось установить загрузчик UEFI. Дополнительную информацию можно " ++"найти в файлах журналов, хранящихся в /tmp" + + #: pyanaconda/ntp.py:51 + msgid "checking status" +@@ -7072,11 +7061,10 @@ msgstr "_Инициатор iSCSI:" + + #: pyanaconda/modules/storage/kickstart.py:205 + msgid "" +-"iscsi --iface must be specified (binding used) either for all targets or for " +-"none" ++"iscsi --iface must be specified (binding used) either for all targets or for none" + msgstr "" +-"«iscsi --iface» (привязка) необходимо указать для всех целей одновременно " +-"или не указывать совсем" ++"«iscsi --iface» (привязка) необходимо указать для всех целей одновременно или не " ++"указывать совсем" + + #: pyanaconda/ui/gui/spokes/subscription.glade:265 + msgid "key1,key2,..." +@@ -7088,8 +7076,7 @@ msgstr "локальный образ" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:890 + msgid "logvol --noformat must also use the --name= option." +-msgstr "" +-"Строка команды «logvol --noformat» должна содержать параметр «--name=»." ++msgstr "Строка команды «logvol --noformat» должна содержать параметр «--name=»." + + #: pyanaconda/core/payload.py:208 + msgid "malformed URL, cannot parse it." +@@ -7103,8 +7090,7 @@ msgstr "метассылка" + msgid "mirrorlist" + msgstr "зеркала" + +-#: pyanaconda/ui/tui/spokes/storage.py:805 +-#: pyanaconda/ui/tui/spokes/storage.py:810 ++#: pyanaconda/ui/tui/spokes/storage.py:805 pyanaconda/ui/tui/spokes/storage.py:810 + #: pyanaconda/ui/tui/spokes/storage.py:842 + msgid "none" + msgstr "нет" +@@ -7192,8 +7178,7 @@ msgstr "не подсоединён" + + #: pyanaconda/modules/storage/partitioning/custom/custom_partitioning.py:752 + msgid "" +-"volgroup --noformat and volgroup --useexisting must also use the --name= " +-"option." ++"volgroup --noformat and volgroup --useexisting must also use the --name= option." + msgstr "" + "Команды «volgroup --noformat» и «volgroup --useexisting» должны содержать " + "параметр «--name=»." +@@ -7262,11 +7247,11 @@ msgstr "{} свободно" + + #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py:387 + msgid "" +-"{} may be a system boot partition! Deleting it may break other operating " +-"systems. Are you sure you want to delete it?" ++"{} may be a system boot partition! Deleting it may break other operating systems. " ++"Are you sure you want to delete it?" + msgstr "" +-"Возможно, {} является загрузочным разделом! Его удаление может нарушить " +-"работу других операционных систем. Вы действительно хотите его удалить?" ++"Возможно, {} является загрузочным разделом! Его удаление может нарушить работу " ++"других операционных систем. Вы действительно хотите его удалить?" + + #: pyanaconda/modules/storage/partitioning/manual/manual_partitioning.py:109 + msgid "{} mounted as {}" +@@ -7338,15 +7323,12 @@ msgstr "{}. {}" + #~ "Вы выбрали запуск VNC с паролем.\n" + #~ "\n" + +-#, python-format + #~ msgid "%(productName)s %(productVersion)s installation" + #~ msgstr "Установка %(productName)s %(productVersion)s" + +-#, python-format + #~ msgid "%(productName)s %(productVersion)s installation on host %(name)s" + #~ msgstr "Установка %(productName)s %(productVersion)s на %(name)s" + +-#, python-format + #~ msgid "Attempting to connect to vnc client on host %s..." + #~ msgstr "Попытка соединения с VNC-клиентом на узле %s..." + +@@ -7356,22 +7338,18 @@ msgstr "{}. {}" + #~ msgid "Connected!" + #~ msgstr "Подключено!" + +-#, python-format + #~ msgid "Giving up attempting to connect after %d try!\n" + #~ msgid_plural "Giving up attempting to connect after %d tries!\n" + #~ msgstr[0] "Установка соединения прекращена после %d попытки!\n" + #~ msgstr[1] "Установка соединения прекращена после %d попыток!\n" + #~ msgstr[2] "Установка соединения прекращена после %d попыток!\n" + +-#, python-format + #~ msgid "Please manually connect your vnc client to %s to begin the install." + #~ msgstr "Для начала установки подключите VNC-клиент к %s вручную." + +-#, python-format + #~ msgid "" +-#~ "Please manually connect your vnc client to IP-ADDRESS:%s to begin the " +-#~ "install. Switch to the shell (Ctrl-B 2) and run 'ip addr' to find the IP-" +-#~ "ADDRESS." ++#~ "Please manually connect your vnc client to IP-ADDRESS:%s to begin the install. " ++#~ "Switch to the shell (Ctrl-B 2) and run 'ip addr' to find the IP-ADDRESS." + #~ msgstr "" + #~ "Для начала установки вручную подключите VNC-клиент к IP-ADDRESS:%s. " + #~ "Переключитесь на оболочку (Ctrl-B 2) и выполните команду 'ip addr', чтобы " +@@ -7411,8 +7389,7 @@ msgstr "{}. {}" + + #~ msgid "Will try to connect again in 15 seconds..." + #~ msgstr "" +-#~ "Повторная попытка установить соединение будет предпринята через 15 " +-#~ "секунд..." ++#~ "Повторная попытка установить соединение будет предпринята через 15 секунд..." + + #~ msgid "Graphical installation is not available. Starting text mode." + #~ msgstr "Графическая установка невозможна. Запускается текстовый режим." +@@ -7448,8 +7425,7 @@ msgstr "{}. {}" + #~ msgstr "Установить дополнительное программное обеспечение с сервера NFS" + + #~ msgid "Install additional software from another source" +-#~ msgstr "" +-#~ "Установить дополнительное программное обеспечение с другого источника" ++#~ msgstr "Установить дополнительное программное обеспечение с другого источника" + + #~ msgid "Metalink" + #~ msgstr "Метассылка" +@@ -7550,8 +7526,8 @@ msgstr "{}. {}" + #~ msgstr "Загрузочный раздел Apple EFI" + + #~ msgid "" +-#~ "For a UEFI installation, you must include a Linux HFS+ ESP on a GPT-" +-#~ "formatted disk, mounted at /boot/efi." ++#~ "For a UEFI installation, you must include a Linux HFS+ ESP on a GPT-formatted " ++#~ "disk, mounted at /boot/efi." + #~ msgstr "" + #~ "Для установки на компьютерах с UEFI необходимо добавить Linux HFS+ ESP на " + #~ "диске с разметкой GPT, который должен быть смонтирован в /boot/efi." +@@ -7569,7 +7545,6 @@ msgstr "{}. {}" + #~ msgid "Memory" + #~ msgstr "Память" + +-#, python-brace-format + #~ msgid "NVDIMM device {namespace}" + #~ msgstr "Устройство NVDIMM {namespace}" + +@@ -7609,8 +7584,8 @@ msgstr "{}. {}" + #~ msgstr "Запуск _перенастройки" + + #~ msgid "" +-#~ "The following NVDIMM devices selected from the list will be reconfigured " +-#~ "to sector mode:" ++#~ "The following NVDIMM devices selected from the list will be reconfigured to " ++#~ "sector mode:" + #~ msgstr "" + #~ "Следующие устройства NVDIMM, выбранные из списка, будут перенастроены в " + #~ "секторный режим:" +@@ -7666,8 +7641,7 @@ msgstr "{}. {}" + #~ msgstr "Добавить точку монтирования" + + #~ msgid "All devices using this passphrase will be unlocked" +-#~ msgstr "" +-#~ "Все устройства, использующие эту парольную фразу, будут разблокированы" ++#~ msgstr "Все устройства, использующие эту парольную фразу, будут разблокированы" + + #~ msgid "Anaconda project page" + #~ msgstr "Страница проекта Anaconda" +@@ -7682,32 +7656,29 @@ msgstr "{}. {}" + #~ msgstr "Назад" + + #~ msgid "" +-#~ "Blivet-gui is an advanced storage editor that lets you resize, delete, " +-#~ "and create partitions. It can set up LVM and much more." ++#~ "Blivet-gui is an advanced storage editor that lets you resize, delete, and " ++#~ "create partitions. It can set up LVM and much more." + #~ msgstr "" +-#~ "Blivet-gui — это расширенный редактор хранилища, который позволяет " +-#~ "изменять размер, удалять и создавать разделы. Он может настроить LVM и " +-#~ "многое другое." ++#~ "Blivet-gui — это расширенный редактор хранилища, который позволяет изменять " ++#~ "размер, удалять и создавать разделы. Он может настроить LVM и многое другое." + + #~ msgid "" + #~ "By continuing to use this software, you understand and accept the risks " +-#~ "associated with pre-released software, that you intend to use this for " +-#~ "testing and development purposes only and are willing to report any bugs " +-#~ "or issues in order to enhance this work." ++#~ "associated with pre-released software, that you intend to use this for testing " ++#~ "and development purposes only and are willing to report any bugs or issues in " ++#~ "order to enhance this work." + #~ msgstr "" +-#~ "Продолжая использовать это программное обеспечение, вы понимаете и " +-#~ "принимате риски, связанные с предварительной версией программного " +-#~ "обеспечения, и вы намереваетесь использовать его только для тестирования " +-#~ "и разработки и готовы сообщать обо всех ошибках и проблемах, чтобы " +-#~ "улучшить эту работу." ++#~ "Продолжая использовать это программное обеспечение, вы понимаете и принимате " ++#~ "риски, связанные с предварительной версией программного обеспечения, и вы " ++#~ "намереваетесь использовать его только для тестирования и разработки и готовы " ++#~ "сообщать обо всех ошибках и проблемах, чтобы улучшить эту работу." + + #~ msgid "Cancel" + #~ msgstr "Отмена" + + #~ msgid "Changes made in Blivet-gui will directly affect your storage." + #~ msgstr "" +-#~ "Изменения, сделанные с помощью Blivet-gui, напрямую повлияют на ваше " +-#~ "хранилище." ++#~ "Изменения, сделанные с помощью Blivet-gui, напрямую повлияют на ваше хранилище." + + #~ msgid "Checking storage configuration" + #~ msgstr "Проверка настроек устройств хранения" +@@ -7761,8 +7732,7 @@ msgstr "{}. {}" + #~ msgstr "Назначение" + + #~ msgid "Devices should be unlocked before assigning mount points." +-#~ msgstr "" +-#~ "Перед назначением точек монтирования устройства следует разблокировать." ++#~ msgstr "Перед назначением точек монтирования устройства следует разблокировать." + + #~ msgid "Disk configuration" + #~ msgstr "Конфигурация диска" +@@ -7785,11 +7755,10 @@ msgstr "{}. {}" + #~ msgid "Encrypted devices are locked" + #~ msgstr "Зашифрованные устройства заблокированы" + +-#~ msgid "" +-#~ "Encryption helps secure your data, to prevent others from accessing it." ++#~ msgid "Encryption helps secure your data, to prevent others from accessing it." + #~ msgstr "" +-#~ "Шифрование помогает защитить ваши данные и предотвратить доступ к ним " +-#~ "других лиц." ++#~ "Шифрование помогает защитить ваши данные и предотвратить доступ к ним других " ++#~ "лиц." + + #~ msgid "Erase data and install" + #~ msgstr "Стереть данные и установить" +@@ -7816,11 +7785,11 @@ msgstr "{}. {}" + #~ msgstr "Завершение" + + #~ msgid "" +-#~ "Finalizing: The system configuration is complete. Finalizing installation " +-#~ "may take a few moments." ++#~ "Finalizing: The system configuration is complete. Finalizing installation may " ++#~ "take a few moments." + #~ msgstr "" +-#~ "Завершение: настройка системы завершена. Завершение установки может " +-#~ "занять некоторое время." ++#~ "Завершение: настройка системы завершена. Завершение установки может занять " ++#~ "некоторое время." + + #~ msgid "Find a language" + #~ msgstr "Найти язык" +@@ -7840,17 +7809,14 @@ msgstr "{}. {}" + #~ msgstr "Как бы вы хотели установить?" + + #~ msgid "" +-#~ "If you do not understand or accept the risks, then please exit this " +-#~ "program." ++#~ "If you do not understand or accept the risks, then please exit this program." + #~ msgstr "" +-#~ "Если вы не понимаете или не принимаете риски, тогда выйдите из этой " +-#~ "программы." ++#~ "Если вы не понимаете или не принимаете риски, тогда выйдите из этой программы." + +-#~ msgid "" +-#~ "If you have made changes on partitions or disks, please rescan storage." ++#~ msgid "If you have made changes on partitions or disks, please rescan storage." + #~ msgstr "" +-#~ "Если вы внесли изменения в разделы или диски, повторите сканирование " +-#~ "хранилища данных." ++#~ "Если вы внесли изменения в разделы или диски, повторите сканирование хранилища " ++#~ "данных." + + #~ msgid "Ignore" + #~ msgstr "Игнорировать" +@@ -7886,8 +7852,7 @@ msgstr "{}. {}" + #~| msgid "Keeps current disk layout and uses only available space." + #~ msgid "Keep current disk layout and only install into available space." + #~ msgstr "" +-#~ "Сохраняет текущую структуру диска и использует только доступное " +-#~ "пространство." ++#~ "Сохраняет текущую структуру диска и использует только доступное пространство." + + #~ msgid "Language" + #~ msgstr "Язык" +@@ -7933,16 +7898,16 @@ msgstr "{}. {}" + #~ msgstr "Должно быть не менее $0 символов" + + #~ msgid "" +-#~ "Network not available. Configure the network in the top bar menu to " +-#~ "report the issue." ++#~ "Network not available. Configure the network in the top bar menu to report the " ++#~ "issue." + #~ msgstr "" + #~ "Сеть недоступна. Настройте сеть в меню верхней панели, чтобы сообщить о " + #~ "проблеме." + + #, fuzzy + #~| msgid "" +-#~| "Network not available. Configure the network in the top bar menu to " +-#~| "report the issue." ++#~| "Network not available. Configure the network in the top bar menu to report " ++#~| "the issue." + #~ msgid "Network not available. Configure the network to report the issue." + #~ msgstr "" + #~ "Сеть недоступна. Настройте сеть в меню верхней панели, чтобы сообщить о " +@@ -7972,14 +7937,14 @@ msgstr "{}. {}" + #~ msgstr "Недостаточно места на выбранных дисках." + + #~ msgid "" +-#~ "Notice: This is pre-released software that is intended for development " +-#~ "and testing purposes only. Do NOT use this software for any critical work " +-#~ "or for production environments." ++#~ "Notice: This is pre-released software that is intended for development and " ++#~ "testing purposes only. Do NOT use this software for any critical work or for " ++#~ "production environments." + #~ msgstr "" + #~ "Примечание: это предварительно выпущенное программное обеспечение, " +-#~ "предназначенное только для целей разработки и тестирования. НЕ " +-#~ "используйте это программное обеспечение для какой-либо важной работы или " +-#~ "в условиях производства." ++#~ "предназначенное только для целей разработки и тестирования. НЕ используйте это " ++#~ "программное обеспечение для какой-либо важной работы или в условиях " ++#~ "производства." + + #~ msgid "" + #~ "Only new partitions will be encrypted. Existing partitions will remain " +@@ -8031,12 +7996,11 @@ msgstr "{}. {}" + #~ msgstr "Перезагрузить систему?" + + #~ msgid "" +-#~ "Remove all partitions on the selected devices, including existing " +-#~ "operating systems. Make sure you have backed up your data." ++#~ "Remove all partitions on the selected devices, including existing operating " ++#~ "systems. Make sure you have backed up your data." + #~ msgstr "" + #~ "Удалить все разделы на выбранных устройствах, включая существующие " +-#~ "операционные системы. Убедитесь, что вы сделали резервную копию своих " +-#~ "данных." ++#~ "операционные системы. Убедитесь, что вы сделали резервную копию своих данных." + + #~ msgid "Report Issue" + #~ msgstr "Сообщить о проблеме" +@@ -8045,12 +8009,12 @@ msgstr "{}. {}" + #~ msgstr "Сообщить о проблеме" + + #~ msgid "" +-#~ "Reporting an issue will send information over the network. Please review " +-#~ "and edit the attached log to remove any sensitive information." ++#~ "Reporting an issue will send information over the network. Please review and " ++#~ "edit the attached log to remove any sensitive information." + #~ msgstr "" +-#~ "При сообщении о проблеме информация будет отправлена по сети. Просмотрите " +-#~ "и отредактируйте прикрепленный журнал, чтобы удалить любую " +-#~ "конфиденциальную информацию." ++#~ "При сообщении о проблеме информация будет отправлена по сети. Просмотрите и " ++#~ "отредактируйте прикрепленный журнал, чтобы удалить любую конфиденциальную " ++#~ "информацию." + + #~ msgid "Required" + #~ msgstr "Обязательно" +@@ -8091,8 +8055,8 @@ msgstr "{}. {}" + #~ msgstr "Установка программного обеспечения" + + #~ msgid "" +-#~ "Software installation: Storage configuration complete. The software is " +-#~ "now being installed onto your device." ++#~ "Software installation: Storage configuration complete. The software is now " ++#~ "being installed onto your device." + #~ msgstr "" + #~ "Установка программного обеспечения: настройка хранилища данных завершена. " + #~ "Теперь программное обеспечение устанавливается на ваше устройство." +@@ -8118,11 +8082,11 @@ msgstr "{}. {}" + #~ msgstr "Конфигурация системы" + + #~ msgid "" +-#~ "System configuration: Software installation complete. The system is now " +-#~ "being configured." ++#~ "System configuration: Software installation complete. The system is now being " ++#~ "configured." + #~ msgstr "" +-#~ "Конфигурация системы: установка программного обеспечения завершена. " +-#~ "Сейчас система настраивается." ++#~ "Конфигурация системы: установка программного обеспечения завершена. Сейчас " ++#~ "система настраивается." + + #~ msgid "" + #~ "The chosen language will be used for installation and in the installed " +@@ -8139,8 +8103,8 @@ msgstr "{}. {}" + #~ "сможете предоставить дополнительную информацию." + + #~ msgid "" +-#~ "The installation will use the available space on your devices and will " +-#~ "not erase any device data." ++#~ "The installation will use the available space on your devices and will not " ++#~ "erase any device data." + #~ msgstr "" + #~ "При установке будет использовано все доступное пространство на ваших " + #~ "устройствах, но данные устройства не будут удалены." +@@ -8158,8 +8122,8 @@ msgstr "{}. {}" + #~ msgstr "Корневой раздел всегда переформатируется программой установки." + + #~ msgid "" +-#~ "The selected disks will be erased, this cannot be undone. Are you sure " +-#~ "you want to continue with the installation?" ++#~ "The selected disks will be erased, this cannot be undone. Are you sure you " ++#~ "want to continue with the installation?" + #~ msgstr "" + #~ "Выбранные диски будут стерты, это нельзя отменить. Вы уверены, что хотите " + #~ "продолжить установку?" +@@ -8183,8 +8147,7 @@ msgstr "{}. {}" + #~ msgstr "Чтобы продолжить, выберите устройства для установки." + + #~ msgid "To prevent loss, make sure to backup your data." +-#~ msgstr "" +-#~ "Во избежание потери данных, обязательно сделайте их резервную копию." ++#~ msgstr "Во избежание потери данных, обязательно сделайте их резервную копию." + + #~ msgid "Unlock" + #~ msgstr "Разблокировать" +@@ -8252,8 +8215,7 @@ msgstr "{}. {}" + #~ msgid "There is not enough space on the disks to install. " + #~ msgstr "На дисках недостаточно места для установки. " + +-#~ msgid "" +-#~ "This option requires that the selected device has formatted partitions." ++#~ msgid "This option requires that the selected device has formatted partitions." + #~ msgstr "" + #~ "Для этого варианта необходимо, чтобы на выбранном устройстве были " + #~ "отформатированные разделы." +@@ -8333,17 +8295,17 @@ msgstr "{}. {}" + + #, fuzzy + #~| msgid "" +-#~| "Installation destination allows you to configure which disks will be " +-#~| "used as the installation target for your Fedora installation. At least 1 " +-#~| "disk must be selected for the installation to proceed." ++#~| "Installation destination allows you to configure which disks will be used as " ++#~| "the installation target for your Fedora installation. At least 1 disk must be " ++#~| "selected for the installation to proceed." + #~ msgid "" + #~ "In Installation destination, you can configure disks to be used as the " +-#~ "installation target. You must select a minimum of 1 disk for the " +-#~ "installation process to proceed." ++#~ "installation target. You must select a minimum of 1 disk for the installation " ++#~ "process to proceed." + #~ msgstr "" + #~ "Местоназначение установки позволяет вам настроить, какие диски будут " +-#~ "использоваться для вашей установки Fedora. Для продолжения установки " +-#~ "должен быть выбран хотя бы 1 диск." ++#~ "использоваться для вашей установки Fedora. Для продолжения установки должен " ++#~ "быть выбран хотя бы 1 диск." + + #~ msgid "Installation destination" + #~ msgstr "Место установки" +@@ -8361,11 +8323,11 @@ msgstr "{}. {}" + #~ msgstr "Локальные стандартные диски" + + #~ msgid "" +-#~ "Locally available storage devices (SATA, NVMe SSD, SCSI hard drives, " +-#~ "external disks, etc.)" ++#~ "Locally available storage devices (SATA, NVMe SSD, SCSI hard drives, external " ++#~ "disks, etc.)" + #~ msgstr "" +-#~ "Локально доступные устройства хранения (SATA, NVMe SSD, SCSI диски, " +-#~ "внешние диски и под.)" ++#~ "Локально доступные устройства хранения (SATA, NVMe SSD, SCSI диски, внешние " ++#~ "диски и под.)" + + #~ msgid "Scans for local storage devices" + #~ msgstr "Сканирует локальные устройства хранения" +@@ -8380,32 +8342,31 @@ msgstr "{}. {}" + #~ msgstr "Не выбрать ни одного" + + #~ msgid "" +-#~ "Select the device(s) to install to. The installation requires $0 of " +-#~ "available space. Storage will be automatically partitioned." ++#~ "Select the device(s) to install to. The installation requires $0 of available " ++#~ "space. Storage will be automatically partitioned." + #~ msgstr "" +-#~ "Выберите устройство (устройства) для установки. Для установки требуется " +-#~ "$0 свободного места. Устройство хранения будет автоматически разбито на " +-#~ "разделы." ++#~ "Выберите устройство (устройства) для установки. Для установки требуется $0 " ++#~ "свободного места. Устройство хранения будет автоматически разбито на разделы." + + #, fuzzy + #~| msgid "" +-#~| "The installer will determine the total amount of space on all selected " +-#~| "disks, and it will create a Btrfs layout suitable for your system. The " +-#~| "specifics of this layout depend on whether your system uses BIOS or UEFI " +-#~| "firmware, and the total amount of free space on your disks. A ZRAM-based " +-#~| "swap will be used instead of a disk-based swap partition." ++#~| "The installer will determine the total amount of space on all selected disks, " ++#~| "and it will create a Btrfs layout suitable for your system. The specifics of " ++#~| "this layout depend on whether your system uses BIOS or UEFI firmware, and the " ++#~| "total amount of free space on your disks. A ZRAM-based swap will be used " ++#~| "instead of a disk-based swap partition." + #~ msgid "" +-#~ "The installer determines the total amount of space on all selected disks, " +-#~ "and creates a Btrfs layout suitable for your system. The specifics of " +-#~ "this layout depend on whether your system uses BIOS or UEFI firmware and " +-#~ "the total free space on disks. A ZRAM-based swap is used instead of a " +-#~ "disk-based swap partition." ++#~ "The installer determines the total amount of space on all selected disks, and " ++#~ "creates a Btrfs layout suitable for your system. The specifics of this layout " ++#~ "depend on whether your system uses BIOS or UEFI firmware and the total free " ++#~ "space on disks. A ZRAM-based swap is used instead of a disk-based swap " ++#~ "partition." + #~ msgstr "" +-#~ "Программа установки определит общий объем места на всех выбранных дисках " +-#~ "и создаст схему Btrfs, подходящую для вашей системы. Специфика этой схемы " +-#~ "зависит от того, использует ли ваша система прошивку BIOS или UEFI, а " +-#~ "также от общего объема свободного места на ваших дисках. Подкачка на " +-#~ "основе ZRAM будет использоваться вместо раздела подкачки на диске." ++#~ "Программа установки определит общий объем места на всех выбранных дисках и " ++#~ "создаст схему Btrfs, подходящую для вашей системы. Специфика этой схемы " ++#~ "зависит от того, использует ли ваша система прошивку BIOS или UEFI, а также от " ++#~ "общего объема свободного места на ваших дисках. Подкачка на основе ZRAM будет " ++#~ "использоваться вместо раздела подкачки на диске." + + #~ msgid "Total" + #~ msgstr "Общий размер" +@@ -8427,8 +8388,8 @@ msgstr "{}. {}" + #~ "Activities Overview at any later time." + #~ msgstr "" + #~ "Fedora запущена с установочного диска.\n" +-#~ "Вы можете установить Fedora сейчас или в любое время выбрать «Установить " +-#~ "на жесткий диск» в меню «Обзор»." ++#~ "Вы можете установить Fedora сейчас или в любое время выбрать «Установить на " ++#~ "жесткий диск» в меню «Обзор»." + + #~ msgid "" + #~ "You can choose \"Install to Hard Drive\"\n" +@@ -8449,30 +8410,30 @@ msgstr "{}. {}" + #~ msgstr "_Файл ISO:" + + #~ msgid "" +-#~ "All locally available storage devices (SATA, IDE and SCSI hard drives, " +-#~ "USB flash drives, etc.) are displayed in the Local Standard Disks " +-#~ "section. Local disks are detected when the installer starts - any storage " +-#~ "devices connected after the installation has started will not be shown." ++#~ "All locally available storage devices (SATA, IDE and SCSI hard drives, USB " ++#~ "flash drives, etc.) are displayed in the Local Standard Disks section. Local " ++#~ "disks are detected when the installer starts - any storage devices connected " ++#~ "after the installation has started will not be shown." + #~ msgstr "" +-#~ "Все локально доступные устройства хранения данных (жесткие диски SATA, " +-#~ "IDE и SCSI, USB-накопители и т. д.) отображаются в разделе «Локальные " +-#~ "стандартные диски». Локальные диски обнаруживаются при запуске программы " +-#~ "установки — любые устройства хранения данных, подключенные после начала " +-#~ "установки, отображаться не будут." ++#~ "Все локально доступные устройства хранения данных (жесткие диски SATA, IDE и " ++#~ "SCSI, USB-накопители и т. д.) отображаются в разделе «Локальные стандартные " ++#~ "диски». Локальные диски обнаруживаются при запуске программы установки — любые " ++#~ "устройства хранения данных, подключенные после начала установки, отображаться " ++#~ "не будут." + + #, fuzzy + #~| msgid "" +-#~| "If you need to configure additional local storage devices, refresh the " +-#~| "page using the refresh icon. All detected disks, including any new ones, " +-#~| "will be displayed in the Local Standard Disks section." ++#~| "If you need to configure additional local storage devices, refresh the page " ++#~| "using the refresh icon. All detected disks, including any new ones, will be " ++#~| "displayed in the Local Standard Disks section." + #~ msgid "" +-#~ "If you need to configure additional local storage devices, refresh the " +-#~ "device list using the Detect disks button. All detected disks, including " +-#~ "any new ones, will be displayed in the Local Standard Disks section." ++#~ "If you need to configure additional local storage devices, refresh the device " ++#~ "list using the Detect disks button. All detected disks, including any new " ++#~ "ones, will be displayed in the Local Standard Disks section." + #~ msgstr "" + #~ "Если вам нужно настроить дополнительные локальные устройства хранения, " +-#~ "обновите страницу с помощью значка обновления. Все обнаруженные диски, " +-#~ "включая новые, будут отображаться в разделе «Локальные стандартные диски»." ++#~ "обновите страницу с помощью значка обновления. Все обнаруженные диски, включая " ++#~ "новые, будут отображаться в разделе «Локальные стандартные диски»." + + #~ msgid "Installing." + #~ msgstr "Установка." +@@ -8484,11 +8445,10 @@ msgstr "{}. {}" + #~ msgstr "Ошибка при настройке источника программного обеспечения" + + #~ msgid "" +-#~ "Failed to set up installation source; check the repo url and proxy " +-#~ "settings." ++#~ "Failed to set up installation source; check the repo url and proxy settings." + #~ msgstr "" +-#~ "Не удалось настроить источник установки; проверьте URL репозитория и " +-#~ "настройки прокси." ++#~ "Не удалось настроить источник установки; проверьте URL репозитория и настройки " ++#~ "прокси." + + #~ msgid "Repository %s has empty url" + #~ msgstr "Пустой адрес репозитория %s" +@@ -8500,11 +8460,11 @@ msgstr "{}. {}" + #~ msgstr "Не задан сервер NFS для репозитория %s" + + #~ msgid "" +-#~ "Repository %s has invalid NFS server, exactly one colon ':' must be " +-#~ "present between host and directory" ++#~ "Repository %s has invalid NFS server, exactly one colon ':' must be present " ++#~ "between host and directory" + #~ msgstr "" +-#~ "У репозитория %s недопустимый сервер NFS, между узлом и каталогом должно " +-#~ "быть только одно двоеточие «:»" ++#~ "У репозитория %s недопустимый сервер NFS, между узлом и каталогом должно быть " ++#~ "только одно двоеточие «:»" + + #~ msgid "Repository %s has invalid host name" + #~ msgstr "Недопустимое имя узла для репозитория %s" +@@ -8548,11 +8508,11 @@ msgstr "{}. {}" + #~ msgstr "Обнаружить диски" + + #~ msgid "" +-#~ "Select the language you would like to use. This language will also be " +-#~ "selected for your installed system." ++#~ "Select the language you would like to use. This language will also be selected " ++#~ "for your installed system." + #~ msgstr "" +-#~ "Выберите язык, который вы хотите использовать. Этот язык также будет " +-#~ "выбран для вашей установленной системы." ++#~ "Выберите язык, который вы хотите использовать. Этот язык также будет выбран " ++#~ "для вашей установленной системы." + + #~ msgid "Selected disks will be erased at install" + #~ msgstr "Выбранные диски будут стерты при установке" +@@ -8570,20 +8530,20 @@ msgstr "{}. {}" + #~ msgstr "Ошибка загрузки метаданных пакета" + + #~ msgid "" +-#~ "The {} section has been deprecated. It may be removed from future " +-#~ "releases, which will result in a fatal error when it is encountered. " +-#~ "Please modify your kickstart file to remove this section." ++#~ "The {} section has been deprecated. It may be removed from future releases, " ++#~ "which will result in a fatal error when it is encountered. Please modify your " ++#~ "kickstart file to remove this section." + #~ msgstr "" + #~ "Раздел {} устарел. Он может быть удален из будущих версий, что приведет к " +-#~ "неисправимой ошибке, если он встретится. Измените файл kickstart - " +-#~ "удалите этот раздел." ++#~ "неисправимой ошибке, если он встретится. Измените файл kickstart - удалите " ++#~ "этот раздел." + + #~ msgid "" + #~ "To use zFCP disks, you must provide the device number, WWPN, and LUN " + #~ "configured for the device." + #~ msgstr "" +-#~ "Для использования дисков zFCP необходимо предоставить номер устройства, " +-#~ "WWPN и LUN, настроенные для этого устройства." ++#~ "Для использования дисков zFCP необходимо предоставить номер устройства, WWPN и " ++#~ "LUN, настроенные для этого устройства." + + #~ msgid "Hide logs" + #~ msgstr "Скрыть журналы" +@@ -8592,13 +8552,11 @@ msgstr "{}. {}" + #~ msgstr "Показывать журналы" + + #~ msgid "" +-#~ "You have not specified a swap partition. Although not strictly required " +-#~ "in all cases, it will significantly improve performance for most " +-#~ "installations." ++#~ "You have not specified a swap partition. Although not strictly required in all " ++#~ "cases, it will significantly improve performance for most installations." + #~ msgstr "" + #~ "Не задан раздел подкачки. Хотя это и не всегда требуется, в большинстве " +-#~ "случаев раздел подкачки может значительно улучшить производительность " +-#~ "системы." ++#~ "случаев раздел подкачки может значительно улучшить производительность системы." + + #, fuzzy + #~| msgctxt "GUI|Network|Add Device Dialog" +@@ -8618,16 +8576,14 @@ msgstr "{}. {}" + + #, fuzzy + #~| msgid "" +-#~| "Select the device(s) you'd like to install to. They will be left " +-#~| "untouched until you click on the main menu's \"Begin Installation\" " +-#~| "button." ++#~| "Select the device(s) you'd like to install to. They will be left untouched " ++#~| "until you click on the main menu's \"Begin Installation\" button." + #~ msgid "" +-#~ "Select the device(s) you would like to install to. They will be left " +-#~ "untouched until you click on the main menu's 'Begin installation' button." ++#~ "Select the device(s) you would like to install to. They will be left untouched " ++#~ "until you click on the main menu's 'Begin installation' button." + #~ msgstr "" +-#~ "Выберите устройства для установки операционной системы. Они не будут " +-#~ "изменены до тех пор, пока вы не нажмете кнопку «Начать установку» в " +-#~ "главном окне." ++#~ "Выберите устройства для установки операционной системы. Они не будут изменены " ++#~ "до тех пор, пока вы не нажмете кнопку «Начать установку» в главном окне." + + #, fuzzy + #~| msgid "PRE-RELEASE / TESTING" +@@ -8671,19 +8627,18 @@ msgstr "{}. {}" + + #, fuzzy + #~| msgid "" +-#~| "Please complete items marked with this icon before continuing to the " +-#~| "next step." ++#~| "Please complete items marked with this icon before continuing to the next " ++#~| "step." + #~ msgid "" +-#~ "Please complete items marked with this icon before continuing to the next " +-#~ "step" ++#~ "Please complete items marked with this icon before continuing to the next step" + #~ msgstr "Заполните отмеченные секции, прежде чем перейти к следующему шагу." + + #, fuzzy + #~| msgid "We won't touch your disks until you click 'Begin Installation'." + #~ msgid "We won't touch your disks until you click 'Begin installation'" + #~ msgstr "" +-#~ "Диски не подвергнутся изменениям до тех пор, пока вы не нажмете кнопку " +-#~ "начала установки." ++#~ "Диски не подвергнутся изменениям до тех пор, пока вы не нажмете кнопку начала " ++#~ "установки." + + #, fuzzy + #~| msgctxt "GUI|Date and Time" +@@ -8714,8 +8669,7 @@ msgstr "{}. {}" + #~ msgid "Done" + #~ msgstr "_Готово" + +-#~ msgid "" +-#~ "The %packages --ignorebroken feature is not supported on your product!" ++#~ msgid "The %packages --ignorebroken feature is not supported on your product!" + #~ msgstr "Функция %packages --ignorebroken не поддерживается вашим продуктом!" + + #~ msgctxt "GUI|Storage" +@@ -8726,21 +8680,20 @@ msgstr "{}. {}" + #~ msgstr "Обнаружено неподдерживаемое оборудование" + + #~ msgid "" +-#~ "Support for this hardware has been removed in this major OS release. " +-#~ "Please check the removed functionality section of the release notes." ++#~ "Support for this hardware has been removed in this major OS release. Please " ++#~ "check the removed functionality section of the release notes." + #~ msgstr "" +-#~ "Поддержка этого оборудования была удалена в этой основной версии ОС. " +-#~ "Проверьте раздел удаленных функциональных возможностей в примечаниях к " +-#~ "выпуску." ++#~ "Поддержка этого оборудования была удалена в этой основной версии ОС. Проверьте " ++#~ "раздел удаленных функциональных возможностей в примечаниях к выпуску." + + #~ 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-os." ++#~ "ru." + #~ msgstr "" +-#~ "Это аппаратное обеспечение (или их комбинация) не поддерживается Red Hat. " ++#~ "Это аппаратное обеспечение (или их комбинация) не поддерживается МСВСфера ОС. " + #~ "Для получения дополнительной информации о поддерживаемом оборудовании см. " +-#~ "http://www.redhat.com/hardware." ++#~ "https://msvsphere-os.ru." + + #~ msgctxt "GUI|Welcome|Unsupported Hardware Dialog" + #~ msgid "_Quit" +@@ -8917,28 +8870,27 @@ msgstr "{}. {}" + #~ msgstr "Это адрес пула серверов NTP" + + #~ msgid "Server supports Network Time Security (NTS) authentication" +-#~ msgstr "" +-#~ "Сервер поддерживает проверку подлинности Network Time Security (NTS)" ++#~ msgstr "Сервер поддерживает проверку подлинности Network Time Security (NTS)" + + #~ msgid "Use" + #~ msgstr "Выбрать" + + #~ msgid "" +-#~ "The root account is used for administering the system. Enter a password " +-#~ "for the root user." ++#~ "The root account is used for administering the system. Enter a password for " ++#~ "the root user." + #~ msgstr "" +-#~ "Учетная запись администратора (root) предназначена для управления " +-#~ "системой. Введите пароль root." ++#~ "Учетная запись администратора (root) предназначена для управления системой. " ++#~ "Введите пароль root." + + #~ msgid "The maximum size \"%s\" is invalid." + #~ msgstr "Недопустимый максимальный размер «%s»." + + #~ msgid "" +-#~ "NFS server must be specified as \"SERVER:/PATH\". Only one colon is " +-#~ "allowed in the url string." ++#~ "NFS server must be specified as \"SERVER:/PATH\". Only one colon is allowed in " ++#~ "the url string." + #~ msgstr "" +-#~ "Необходимо указать сервер NFS в виде «СЕРВЕР:/ПУТЬ». Только одно " +-#~ "двоеточие допустимо в строке адреса." ++#~ "Необходимо указать сервер NFS в виде «СЕРВЕР:/ПУТЬ». Только одно двоеточие " ++#~ "допустимо в строке адреса." + + #~ msgid "Would you like to ignore this and continue with installation?" + #~ msgstr "Хотите игнорировать это и продолжить установку?" +@@ -8954,8 +8906,8 @@ msgstr "{}. {}" + + #~ msgid "" + #~ "The pwpolicy command has been deprecated. It may be removed from future " +-#~ "releases, which will result in a fatal error when it is encountered. " +-#~ "Please modify your kickstart file to remove this command." ++#~ "releases, which will result in a fatal error when it is encountered. Please " ++#~ "modify your kickstart file to remove this command." + #~ msgstr "" + #~ "Команда pwpolicy устарела. Она может быть удалена из будущих версий, что " + #~ "приведет к неисправимой ошибке, если она будет встречена. Измените файл " +@@ -8998,63 +8950,61 @@ msgstr "{}. {}" + #~ msgstr "Настройка дополнения %s" + + #~ msgid "" +-#~ "The ISO image %s has a size which is not a multiple of 2048 bytes. This " +-#~ "may mean it was corrupted on transfer to this computer.\n" ++#~ "The ISO image %s has a size which is not a multiple of 2048 bytes. This may " ++#~ "mean it was corrupted on transfer to this computer.\n" + #~ "\n" + #~ "It is recommended that you exit and abort your installation, but you can " +-#~ "choose to continue if you think this is in error. Would you like to " +-#~ "continue using this image?" ++#~ "choose to continue if you think this is in error. Would you like to continue " ++#~ "using this image?" + #~ msgstr "" +-#~ "Размер ISO-образа %s не кратен 2048 байтам. Это может означать, что он " +-#~ "был поврежден при передаче на этот компьютер.\n" ++#~ "Размер ISO-образа %s не кратен 2048 байтам. Это может означать, что он был " ++#~ "поврежден при передаче на этот компьютер.\n" + #~ "\n" + #~ "Рекомендуется выйти из программы и прервать установку, но вы можете " +-#~ "продолжить, если считаете, что это не ошибка. Хотите продолжить, " +-#~ "используя этот образ?" ++#~ "продолжить, если считаете, что это не ошибка. Хотите продолжить, используя " ++#~ "этот образ?" + + #~ msgid "" +-#~ "The installer has tried to mount the installation image, but cannot find " +-#~ "it on the hard drive.\n" ++#~ "The installer has tried to mount the installation image, but cannot find it on " ++#~ "the hard drive.\n" + #~ "\n" + #~ "Should I try again to locate the image?" + #~ msgstr "" +-#~ "Программа установки попыталась смонтировать установочный образ, но не " +-#~ "удается найти его на жестком диске.\n" ++#~ "Программа установки попыталась смонтировать установочный образ, но не удается " ++#~ "найти его на жестком диске.\n" + #~ "\n" + #~ "Нужно ли еще раз попытаться найти этот образ?" + + #~ msgid "" +-#~ "The group '%s' is required for this installation. This group does not " +-#~ "exist. This is a fatal error and installation will be aborted." ++#~ "The group '%s' is required for this installation. This group does not exist. " ++#~ "This is a fatal error and installation will be aborted." + #~ msgstr "" +-#~ "Для установки требуется несуществующая группа «%s». Это неустранимая " +-#~ "ошибка, поэтому установка будет прервана." ++#~ "Для установки требуется несуществующая группа «%s». Это неустранимая ошибка, " ++#~ "поэтому установка будет прервана." + + #~ msgid "" +-#~ "You have specified that the group '%s' should be installed. This group " +-#~ "does not exist. Would you like to ignore this group and continue with " +-#~ "installation?" ++#~ "You have specified that the group '%s' should be installed. This group does " ++#~ "not exist. Would you like to ignore this group and continue with installation?" + #~ msgstr "" + #~ "Вы указали, что должна быть установлена группа «%s» . Эта группа не " + #~ "существует. Хотите пропустить эту группу и продолжить установку?" + + #~ msgid "" +-#~ "You have specified that the group '%s' should be excluded from " +-#~ "installation. This group does not exist. Would you like to ignore this " +-#~ "group and continue with installation?" ++#~ "You have specified that the group '%s' should be excluded from installation. " ++#~ "This group does not exist. Would you like to ignore this group and continue " ++#~ "with installation?" + #~ msgstr "" +-#~ "Вы указали, что группу «%s» следует исключить из установки. Эта группа " +-#~ "не существует. Пропустить эту группу и продолжить установку?" ++#~ "Вы указали, что группу «%s» следует исключить из установки. Эта группа не " ++#~ "существует. Пропустить эту группу и продолжить установку?" + + #~ msgid "" + #~ "Stream was not specified for a module without a default stream. This is a " +-#~ "fatal error and installation will be aborted. The details of this error " +-#~ "are:\n" ++#~ "fatal error and installation will be aborted. The details of this error are:\n" + #~ "\n" + #~ "%(exception)s" + #~ msgstr "" +-#~ "Не задан поток для модуля без потока по умолчанию. Это неустранимая " +-#~ "ошибка, и установка будет прервана. Подробные сведения об этой ошибке:\n" ++#~ "Не задан поток для модуля без потока по умолчанию. Это неустранимая ошибка, и " ++#~ "установка будет прервана. Подробные сведения об этой ошибке:\n" + #~ "\n" + #~ "%(exception)s" + +@@ -9090,13 +9040,13 @@ msgstr "{}. {}" + #~ msgstr "Проверка доступности..." + + #~ msgid "" +-#~ "This platform requires /boot on a dedicated partition or logical volume. " +-#~ "If you do not want a /boot volume, you must place / on a dedicated non-" +-#~ "LVM partition." ++#~ "This platform requires /boot on a dedicated partition or logical volume. If " ++#~ "you do not want a /boot volume, you must place / on a dedicated non-LVM " ++#~ "partition." + #~ msgstr "" +-#~ "Для этой платформы требуется, чтобы /boot размещался в выделенном " +-#~ "разделе или логическом томе. Если вам не нужен том /boot, вы должны " +-#~ "поместить / в выделенном не-LVM разделе." ++#~ "Для этой платформы требуется, чтобы /boot размещался в выделенном разделе или " ++#~ "логическом томе. Если вам не нужен том /boot, вы должны поместить / в " ++#~ "выделенном не-LVM разделе." + + #~ msgctxt "GUI|Custom Partitioning" + #~ msgid "_Reset All" +@@ -9114,8 +9064,7 @@ msgstr "{}. {}" + #~ msgid "Error setting up installation from HDD" + #~ msgstr "Ошибка настройки установки с жесткого диска" + +-#~ msgid "" +-#~ "The installation source is in use by the installer and cannot be changed." ++#~ msgid "The installation source is in use by the installer and cannot be changed." + #~ msgstr "" + #~ "Источник установки используется программой установки и его нельзя сменить." + +@@ -9126,8 +9075,7 @@ msgstr "{}. {}" + #~ "Tip: Keep your user name shorter than 32 characters and do not use " + #~ "spaces." + #~ msgstr "" +-#~ "Подсказка. Имя пользователя может содержать до 32 знаков без " +-#~ "пробелов." ++#~ "Подсказка. Имя пользователя может содержать до 32 знаков без пробелов." + + #~ msgid "" + #~ "Your root partition is less than %(size)s which is usually too small to " +@@ -9152,25 +9100,22 @@ msgstr "{}. {}" + #~ msgstr "Энтропию можно увеличить, если вводить символы с клавиатуры наугад" + + #~ msgid "" +-#~ "After %d minutes, the installation will continue regardless of the amount " +-#~ "of available entropy" ++#~ "After %d minutes, the installation will continue regardless of the amount of " ++#~ "available entropy" + #~ msgstr "" +-#~ "Через %d минут установка продолжится, независимо от величины имеющейся " +-#~ "энтропии" ++#~ "Через %d минут установка продолжится, независимо от величины имеющейся энтропии" + + #~ msgid "" +-#~ "Available entropy: %(av_entr)s, Required entropy: %(req_entr)s [%(pct)d %" +-#~ "%] (%(rem)d %(min)s remaining)" ++#~ "Available entropy: %(av_entr)s, Required entropy: %(req_entr)s [%(pct)d %%] " ++#~ "(%(rem)d %(min)s remaining)" + #~ msgstr "" +-#~ "Энтропии имеется: %(av_entr)s, энтропии требуется: %(req_entr)s [%(pct)d %" +-#~ "%] (%(rem)d %(min)s осталось)" ++#~ "Энтропии имеется: %(av_entr)s, энтропии требуется: %(req_entr)s [%(pct)d %%] " ++#~ "(%(rem)d %(min)s осталось)" + + #~ msgid "" +-#~ "Available entropy: %(av_entr)s, Required entropy: %(req_entr)s [%(pct)d %" +-#~ "%]" ++#~ "Available entropy: %(av_entr)s, Required entropy: %(req_entr)s [%(pct)d %%]" + #~ msgstr "" +-#~ "Энтропии имеется: %(av_entr)s, энтропии требуется: %(req_entr)s [%(pct)d %" +-#~ "%]" ++#~ "Энтропии имеется: %(av_entr)s, энтропии требуется: %(req_entr)s [%(pct)d %%]" + + #~ msgid "Enough entropy gathered, please stop typing." + #~ msgstr "Собрано достаточно энтропии, прекратите печатать." +@@ -9179,10 +9124,9 @@ msgstr "{}. {}" + #~ msgstr "Прекращаются попытки, %d мин. истекло." + + #~ msgid "" +-#~ "The system needs better quality of random data, you can improve it by " +-#~ "typing randomly on keyboard and moving your mouse. The installation will " +-#~ "continue automatically regardless of random data quality when time runs " +-#~ "out." ++#~ "The system needs better quality of random data, you can improve it by typing " ++#~ "randomly on keyboard and moving your mouse. The installation will continue " ++#~ "automatically regardless of random data quality when time runs out." + #~ msgstr "" + #~ "Системе требуются более качественные случайные данные, их можно улучшить, " + #~ "произвольно нажимая на кнопки клавиатуры и и двигая мышь. Установка " +@@ -9206,23 +9150,22 @@ msgstr "{}. {}" + #~ "Установка будет прервана." + + #~ msgid "" +-#~ "An error has occurred - no valid devices were found on which to create " +-#~ "new file systems. Please check your hardware for the cause of this " +-#~ "problem." ++#~ "An error has occurred - no valid devices were found on which to create new " ++#~ "file systems. Please check your hardware for the cause of this problem." + #~ msgstr "" +-#~ "Ошибка: не найдены устройства для создания новых файловых систем. " +-#~ "Проверьте оборудование для обнаружения вероятной причины." ++#~ "Ошибка: не найдены устройства для создания новых файловых систем. Проверьте " ++#~ "оборудование для обнаружения вероятной причины." + + #~ msgid "" +-#~ "Installation was stopped due to an error installing the boot loader. The " +-#~ "exact error message is:\n" ++#~ "Installation was stopped due to an error installing the boot loader. The exact " ++#~ "error message is:\n" + #~ "\n" + #~ "%s\n" + #~ "\n" + #~ "The installer will now terminate." + #~ msgstr "" +-#~ "Установка остановлена из-за ошибки во время установки загрузчика. " +-#~ "Сообщение об ошибке в точности:\n" ++#~ "Установка остановлена из-за ошибки во время установки загрузчика. Сообщение об " ++#~ "ошибке в точности:\n" + #~ "\n" + #~ "%s\n" + #~ "\n" +@@ -9256,14 +9199,14 @@ msgstr "{}. {}" + #~ msgstr "Недопустимое имя контейнера" + + #~ msgid "" +-#~ "%(count)d disk; %(size)s capacity; %(free)s free space " +-#~ "(unpartitioned and in file systems)" ++#~ "%(count)d disk; %(size)s capacity; %(free)s free space (unpartitioned " ++#~ "and in file systems)" + #~ msgid_plural "" +-#~ "%(count)d disks; %(size)s capacity; %(free)s free space " +-#~ "(unpartitioned and in file systems)" ++#~ "%(count)d disks; %(size)s capacity; %(free)s free space (unpartitioned " ++#~ "and in file systems)" + #~ msgstr[0] "" +-#~ "%(count)d диск; размер %(size)s; доступно %(free)s (не занято " +-#~ "разделами и файловыми системами) " ++#~ "%(count)d диск; размер %(size)s; доступно %(free)s (не занято разделами " ++#~ "и файловыми системами) " + #~ msgstr[1] "" + #~ "%(count)d диска; размер %(size)s; доступно %(free)s (не занято " + #~ "разделами и файловыми системами)" +-- +2.43.5 + diff --git a/SOURCES/0012-Enable-administrator-by-default.patch b/SOURCES/0012-Enable-administrator-by-default.patch new file mode 100644 index 0000000..84e1540 --- /dev/null +++ b/SOURCES/0012-Enable-administrator-by-default.patch @@ -0,0 +1,25 @@ +From f39bc62bdbf2fe663d53d19454b2c5c4f42b71b5 Mon Sep 17 00:00:00 2001 +From: tigro +Date: Wed, 3 Apr 2024 10:12:41 +0300 +Subject: [PATCH 12/15] Enable administrator by default + +--- + pyanaconda/ui/lib/users.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/pyanaconda/ui/lib/users.py b/pyanaconda/ui/lib/users.py +index 9475075..08d96db 100644 +--- a/pyanaconda/ui/lib/users.py ++++ b/pyanaconda/ui/lib/users.py +@@ -79,6 +79,8 @@ def get_user_list(users_module, add_default=False, add_if_not_empty=False): + # we only add default user to an empty list, to add default user to + # a populated list the add_if_not_empty option needs to be used + if not user_data_list or add_if_not_empty: ++ data = UserData() ++ data.set_admin_priviledges(True) + data = UserData() + data.set_admin_priviledges(True) + user_data_list.insert(0, data) +-- +2.43.5 + diff --git a/SOURCES/0013-Set-latarcyrheb-sun16-as-default-font-instead-of-eur.patch b/SOURCES/0013-Set-latarcyrheb-sun16-as-default-font-instead-of-eur.patch new file mode 100644 index 0000000..5166df0 --- /dev/null +++ b/SOURCES/0013-Set-latarcyrheb-sun16-as-default-font-instead-of-eur.patch @@ -0,0 +1,26 @@ +From 52378334637cfba5e35a38d1bb0e1476273709d2 Mon Sep 17 00:00:00 2001 +From: Sergey Cherevko +Date: Fri, 20 Dec 2024 00:19:31 +0300 +Subject: [PATCH 13/15] Set latarcyrheb-sun16 as default font instead of + eurlatgr + +--- + pyanaconda/core/constants.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyanaconda/core/constants.py b/pyanaconda/core/constants.py +index 9698270..23614af 100644 +--- a/pyanaconda/core/constants.py ++++ b/pyanaconda/core/constants.py +@@ -83,7 +83,7 @@ DEFAULT_LANG = "ru_RU.UTF-8" + # we use Russian by default for UI + DEFAULT_HELP_LANG = "en_US.UTF-8" + +-DEFAULT_VC_FONT = "eurlatgr" ++DEFAULT_VC_FONT = "latarcyrheb-sun16" + + DEFAULT_KEYBOARD = "us" + +-- +2.43.5 + diff --git a/SOURCES/0014-Implement-show-EULA-before-installation.patch b/SOURCES/0014-Implement-show-EULA-before-installation.patch new file mode 100644 index 0000000..c903e91 --- /dev/null +++ b/SOURCES/0014-Implement-show-EULA-before-installation.patch @@ -0,0 +1,528 @@ +From 3bf1f830f6f816b00cf3b3449cb94df744d9295a Mon Sep 17 00:00:00 2001 +From: Dmitry Samoylik +Date: Thu, 26 Sep 2024 16:57:48 +0300 +Subject: [PATCH 14/15] Implement show EULA before installation + +--- + data/anaconda.conf | 1 + + po/ru.po | 31 ++++++ + pyanaconda/core/configuration/eula.py | 23 ++++ + pyanaconda/core/configuration/license.py | 2 - + pyanaconda/ui/categories/eula.py | 14 +++ + pyanaconda/ui/gui/spokes/eula.glade | 136 +++++++++++++++++++++++ + pyanaconda/ui/gui/spokes/eula.py | 107 ++++++++++++++++++ + pyanaconda/ui/tui/spokes/eula.py | 128 +++++++++++++++++++++ + 8 files changed, 440 insertions(+), 2 deletions(-) + create mode 100644 pyanaconda/core/configuration/eula.py + create mode 100644 pyanaconda/ui/categories/eula.py + create mode 100644 pyanaconda/ui/gui/spokes/eula.glade + create mode 100644 pyanaconda/ui/gui/spokes/eula.py + create mode 100644 pyanaconda/ui/tui/spokes/eula.py + +diff --git a/data/anaconda.conf b/data/anaconda.conf +index 498601b..51d10e9 100644 +--- a/data/anaconda.conf ++++ b/data/anaconda.conf +@@ -314,6 +314,7 @@ show_kernel_options = True + # + # This is currently used just to show the path to the file to + # the user at the end of the installation. ++ + eula = + + +diff --git a/po/ru.po b/po/ru.po +index 70bd42b..46eaef4 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -7383,6 +7383,37 @@ msgstr "К системе прикреплено {} подписок" + msgid "{}. {}" + msgstr "{}. {}" + ++msgid "LICENSING" ++msgstr "ЛИЦЕНЗИРОВАНИЕ" ++ ++msgctxt "GUI|Spoke" ++msgid "_License Information" ++msgstr "О _лицензии" ++ ++msgid "License information" ++msgstr "О лицензии" ++ ++msgid "License Information" ++msgstr "О лицензии" ++ ++msgid "License accepted" ++msgstr "Лицензия принята" ++ ++msgid "License not accepted" ++msgstr "Лицензия не принята" ++ ++msgid "Read the License Agreement" ++msgstr "Прочитайте лицензионное соглашение" ++ ++msgid "I accept the license agreement" ++msgstr "Принимаю лицензионное соглашение" ++ ++msgid "I _accept the license agreement" ++msgstr "_Принимаю лицензионное соглашение" ++ ++msgid "License Agreement:" ++msgstr "Лицензионное соглашение:" ++ + #~ msgid "Btrfs file system is not supported." + #~ msgstr "Файловая система btrfs не поддерживается." + +diff --git a/pyanaconda/core/configuration/eula.py b/pyanaconda/core/configuration/eula.py +new file mode 100644 +index 0000000..15a393e +--- /dev/null ++++ b/pyanaconda/core/configuration/eula.py +@@ -0,0 +1,23 @@ ++import os ++from pyanaconda.core.configuration.anaconda import conf ++ ++def get_license_file_name(): ++ """Get filename of the license file best matching current localization settings. ++ :return: filename of the license file or None if no license file found ++ :rtype: str or None ++ """ ++ if not conf.license.eula: ++ return None ++ ++ if not os.path.exists(conf.license.eula): ++ return None ++ ++ return conf.license.eula ++ ++ ++def eula_available(): ++ """Report if it looks like there is an EULA available on the system. ++ :return: True if an EULA seems to be available, False otherwise ++ :rtype: bool ++ """ ++ return bool(get_license_file_name()) +diff --git a/pyanaconda/core/configuration/license.py b/pyanaconda/core/configuration/license.py +index 04c44bf..a51f52a 100644 +--- a/pyanaconda/core/configuration/license.py ++++ b/pyanaconda/core/configuration/license.py +@@ -31,7 +31,5 @@ class LicenseSection(Section): + tell the user about it fill in this variable by a path + pointing to a file with the EULA on the installed system. + +- This is currently used just to show the path to the file to +- the user at the end of the installation. + """ + return self._get_option("eula", str) +diff --git a/pyanaconda/ui/categories/eula.py b/pyanaconda/ui/categories/eula.py +new file mode 100644 +index 0000000..0a4fe96 +--- /dev/null ++++ b/pyanaconda/ui/categories/eula.py +@@ -0,0 +1,14 @@ ++from pyanaconda.ui.categories import SpokeCategory ++from pyanaconda.core.i18n import _ ++ ++__all__ = ["LicensingCategory"] ++ ++class LicensingCategory(SpokeCategory): ++ ++ @staticmethod ++ def get_title(): ++ return _("LICENSING") ++ ++ @staticmethod ++ def get_sort_order(): ++ return 900 +diff --git a/pyanaconda/ui/gui/spokes/eula.glade b/pyanaconda/ui/gui/spokes/eula.glade +new file mode 100644 +index 0000000..1d340f0 +--- /dev/null ++++ b/pyanaconda/ui/gui/spokes/eula.glade +@@ -0,0 +1,136 @@ ++ ++ ++ ++ ++ ++ The license will go here ++ ++ ++ False ++ True ++ True ++ License Information ++ ++ ++ ++ False ++ vertical ++ 6 ++ ++ ++ False ++ ++ ++ False ++ 6 ++ 6 ++ 6 ++ ++ ++ ++ ++ False ++ False ++ 0 ++ ++ ++ ++ ++ False ++ 0.8 ++ 0.8 ++ ++ ++ False ++ vertical ++ ++ ++ True ++ False ++ start ++ 24 ++ 6 ++ License Agreement: ++ ++ ++ False ++ True ++ 0 ++ ++ ++ ++ ++ True ++ False ++ True ++ True ++ vertical ++ ++ ++ True ++ True ++ in ++ ++ ++ True ++ True ++ 18 ++ True ++ True ++ natural ++ 12 ++ False ++ word ++ 12 ++ 12 ++ False ++ eulaBuffer ++ ++ ++ ++ ++ False ++ True ++ 0 ++ ++ ++ ++ ++ I _accept the license agreement ++ True ++ True ++ False ++ True ++ 0 ++ True ++ ++ ++ ++ False ++ True ++ 2 ++ ++ ++ ++ ++ False ++ True ++ 1 ++ ++ ++ ++ ++ ++ ++ True ++ True ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/pyanaconda/ui/gui/spokes/eula.py b/pyanaconda/ui/gui/spokes/eula.py +new file mode 100644 +index 0000000..a487c6b +--- /dev/null ++++ b/pyanaconda/ui/gui/spokes/eula.py +@@ -0,0 +1,107 @@ ++import logging ++ ++from pyanaconda.ui.common import FirstbootOnlySpokeMixIn ++from pyanaconda.ui.gui.spokes import NormalSpoke ++from pyanaconda.core.i18n import _, CN_ ++from pyanaconda.core import eula ++from pyanaconda.ui.categories.eula import LicensingCategory ++from pyanaconda.anaconda_loggers import get_module_logger ++from pykickstart.constants import FIRSTBOOT_RECONFIG ++ ++log = get_module_logger(__name__) ++__all__ = ["EULASpoke"] ++ ++ ++class EULASpoke(FirstbootOnlySpokeMixIn, NormalSpoke): ++ """The EULA spoke""" ++ ++ builderObjects = ["eulaBuffer", "eulaWindow"] ++ mainWidgetName = "eulaWindow" ++ uiFile = "spokes/eula.glade" ++ icon = "application-certificate-symbolic" ++ title = CN_("GUI|Spoke", "_License Information") ++ category = LicensingCategory ++ ++ @staticmethod ++ def get_screen_id(): ++ """Return a unique id of this UI screen.""" ++ return "license-information" ++ ++ def initialize(self): ++ log.debug("initializing the EULA spoke") ++ NormalSpoke.initialize(self) ++ ++ self._have_eula = True ++ self._eula_buffer = self.builder.get_object("eulaBuffer") ++ self._agree_check_button = self.builder.get_object("agreeCheckButton") ++ self._agree_label = self._agree_check_button.get_child() ++ self._agree_text = self._agree_label.get_text() ++ ++ log.debug("looking for the license file") ++ license_file = eula.get_license_file_name() ++ if not license_file: ++ log.error("no license found") ++ self._have_eula = False ++ self._eula_buffer.set_text(_("No license found")) ++ return ++ ++ # if there is "eula <...>" in kickstart, use its value ++ if self.data.eula.agreed is not None: ++ self._agree_check_button.set_active(self.data.eula.agreed) ++ ++ self._eula_buffer.set_text("") ++ itr = self._eula_buffer.get_iter_at_offset(0) ++ log.debug("opening the license file") ++ with open(license_file, "r") as fobj: ++ # insert the first line without prefixing with space ++ try: ++ first_line = next(fobj) ++ except StopIteration: ++ # nothing in the file ++ return ++ self._eula_buffer.insert(itr, first_line.strip()) ++ ++ # EULA file may be preformatted for the console, we want to let Gtk ++ # format it (blank lines should be preserved) ++ for line in fobj: ++ stripped_line = line.strip() ++ if stripped_line: ++ self._eula_buffer.insert(itr, " " + stripped_line) ++ else: ++ self._eula_buffer.insert(itr, "\n\n") ++ ++ def refresh(self): ++ self._agree_check_button.set_sensitive(self._have_eula) ++ self._agree_check_button.set_active(self.data.eula.agreed) ++ ++ def apply(self): ++ self.data.eula.agreed = self._agree_check_button.get_active() ++ ++ @property ++ def completed(self): ++ return not self._have_eula or self.data.eula.agreed ++ ++ @property ++ def status(self): ++ if not self._have_eula: ++ return _("No license found") ++ ++ return _("License accepted") if self.data.eula.agreed else _("License not accepted") ++ ++ @classmethod ++ def should_run(cls, environment, data): ++ if eula.eula_available(): ++ # don't run if we are in initial-setup in reconfig mode and the EULA has already been accepted ++ if FirstbootOnlySpokeMixIn.should_run(environment, data) and data and data.firstboot.firstboot == FIRSTBOOT_RECONFIG and data.eula.agreed: ++ log.debug("not running license spoke: reconfig mode & license already accepted") ++ return False ++ return True ++ return False ++ ++ def on_check_button_toggled(self, *args): ++ if self._agree_check_button.get_active(): ++ log.debug("license is now accepted") ++ self._agree_label.set_markup("%s" % self._agree_text) ++ else: ++ log.debug("license no longer accepted") ++ self._agree_label.set_markup(self._agree_text) +diff --git a/pyanaconda/ui/tui/spokes/eula.py b/pyanaconda/ui/tui/spokes/eula.py +new file mode 100644 +index 0000000..a3e8e62 +--- /dev/null ++++ b/pyanaconda/ui/tui/spokes/eula.py +@@ -0,0 +1,128 @@ ++import logging ++ ++from pyanaconda.ui.tui.spokes import NormalTUISpoke ++from simpleline.render.widgets import TextWidget, CheckboxWidget ++from simpleline.render.containers import ListRowContainer ++from simpleline.render.screen import UIScreen, InputState ++from simpleline.render.screen_handler import ScreenHandler ++from pyanaconda.ui.common import FirstbootOnlySpokeMixIn ++from pyanaconda.core import eula ++from pyanaconda.ui.categories.eula import LicensingCategory ++from pyanaconda.core.i18n import _, N_ ++from pykickstart.constants import FIRSTBOOT_RECONFIG ++ ++log = logging.getLogger("initial-setup") ++ ++__all__ = ["EULASpoke"] ++ ++ ++class EULASpoke(FirstbootOnlySpokeMixIn, NormalTUISpoke): ++ """The EULA spoke providing ways to read the license and agree/disagree with it.""" ++ ++ category = LicensingCategory ++ ++ @staticmethod ++ def get_screen_id(): ++ """Return a unique id of this UI screen.""" ++ return "license-information" ++ ++ def __init__(self, *args, **kwargs): ++ NormalTUISpoke.__init__(self, *args, **kwargs) ++ self.title = _("License information") ++ self._container = None ++ ++ def initialize(self): ++ NormalTUISpoke.initialize(self) ++ ++ def refresh(self, args=None): ++ NormalTUISpoke.refresh(self, args) ++ ++ self._container = ListRowContainer(1) ++ ++ log.debug("license found") ++ # make the options aligned to the same column (the checkbox has the ++ # '[ ]' prepended) ++ self._container.add(TextWidget("%s\n" % _("Read the License Agreement")), ++ self._show_license_screen_callback) ++ ++ self._container.add(CheckboxWidget(title=_("I accept the license agreement"), ++ completed=self.data.eula.agreed), ++ self._license_accepted_callback) ++ self.window.add_with_separator(self._container) ++ ++ @property ++ def completed(self): ++ # Either there is no EULA available, or user agrees/disagrees with it. ++ return self.data.eula.agreed ++ ++ @property ++ def mandatory(self): ++ # This spoke is always mandatory. ++ return True ++ ++ @property ++ def status(self): ++ return _("License accepted") if self.data.eula.agreed else _("License not accepted") ++ ++ @classmethod ++ def should_run(cls, environment, data): ++ if eula.eula_available(): ++ # don't run if we are in initial-setup in reconfig mode and the EULA has already been accepted ++ if FirstbootOnlySpokeMixIn.should_run(environment, data) and data and data.firstboot.firstboot == FIRSTBOOT_RECONFIG and data.eula.agreed: ++ log.debug("not running license spoke: reconfig mode & license already accepted") ++ return False ++ return True ++ return False ++ ++ def apply(self): ++ # nothing needed here, the agreed field is changed in the input method ++ pass ++ ++ def input(self, args, key): ++ if not self._container.process_user_input(key): ++ return key ++ ++ return InputState.PROCESSED ++ ++ @staticmethod ++ def _show_license_screen_callback(data): ++ # show license ++ log.debug("showing the license") ++ eula_screen = LicenseScreen() ++ ScreenHandler.push_screen(eula_screen) ++ ++ def _license_accepted_callback(self, data): ++ # toggle EULA agreed checkbox by changing ksdata ++ log.debug("license accepted state changed to: %s", self.data.eula.agreed) ++ self.data.eula.agreed = not self.data.eula.agreed ++ self.redraw() ++ ++ ++class LicenseScreen(UIScreen): ++ """Screen showing the License without any input from user requested.""" ++ ++ def __init__(self): ++ super().__init__() ++ ++ self._license_file = eula.get_license_file_name() ++ ++ def refresh(self, args=None): ++ super().refresh(args) ++ ++ # read the license file and make it one long string so that it can be ++ # processed by the TextWidget to fit in the screen in a best possible ++ # way ++ log.debug("reading the license file") ++ with open(self._license_file, 'r') as f: ++ license_text = f.read() ++ ++ self.window.add_with_separator(TextWidget(license_text)) ++ ++ def input(self, args, key): ++ """ Handle user input. """ ++ return InputState.PROCESSED_AND_CLOSE ++ ++ def prompt(self, args=None): ++ # we don't want to prompt user, just close the screen ++ self.close() ++ return None +-- +2.43.5 + diff --git a/SOURCES/0015-Change-docs-site.patch b/SOURCES/0015-Change-docs-site.patch new file mode 100644 index 0000000..087fbfc --- /dev/null +++ b/SOURCES/0015-Change-docs-site.patch @@ -0,0 +1,34 @@ +From 74dacc06bd34591593b34add271f452a07d72b61 Mon Sep 17 00:00:00 2001 +From: tigro +Date: Tue, 22 Oct 2024 17:29:08 +0300 +Subject: [PATCH 15/15] Change docs site + +--- + pyanaconda/core/constants.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyanaconda/core/constants.py b/pyanaconda/core/constants.py +index 23614af..0e1156f 100644 +--- a/pyanaconda/core/constants.py ++++ b/pyanaconda/core/constants.py +@@ -168,7 +168,7 @@ WARNING_SMT_ENABLED_GUI = N_( + "improvements for certain workloads, but introduces several publicly " + "disclosed security issues. You have the option of disabling SMT, which " + "may impact performance. If you choose to leave SMT enabled, please read " +- "https://red.ht/rhel-smt to understand your potential risks and learn " ++ "https://docs.msvsphere-os.ru/knowledge-base/security/smt.html to understand your potential risks and learn " + "about other ways to mitigate these risks." + ) + +@@ -177,7 +177,7 @@ WARNING_SMT_ENABLED_TUI = N_( + "Simultaneous Multithreading (SMT) may improve performance for certain " + "workloads, but introduces several publicly disclosed security issues. " + "You can disable SMT, which may impact performance. Please read " +- "https://red.ht/rhel-smt to understand potential risks and learn about " ++ "https://docs.msvsphere-os.ru/knowledge-base/security/smt.html to understand potential risks and learn about " + "ways to mitigate these risks." + ) + +-- +2.43.5 + diff --git a/SOURCES/anaconda-ru.mo b/SOURCES/anaconda-ru.mo new file mode 100644 index 0000000..ef92b6d Binary files /dev/null and b/SOURCES/anaconda-ru.mo differ diff --git a/SPECS/anaconda.spec b/SPECS/anaconda.spec index 03e0e8d..181db96 100644 --- a/SPECS/anaconda.spec +++ b/SPECS/anaconda.spec @@ -1,7 +1,7 @@ Summary: Graphical system installer Name: anaconda Version: 40.22.3.12 -Release: 1%{?dist} +Release: 1%{?dist}.inferit License: GPL-2.0-or-later URL: http://fedoraproject.org/wiki/Anaconda @@ -12,6 +12,23 @@ URL: http://fedoraproject.org/wiki/Anaconda # make dist Source0: https://github.com/rhinstaller/%{name}/releases/download/%{name}-%{version}/%{name}-%{version}.tar.bz2 +# MSVSphere patches +Patch1001: 0001-Disable-subscription.patch +Patch1002: 0002-Hide-CDN-source-button.patch +Patch1003: 0003-Set-MSVSphere-installer-colors.patch +Patch1004: 0004-Add-Minimal-and-Server-repository-support.patch +Patch1005: 0005-Set-default-timezone-to-Europe-Moscow.patch +Patch1006: 0006-Add-MSVSphere-product-config.patch +Patch1007: 0007-Set-Russian-language-as-default.patch +Patch1008: 0008-Replace-Fedora-references-and-update-translations.patch +Patch1009: 0009-Set-Russian-as-default-language-for-new-regions.patch +Patch1010: 0010-Set-English-as-fallback-language-for-help.patch +Patch1011: 0011-Add-MSVSphere-identification-support.patch +Patch1012: 0012-Enable-administrator-by-default.patch +Patch1013: 0013-Set-latarcyrheb-sun16-as-default-font-instead-of-eur.patch +Patch1014: 0014-Implement-show-EULA-before-installation.patch +Patch1015: 0015-Change-docs-site.patch + # Versions of required components (done so we make sure the buildrequires # match the requires versions of things). @@ -176,6 +193,8 @@ Requires: usermode Requires: zenity Requires: xisxwayland Recommends: xhost +# Avoid double licensing +Conflicts: initial-setup-gui %description live The anaconda-live package contains scripts, data and dependencies required @@ -351,6 +370,12 @@ runtime on NFS/HTTP/FTP servers or local disks. %prep %autosetup -p 1 +# de-branding +sed -e 's/RHEL/MSVSphere/g' -i po/*.po +sed -e 's/Fedora/MSVSphere/g' -i po/*.po +sed -e 's/Red Hat Enterprise Linux/MSVSphere/g' -i po/*.po +# Fix SMT url +sed -i 's@rhel-smt@knowledge-base/security/smt.html@g;s@red.ht@docs.msvsphere-os.ru@g' po/*.po %build # use actual build-time release number, not tarball creation time release number @@ -441,6 +466,11 @@ rm -rf \ %{_datadir}/applications/*.desktop %{_datadir}/anaconda/gnome %{_sysconfdir}/xdg/autostart/*.desktop +%{_datadir}/anaconda/ui/spokes/eula.* +%{python3_sitearch}/pyanaconda/ui/gui/spokes/eula.* +%{python3_sitearch}/pyanaconda/ui/gui/spokes/__pycache__/eula.* +%{python3_sitearch}/pyanaconda/ui/tui/spokes/eula.* +%{python3_sitearch}/pyanaconda/ui/tui/spokes/__pycache__/eula.* %endif @@ -453,6 +483,10 @@ rm -rf \ %exclude %{_datadir}/anaconda/ui/spokes/blivet_gui.* %exclude %{python3_sitearch}/pyanaconda/ui/gui/spokes/blivet_gui.* %endif +# Place eula to live only +%exclude %{_datadir}/anaconda/ui/spokes/eula.* +%exclude %{python3_sitearch}/pyanaconda/ui/gui/spokes/eula.* +%exclude %{python3_sitearch}/pyanaconda/ui/gui/spokes/__pycache__/eula.* %{_datadir}/anaconda/window-manager %{_datadir}/anaconda/anaconda-gtk.css %{_datadir}/anaconda/gtk-4.0/settings.ini @@ -461,6 +495,8 @@ rm -rf \ %{python3_sitearch}/pyanaconda/rescue.py %{python3_sitearch}/pyanaconda/__pycache__/rescue.* %{python3_sitearch}/pyanaconda/ui/tui/* +%exclude %{python3_sitearch}/pyanaconda/ui/tui/spokes/eula.* +%exclude %{python3_sitearch}/pyanaconda/ui/tui/spokes/__pycache__/eula.* %files widgets %{_libdir}/libAnacondaWidgets.so.* @@ -482,6 +518,9 @@ rm -rf \ %{_prefix}/libexec/anaconda/dd_* %changelog +* Thu Dec 19 2024 Sergey Cherevko - 40.22.3.12-1.inferit +- MSVSphere changes + * Tue Nov 26 2024 MSVSphere Packaging Team - 40.22.3.12-1 - Rebuilt for MSVSphere 10