diff --git a/0001-branding-patch.patch b/0001-branding-patch.patch new file mode 100644 index 0000000000000000000000000000000000000000..52f971918398b09213d77ef15a3668d76b8cf98c --- /dev/null +++ b/0001-branding-patch.patch @@ -0,0 +1,176 @@ +From 56fc0430a2ba6876c3e1362e004b5a650994b507 Mon Sep 17 00:00:00 2001 +From: Super User +Date: Fri, 8 Nov 2024 12:38:42 +0800 +Subject: [PATCH] =?UTF-8?q?branding=E6=96=87=E4=BB=B6=E5=A4=B9=E4=BB=A3?= + =?UTF-8?q?=E7=A0=81patch?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/branding/default/branding.desc | 40 ++++++++++++------------- + src/branding/default/show.qml | 48 ++++++++++++++++-------------- + 2 files changed, 45 insertions(+), 43 deletions(-) + +diff --git a/src/branding/default/branding.desc b/src/branding/default/branding.desc +index 729b958e8..9f0843385 100644 +--- a/src/branding/default/branding.desc ++++ b/src/branding/default/branding.desc +@@ -39,7 +39,7 @@ welcomeExpandingLogo: true + # - "normal" or unset, expand as needed, use *windowSize* + # - "fullscreen", start as large as possible, ignore *windowSize* + # - "noexpand", don't expand automatically, use *windowSize* +-windowExpanding: normal ++windowExpanding: noexpand + + # Size of Calamares window, expressed as w,h. Both w and h + # may be either pixels (suffix px) or font-units (suffix em). +@@ -48,7 +48,7 @@ windowExpanding: normal + # This setting is ignored if "fullscreen" is selected for + # *windowExpanding*, above. If not set, use constants defined + # in CalamaresUtilsGui, 800x520. +-windowSize: 800px,520px ++windowSize: 912px,600px + + # Placement of Calamares window. Either "center" or "free". + # Whether "center" actually works does depend on the window +@@ -123,16 +123,16 @@ navigation: widget + strings: + productName: "${NAME}" + shortProductName: Generic +- version: 2023.3 LTS +- shortVersion: 2023.3 +- versionedName: Fancy GNU/Linux 2023.3 LTS "Venomous Vole" +- shortVersionedName: FancyGL 2023.3 +- bootloaderEntryName: FancyGL +- productUrl: https://calamares.io/ +- supportUrl: https://github.com/calamares/calamares/wiki +- knownIssuesUrl: https://github.com/calamares/calamares/issues +- releaseNotesUrl: https://calamares.io/news/ +- donateUrl: https://kde.org/community/donations/index.php ++ version: 24.09 ++ shortVersion: 24.09 ++ versionedName: openEuler-24.09 ++ shortVersionedName: openEuler 24.09 ++ bootloaderEntryName: openEuler ++ productUrl: https://openeuler.org/ ++ supportUrl: null ++ knownIssuesUrl: https://gitee.com/organizations/openeuler/issues ++ releaseNotesUrl: null ++ donateUrl: null + + # These images are loaded from the branding module directory. + # +@@ -163,10 +163,10 @@ strings: + # These filenames can also use substitutions from os-release (see above). + images: + # productBanner: "banner.png" +- productIcon: "squid.png" +- productLogo: "squid.png" +- # productWallpaper: "wallpaper.png" +- productWelcome: "languages.png" ++ productIcon: "openEuler.png" ++ productLogo: "openEulerWord.png" ++ #productWallpaper: "welcomebg.png" ++ productWelcome: "Biglogo.svg" + + # Colors for text and background components. + # +@@ -180,10 +180,10 @@ images: + # branding component also ships a stylesheet.qss. Then they are + # the corresponding CSS attributes of #sidebarApp. + style: +- SidebarBackground: "#292F34" ++ SidebarBackground: "#0110B7" + SidebarText: "#FFFFFF" + SidebarTextCurrent: "#292F34" +- SidebarBackgroundCurrent: "#D35400" ++ SidebarBackgroundCurrent: "#FFFFFF" + + ### SLIDESHOW + # +@@ -234,6 +234,6 @@ slideshowAPI: 2 + # Please note that upload size may be slightly over the limit (due + # to last minute logging), so provide a suitable value. + uploadServer : +- type : "fiche" +- url : "http://termbin.com:9999" ++ type : "none" ++ url : + sizeLimit : -1 +diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml +index f4c50e629..f91d520cd 100644 +--- a/src/branding/default/show.qml ++++ b/src/branding/default/show.qml +@@ -22,43 +22,45 @@ Presentation + + Timer { + id: advanceTimer +- interval: 1000 ++ interval: 5000 + running: presentation.activatedInCalamares + repeat: true + onTriggered: nextSlide() + } + + Slide { +- ++ id: slide1 + Image { +- id: background +- source: "squid.png" +- width: 200; height: 200 ++ id: background1 ++ source: "Slide1.png" ++ width: 980; height: 980 + fillMode: Image.PreserveAspectFit +- anchors.centerIn: parent +- } +- Text { +- anchors.horizontalCenter: background.horizontalCenter +- anchors.top: background.bottom +- text: "This is a customizable QML slideshow.
"+ +- "Distributions should provide their own slideshow and list it in
"+ +- "their custom branding.desc file.
"+ +- "To create a Calamares presentation in QML, import calamares.slideshow,
"+ +- "define a Presentation element with as many Slide elements as needed." +- wrapMode: Text.WordWrap +- width: presentation.width +- horizontalAlignment: Text.Center ++ anchors.horizontalCenter:parent.horizontalCenter ++ y:parent.height / 2 - height / 2 -25 + } + } +- + Slide { +- centeredText: qsTr("This is a second Slide element.") ++ id: slide2 ++ Image { ++ id: background2 ++ source: "Slide2.png" ++ width: 980; height: 980 ++ fillMode: Image.PreserveAspectFit ++ anchors.horizontalCenter:parent.horizontalCenter ++ y:parent.height / 2 - height / 2 -25 ++ } + } +- + Slide { +- centeredText: qsTr("This is a third Slide element.") ++ id: slide3 ++ Image { ++ id: background3 ++ source: "Slide3.png" ++ width: 980; height: 980 ++ fillMode: Image.PreserveAspectFit ++ anchors.horizontalCenter:parent.horizontalCenter ++ y:parent.height / 2 - height / 2 -25 ++ } + } +- + // When this slideshow is loaded as a V1 slideshow, only + // activatedInCalamares is set, which starts the timer (see above). + // +-- +2.46.0 + diff --git a/0002-lang.patch b/0002-lang.patch new file mode 100644 index 0000000000000000000000000000000000000000..f63526c984570ac29e1a3aaf1eace0e264239459 --- /dev/null +++ b/0002-lang.patch @@ -0,0 +1,31662 @@ +From 18a137ef970bb3cb19227fb5f9a2aec5568fd962 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Thu, 7 Nov 2024 20:01:41 +0800 +Subject: [PATCH 1/2] =?UTF-8?q?=E7=BF=BB=E8=AF=91?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + lang/calamares_en_GB.ts | 8 +- + lang/calamares_en_US.ts | 5259 ++++++++++++++++++ + lang/calamares_zh_CN.ts | 6744 ++++++++++++----------- + lang/calamares_zh_HK.ts | 6722 +++++++++++----------- + lang/calamares_zh_TW.ts | 6739 +++++++++++----------- + lang/python/en_US/LC_MESSAGES/python.po | 399 ++ + 6 files changed, 15960 insertions(+), 9911 deletions(-) + create mode 100644 lang/calamares_en_US.ts + create mode 100644 lang/python/en_US/LC_MESSAGES/python.po + +diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts +index 0210077..5247c32 100644 +--- a/lang/calamares_en_GB.ts ++++ b/lang/calamares_en_GB.ts +@@ -739,8 +739,8 @@ The installer will quit and all changes will be lost. + + + +- <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. +- <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ <strong>Automatic partitioning</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ <strong>Automatic partitioning</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + +@@ -3012,8 +3012,8 @@ The installer will quit and all changes will be lost. + + + +- Use the same password for the administrator account. +- Use the same password for the administrator account. ++ Use the same password for the root account. ++ Use the same password for the root account. + + + +diff --git a/lang/calamares_en_US.ts b/lang/calamares_en_US.ts +new file mode 100644 +index 0000000..90f165b +--- /dev/null ++++ b/lang/calamares_en_US.ts +@@ -0,0 +1,5259 @@ ++ ++ ++ ++ ++ AboutData ++ ++ ++ <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> ++ ++ ++ ++ ++ Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://app.transifex.com/calamares/calamares/">Calamares translators team</a>. ++ ++ ++ ++ ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ Copyright year-year Name <email-address> ++ ++ ++ ++ ++ ActiveDirectoryJob ++ ++ ++ Enroll system in Active Directory ++ @label ++ ++ ++ ++ ++ Enrolling system in Active Directory… ++ @status ++ ++ ++ ++ ++ AutoMountManagementJob ++ ++ ++ Managing auto-mount settings… ++ @status ++ ++ ++ ++ ++ BootInfoWidget ++ ++ ++ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. ++ ++ ++ ++ ++ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. ++ ++ ++ ++ ++ This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. ++ ++ ++ ++ ++ BootLoaderModel ++ ++ ++ Master Boot Record of %1 ++ @info ++ ++ ++ ++ ++ Boot Partition ++ @info ++ ++ ++ ++ ++ System Partition ++ @info ++ ++ ++ ++ ++ Do not install a boot loader ++ @label ++ ++ ++ ++ ++ %1 (%2) ++ ++ ++ ++ ++ Calamares::BlankViewStep ++ ++ ++ Blank Page ++ ++ ++ ++ ++ Calamares::DebugWindow ++ ++ ++ GlobalStorage ++ ++ ++ ++ ++ JobQueue ++ ++ ++ ++ ++ Modules ++ ++ ++ ++ ++ Type: ++ ++ ++ ++ ++ ++ none ++ ++ ++ ++ ++ Interface: ++ ++ ++ ++ ++ Crashes Calamares, so that Dr. Konqi can look at it. ++ ++ ++ ++ ++ Reloads the stylesheet from the branding directory. ++ ++ ++ ++ ++ Reload Stylesheet ++ ++ ++ ++ ++ Displays the tree of widget names in the log (for stylesheet debugging). ++ ++ ++ ++ ++ Widget Tree ++ ++ ++ ++ ++ Uploads the session log to the configured pastebin. ++ ++ ++ ++ ++ Send Session Log ++ ++ ++ ++ ++ Debug Information ++ @title ++ ++ ++ ++ ++ Calamares::ExecutionViewStep ++ ++ ++ %p% ++ Progress percentage indicator: %p is where the number 0..100 is placed ++ ++ ++ ++ ++ Set Up ++ @label ++ ++ ++ ++ ++ Install ++ @label ++ ++ ++ ++ ++ Calamares::FailJob ++ ++ ++ Job failed (%1) ++ ++ ++ ++ ++ Programmed job failure was explicitly requested. ++ ++ ++ ++ ++ Calamares::JobThread ++ ++ ++ Done ++ ++ ++ ++ ++ Calamares::NamedJob ++ ++ ++ Example job (%1) ++ ++ ++ ++ ++ Calamares::ProcessJob ++ ++ ++ Running command %1 in target system… ++ @status ++ ++ ++ ++ ++ Running command %1… ++ @status ++ ++ ++ ++ ++ Calamares::Python::Job ++ ++ ++ Running %1 operation. ++ ++ ++ ++ ++ Bad working directory path ++ ++ ++ ++ ++ Working directory %1 for python job %2 is not readable. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Bad main script file ++ ++ ++ ++ ++ Main script file %1 for python job %2 is not readable. ++ ++ ++ ++ ++ Bad internal script ++ ++ ++ ++ ++ Internal script for python job %1 raised an exception. ++ ++ ++ ++ ++ Main script file %1 for python job %2 could not be loaded because it raised an exception. ++ ++ ++ ++ ++ Main script file %1 for python job %2 raised an exception. ++ ++ ++ ++ ++ ++ Main script file %1 for python job %2 returned invalid results. ++ ++ ++ ++ ++ Main script file %1 for python job %2 does not contain a run() function. ++ ++ ++ ++ ++ Calamares::PythonJob ++ ++ ++ Running %1 operation… ++ @status ++ ++ ++ ++ ++ Bad working directory path ++ @error ++ ++ ++ ++ ++ Working directory %1 for python job %2 is not readable. ++ @error ++ ++ ++ ++ ++ Bad main script file ++ @error ++ ++ ++ ++ ++ Main script file %1 for python job %2 is not readable. ++ @error ++ ++ ++ ++ ++ Boost.Python error in job "%1" ++ @error ++ ++ ++ ++ ++ Calamares::QmlViewStep ++ ++ ++ Loading… ++ @status ++ ++ ++ ++ ++ QML step <i>%1</i>. ++ @label ++ ++ ++ ++ ++ Loading failed. ++ @info ++ ++ ++ ++ ++ Calamares::RequirementsChecker ++ ++ ++ Requirements checking for module '%1' is complete. ++ @info ++ ++ ++ ++ ++ Waiting for %n module(s)… ++ @status ++ ++ ++ ++ ++ ++ ++ ++ (%n second(s)) ++ @status ++ ++ ++ ++ ++ ++ ++ ++ System-requirements checking is complete. ++ @info ++ ++ ++ ++ ++ Calamares::ViewManager ++ ++ ++ The upload was unsuccessful. No web-paste was done. ++ ++ ++ ++ ++ Install log posted to ++ ++%1 ++ ++Link copied to clipboard ++ ++ ++ ++ ++ Install Log Paste URL ++ ++ ++ ++ ++ &Yes ++ ++ ++ ++ ++ &No ++ ++ ++ ++ ++ &Close ++ ++ ++ ++ ++ Setup Failed ++ @title ++ ++ ++ ++ ++ Installation Failed ++ @title ++ ++ ++ ++ ++ Error ++ @title ++ ++ ++ ++ ++ Calamares Initialization Failed ++ @title ++ ++ ++ ++ ++ %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. ++ @info ++ ++ ++ ++ ++ <br/>The following modules could not be loaded: ++ @info ++ ++ ++ ++ ++ Continue with Setup? ++ @title ++ ++ ++ ++ ++ Continue with Installation? ++ @title ++ ++ ++ ++ ++ The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ ++ ++ ++ ++ The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ ++ ++ ++ ++ &Set Up Now ++ @button ++ ++ ++ ++ ++ &Install Now ++ @button ++ ++ ++ ++ ++ Go &Back ++ @button ++ ++ ++ ++ ++ &Set Up ++ @button ++ ++ ++ ++ ++ &Install ++ @button ++ ++ ++ ++ ++ Setup is complete. Close the setup program. ++ @tooltip ++ ++ ++ ++ ++ The installation is complete. Close the installer. ++ @tooltip ++ ++ ++ ++ ++ Cancel the setup process without changing the system. ++ @tooltip ++ ++ ++ ++ ++ Cancel the installation process without changing the system. ++ @tooltip ++ ++ ++ ++ ++ &Next ++ @button ++ ++ ++ ++ ++ &Back ++ @button ++ ++ ++ ++ ++ &Done ++ @button ++ ++ ++ ++ ++ &Cancel ++ @button ++ ++ ++ ++ ++ Cancel Setup? ++ @title ++ ++ ++ ++ ++ Cancel Installation? ++ @title ++ ++ ++ ++ ++ Do you really want to cancel the current setup process? ++The setup program will quit and all changes will be lost. ++ ++ ++ ++ ++ Do you really want to cancel the current install process? ++The installer will quit and all changes will be lost. ++ ++ ++ ++ ++ CalamaresPython::Helper ++ ++ ++ Unknown exception type ++ @error ++ ++ ++ ++ ++ Unparseable Python error ++ @error ++ ++ ++ ++ ++ Unparseable Python traceback ++ @error ++ ++ ++ ++ ++ Unfetchable Python error ++ @error ++ ++ ++ ++ ++ CalamaresWindow ++ ++ ++ %1 Setup Program ++ ++ ++ ++ ++ %1 Installer ++ ++ ++ ++ ++ ChangeFilesystemLabelJob ++ ++ ++ Set filesystem label on %1 ++ @title ++ ++ ++ ++ ++ Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> ++ @info ++ ++ ++ ++ ++ Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… ++ @status ++ ++ ++ ++ ++ ++ The installer failed to update partition table on disk '%1'. ++ @info ++ ++ ++ ++ ++ CheckerContainer ++ ++ ++ Gathering system information... ++ ++ ++ ++ ++ ChoicePage ++ ++ ++ Select storage de&vice: ++ @label ++ ++ ++ ++ ++ ++ ++ ++ Current: ++ @label ++ ++ ++ ++ ++ After: ++ @label ++ ++ ++ ++ ++ Reuse %1 as home partition for %2 ++ @label ++ ++ ++ ++ ++ <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> ++ ++ ++ ++ ++ %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. ++ @info, %1 is partition name, %4 is product name ++ ++ ++ ++ ++ <strong>Select a partition to install on</strong> ++ @label ++ ++ ++ ++ ++ An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ++ @info, %1 is product name ++ ++ ++ ++ ++ The EFI system partition at %1 will be used for starting %2. ++ @info, %1 is partition path, %2 is product name ++ ++ ++ ++ ++ EFI system partition: ++ @label ++ ++ ++ ++ ++ This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ ++ ++ ++ ++ ++ ++ ++ <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ ++ ++ ++ ++ ++ ++ ++ <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. ++ ++ ++ ++ ++ ++ ++ ++ <strong>Replace a partition</strong><br/>Replaces a partition with %1. ++ ++ ++ ++ ++ This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ ++ ++ ++ ++ This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ ++ ++ ++ ++ This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ ++ ++ ++ ++ This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> ++ ++ ++ ++ ++ This storage device has one of its partitions <strong>mounted</strong>. ++ @info ++ ++ ++ ++ ++ This storage device is a part of an <strong>inactive RAID</strong> device. ++ @info ++ ++ ++ ++ ++ No swap ++ @label ++ ++ ++ ++ ++ Reuse swap ++ @label ++ ++ ++ ++ ++ Swap (no Hibernate) ++ @label ++ ++ ++ ++ ++ Swap (with Hibernate) ++ @label ++ ++ ++ ++ ++ Swap to file ++ @label ++ ++ ++ ++ ++ <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. ++ ++ ++ ++ ++ Bootloader location: ++ @label ++ ++ ++ ++ ++ ClearMountsJob ++ ++ ++ Successfully unmounted %1. ++ ++ ++ ++ ++ Successfully disabled swap %1. ++ ++ ++ ++ ++ Successfully cleared swap %1. ++ ++ ++ ++ ++ Successfully closed mapper device %1. ++ ++ ++ ++ ++ Successfully disabled volume group %1. ++ ++ ++ ++ ++ Clear mounts for partitioning operations on %1 ++ @title ++ ++ ++ ++ ++ Clearing mounts for partitioning operations on %1… ++ @status ++ ++ ++ ++ ++ Cleared all mounts for %1 ++ ++ ++ ++ ++ ClearTempMountsJob ++ ++ ++ ++ Clearing all temporary mounts… ++ @status ++ ++ ++ ++ ++ Cleared all temporary mounts. ++ ++ ++ ++ ++ CommandList ++ ++ ++ Could not run command. ++ ++ ++ ++ ++ The commands use variables that are not defined. Missing variables are: %1. ++ ++ ++ ++ ++ Config ++ ++ ++ Setup Failed ++ @title ++ ++ ++ ++ ++ Installation Failed ++ @title ++ ++ ++ ++ ++ The setup of %1 did not complete successfully. ++ @info ++ ++ ++ ++ ++ The installation of %1 did not complete successfully. ++ @info ++ ++ ++ ++ ++ Setup Complete ++ @title ++ ++ ++ ++ ++ Installation Complete ++ @title ++ ++ ++ ++ ++ The setup of %1 is complete. ++ @info ++ ++ ++ ++ ++ The installation of %1 is complete. ++ @info ++ ++ ++ ++ ++ Keyboard model has been set to %1<br/>. ++ @label, %1 is keyboard model, as in Apple Magic Keyboard ++ ++ ++ ++ ++ Keyboard layout has been set to %1/%2. ++ @label, %1 is layout, %2 is layout variant ++ ++ ++ ++ ++ Set timezone to %1/%2 ++ @action ++ ++ ++ ++ ++ The system language will be set to %1. ++ @info ++ ++ ++ ++ ++ The numbers and dates locale will be set to %1. ++ @info ++ ++ ++ ++ ++ Network Installation. (Disabled: Incorrect configuration) ++ ++ ++ ++ ++ Network Installation. (Disabled: Received invalid groups data) ++ ++ ++ ++ ++ Network Installation. (Disabled: Internal error) ++ ++ ++ ++ ++ Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ++ ++ ++ ++ ++ Network Installation. (Disabled: No package list) ++ ++ ++ ++ ++ Package selection ++ ++ ++ ++ ++ Package Selection ++ ++ ++ ++ ++ Please pick a product from the list. The selected product will be installed. ++ ++ ++ ++ ++ Packages ++ ++ ++ ++ ++ Install option: <strong>%1</strong> ++ ++ ++ ++ ++ None ++ ++ ++ ++ ++ Summary ++ @label ++ ++ ++ ++ ++ This is an overview of what will happen once you start the setup procedure. ++ ++ ++ ++ ++ This is an overview of what will happen once you start the install procedure. ++ ++ ++ ++ ++ Your username is too long. ++ ++ ++ ++ ++ Your username must start with a lowercase letter or underscore. ++ ++ ++ ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ ++ ++ ++ ++ '%1' is not allowed as username. ++ ++ ++ ++ ++ Your hostname is too short. ++ ++ ++ ++ ++ Your hostname is too long. ++ ++ ++ ++ ++ '%1' is not allowed as hostname. ++ ++ ++ ++ ++ Only letters, numbers, underscore and hyphen are allowed. ++ ++ ++ ++ ++ Your passwords do not match! ++ ++ ++ ++ ++ OK! ++ ++ ++ ++ ++ This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. ++ ++ ++ ++ ++ This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. ++ ++ ++ ++ ++ This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. ++ ++ ++ ++ ++ This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. ++ ++ ++ ++ ++ This program will ask you some questions and set up %2 on your computer. ++ ++ ++ ++ ++ <h1>Welcome to the Calamares setup program for %1</h1> ++ ++ ++ ++ ++ <h1>Welcome to %1 setup</h1> ++ ++ ++ ++ ++ <h1>Welcome to the Calamares installer for %1</h1> ++ ++ ++ ++ ++ <h1>Welcome to the %1 installer</h1> ++ ++ ++ ++ ++ ContextualProcessJob ++ ++ ++ Performing contextual processes' job… ++ @status ++ ++ ++ ++ ++ CreatePartitionDialog ++ ++ ++ Create a Partition ++ ++ ++ ++ ++ Si&ze: ++ ++ ++ ++ ++ MiB ++ ++ ++ ++ ++ Partition &Type: ++ ++ ++ ++ ++ Primar&y ++ ++ ++ ++ ++ E&xtended ++ ++ ++ ++ ++ Fi&le System: ++ ++ ++ ++ ++ LVM LV name ++ ++ ++ ++ ++ &Mount Point: ++ ++ ++ ++ ++ Flags: ++ ++ ++ ++ ++ Label for the filesystem ++ ++ ++ ++ ++ FS Label: ++ ++ ++ ++ ++ En&crypt ++ @action ++ ++ ++ ++ ++ Logical ++ @label ++ ++ ++ ++ ++ Primary ++ @label ++ ++ ++ ++ ++ GPT ++ @label ++ ++ ++ ++ ++ Mountpoint already in use. Please select another one. ++ @info ++ ++ ++ ++ ++ Mountpoint must start with a <tt>/</tt>. ++ @info ++ ++ ++ ++ ++ CreatePartitionJob ++ ++ ++ Create new %1MiB partition on %3 (%2) with entries %4 ++ @title ++ ++ ++ ++ ++ Create new %1MiB partition on %3 (%2) ++ @title ++ ++ ++ ++ ++ Create new %2MiB partition on %4 (%3) with file system %1 ++ @title ++ ++ ++ ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> ++ @info ++ ++ ++ ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) ++ @info ++ ++ ++ ++ ++ Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> ++ @info ++ ++ ++ ++ ++ ++ Creating new %1 partition on %2… ++ @status ++ ++ ++ ++ ++ The installer failed to create partition on disk '%1'. ++ @info ++ ++ ++ ++ ++ CreatePartitionTableDialog ++ ++ ++ Create Partition Table ++ ++ ++ ++ ++ Creating a new partition table will delete all existing data on the disk. ++ ++ ++ ++ ++ What kind of partition table do you want to create? ++ ++ ++ ++ ++ Master Boot Record (MBR) ++ ++ ++ ++ ++ GUID Partition Table (GPT) ++ ++ ++ ++ ++ CreatePartitionTableJob ++ ++ ++ ++ Creating new %1 partition table on %2… ++ @status ++ ++ ++ ++ ++ Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… ++ @status ++ ++ ++ ++ ++ The installer failed to create a partition table on %1. ++ ++ ++ ++ ++ CreateUserJob ++ ++ ++ Create user %1 ++ ++ ++ ++ ++ Create user <strong>%1</strong> ++ ++ ++ ++ ++ ++ Creating user %1… ++ @status ++ ++ ++ ++ ++ Preserving home directory… ++ @status ++ ++ ++ ++ ++ Configuring user %1 ++ @status ++ ++ ++ ++ ++ Setting file permissions… ++ @status ++ ++ ++ ++ ++ CreateVolumeGroupDialog ++ ++ ++ Create Volume Group ++ @title ++ ++ ++ ++ ++ CreateVolumeGroupJob ++ ++ ++ ++ Creating new volume group named %1… ++ @status ++ ++ ++ ++ ++ Creating new volume group named <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ The installer failed to create a volume group named '%1'. ++ ++ ++ ++ ++ DeactivateVolumeGroupJob ++ ++ ++ ++ Deactivating volume group named %1… ++ @status ++ ++ ++ ++ ++ Deactivating volume group named <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ The installer failed to deactivate a volume group named %1. ++ ++ ++ ++ ++ DeletePartitionJob ++ ++ ++ ++ Deleting partition %1… ++ @status ++ ++ ++ ++ ++ Deleting partition <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ The installer failed to delete partition %1. ++ ++ ++ ++ ++ DeviceInfoWidget ++ ++ ++ <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. ++ ++ ++ ++ ++ <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. ++ ++ ++ ++ ++ This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. ++ ++ ++ ++ ++ This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. ++ ++ ++ ++ ++ This device has a <strong>%1</strong> partition table. ++ ++ ++ ++ ++ The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. ++ ++ ++ ++ ++ DeviceModel ++ ++ ++ %1 - %2 (%3) ++ device[name] - size[number] (device-node[name]) ++ ++ ++ ++ ++ %1 - (%2) ++ device[name] - (device-node[name]) ++ ++ ++ ++ ++ DracutLuksCfgJob ++ ++ ++ Writing LUKS configuration for Dracut to %1… ++ @status ++ ++ ++ ++ ++ Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted ++ @info ++ ++ ++ ++ ++ Failed to open %1 ++ @error ++ ++ ++ ++ ++ DummyCppJob ++ ++ ++ Performing dummy C++ job… ++ @status ++ ++ ++ ++ ++ EditExistingPartitionDialog ++ ++ ++ Edit Existing Partition ++ ++ ++ ++ ++ Con&tent: ++ ++ ++ ++ ++ &Keep ++ ++ ++ ++ ++ Format ++ ++ ++ ++ ++ Warning: Formatting the partition will erase all existing data. ++ ++ ++ ++ ++ &Mount Point: ++ ++ ++ ++ ++ Si&ze: ++ ++ ++ ++ ++ MiB ++ ++ ++ ++ ++ Fi&le System: ++ ++ ++ ++ ++ Flags: ++ ++ ++ ++ ++ Label for the filesystem ++ ++ ++ ++ ++ FS Label: ++ ++ ++ ++ ++ Passphrase for existing partition ++ ++ ++ ++ ++ Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. ++ ++ ++ ++ ++ EncryptWidget ++ ++ ++ En&crypt system ++ ++ ++ ++ ++ Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. ++ ++ ++ ++ ++ Passphrase ++ ++ ++ ++ ++ Confirm passphrase ++ ++ ++ ++ ++ ++ Please enter the same passphrase in both boxes. ++ @tooltip ++ ++ ++ ++ ++ Password must be a minimum of %1 characters. ++ @tooltip ++ ++ ++ ++ ++ ErrorDialog ++ ++ ++ Details: ++ ++ ++ ++ ++ Would you like to paste the install log to the web? ++ ++ ++ ++ ++ FillGlobalStorageJob ++ ++ ++ Set partition information ++ @title ++ ++ ++ ++ ++ Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> ++ @info ++ ++ ++ ++ ++ Install %1 on <strong>new</strong> %2 system partition ++ @info ++ ++ ++ ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> ++ @info ++ ++ ++ ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 ++ @info ++ ++ ++ ++ ++ Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> ++ @info ++ ++ ++ ++ ++ Install %2 on %3 system partition <strong>%1</strong> ++ @info ++ ++ ++ ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> ++ @info ++ ++ ++ ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… ++ @info ++ ++ ++ ++ ++ Install boot loader on <strong>%1</strong>… ++ @info ++ ++ ++ ++ ++ Setting up mount points… ++ @status ++ ++ ++ ++ ++ FinishedPage ++ ++ ++ &Restart now ++ ++ ++ ++ ++ <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. ++ @info ++ ++ ++ ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> ++ @tooltip ++ ++ ++ ++ ++ <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. ++ @info ++ ++ ++ ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> ++ @tooltip ++ ++ ++ ++ ++ <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ ++ ++ ++ ++ <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ ++ ++ ++ ++ FinishedQmlViewStep ++ ++ ++ Finish ++ @label ++ ++ ++ ++ ++ FinishedViewStep ++ ++ ++ Finish ++ @label ++ ++ ++ ++ ++ FormatPartitionJob ++ ++ ++ Format partition %1 (file system: %2, size: %3 MiB) on %4 ++ @title ++ ++ ++ ++ ++ Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> ++ @info ++ ++ ++ ++ ++ %1 (%2) ++ partition label %1 (device path %2) ++ ++ ++ ++ ++ Formatting partition %1 with file system %2… ++ @status ++ ++ ++ ++ ++ The installer failed to format partition %1 on disk '%2'. ++ ++ ++ ++ ++ GeneralRequirements ++ ++ ++ Please ensure the system has at least %1 GiB available drive space. ++ ++ ++ ++ ++ Available drive space is all of the hard disks and SSDs connected to the system. ++ ++ ++ ++ ++ There is not enough drive space. At least %1 GiB is required. ++ ++ ++ ++ ++ has at least %1 GiB working memory ++ ++ ++ ++ ++ The system does not have enough working memory. At least %1 GiB is required. ++ ++ ++ ++ ++ is plugged in to a power source ++ ++ ++ ++ ++ The system is not plugged in to a power source. ++ ++ ++ ++ ++ is connected to the Internet ++ ++ ++ ++ ++ The system is not connected to the Internet. ++ ++ ++ ++ ++ is running the installer as an administrator (root) ++ ++ ++ ++ ++ The setup program is not running with administrator rights. ++ ++ ++ ++ ++ The installer is not running with administrator rights. ++ ++ ++ ++ ++ has a screen large enough to show the whole installer ++ ++ ++ ++ ++ The screen is too small to display the setup program. ++ ++ ++ ++ ++ The screen is too small to display the installer. ++ ++ ++ ++ ++ is always false ++ ++ ++ ++ ++ The computer says no. ++ ++ ++ ++ ++ is always false (slowly) ++ ++ ++ ++ ++ The computer says no (slowly). ++ ++ ++ ++ ++ is always true ++ ++ ++ ++ ++ The computer says yes. ++ ++ ++ ++ ++ is always true (slowly) ++ ++ ++ ++ ++ The computer says yes (slowly). ++ ++ ++ ++ ++ is checked three times. ++ ++ ++ ++ ++ The snark has not been checked three times. ++ The (some mythological beast) has not been checked three times. ++ ++ ++ ++ ++ HostInfoJob ++ ++ ++ Collecting information about your machine… ++ @status ++ ++ ++ ++ ++ IDJob ++ ++ ++ ++ ++ ++ OEM Batch Identifier ++ ++ ++ ++ ++ Could not create directories <code>%1</code>. ++ ++ ++ ++ ++ Could not open file <code>%1</code>. ++ ++ ++ ++ ++ Could not write to file <code>%1</code>. ++ ++ ++ ++ ++ InitcpioJob ++ ++ ++ Creating initramfs with mkinitcpio… ++ @status ++ ++ ++ ++ ++ InitramfsJob ++ ++ ++ Creating initramfs… ++ @status ++ ++ ++ ++ ++ InteractiveTerminalPage ++ ++ ++ Konsole not installed. ++ @error ++ ++ ++ ++ ++ Please install KDE Konsole and try again! ++ @info ++ ++ ++ ++ ++ Executing script: &nbsp;<code>%1</code> ++ @info ++ ++ ++ ++ ++ InteractiveTerminalViewStep ++ ++ ++ Script ++ @label ++ ++ ++ ++ ++ KeyboardQmlViewStep ++ ++ ++ Keyboard ++ @label ++ ++ ++ ++ ++ KeyboardViewStep ++ ++ ++ Keyboard ++ @label ++ ++ ++ ++ ++ LCLocaleDialog ++ ++ ++ System Locale Setting ++ @title ++ ++ ++ ++ ++ The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. ++ @info ++ ++ ++ ++ ++ &Cancel ++ @button ++ ++ ++ ++ ++ &OK ++ @button ++ ++ ++ ++ ++ LOSHJob ++ ++ ++ Configuring encrypted swap. ++ ++ ++ ++ ++ No target system available. ++ ++ ++ ++ ++ No rootMountPoint is set. ++ ++ ++ ++ ++ No configFilePath is set. ++ ++ ++ ++ ++ LicensePage ++ ++ ++ <h1>License Agreement</h1> ++ ++ ++ ++ ++ I accept the terms and conditions above. ++ @info ++ ++ ++ ++ ++ Please review the End User License Agreements (EULAs). ++ @info ++ ++ ++ ++ ++ This setup procedure will install proprietary software that is subject to licensing terms. ++ @info ++ ++ ++ ++ ++ If you do not agree with the terms, the setup procedure cannot continue. ++ @info ++ ++ ++ ++ ++ This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. ++ @info ++ ++ ++ ++ ++ If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. ++ @info ++ ++ ++ ++ ++ LicenseViewStep ++ ++ ++ License ++ @label ++ ++ ++ ++ ++ LicenseWidget ++ ++ ++ URL: %1 ++ @label ++ ++ ++ ++ ++ <strong>%1 driver</strong><br/>by %2 ++ @label, %1 is product name, %2 is product vendor ++ %1 is an untranslatable product name, example: Creative Audigy driver ++ ++ ++ ++ ++ <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ %1 is usually a vendor name, example: Nvidia graphics driver ++ ++ ++ ++ ++ <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ ++ ++ ++ ++ <strong>%1 codec</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ ++ ++ ++ ++ <strong>%1 package</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ ++ ++ ++ ++ <strong>%1</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ ++ ++ ++ ++ File: %1 ++ @label ++ ++ ++ ++ ++ Hide the license text ++ @tooltip ++ ++ ++ ++ ++ Show the license text ++ @tooltip ++ ++ ++ ++ ++ Open the license agreement in browser ++ @tooltip ++ ++ ++ ++ ++ LocalePage ++ ++ ++ Region: ++ @label ++ ++ ++ ++ ++ Zone: ++ @label ++ ++ ++ ++ ++ ++ &Change… ++ @button ++ ++ ++ ++ ++ LocaleQmlViewStep ++ ++ ++ Location ++ @label ++ ++ ++ ++ ++ LocaleTests ++ ++ ++ Quit ++ ++ ++ ++ ++ LocaleViewStep ++ ++ ++ Location ++ @label ++ ++ ++ ++ ++ LuksBootKeyFileJob ++ ++ ++ Configuring LUKS key file. ++ ++ ++ ++ ++ ++ No partitions are defined. ++ ++ ++ ++ ++ ++ Encrypted rootfs setup error ++ ++ ++ ++ ++ Root partition %1 is LUKS but no passphrase has been set. ++ ++ ++ ++ ++ Could not create LUKS key file for root partition %1. ++ ++ ++ ++ ++ MachineIdJob ++ ++ ++ Generate machine-id. ++ ++ ++ ++ ++ Configuration Error ++ ++ ++ ++ ++ No root mount point is set for MachineId. ++ ++ ++ ++ ++ ++ ++ ++ File not found ++ ++ ++ ++ ++ Path <pre>%1</pre> must be an absolute path. ++ ++ ++ ++ ++ Could not create new random file <pre>%1</pre>. ++ ++ ++ ++ ++ Map ++ ++ ++ Timezone: %1 ++ @label ++ ++ ++ ++ ++ Please select your preferred location on the map so the installer can suggest the locale ++ and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging ++ to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. ++ @info ++ ++ ++ ++ ++ Map-qt6 ++ ++ ++ Timezone: %1 ++ @label ++ ++ ++ ++ ++ Please select your preferred location on the map so the installer can suggest the locale ++ and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging ++ to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. ++ @label ++ ++ ++ ++ ++ NetInstallViewStep ++ ++ ++ Package selection ++ ++ ++ ++ ++ Office software ++ ++ ++ ++ ++ Office package ++ ++ ++ ++ ++ Browser software ++ ++ ++ ++ ++ Browser package ++ ++ ++ ++ ++ Web browser ++ ++ ++ ++ ++ Kernel ++ label for netinstall module, Linux kernel ++ ++ ++ ++ ++ Services ++ label for netinstall module, system services ++ ++ ++ ++ ++ Login ++ label for netinstall module, choose login manager ++ ++ ++ ++ ++ Desktop ++ label for netinstall module, choose desktop environment ++ ++ ++ ++ ++ Applications ++ ++ ++ ++ ++ Communication ++ label for netinstall module ++ ++ ++ ++ ++ Development ++ label for netinstall module ++ ++ ++ ++ ++ Office ++ label for netinstall module ++ ++ ++ ++ ++ Multimedia ++ label for netinstall module ++ ++ ++ ++ ++ Internet ++ label for netinstall module ++ ++ ++ ++ ++ Theming ++ label for netinstall module ++ ++ ++ ++ ++ Gaming ++ label for netinstall module ++ ++ ++ ++ ++ Utilities ++ label for netinstall module ++ ++ ++ ++ ++ NotesQmlViewStep ++ ++ ++ Notes ++ ++ ++ ++ ++ OEMPage ++ ++ ++ Ba&tch: ++ ++ ++ ++ ++ <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> ++ ++ ++ ++ ++ <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> ++ ++ ++ ++ ++ OEMViewStep ++ ++ ++ OEM Configuration ++ ++ ++ ++ ++ Set the OEM Batch Identifier to <code>%1</code>. ++ ++ ++ ++ ++ Offline ++ ++ ++ Select your preferred region, or use the default settings ++ @label ++ ++ ++ ++ ++ ++ ++ Timezone: %1 ++ @label ++ ++ ++ ++ ++ Select your preferred zone within your region ++ @label ++ ++ ++ ++ ++ Zones ++ @button ++ ++ ++ ++ ++ You can fine-tune language and locale settings below ++ @label ++ ++ ++ ++ ++ Offline-qt6 ++ ++ ++ Select your preferred region, or use the default settings ++ @label ++ ++ ++ ++ ++ ++ ++ Timezone: %1 ++ @label ++ ++ ++ ++ ++ Select your preferred zone within your region ++ @label ++ ++ ++ ++ ++ Zones ++ @button ++ ++ ++ ++ ++ You can fine-tune language and locale settings below ++ @label ++ ++ ++ ++ ++ PWQ ++ ++ ++ Password is too short ++ ++ ++ ++ ++ Password is too long ++ ++ ++ ++ ++ Password is too weak ++ ++ ++ ++ ++ Memory allocation error when setting '%1' ++ ++ ++ ++ ++ Memory allocation error ++ ++ ++ ++ ++ The password is the same as the old one ++ ++ ++ ++ ++ The password is a palindrome ++ ++ ++ ++ ++ The password differs with case changes only ++ ++ ++ ++ ++ The password is too similar to the old one ++ ++ ++ ++ ++ The password contains the user name in some form ++ ++ ++ ++ ++ The password contains words from the real name of the user in some form ++ ++ ++ ++ ++ The password contains forbidden words in some form ++ ++ ++ ++ ++ The password contains fewer than %n digits ++ ++ ++ ++ ++ ++ ++ ++ The password contains too few digits ++ ++ ++ ++ ++ The password contains fewer than %n uppercase letters ++ ++ ++ ++ ++ ++ ++ ++ The password contains too few uppercase letters ++ ++ ++ ++ ++ The password contains fewer than %n lowercase letters ++ ++ ++ ++ ++ ++ ++ ++ The password contains too few lowercase letters ++ ++ ++ ++ ++ The password contains fewer than %n non-alphanumeric characters ++ ++ ++ ++ ++ ++ ++ ++ The password contains too few non-alphanumeric characters ++ ++ ++ ++ ++ The password is shorter than %n characters ++ ++ ++ ++ ++ ++ ++ ++ The password is too short ++ ++ ++ ++ ++ The password is a rotated version of the previous one ++ ++ ++ ++ ++ The password contains fewer than %n character classes ++ ++ ++ ++ ++ ++ ++ ++ The password does not contain enough character classes ++ ++ ++ ++ ++ The password contains more than %n same characters consecutively ++ ++ ++ ++ ++ ++ ++ ++ The password contains too many same characters consecutively ++ ++ ++ ++ ++ The password contains more than %n characters of the same class consecutively ++ ++ ++ ++ ++ ++ ++ ++ The password contains too many characters of the same class consecutively ++ ++ ++ ++ ++ The password contains monotonic sequence longer than %n characters ++ ++ ++ ++ ++ ++ ++ ++ The password contains too long of a monotonic character sequence ++ ++ ++ ++ ++ No password supplied ++ ++ ++ ++ ++ Cannot obtain random numbers from the RNG device ++ ++ ++ ++ ++ Password generation failed - required entropy too low for settings ++ ++ ++ ++ ++ The password fails the dictionary check - %1 ++ ++ ++ ++ ++ The password fails the dictionary check ++ ++ ++ ++ ++ Unknown setting - %1 ++ ++ ++ ++ ++ Unknown setting ++ ++ ++ ++ ++ Bad integer value of setting - %1 ++ ++ ++ ++ ++ Bad integer value ++ ++ ++ ++ ++ Setting %1 is not of integer type ++ ++ ++ ++ ++ Setting is not of integer type ++ ++ ++ ++ ++ Setting %1 is not of string type ++ ++ ++ ++ ++ Setting is not of string type ++ ++ ++ ++ ++ Opening the configuration file failed ++ ++ ++ ++ ++ The configuration file is malformed ++ ++ ++ ++ ++ Fatal failure ++ ++ ++ ++ ++ Unknown error ++ ++ ++ ++ ++ PackageChooserPage ++ ++ ++ Product Name ++ ++ ++ ++ ++ TextLabel ++ ++ ++ ++ ++ Long Product Description ++ ++ ++ ++ ++ Package Selection ++ ++ ++ ++ ++ Please pick a product from the list. The selected product will be installed. ++ ++ ++ ++ ++ PackageModel ++ ++ ++ Name ++ ++ ++ ++ ++ Description ++ ++ ++ ++ ++ Page_Keyboard ++ ++ ++ Keyboard model: ++ ++ ++ ++ ++ Type here to test your keyboard ++ ++ ++ ++ ++ Switch Keyboard: ++ shortcut for switching between keyboard layouts ++ ++ ++ ++ ++ Page_UserSetup ++ ++ ++ What is your name? ++ ++ ++ ++ ++ Your Full Name ++ ++ ++ ++ ++ What name do you want to use to log in? ++ ++ ++ ++ ++ login ++ ++ ++ ++ ++ What is the name of this computer? ++ ++ ++ ++ ++ <small>This name will be used if you make the computer visible to others on a network.</small> ++ ++ ++ ++ ++ Computer Name ++ ++ ++ ++ ++ Choose a password to keep your account safe. ++ ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ ++ ++ ++ ++ ++ Password ++ ++ ++ ++ ++ ++ Repeat Password ++ ++ ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ ++ ++ ++ ++ Require strong passwords. ++ ++ ++ ++ ++ Log in automatically without asking for the password. ++ ++ ++ ++ ++ Use the same password for the administrator account. ++ ++ ++ ++ ++ Choose a password for the administrator account. ++ ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ ++ ++ ++ ++ Use Active Directory ++ ++ ++ ++ ++ Domain: ++ ++ ++ ++ ++ Domain Administrator: ++ ++ ++ ++ ++ Password: ++ ++ ++ ++ ++ IP Address (optional): ++ ++ ++ ++ ++ PartitionLabelsView ++ ++ ++ Root ++ ++ ++ ++ ++ Home ++ @label ++ ++ ++ ++ ++ Boot ++ @label ++ ++ ++ ++ ++ EFI system ++ @label ++ ++ ++ ++ ++ Swap ++ @label ++ ++ ++ ++ ++ New partition for %1 ++ @label ++ ++ ++ ++ ++ New partition ++ @label ++ ++ ++ ++ ++ %1 %2 ++ size[number] filesystem[name] ++ ++ ++ ++ ++ PartitionModel ++ ++ ++ ++ Free Space ++ @title ++ ++ ++ ++ ++ ++ New Partition ++ @title ++ ++ ++ ++ ++ Name ++ @title ++ ++ ++ ++ ++ File System ++ @title ++ ++ ++ ++ ++ File System Label ++ @title ++ ++ ++ ++ ++ Mount Point ++ @title ++ ++ ++ ++ ++ Size ++ @title ++ ++ ++ ++ ++ PartitionPage ++ ++ ++ Storage de&vice: ++ ++ ++ ++ ++ &Revert All Changes ++ ++ ++ ++ ++ New Partition &Table ++ ++ ++ ++ ++ Cre&ate ++ ++ ++ ++ ++ &Edit ++ ++ ++ ++ ++ &Delete ++ ++ ++ ++ ++ New Volume Group ++ ++ ++ ++ ++ Resize Volume Group ++ ++ ++ ++ ++ Deactivate Volume Group ++ ++ ++ ++ ++ Remove Volume Group ++ ++ ++ ++ ++ I&nstall boot loader on: ++ ++ ++ ++ ++ Are you sure you want to create a new partition table on %1? ++ ++ ++ ++ ++ Can not create new partition ++ ++ ++ ++ ++ The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. ++ ++ ++ ++ ++ PartitionViewStep ++ ++ ++ Gathering system information… ++ @status ++ ++ ++ ++ ++ Partitions ++ @label ++ ++ ++ ++ ++ Install %1 <strong>alongside</strong> another operating system ++ @label ++ ++ ++ ++ ++ <strong>Erase</strong> disk and install %1 ++ @label ++ ++ ++ ++ ++ <strong>Replace</strong> a partition with %1 ++ @label ++ ++ ++ ++ ++ <strong>Manual</strong> partitioning ++ @label ++ ++ ++ ++ ++ Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) ++ @info ++ ++ ++ ++ ++ <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 ++ @info ++ ++ ++ ++ ++ <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 ++ @info ++ ++ ++ ++ ++ <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) ++ @info ++ ++ ++ ++ ++ Disk <strong>%1</strong> (%2) ++ @info ++ ++ ++ ++ ++ Unsafe partition actions are enabled. ++ ++ ++ ++ ++ Partitioning is configured to <b>always</b> fail. ++ ++ ++ ++ ++ No partitions will be changed. ++ ++ ++ ++ ++ Current: ++ @label ++ ++ ++ ++ ++ After: ++ @label ++ ++ ++ ++ ++ An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. ++ ++ ++ ++ ++ An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. ++ ++ ++ ++ ++ The filesystem must be mounted on <strong>%1</strong>. ++ ++ ++ ++ ++ The filesystem must have type FAT32. ++ ++ ++ ++ ++ The filesystem must have flag <strong>%1</strong> set. ++ ++ ++ ++ ++ ++ The filesystem must be at least %1 MiB in size. ++ ++ ++ ++ ++ The minimum recommended size for the filesystem is %1 MiB. ++ ++ ++ ++ ++ You can continue without setting up an EFI system partition but your system may fail to start. ++ ++ ++ ++ ++ You can continue with this EFI system partition configuration but your system may fail to start. ++ ++ ++ ++ ++ No EFI system partition configured ++ ++ ++ ++ ++ EFI system partition configured incorrectly ++ ++ ++ ++ ++ EFI system partition recommendation ++ ++ ++ ++ ++ Option to use GPT on BIOS ++ ++ ++ ++ ++ A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. ++ ++ ++ ++ ++ Boot partition not encrypted ++ ++ ++ ++ ++ A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ++ ++ ++ ++ ++ has at least one disk device available. ++ ++ ++ ++ ++ There are no partitions to install on. ++ ++ ++ ++ ++ PlasmaLnfJob ++ ++ ++ Applying Plasma Look-and-Feel… ++ @status ++ ++ ++ ++ ++ ++ Could not select KDE Plasma Look-and-Feel package ++ ++ ++ ++ ++ PlasmaLnfPage ++ ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ ++ ++ ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ ++ ++ ++ ++ PlasmaLnfViewStep ++ ++ ++ Look-and-Feel ++ @label ++ ++ ++ ++ ++ PowerManagementInterface ++ ++ ++ Calamares ++ ++ ++ ++ ++ Installation in progress ++ @status ++ ++ ++ ++ ++ PreserveFiles ++ ++ ++ Saving files for later… ++ @status ++ ++ ++ ++ ++ No files configured to save for later. ++ ++ ++ ++ ++ Not all of the configured files could be preserved. ++ ++ ++ ++ ++ ProcessResult ++ ++ ++ ++There was no output from the command. ++ ++ ++ ++ ++ ++Output: ++ ++ ++ ++ ++ ++ External command crashed. ++ ++ ++ ++ ++ Command <i>%1</i> crashed. ++ ++ ++ ++ ++ External command failed to start. ++ ++ ++ ++ ++ Command <i>%1</i> failed to start. ++ ++ ++ ++ ++ Internal error when starting command. ++ ++ ++ ++ ++ Bad parameters for process job call. ++ ++ ++ ++ ++ External command failed to finish. ++ ++ ++ ++ ++ Command <i>%1</i> failed to finish in %2 seconds. ++ ++ ++ ++ ++ External command finished with errors. ++ ++ ++ ++ ++ Command <i>%1</i> finished with exit code %2. ++ ++ ++ ++ ++ QObject ++ ++ ++ %1 (%2) ++ ++ ++ ++ ++ unknown ++ @partition info ++ ++ ++ ++ ++ extended ++ @partition info ++ ++ ++ ++ ++ unformatted ++ @partition info ++ ++ ++ ++ ++ swap ++ @partition info ++ ++ ++ ++ ++ ++ Default ++ ++ ++ ++ ++ Directory not found ++ ++ ++ ++ ++ Could not create new random file <pre>%1</pre>. ++ ++ ++ ++ ++ No product ++ ++ ++ ++ ++ No description provided. ++ ++ ++ ++ ++ (no mount point) ++ ++ ++ ++ ++ Unpartitioned space or unknown partition table ++ @info ++ ++ ++ ++ ++ Recommended ++ ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ Setup can continue, but some features might be disabled.</p> ++ ++ ++ ++ ++ RemoveUserJob ++ ++ ++ Removing live user from the target system… ++ @status ++ ++ ++ ++ ++ RemoveVolumeGroupJob ++ ++ ++ ++ Removing Volume Group named %1… ++ @status ++ ++ ++ ++ ++ Removing Volume Group named <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ The installer failed to remove a volume group named '%1'. ++ ++ ++ ++ ++ Requirements ++ ++ ++ <p>This computer does not satisfy the minimum requirements for installing %1.<br/> ++ Installation cannot continue.</p> ++ ++ ++ ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ Setup can continue, but some features might be disabled.</p> ++ ++ ++ ++ ++ ResizeFSJob ++ ++ ++ Performing file system resize… ++ @status ++ ++ ++ ++ ++ Invalid configuration ++ @error ++ ++ ++ ++ ++ The file-system resize job has an invalid configuration and will not run. ++ @error ++ ++ ++ ++ ++ KPMCore not available ++ @error ++ ++ ++ ++ ++ Calamares cannot start KPMCore for the file system resize job. ++ @error ++ ++ ++ ++ ++ Resize failed. ++ @error ++ ++ ++ ++ ++ The filesystem %1 could not be found in this system, and cannot be resized. ++ @info ++ ++ ++ ++ ++ The device %1 could not be found in this system, and cannot be resized. ++ @info ++ ++ ++ ++ ++ ++ ++ ++ Resize Failed ++ @error ++ ++ ++ ++ ++ ++ The filesystem %1 cannot be resized. ++ @error ++ ++ ++ ++ ++ ++ The device %1 cannot be resized. ++ @error ++ ++ ++ ++ ++ The file system %1 must be resized, but cannot. ++ @info ++ ++ ++ ++ ++ The device %1 must be resized, but cannot ++ @info ++ ++ ++ ++ ++ ResizePartitionJob ++ ++ ++ Resize partition %1 ++ @title ++ ++ ++ ++ ++ Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> ++ @info ++ ++ ++ ++ ++ Resizing %2MiB partition %1 to %3MiB… ++ @status ++ ++ ++ ++ ++ The installer failed to resize partition %1 on disk '%2'. ++ ++ ++ ++ ++ ResizeVolumeGroupDialog ++ ++ ++ Resize Volume Group ++ @title ++ ++ ++ ++ ++ ResizeVolumeGroupJob ++ ++ ++ Resize volume group named %1 from %2 to %3 ++ @title ++ ++ ++ ++ ++ Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> ++ @info ++ ++ ++ ++ ++ Resizing volume group named %1 from %2 to %3… ++ @status ++ ++ ++ ++ ++ The installer failed to resize a volume group named '%1'. ++ ++ ++ ++ ++ ResultsListWidget ++ ++ ++ Checking requirements again in a few seconds ... ++ ++ ++ ++ ++ ScanningDialog ++ ++ ++ Scanning storage devices… ++ @status ++ ++ ++ ++ ++ Partitioning… ++ @status ++ ++ ++ ++ ++ SetHostNameJob ++ ++ ++ Set hostname %1 ++ ++ ++ ++ ++ Set hostname <strong>%1</strong>. ++ ++ ++ ++ ++ Setting hostname %1… ++ @status ++ ++ ++ ++ ++ ++ Internal Error ++ ++ ++ ++ ++ ++ Cannot write hostname to target system ++ ++ ++ ++ ++ SetKeyboardLayoutJob ++ ++ ++ Setting keyboard model to %1, layout as %2-%3… ++ @status, %1 model, %2 layout, %3 variant ++ ++ ++ ++ ++ Failed to write keyboard configuration for the virtual console. ++ @error ++ ++ ++ ++ ++ Failed to write to %1 ++ @error, %1 is virtual console configuration path ++ ++ ++ ++ ++ Failed to write keyboard configuration for X11. ++ @error ++ ++ ++ ++ ++ Failed to write to %1 ++ @error, %1 is keyboard configuration path ++ ++ ++ ++ ++ Failed to write keyboard configuration to existing /etc/default directory. ++ @error ++ ++ ++ ++ ++ Failed to write to %1 ++ @error, %1 is default keyboard path ++ ++ ++ ++ ++ SetPartFlagsJob ++ ++ ++ Set flags on partition %1 ++ @title ++ ++ ++ ++ ++ Set flags on %1MiB %2 partition ++ @title ++ ++ ++ ++ ++ Set flags on new partition ++ @title ++ ++ ++ ++ ++ Clear flags on partition <strong>%1</strong> ++ @info ++ ++ ++ ++ ++ Clear flags on %1MiB <strong>%2</strong> partition ++ @info ++ ++ ++ ++ ++ Clear flags on new partition ++ @info ++ ++ ++ ++ ++ Set flags on partition <strong>%1</strong> to <strong>%2</strong> ++ @info ++ ++ ++ ++ ++ Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> ++ @info ++ ++ ++ ++ ++ Set flags on new partition to <strong>%1</strong> ++ @info ++ ++ ++ ++ ++ Clearing flags on partition <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ Clearing flags on %1MiB <strong>%2</strong> partition… ++ @status ++ ++ ++ ++ ++ Clearing flags on new partition… ++ @status ++ ++ ++ ++ ++ Setting flags <strong>%2</strong> on partition <strong>%1</strong>… ++ @status ++ ++ ++ ++ ++ Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… ++ @status ++ ++ ++ ++ ++ Setting flags <strong>%1</strong> on new partition… ++ @status ++ ++ ++ ++ ++ The installer failed to set flags on partition %1. ++ ++ ++ ++ ++ SetPasswordJob ++ ++ ++ Set password for user %1 ++ ++ ++ ++ ++ Setting password for user %1… ++ @status ++ ++ ++ ++ ++ Bad destination system path. ++ ++ ++ ++ ++ rootMountPoint is %1 ++ ++ ++ ++ ++ Cannot disable root account. ++ ++ ++ ++ ++ ++ usermod terminated with error code %1. ++ ++ ++ ++ ++ Cannot set password for user %1. ++ ++ ++ ++ ++ SetTimezoneJob ++ ++ ++ Setting timezone to %1/%2… ++ @status ++ ++ ++ ++ ++ Cannot access selected timezone path. ++ @error ++ ++ ++ ++ ++ Bad path: %1 ++ @error ++ ++ ++ ++ ++ ++ Cannot set timezone. ++ @error ++ ++ ++ ++ ++ Link creation failed, target: %1; link name: %2 ++ @info ++ ++ ++ ++ ++ Cannot open /etc/timezone for writing ++ @info ++ ++ ++ ++ ++ SetupGroupsJob ++ ++ ++ Preparing groups… ++ @status ++ ++ ++ ++ ++ ++ Could not create groups in target system ++ ++ ++ ++ ++ These groups are missing in the target system: %1 ++ ++ ++ ++ ++ SetupSudoJob ++ ++ ++ Configuring <pre>sudo</pre> users… ++ @status ++ ++ ++ ++ ++ Cannot chmod sudoers file. ++ ++ ++ ++ ++ Cannot create sudoers file for writing. ++ ++ ++ ++ ++ ShellProcessJob ++ ++ ++ Running shell processes… ++ @status ++ ++ ++ ++ ++ SlideCounter ++ ++ ++ ++ %L1 / %L2 ++ slide counter, %1 of %2 (numeric) ++ ++ ++ ++ ++ StandardButtons ++ ++ ++ &OK ++ ++ ++ ++ ++ &Yes ++ ++ ++ ++ ++ &No ++ ++ ++ ++ ++ &Cancel ++ ++ ++ ++ ++ &Close ++ ++ ++ ++ ++ TrackingInstallJob ++ ++ ++ Installation feedback ++ ++ ++ ++ ++ Sending installation feedback… ++ @status ++ ++ ++ ++ ++ Internal error in install-tracking. ++ ++ ++ ++ ++ HTTP request timed out. ++ ++ ++ ++ ++ TrackingKUserFeedbackJob ++ ++ ++ KDE user feedback ++ ++ ++ ++ ++ Configuring KDE user feedback… ++ @status ++ ++ ++ ++ ++ ++ Error in KDE user feedback configuration. ++ ++ ++ ++ ++ Could not configure KDE user feedback correctly, script error %1. ++ ++ ++ ++ ++ Could not configure KDE user feedback correctly, Calamares error %1. ++ ++ ++ ++ ++ TrackingMachineUpdateManagerJob ++ ++ ++ Machine feedback ++ ++ ++ ++ ++ Configuring machine feedback… ++ @status ++ ++ ++ ++ ++ ++ Error in machine feedback configuration. ++ ++ ++ ++ ++ Could not configure machine feedback correctly, script error %1. ++ ++ ++ ++ ++ Could not configure machine feedback correctly, Calamares error %1. ++ ++ ++ ++ ++ TrackingPage ++ ++ ++ Placeholder ++ ++ ++ ++ ++ <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> ++ ++ ++ ++ ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> ++ ++ ++ ++ ++ Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. ++ ++ ++ ++ ++ By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. ++ ++ ++ ++ ++ By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. ++ ++ ++ ++ ++ By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. ++ ++ ++ ++ ++ TrackingViewStep ++ ++ ++ Feedback ++ @title ++ ++ ++ ++ ++ UmountJob ++ ++ ++ Unmounting file systems… ++ @status ++ ++ ++ ++ ++ No target system available. ++ ++ ++ ++ ++ No rootMountPoint is set. ++ ++ ++ ++ ++ UsersPage ++ ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> ++ ++ ++ ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> ++ ++ ++ ++ ++ UsersQmlViewStep ++ ++ ++ Users ++ ++ ++ ++ ++ UsersViewStep ++ ++ ++ Users ++ ++ ++ ++ ++ VariantModel ++ ++ ++ Key ++ Column header for key/value ++ ++ ++ ++ ++ Value ++ Column header for key/value ++ ++ ++ ++ ++ VolumeGroupBaseDialog ++ ++ ++ Create Volume Group ++ ++ ++ ++ ++ List of Physical Volumes ++ ++ ++ ++ ++ Volume Group Name: ++ ++ ++ ++ ++ Volume Group Type: ++ ++ ++ ++ ++ Physical Extent Size: ++ ++ ++ ++ ++ MiB ++ ++ ++ ++ ++ Total Size: ++ ++ ++ ++ ++ Used Size: ++ ++ ++ ++ ++ Total Sectors: ++ ++ ++ ++ ++ Quantity of LVs: ++ ++ ++ ++ ++ WelcomePage ++ ++ ++ ++ Select application and system language ++ ++ ++ ++ ++ Open donations website ++ ++ ++ ++ ++ &Donate ++ ++ ++ ++ ++ Open help and support website ++ ++ ++ ++ ++ &Support ++ ++ ++ ++ ++ Open issues and bug-tracking website ++ ++ ++ ++ ++ &Known issues ++ ++ ++ ++ ++ Open release notes website ++ ++ ++ ++ ++ &Release notes ++ ++ ++ ++ ++ About %1 Setup ++ @title ++ ++ ++ ++ ++ About %1 Installer ++ @title ++ ++ ++ ++ ++ %1 Support ++ @action ++ ++ ++ ++ ++ WelcomeQmlViewStep ++ ++ ++ Welcome ++ @title ++ ++ ++ ++ ++ WelcomeViewStep ++ ++ ++ Welcome ++ @title ++ ++ ++ ++ ++ ZfsJob ++ ++ ++ Creating ZFS pools and datasets… ++ @status ++ ++ ++ ++ ++ Failed to create zpool on ++ ++ ++ ++ ++ Configuration Error ++ ++ ++ ++ ++ No partitions are available for ZFS. ++ ++ ++ ++ ++ Internal data missing ++ ++ ++ ++ ++ ++ Failed to create zpool ++ ++ ++ ++ ++ Failed to create dataset ++ ++ ++ ++ ++ The output was: ++ ++ ++ ++ ++ calamares-sidebar ++ ++ ++ About ++ ++ ++ ++ ++ Debug ++ ++ ++ ++ ++ About ++ @button ++ ++ ++ ++ ++ Show information about Calamares ++ @tooltip ++ ++ ++ ++ ++ Debug ++ @button ++ ++ ++ ++ ++ Show debug information ++ @tooltip ++ ++ ++ ++ ++ finishedq ++ ++ ++ Installation Completed ++ ++ ++ ++ ++ %1 has been installed on your computer.<br/> ++ You may now restart into your new system, or continue using the Live environment. ++ ++ ++ ++ ++ Close Installer ++ ++ ++ ++ ++ Restart System ++ ++ ++ ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ This log is copied to /var/log/installation.log of the target system.</p> ++ ++ ++ ++ ++ finishedq-qt6 ++ ++ ++ Installation Completed ++ @title ++ ++ ++ ++ ++ %1 has been installed on your computer.<br/> ++ You may now restart into your new system, or continue using the Live environment. ++ @info, %1 is the product name ++ ++ ++ ++ ++ Close Installer ++ @button ++ ++ ++ ++ ++ Restart System ++ @button ++ ++ ++ ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ This log is copied to /var/log/installation.log of the target system.</p> ++ @info ++ ++ ++ ++ ++ finishedq@mobile ++ ++ ++ Installation Completed ++ @title ++ ++ ++ ++ ++ %1 has been installed on your computer.<br/> ++ You may now restart your device. ++ @info, %1 is the product name ++ ++ ++ ++ ++ Close ++ @button ++ ++ ++ ++ ++ Restart ++ @button ++ ++ ++ ++ ++ keyboardq ++ ++ ++ Select a layout to activate keyboard preview ++ @label ++ ++ ++ ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ ++ ++ ++ ++ Layout ++ @label ++ ++ ++ ++ ++ Variant ++ @label ++ ++ ++ ++ ++ Type here to test your keyboard… ++ @label ++ ++ ++ ++ ++ keyboardq-qt6 ++ ++ ++ Select a layout to activate keyboard preview ++ @label ++ ++ ++ ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ ++ ++ ++ ++ Layout ++ @label ++ ++ ++ ++ ++ Variant ++ @label ++ ++ ++ ++ ++ Type here to test your keyboard… ++ @label ++ ++ ++ ++ ++ localeq ++ ++ ++ ++ Change ++ @button ++ ++ ++ ++ ++ <h3>Languages</h3> </br> ++ The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. ++ @info ++ ++ ++ ++ ++ <h3>Locales</h3> </br> ++ The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. ++ @info ++ ++ ++ ++ ++ localeq-qt6 ++ ++ ++ ++ Change ++ @button ++ ++ ++ ++ ++ <h3>Languages</h3> </br> ++ The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. ++ @info ++ ++ ++ ++ ++ <h3>Locales</h3> </br> ++ The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. ++ @info ++ ++ ++ ++ ++ notesqml ++ ++ ++ <h3>%1</h3> ++ <p>These are example release notes.</p> ++ ++ ++ ++ ++ packagechooserq ++ ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ Default option. ++ ++ ++ ++ ++ LibreOffice ++ ++ ++ ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ ++ ++ ++ ++ No Office Suite ++ ++ ++ ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ ++ ++ ++ ++ Minimal Install ++ ++ ++ ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ ++ ++ ++ ++ packagechooserq-qt6 ++ ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ Default option. ++ ++ ++ ++ ++ LibreOffice ++ ++ ++ ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ ++ ++ ++ ++ No Office Suite ++ ++ ++ ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ ++ ++ ++ ++ Minimal Install ++ ++ ++ ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ ++ ++ ++ ++ release_notes ++ ++ ++ ### %1 ++This an example QML file, showing options in Markdown with Flickable content. ++ ++QML with RichText can use HTML tags, with Markdown it uses the simple Markdown syntax, Flickable content is useful for touchscreens. ++ ++**This is bold text** ++ ++*This is italic text* ++ ++_This is underlined text_ ++ ++> blockquote ++ ++~~This is strikethrough~~ ++ ++Code example: ++``` ++ls -l /home ++``` ++ ++**Lists:** ++ * Intel CPU systems ++ * AMD CPU systems ++ ++The vertical scrollbar is adjustable, current width set to 10. ++ ++ ++ ++ ++ Back ++ ++ ++ ++ ++ usersq ++ ++ ++ Pick your user name and credentials to login and perform admin tasks ++ ++ ++ ++ ++ What is your name? ++ ++ ++ ++ ++ Your full name ++ ++ ++ ++ ++ What name do you want to use to log in? ++ ++ ++ ++ ++ Login name ++ ++ ++ ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ ++ ++ ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ ++ ++ ++ ++ root is not allowed as username. ++ ++ ++ ++ ++ What is the name of this computer? ++ ++ ++ ++ ++ Computer name ++ ++ ++ ++ ++ This name will be used if you make the computer visible to others on a network. ++ ++ ++ ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ ++ ++ ++ ++ localhost is not allowed as hostname. ++ ++ ++ ++ ++ Choose a password to keep your account safe. ++ ++ ++ ++ ++ Password ++ ++ ++ ++ ++ Repeat password ++ ++ ++ ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ ++ ++ ++ ++ Reuse user password as root password ++ ++ ++ ++ ++ Use the same password for the administrator account. ++ ++ ++ ++ ++ Choose a root password to keep your account safe. ++ ++ ++ ++ ++ Root password ++ ++ ++ ++ ++ Repeat root password ++ ++ ++ ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ ++ ++ ++ ++ Log in automatically without asking for the password ++ ++ ++ ++ ++ Validate passwords quality ++ ++ ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ ++ ++ ++ ++ usersq-qt6 ++ ++ ++ Pick your user name and credentials to login and perform admin tasks ++ ++ ++ ++ ++ What is your name? ++ ++ ++ ++ ++ Your full name ++ ++ ++ ++ ++ What name do you want to use to log in? ++ ++ ++ ++ ++ Login name ++ ++ ++ ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ ++ ++ ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ ++ ++ ++ ++ root is not allowed as username. ++ ++ ++ ++ ++ What is the name of this computer? ++ ++ ++ ++ ++ Computer name ++ ++ ++ ++ ++ This name will be used if you make the computer visible to others on a network. ++ ++ ++ ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ ++ ++ ++ ++ localhost is not allowed as hostname. ++ ++ ++ ++ ++ Choose a password to keep your account safe. ++ ++ ++ ++ ++ Password ++ ++ ++ ++ ++ Repeat password ++ ++ ++ ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ ++ ++ ++ ++ Reuse user password as root password ++ ++ ++ ++ ++ Use the same password for the administrator account. ++ ++ ++ ++ ++ Choose a root password to keep your account safe. ++ ++ ++ ++ ++ Root password ++ ++ ++ ++ ++ Repeat root password ++ ++ ++ ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ ++ ++ ++ ++ Log in automatically without asking for the password ++ ++ ++ ++ ++ Validate passwords quality ++ ++ ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ ++ ++ ++ ++ welcomeq ++ ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ <p>This program will ask you some questions and set up %1 on your computer.</p> ++ ++ ++ ++ ++ Support ++ ++ ++ ++ ++ Known Issues ++ ++ ++ ++ ++ Release Notes ++ ++ ++ ++ ++ Donate ++ ++ ++ ++ ++ welcomeq-qt6 ++ ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ <p>This program will ask you some questions and set up %1 on your computer.</p> ++ ++ ++ ++ ++ Support ++ ++ ++ ++ ++ Known Issues ++ ++ ++ ++ ++ Release Notes ++ ++ ++ ++ ++ Donate ++ ++ ++ ++ +diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts +index f16037b..75ffe95 100644 +--- a/lang/calamares_zh_CN.ts ++++ b/lang/calamares_zh_CN.ts +@@ -1,4875 +1,5008 @@ + + +- +- ++ ++ + AboutData + +- +- <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> +- <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> ++ ++ <br/><h2>Release:%1</h2><br/> ++ <br/><h1>发行版本:%1</h1><br/> + + +- +- Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://app.transifex.com/calamares/calamares/">Calamares translators team</a>. +- 感谢 <a href="https://calamares.io/team/">Calamares 团队</a> 以及 <a href="https://app.transifex.com/calamares/calamares/">Calamares 翻译团队</a>。 ++ ++ <strong>Thanks to the openEuler team.</strong> ++ <strong>感谢 openEuler 团队。</strong> + + +- +- <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. +- <a href="https://calamares.io/">Calamares</a> 的开发由 <br/> <a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 赞助。 ++ <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. ++ <a href="https://calamares.io/">Calamares</a> 的开发由 <br/> <a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 赞助。 + + +- +- Copyright %1-%2 %3 &lt;%4&gt;<br/> +- Copyright year-year Name <email-address> +- Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ Copyright year-year Name <email-address> ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> + +- +- ++ ++ ++ ActiveDirectoryJob ++ ++ ++ Enroll system in Active Directory ++ @label ++ ++ ++ ++ ++ Enrolling system in Active Directory… ++ @status ++ ++ ++ ++ + AutoMountManagementJob + +- +- Managing auto-mount settings… +- @status +- 管理自动挂载设置… ++ ++ Managing auto-mount settings… ++ @status ++ 管理自动挂载设置… + +- +- ++ ++ + BootInfoWidget + +- +- The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. +- 这个系统的<strong>引导环境</strong>。<br><br>较旧的 x86 系统只支持 <strong>BIOS</strong>。<br>现代的系统则通常使用 <strong>EFI</strong>,但若引导时使用了兼容模式,也可以变为 BIOS。 ++ ++ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. ++ 这个系统的<strong>引导环境</strong>。<br><br>较旧的 x86 系统只支持 <strong>BIOS</strong>。<br>现代的系统则通常使用 <strong>EFI</strong>,但若引导时使用了兼容模式,也可以变为 BIOS。 + + +- +- This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. +- 此系统从 <strong>EFI</strong> 引导环境启动。<br><br>若要配置EFI环境的启动项,本安装器必须在<strong>EFI系统分区</strong>中安装一个引导程序, 例如 <strong>GRUB</strong>或 <strong>systemd-boot</strong> 。这个过程是自动的,但若你选择手动分区,那你将必须手动选择或者创建。 ++ ++ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. ++ 此系统从 <strong>EFI</strong> 引导环境启动。<br><br>若要配置EFI环境的启动项,本安装器必须在<strong>EFI系统分区</strong>中安装一个引导程序, 例如 <strong>GRUB</strong>或 <strong>systemd-boot</strong> 。这个过程是自动的,但若你选择手动分区,那你将必须手动选择或者创建。 + + +- +- This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. +- 这个系统从 <strong>BIOS</strong> 引导环境启动。<br><br> ++ ++ This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. ++ 这个系统从 <strong>BIOS</strong> 引导环境启动。<br><br> + 要从 BIOS 环境引导,本安装程序必须安装引导器(如 <strong>GRUB</strong>),一般而言要么安装在分区的开头,要么就是在靠进分区表开头的 <strong>主引导记录</strong>(推荐)中。这个步骤是自动的,除非您选择手动分区——此时您必须自行配置。 + +- +- ++ ++ + BootLoaderModel + +- +- Master Boot Record of %1 +- @info +- 主引导记录 %1 ++ ++ Master Boot Record of %1 ++ @info ++ 主引导记录 %1 + + +- +- Boot Partition +- @info +- 引导分区 ++ ++ Boot Partition ++ @info ++ 引导分区 + + +- +- System Partition +- @info +- 系统分区 ++ ++ System Partition ++ @info ++ 系统分区 + + +- +- Do not install a boot loader +- @label +- 不要安装引导程序 ++ ++ Do not install a boot loader ++ @label ++ 不要安装引导程序 + + +- +- %1 (%2) +- %1 (%2) ++ ++ %1 (%2) ++ %1 (%2) + +- +- ++ ++ + Calamares::BlankViewStep + +- +- Blank Page +- 空白页 ++ ++ Blank Page ++ 空白页 + +- +- ++ ++ + Calamares::DebugWindow + +- +- GlobalStorage +- 全局存储 ++ ++ GlobalStorage ++ 全局存储 + + +- +- JobQueue +- 任务队列 ++ ++ JobQueue ++ 任务队列 + + +- +- Modules +- 模块 ++ ++ Modules ++ 模块 + + +- +- Type: +- 类型: ++ ++ Type: ++ 类型: + + +- +- +- none +- ++ ++ ++ none ++ + + +- +- Interface: +- 接口: ++ ++ Interface: ++ 接口: + + +- +- Crashes Calamares, so that Dr. Konqi can look at it. +- 使 Calamares 崩溃,以便 Dr. Konqi 查看。 ++ ++ Crashes Calamares, so that Dr. Konqi can look at it. ++ 使 Calamares 崩溃,以便 Dr. Konqi 查看。 + + +- +- Reloads the stylesheet from the branding directory. +- 从Branding目录重新加载样式表 ++ ++ Reloads the stylesheet from the branding directory. ++ 从Branding目录重新加载样式表 + + +- +- Reload Stylesheet +- 重载样式表 ++ ++ Reload Stylesheet ++ 重载样式表 + + +- +- Displays the tree of widget names in the log (for stylesheet debugging). +- 在日志中显示小部件名称树(用于样式表调试)。 ++ ++ Displays the tree of widget names in the log (for stylesheet debugging). ++ 在日志中显示小部件名称树(用于样式表调试)。 + + +- +- Widget Tree +- 树形控件 ++ ++ Widget Tree ++ 树形控件 + + +- +- Uploads the session log to the configured pastebin. +- 将会话日志上传至预设的pastebin网站 ++ ++ Uploads the session log to the configured pastebin. ++ 将会话日志上传至预设的pastebin网站 + + +- +- Send Session Log +- 发送会话日志 ++ ++ Send Session Log ++ 发送会话日志 + + +- +- Debug Information +- @title +- 调试信息 ++ ++ Debug Information ++ @title ++ 调试信息 + +- +- ++ ++ + Calamares::ExecutionViewStep + +- +- %p% +- Progress percentage indicator: %p is where the number 0..100 is placed +- %p% ++ ++ %p% ++ Progress percentage indicator: %p is where the number 0..100 is placed ++ %p% + + +- +- Set Up +- @label +- 配置 ++ ++ Set Up ++ @label ++ 配置 + + +- +- Install +- @label +- 安装 ++ ++ Install ++ @label ++ 安装 + +- +- ++ ++ ++ Toggle log ++ 日志 ++ ++ ++ + Calamares::FailJob + +- +- Job failed (%1) +- 任务失败(%1) ++ ++ Job failed (%1) ++ 任务失败(%1) + + +- +- Programmed job failure was explicitly requested. +- 出现明确抛出的任务执行失败。 ++ ++ Programmed job failure was explicitly requested. ++ 出现明确抛出的任务执行失败。 + +- +- ++ ++ + Calamares::JobThread + +- +- Done +- 完成 ++ ++ Done ++ 完成 + +- +- ++ ++ + Calamares::NamedJob + +- +- Example job (%1) +- 示例任务 (%1) ++ ++ Example job (%1) ++ 示例任务 (%1) + +- +- ++ ++ + Calamares::ProcessJob + +- +- Running command %1 in target system… +- @status +- 正在目标系统重执行 %1 命令…… ++ ++ Running command %1 in target system… ++ @status ++ 正在目标系统重执行 %1 命令…… + + +- +- Running command %1… +- @status +- 正在执行 %1 命令…… ++ ++ Running command %1… ++ @status ++ 正在执行 %1 命令…… + +- +- ++ ++ + Calamares::Python::Job + +- +- Running %1 operation. +- 正在运行 %1 操作。 ++ ++ Running %1 operation. ++ 正在运行 %1 操作。 + + +- +- Bad working directory path +- 错误的工作目录路径 ++ ++ Bad working directory path ++ 错误的工作目录路径 + + +- +- Working directory %1 for python job %2 is not readable. +- 用于 python 任务 %2 的工作目录 %1 不可读。 ++ ++ Working directory %1 for python job %2 is not readable. ++ 用于 python 任务 %2 的工作目录 %1 不可读。 + + +- +- +- +- +- +- +- Bad main script file +- 错误的主脚本文件 ++ ++ ++ ++ ++ ++ ++ Bad main script file ++ 错误的主脚本文件 + + +- +- Main script file %1 for python job %2 is not readable. +- 用于 python 任务 %2 的主脚本文件 %1 不可读。 ++ ++ Main script file %1 for python job %2 is not readable. ++ 用于 python 任务 %2 的主脚本文件 %1 不可读。 + + +- +- Bad internal script +- 内部脚本错误 ++ ++ Bad internal script ++ 内部脚本错误 + + +- +- Internal script for python job %1 raised an exception. +- Python 任务 %1 的内部脚本发生意外。 ++ ++ Internal script for python job %1 raised an exception. ++ Python 任务 %1 的内部脚本发生意外。 + + +- +- Main script file %1 for python job %2 could not be loaded because it raised an exception. +- 无法加载 python 作业 %2 的主脚本文件 %1 ,因为它引发了异常。 ++ ++ Main script file %1 for python job %2 could not be loaded because it raised an exception. ++ 无法加载 python 作业 %2 的主脚本文件 %1 ,因为它引发了异常。 + + +- +- Main script file %1 for python job %2 raised an exception. +- 用于 python 任务 %2 的主脚本文件 %1 引发了异常。 ++ ++ Main script file %1 for python job %2 raised an exception. ++ 用于 python 任务 %2 的主脚本文件 %1 引发了异常。 + + +- +- +- Main script file %1 for python job %2 returned invalid results. +- 用于 python 任务 %2 的主脚本文件 %1 回传了无效结果。 ++ ++ ++ Main script file %1 for python job %2 returned invalid results. ++ 用于 python 任务 %2 的主脚本文件 %1 回传了无效结果。 + + +- +- Main script file %1 for python job %2 does not contain a run() function. +- 用于 python 任务 %2 的主脚本文件 %1 未包含 run() 函数。 ++ ++ Main script file %1 for python job %2 does not contain a run() function. ++ 用于 python 任务 %2 的主脚本文件 %1 未包含 run() 函数。 + +- +- ++ ++ + Calamares::PythonJob + +- +- Running %1 operation… +- @status +- 正在运行 %1 操作…… ++ ++ Running %1 operation… ++ @status ++ 正在运行 %1 操作…… + + +- +- Bad working directory path +- @error +- 错误的工作目录路径 ++ ++ Bad working directory path ++ @error ++ 错误的工作目录路径 + + +- +- Working directory %1 for python job %2 is not readable. +- @error +- 用于 python 任务 %2 的工作目录 %1 不可读。 ++ ++ Working directory %1 for python job %2 is not readable. ++ @error ++ 用于 python 任务 %2 的工作目录 %1 不可读。 + + +- +- Bad main script file +- @error +- 错误的主脚本文件 ++ ++ Bad main script file ++ @error ++ 错误的主脚本文件 + + +- +- Main script file %1 for python job %2 is not readable. +- @error +- 用于 python 任务 %2 的主脚本文件 %1 不可读。 ++ ++ Main script file %1 for python job %2 is not readable. ++ @error ++ 用于 python 任务 %2 的主脚本文件 %1 不可读。 + + +- +- Boost.Python error in job "%1" +- @error +- 任务“%1”出现 Boost.Python 错误 ++ ++ Boost.Python error in job "%1" ++ @error ++ 任务“%1”出现 Boost.Python 错误 + +- +- ++ ++ + Calamares::QmlViewStep + +- +- Loading… +- @status +- 正在加载... ++ ++ Loading… ++ @status ++ 正在加载... + + +- +- QML step <i>%1</i>. +- @label +- QML 步骤 <i>%1</i>. ++ ++ QML step <i>%1</i>. ++ @label ++ QML 步骤 <i>%1</i>. + + +- +- Loading failed. +- @info +- 加载失败。 ++ ++ Loading failed. ++ @info ++ 加载失败。 + +- +- ++ ++ + Calamares::RequirementsChecker + +- +- Requirements checking for module '%1' is complete. +- @info +- “%1”模块的需求检查完成。 ++ ++ Requirements checking for module '%1' is complete. ++ @info ++ “%1”模块的需求检查完成。 + + +- +- Waiting for %n module(s)… +- @status +- +- 等待 %n 个模块… +- ++ ++ Waiting for %n module(s)… ++ @status ++ ++ 等待 %n 个模块… ++ + + +- +- (%n second(s)) +- @status +- +- (%n 秒) +- ++ ++ (%n second(s)) ++ @status ++ ++ (%n 秒) ++ + + +- +- System-requirements checking is complete. +- @info +- 已经完成系统需求检查。 ++ ++ System-requirements checking is complete. ++ @info ++ 已经完成系统需求检查。 + +- +- ++ ++ + Calamares::ViewManager + +- +- The upload was unsuccessful. No web-paste was done. +- 上传失败,未完成网页粘贴。 ++ ++ The upload was unsuccessful. No web-paste was done. ++ 上传失败,未完成网页粘贴。 + + +- +- Install log posted to ++ ++ Install log posted to + + %1 + + Link copied to clipboard +- 发送至 ++ 发送至 + + %1 + + 的链接已保存至剪贴板 + + +- +- Install Log Paste URL +- 安装日志粘贴 URL ++ ++ Install Log Paste URL ++ 安装日志粘贴 URL + + +- +- &Yes +- &是 ++ ++ &Yes ++ &是 + + +- +- &No +- &否 ++ ++ &No ++ &否 + + +- +- &Close +- &关闭 ++ ++ &Close ++ &关闭 + + +- +- Setup Failed +- @title +- 初始化失败 ++ ++ Setup Failed ++ @title ++ 初始化失败 + + +- +- Installation Failed +- @title +- 安装失败 ++ ++ Installation Failed ++ @title ++ 安装失败 + + +- +- Error +- @title +- 错误 ++ ++ Error ++ @title ++ 错误 + + +- +- Calamares Initialization Failed +- @title +- Calamares初始化失败 ++ ++ Calamares Initialization Failed ++ @title ++ Calamares初始化失败 + + +- +- %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. +- @info +- %1无法安装。 Calamares无法加载所有已配置的模块。这个问题是发行版配置Calamares不当导致的。 ++ ++ %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. ++ @info ++ %1无法安装。 Calamares无法加载所有已配置的模块。这个问题是发行版配置Calamares不当导致的。 + + +- +- <br/>The following modules could not be loaded: +- @info +- <br/>无法加载以下模块: ++ ++ <br/>The following modules could not be loaded: ++ @info ++ <br/>无法加载以下模块: + + +- +- Continue with Setup? +- @title +- 要继续安装吗? ++ ++ Continue with Setup? ++ @title ++ 要继续安装吗? + + +- +- Continue with Installation? +- @title +- 继续安装? ++ ++ Continue with Installation? ++ @title ++ 继续安装? + + +- +- The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- 为了安装%2, %1 安装程序即将对磁盘进行更改。<br/><strong>这些更改无法撤销。</strong> ++ ++ The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ 为了安装%2, %1 安装程序即将对磁盘进行更改。<br/><strong>这些更改无法撤销。</strong> + + +- +- The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- %1 安装程序将在您的磁盘上做出更改以安装 %2。<br/><strong>您将无法还原这些更改。</strong> ++ ++ The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ %1 安装程序将在您的磁盘上做出更改以安装 %2。<br/><strong>您将无法还原这些更改。</strong> + + +- +- &Set Up Now +- @button +- 现在开始配置(&S) ++ ++ &Set Up Now ++ @button ++ 现在开始配置(&S) + + +- +- &Install Now +- @button +- 现在开始安装(&I) ++ ++ &Install Now ++ @button ++ 现在开始安装(&I) + + +- +- Go &Back +- @button +- 返回 (&B) ++ ++ Go &Back ++ @button ++ 返回 (&B) + + +- +- &Set Up +- @button +- 配置 (&S) ++ ++ &Set Up ++ @button ++ 配置 (&S) + + +- +- &Install +- @button +- 安装(&I) ++ ++ &Install ++ @button ++ 安装(&I) + + +- +- Setup is complete. Close the setup program. +- @tooltip +- 安装完成。关闭安装程序。 ++ ++ Setup is complete. Close the setup program. ++ @tooltip ++ 安装完成。关闭安装程序。 + + +- +- The installation is complete. Close the installer. +- @tooltip +- 安装已完成。请关闭安装程序。 ++ ++ The installation is complete. Close the installer. ++ @tooltip ++ 安装已完成。请关闭安装程序。 + + +- +- Cancel the setup process without changing the system. +- @tooltip +- 取消安装过程,保持系统不变。 ++ ++ Cancel the setup process without changing the system. ++ @tooltip ++ 取消安装过程,保持系统不变。 + + +- +- Cancel the installation process without changing the system. +- @tooltip +- 取消安装过程,不改变系统。 ++ ++ Cancel the installation process without changing the system. ++ @tooltip ++ 取消安装过程,不改变系统。 + + +- +- &Next +- @button +- 下一步(&N) ++ ++ &Next ++ @button ++ 下一步(&N) + + +- +- &Back +- @button +- 后退(&B) ++ ++ &Back ++ @button ++ 后退(&B) + + +- +- &Done +- @button +- &完成 ++ ++ &Done ++ @button ++ &完成 + + +- +- &Cancel +- @button +- 取消(&C) ++ ++ &Cancel ++ @button ++ 取消(&C) + + +- +- Cancel Setup? +- @title +- 取消配置? ++ ++ Cancel Setup? ++ @title ++ 取消配置? + + +- +- Cancel Installation? +- @title +- 取消安装? ++ ++ Cancel Installation? ++ @title ++ 取消安装? + + +- +- Do you really want to cancel the current setup process? ++ ++ Do you really want to cancel the current setup process? + The setup program will quit and all changes will be lost. +- 确定要取消当前安装吗? ++ 确定要取消当前安装吗? + 安装程序将会退出,所有修改都会丢失。 + + +- +- Do you really want to cancel the current install process? ++ ++ Do you really want to cancel the current installation process? ++The system will reboot or you can enter the debug mode for further investigation. ++ 您确定要退出当前的安装过程吗? ++系统将重启,或者您可以进入调试模式进行进一步的调查。 ++ ++ ++ ++ &Reboot ++ @button ++ 重启(&R) ++ ++ ++ ++ &Try Now ++ @button ++ 立即试用(&D) ++ ++ ++ Do you really want to cancel the current install process? + The installer will quit and all changes will be lost. +- 确定要取消当前的安装吗? ++ 确定要取消当前的安装吗? + 安装程序将退出,所有修改都会丢失。 + +- +- ++ ++ + CalamaresPython::Helper + +- +- Unknown exception type +- @error +- 未知异常类型 ++ ++ Unknown exception type ++ @error ++ 未知异常类型 + + +- +- Unparseable Python error +- @error +- 无法解析的 Python 错误 ++ ++ Unparseable Python error ++ @error ++ 无法解析的 Python 错误 + + +- +- Unparseable Python traceback +- @error +- 无法解析的 Python 回溯 ++ ++ Unparseable Python traceback ++ @error ++ 无法解析的 Python 回溯 + + +- +- Unfetchable Python error +- @error +- 无法获取的 Python 错误。 ++ ++ Unfetchable Python error ++ @error ++ 无法获取的 Python 错误。 + +- +- ++ ++ + CalamaresWindow + +- +- %1 Setup Program +- %1 安装程序 ++ ++ ++ %1 Setup Program ++ %1 安装程序 + + +- +- %1 Installer +- %1 安装程序 ++ ++ ++ %1 Installer ++ %1 安装程序 + +- +- ++ ++ + ChangeFilesystemLabelJob + +- +- Set filesystem label on %1 +- @title +- 在 %1 设置文件系统卷标。 ++ ++ Set filesystem label on %1 ++ @title ++ 在 %1 设置文件系统卷标。 + + +- +- Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> +- @info +- 设置文件系统卷标 <strong>%1</strong> 至分区 <strong>%2</strong>。 ++ ++ Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> ++ @info ++ 设置文件系统卷标 <strong>%1</strong> 至分区 <strong>%2</strong>。 + + +- +- Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… +- @status +- 正在设置文件系统卷标 <strong>%1</strong> 至分区 <strong>%2</strong> 中…… ++ ++ Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… ++ @status ++ 正在设置文件系统卷标 <strong>%1</strong> 至分区 <strong>%2</strong> 中…… + + +- +- +- The installer failed to update partition table on disk '%1'. +- @info +- 安装程序更新磁盘“%1”分区表失败。 ++ ++ ++ The installer failed to update partition table on disk '%1'. ++ @info ++ 安装程序更新磁盘“%1”分区表失败。 + +- +- ++ ++ + CheckerContainer + +- +- Gathering system information... +- 正在收集系统信息 ... ++ ++ Gathering system information... ++ 正在收集系统信息 ... + +- +- ++ ++ + ChoicePage + +- +- Select storage de&vice: +- @label +- 选择存储器(&V): ++ ++ Select storage de&vice: ++ @label ++ 选择存储器(&V): + + +- +- +- +- +- Current: +- @label +- 当前: ++ ++ ++ ++ ++ Current: ++ @label ++ 当前: + + +- +- After: +- @label +- 之后: ++ ++ After: ++ @label ++ 之后: + + +- +- Reuse %1 as home partition for %2 +- @label +- 重复使用 %1 作为 %2 的 home 分区 ++ ++ Reuse %1 as home partition for %2 ++ @label ++ 重复使用 %1 作为 %2 的 home 分区 + + +- +- <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> +- <strong>选择要缩小的分区,然后拖动底栏改变大小</strong> ++ ++ <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> ++ <strong>选择要缩小的分区,然后拖动底栏改变大小</strong> + + +- +- %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. +- @info, %1 is partition name, %4 is product name +- %1 将会缩减到 %2MiB,然后为 %4 创建一个 %3MiB 分区。 ++ ++ %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. ++ @info, %1 is partition name, %4 is product name ++ %1 将会缩减到 %2MiB,然后为 %4 创建一个 %3MiB 分区。 + + +- +- <strong>Select a partition to install on</strong> +- @label +- <strong>选择要安装到的分区</strong> ++ ++ <strong>Select a partition to install on</strong> ++ @label ++ <strong>选择要安装到的分区</strong> + + +- +- An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. +- @info, %1 is product name +- 在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 ++ ++ An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ++ @info, %1 is product name ++ 在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 + + +- +- The EFI system partition at %1 will be used for starting %2. +- @info, %1 is partition path, %2 is product name +- %1 处的 EFI 系统分区将被用来启动 %2。 ++ ++ The EFI system partition at %1 will be used for starting %2. ++ @info, %1 is partition path, %2 is product name ++ %1 处的 EFI 系统分区将被用来启动 %2。 + + +- +- EFI system partition: +- @label +- EFI 系统分区: ++ ++ EFI system partition: ++ @label ++ EFI 系统分区: + + +- +- This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 这个存储器上似乎还没有操作系统。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 ++ ++ This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 这个存储器上似乎还没有操作系统。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 + + +- +- +- +- +- <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. +- <strong>抹除磁盘</strong><br/>这将会<font color="red">删除</font>目前选定的存储器上所有的数据。 ++ ++ ++ ++ ++ <strong>Automatic partitioning</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ <strong>自动分区</strong><br/>这将会<font color="red">删除</font>目前选定的存储器上所有的数据。 + + +- +- +- +- +- <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. +- <strong>并存安装</strong><br/>安装程序将会缩小一个分区,为 %1 腾出空间。 ++ ++ ++ ++ ++ <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. ++ <strong>并存安装</strong><br/>安装程序将会缩小一个分区,为 %1 腾出空间。 + + +- +- +- +- +- <strong>Replace a partition</strong><br/>Replaces a partition with %1. +- <strong>取代一个分区</strong><br/>以 %1 <strong>替代</strong>一个分区。 ++ ++ ++ ++ ++ <strong>Replace a partition</strong><br/>Replaces a partition with %1. ++ <strong>取代一个分区</strong><br/>以 %1 <strong>替代</strong>一个分区。 + + +- +- This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 这个存储器上已经有 %1 了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 ++ ++ This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 这个存储器上已经有 %1 了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 + + +- +- This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 这个存储器上已经有一个操作系统了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 ++ ++ This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 这个存储器上已经有一个操作系统了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 + + +- +- This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 这个存储器上已经有多个操作系统了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 ++ ++ This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 这个存储器上已经有多个操作系统了。您想要怎么做?<br/>在任何更改应用到存储器上前,您都可以重新查看并确认您的选择。 + + +- +- This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> +- 此存储设备已经有操作系统,但是分区表 <strong>%1</strong> 与所需的 <strong>%2</strong> 不同。<br/> ++ ++ This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> ++ 此存储设备已经有操作系统,但是分区表 <strong>%1</strong> 与所需的 <strong>%2</strong> 不同。<br/> + + +- +- This storage device has one of its partitions <strong>mounted</strong>. +- @info +- 此存储设备 <strong>已挂载</strong>其中一个分区。 ++ ++ This storage device has one of its partitions <strong>mounted</strong>. ++ @info ++ 此存储设备 <strong>已挂载</strong>其中一个分区。 + + +- +- This storage device is a part of an <strong>inactive RAID</strong> device. +- @info +- 该存储设备是 <strong>非活动RAID</strong> 设备的一部分。 ++ ++ This storage device is a part of an <strong>inactive RAID</strong> device. ++ @info ++ 该存储设备是 <strong>非活动RAID</strong> 设备的一部分。 + + +- +- No swap +- @label +- 无 Swap 交换分区 ++ ++ No swap ++ @label ++ 无 Swap 交换分区 + + +- +- Reuse swap +- @label +- 重新使用 Swap 交换分区 ++ ++ Reuse swap ++ @label ++ 重新使用 Swap 交换分区 + + +- +- Swap (no Hibernate) +- @label +- 交换分区(无休眠) ++ ++ Swap (no Hibernate) ++ @label ++ 交换分区(无休眠) + + +- +- Swap (with Hibernate) +- @label +- 交换分区(带休眠) ++ ++ Swap (with Hibernate) ++ @label ++ 交换分区(带休眠) + + +- +- Swap to file +- @label +- 交换到文件 ++ ++ Swap to file ++ @label ++ 交换到文件 + + +- +- <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. +- <strong>手动分区</strong><br/>您可以自行创建或重新调整分区大小。 ++ ++ <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. ++ <strong>手动分区</strong><br/>您可以自行创建或重新调整分区大小。 + + +- +- Bootloader location: +- @label +- 启动加载器(Bootloader)位置: ++ ++ Bootloader location: ++ @label ++ 启动加载器(Bootloader)位置: + +- +- ++ ++ + ClearMountsJob + +- +- Successfully unmounted %1. +- 成功卸载了 %1。 ++ ++ Successfully unmounted %1. ++ 成功卸载了 %1。 + + +- +- Successfully disabled swap %1. +- 成功禁用了交换空间 %1。 ++ ++ Successfully disabled swap %1. ++ 成功禁用了交换空间 %1。 + + +- +- Successfully cleared swap %1. +- 成功清理了交换空间 %1。 ++ ++ Successfully cleared swap %1. ++ 成功清理了交换空间 %1。 + + +- +- Successfully closed mapper device %1. +- 成功关闭了映射设备 %1。 ++ ++ Successfully closed mapper device %1. ++ 成功关闭了映射设备 %1。 + + +- +- Successfully disabled volume group %1. +- 成功禁用了卷组 %1。 ++ ++ Successfully disabled volume group %1. ++ 成功禁用了卷组 %1。 + + +- +- Clear mounts for partitioning operations on %1 +- @title +- 清理挂载了的分区以在 %1 进行分区操作 ++ ++ Clear mounts for partitioning operations on %1 ++ @title ++ 清理挂载了的分区以在 %1 进行分区操作 + + +- +- Clearing mounts for partitioning operations on %1… +- @status +- 正在清理挂载了的分区以在 %1 进行分区操作… ++ ++ Clearing mounts for partitioning operations on %1… ++ @status ++ 正在清理挂载了的分区以在 %1 进行分区操作… + + +- +- Cleared all mounts for %1 +- 已清除 %1 的所有挂载点 ++ ++ Cleared all mounts for %1 ++ 已清除 %1 的所有挂载点 + +- +- ++ ++ + ClearTempMountsJob + +- +- +- Clearing all temporary mounts… +- @status +- 正在清除所有临时挂载点… ++ ++ ++ Clearing all temporary mounts… ++ @status ++ 正在清除所有临时挂载点… + + +- +- Cleared all temporary mounts. +- 所有临时挂载点都已经清除。 ++ ++ Cleared all temporary mounts. ++ 所有临时挂载点都已经清除。 + +- +- ++ ++ + CommandList + +- +- Could not run command. +- 无法运行命令 ++ ++ Could not run command. ++ 无法运行命令 + + +- +- The commands use variables that are not defined. Missing variables are: %1. +- 这些命令使用了未定义的变量。缺少的变量是: %1。 ++ ++ The commands use variables that are not defined. Missing variables are: %1. ++ 这些命令使用了未定义的变量。缺少的变量是: %1。 + +- +- ++ ++ + Config + +- +- Setup Failed +- @title +- 初始化失败 ++ ++ Setup Failed ++ @title ++ 初始化失败 ++ ++ ++ ++ Installation Failed ++ @title ++ 安装失败 + + +- +- Installation Failed +- @title +- 安装失败 ++ ++ The setup of %1 did not complete successfully. ++ @info ++ %1的设置未成功完成 + + +- +- The setup of %1 did not complete successfully. +- @info +- %1的设置未成功完成 ++ ++ The installation of %1 did not complete successfully. ++ @info ++ %1的安装未成功完成 + + +- +- The installation of %1 did not complete successfully. +- @info +- %1的安装未成功完成 ++ ++ Setup Complete ++ @title ++ 安装完成 + + +- +- Setup Complete +- @title +- 安装完成 ++ ++ Installation Complete ++ @title ++ 安装完成 + + +- +- Installation Complete +- @title +- 安装完成 ++ ++ The setup of %1 is complete. ++ @info ++ %1 安装完成。 + + +- +- The setup of %1 is complete. +- @info +- %1 安装完成。 ++ ++ The installation of %1 is complete. ++ @info ++ %1 的安装操作已完成。 + + +- +- The installation of %1 is complete. +- @info +- %1 的安装操作已完成。 ++ ++ Keyboard model has been set to %1<br/>. ++ @label, %1 is keyboard model, as in Apple Magic Keyboard ++ 键盘型号已设置为 %1<br/>。 + + +- +- Keyboard model has been set to %1<br/>. +- @label, %1 is keyboard model, as in Apple Magic Keyboard +- 键盘型号已设置为 %1<br/>。 ++ ++ Keyboard layout has been set to %1/%2. ++ @label, %1 is layout, %2 is layout variant ++ 键盘布局已设置为 %1/%2。 + + +- +- Keyboard layout has been set to %1/%2. +- @label, %1 is layout, %2 is layout variant +- 键盘布局已设置为 %1/%2。 ++ ++ Set timezone to %1/%2 ++ @action ++ 设置时区为 %1/%2 + + +- +- Set timezone to %1/%2 +- @action +- 设置时区为 %1/%2 ++ ++ The system language will be set to %1. ++ @info ++ 系统语言将设置为 %1。 + + +- +- The system language will be set to %1. +- @info +- 系统语言将设置为 %1。 ++ ++ The numbers and dates locale will be set to %1. ++ @info ++ 数字和日期格式将设置为 %1。 + + +- +- The numbers and dates locale will be set to %1. +- @info +- 数字和日期地域将设置为 %1。 ++ ++ The timezone will be set to %1. ++ @info ++ 设置时区为 %1. + + +- +- Network Installation. (Disabled: Incorrect configuration) +- 网络安装。(因错误的配置而被禁用) ++ The timezone whill be set to %1. ++ @info ++ 设置时区为 %1。 + + +- +- Network Installation. (Disabled: Received invalid groups data) +- 网络安装。(因收到无效组数据而被禁用) ++ ++ Network Installation. (Disabled: Incorrect configuration) ++ 网络安装。(因错误的配置而被禁用) + + +- +- Network Installation. (Disabled: Internal error) +- 网络安装。(因内部错误而被禁用) ++ ++ Network Installation. (Disabled: Received invalid groups data) ++ 网络安装。(因收到无效组数据而被禁用) + + +- +- Network Installation. (Disabled: Unable to fetch package lists, check your network connection) +- 网络安装。(因无法获取软件包列表而被禁用,请检查网络连接) ++ ++ Network Installation. (Disabled: Internal error) ++ 网络安装。(因内部错误而被禁用) + + +- +- Network Installation. (Disabled: No package list) +- 网络安装。(因无软件包列表而被禁用) ++ ++ Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ++ 网络安装。(因无法获取软件包列表而被禁用,请检查网络连接) + + +- +- Package selection +- 软件包选择 ++ ++ Network Installation. (Disabled: No package list) ++ 网络安装。(因无软件包列表而被禁用) + + +- +- Package Selection +- 软件包选择 ++ ++ Package selection ++ 软件包选择 + + +- +- Please pick a product from the list. The selected product will be installed. +- 请在列表中选一个产品。被选中的产品将会被安装。 ++ ++ Package Selection ++ 软件包选择 + + +- +- Packages +- 软件包 ++ ++ Please pick a product from the list. The selected product will be installed. ++ 请在列表中选一个产品。被选中的产品将会被安装。 + + +- +- Install option: <strong>%1</strong> +- 安装选项:<strong>%1</strong> ++ ++ Packages ++ 桌面 + + +- +- None +- ++ ++ Install option: <strong>%1</strong> ++ 安装选项:<strong>%1</strong> + + +- +- Summary +- @label +- 摘要 ++ ++ None ++ + + +- +- This is an overview of what will happen once you start the setup procedure. +- 预览——当你启动安装过程,以下行为将被执行 ++ ++ Summary ++ @label ++ 摘要 + + +- +- This is an overview of what will happen once you start the install procedure. +- 这是您开始安装后所会发生的事情的概览。 ++ ++ This is an overview of what will happen once you start the setup procedure. ++ 预览——当你启动安装过程,以下行为将被执行 + + +- +- Your username is too long. +- 用户名太长。 ++ ++ This is an overview of what will happen once you start the install procedure. ++ 这是您开始安装后所会发生的事情的概览。 + + +- +- Your username must start with a lowercase letter or underscore. +- 用户名必须以小写字母或下划线"_"开头 ++ ++ Your username is too long. ++ 用户名太长。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 只允许小写字母、数组、下划线"_" 和 连字符"-" ++ ++ Your username must start with a lowercase letter or underscore. ++ 用户名必须以小写字母或下划线"_"开头 + + +- +- '%1' is not allowed as username. +- '%1' 不允许作为用户名。 ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 只允许小写字母、数组、下划线"_" 和 连字符"-" + + +- +- Your hostname is too short. +- 主机名太短。 ++ ++ '%1' is not allowed as username. ++ '%1' 不允许作为用户名。 + + +- +- Your hostname is too long. +- 主机名太长。 ++ ++ Your hostname is too short. ++ 主机名太短。 + + +- +- '%1' is not allowed as hostname. +- '%1' 不允许作为主机名。 ++ ++ Your hostname is too long. ++ 主机名太长。 + + +- +- Only letters, numbers, underscore and hyphen are allowed. +- 只允许字母、数组、下划线"_" 和 连字符"-" ++ ++ '%1' is not allowed as hostname. ++ '%1' 不允许作为主机名。 + + +- +- Your passwords do not match! +- 密码不匹配! ++ ++ Only letters, numbers, underscore and hyphen are allowed. ++ 只允许字母、数组、下划线"_" 和 连字符"-" + + +- +- OK! +- 确定 ++ ++ Your passwords do not match! ++ 密码不匹配! + + +- +- This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. +- 此计算机不满足安装 %1 的最低需求。<br/> 初始化无法继续。 ++ ++ OK! ++ 确定 + + +- +- This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. +- 此计算机木不满足安装 %1 的最低需求。<br/> 安装无法继续。 ++ ++ This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. ++ 此计算机不满足安装 %1 的最低需求。<br/> 初始化无法继续。 + + +- +- This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. +- 此计算机不满足安装 %1 的部分推荐配置。<br/>初始化可以继续,但是一些功能可能会被禁用。 ++ ++ This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. ++ 此计算机木不满足安装 %1 的最低需求。<br/> 安装无法继续。 + + +- +- This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. +- 此计算机不满足安装 %1 的部分推荐配置。<br/>安装可以继续,但是一些功能可能会被禁用。 ++ ++ This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. ++ 此计算机不满足安装 %1 的部分推荐配置。<br/>初始化可以继续,但是一些功能可能会被禁用。 + + +- +- This program will ask you some questions and set up %2 on your computer. +- 本程序将会问您一些问题并在您的电脑上安装及设置 %2 。 ++ ++ This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. ++ 此计算机不满足安装 %1 的部分推荐配置。<br/>安装可以继续,但是一些功能可能会被禁用。 + + +- +- <h1>Welcome to the Calamares setup program for %1</h1> +- <h1>欢迎使用 %1 的 Calamares 安装程序</h1> ++ This program will ask you some questions and set up %2 on your computer. ++ 本程序将会问您一些问题并在您的电脑上安装及设置 %2 。 + + +- +- <h1>Welcome to %1 setup</h1> +- <h1>欢迎使用 %1 设置</h1> ++ ++ <h1>Welcome to the Calamares setup program for %1</h1> ++ <h1>欢迎使用 %1 的 Calamares 安装程序</h1> + + +- +- <h1>Welcome to the Calamares installer for %1</h1> +- <h1>欢迎使用 %1 的 Calamares 安装程序</h1> ++ ++ <h1>Welcome to %1 setup</h1> ++ <h1>欢迎使用 %1 设置</h1> + + +- +- <h1>Welcome to the %1 installer</h1> +- <h1>欢迎使用 %1 安装程序</h1> ++ ++ <h1>Welcome to the Calamares installer for %1</h1> ++ <h1>欢迎使用 %1 的 Calamares 安装程序</h1> + +- +- ++ ++ ++ <h1>Welcome to the %1 installer</h1> ++ <h1>欢迎使用 %1 安装程序</h1> ++ ++ ++ + ContextualProcessJob + +- +- Performing contextual processes' job… +- @status +- 正在执行相关流程工作... ++ ++ Performing contextual processes' job… ++ @status ++ 正在执行相关流程工作... + +- +- ++ ++ + CreatePartitionDialog + +- +- Create a Partition +- 创建分区 ++ ++ Create a Partition ++ 创建分区 + + +- +- Si&ze: +- 大小(&Z): ++ ++ Si&ze: ++ 大小(&Z): + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Partition &Type: +- 分区类型(&T): ++ ++ Partition &Type: ++ 分区类型(&T): + + +- +- Primar&y +- 主分区(&Y) ++ ++ Primar&y ++ 主分区(&Y) + + +- +- E&xtended +- 扩展分区(&E) ++ ++ E&xtended ++ 扩展分区(&E) + + +- +- Fi&le System: +- 文件系统 (&L): ++ ++ Fi&le System: ++ 文件系统 (&L): + + +- +- LVM LV name +- LVM 逻辑卷名称 ++ ++ LVM LV name ++ LVM 逻辑卷名称 + + +- +- &Mount Point: +- 挂载点(&M): ++ ++ &Mount Point: ++ 挂载点(&M): + + +- +- Flags: +- 标记: ++ ++ Flags: ++ 标记: + + +- +- Label for the filesystem +- 此文件系统的卷标名 ++ ++ Label for the filesystem ++ 此文件系统的卷标名 + + +- +- FS Label: +- 文件系统卷标 ++ ++ FS Label: ++ 文件系统卷标 + + +- +- En&crypt +- @action +- 加密(&C) ++ ++ En&crypt ++ @action ++ 加密(&C) + + +- +- Logical +- @label +- 逻辑分区 ++ ++ Logical ++ @label ++ 逻辑分区 + + +- +- Primary +- @label +- 主分区 ++ ++ Primary ++ @label ++ 主分区 + + +- +- GPT +- @label +- GPT ++ ++ GPT ++ @label ++ GPT + + +- +- Mountpoint already in use. Please select another one. +- @info +- 挂载点已被占用。请选择另一个。 ++ ++ Mountpoint already in use. Please select another one. ++ @info ++ 挂载点已被占用。请选择另一个。 + + +- +- Mountpoint must start with a <tt>/</tt>. +- @info +- 挂载点必须以<tt>/</tt>开头。 ++ ++ Mountpoint must start with a <tt>/</tt>. ++ @info ++ 挂载点必须以<tt>/</tt>开头。 + +- +- ++ ++ + CreatePartitionJob + +- +- Create new %1MiB partition on %3 (%2) with entries %4 +- @title +- 在 %3 (%2) 上使用项目 %4 建立新的 %1MiB 分区 ++ ++ Create new %1MiB partition on %3 (%2) with entries %4 ++ @title ++ 在 %3 (%2) 上使用项目 %4 建立新的 %1MiB 分区 + + +- +- Create new %1MiB partition on %3 (%2) +- @title +- 在 %3 (%2) 上建立新的 %1MiB 分区 ++ ++ Create new %1MiB partition on %3 (%2) ++ @title ++ 在 %3 (%2) 上建立新的 %1MiB 分区 + + +- +- Create new %2MiB partition on %4 (%3) with file system %1 +- @title +- 在 %4 (%3) 上创建新的 %2MiB 分区,文件系统为 %1 ++ ++ Create new %2MiB partition on %4 (%3) with file system %1 ++ @title ++ 在 %4 (%3) 上创建新的 %2MiB 分区,文件系统为 %1 + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> +- @info +- 在 <strong>%3</strong> (%2) 上使用 <em>%4</em> 建立新的 <strong>%1MiB</strong> 分区 ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> ++ @info ++ 在 <strong>%3</strong> (%2) 上使用 <em>%4</em> 建立新的 <strong>%1MiB</strong> 分区 + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) +- @info +- 在<strong>%3</strong>(%2)上创建新的<strong>%1MiB</strong>分区 ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) ++ @info ++ 在<strong>%3</strong>(%2)上创建新的<strong>%1MiB</strong>分区 + + +- +- Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> +- @info +- 在<strong>%4</strong>(%3)上使用文件系统<strong>%1</strong>创建一个<strong>%2MiB</strong>的%1分区 ++ ++ Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> ++ @info ++ 在<strong>%4</strong>(%3)上使用文件系统<strong>%1</strong>创建一个<strong>%2MiB</strong>的%1分区 + + +- +- +- Creating new %1 partition on %2… +- @status +- 正在 %2 上创建新的 %1 分区… ++ ++ ++ Creating new %1 partition on %2… ++ @status ++ 正在 %2 上创建新的 %1 分区… + + +- +- The installer failed to create partition on disk '%1'. +- @info +- 安装程序在磁盘“%1”创建分区失败。 ++ ++ The installer failed to create partition on disk '%1'. ++ @info ++ 安装程序在磁盘“%1”创建分区失败。 + +- +- ++ ++ + CreatePartitionTableDialog + +- +- Create Partition Table +- 创建分区表 ++ ++ Create Partition Table ++ 创建分区表 + + +- +- Creating a new partition table will delete all existing data on the disk. +- 创建新分区表将删除磁盘上所有已有数据。 ++ ++ Creating a new partition table will delete all existing data on the disk. ++ 创建新分区表将删除磁盘上所有已有数据。 + + +- +- What kind of partition table do you want to create? +- 您想要创建哪种分区表? ++ ++ What kind of partition table do you want to create? ++ 您想要创建哪种分区表? + + +- +- Master Boot Record (MBR) +- 主引导记录 (MBR) ++ ++ Master Boot Record (MBR) ++ 主引导记录 (MBR) + + +- +- GUID Partition Table (GPT) +- GUID 分区表 (GPT) ++ ++ GUID Partition Table (GPT) ++ GUID 分区表 (GPT) + +- +- ++ ++ + CreatePartitionTableJob + +- +- +- Creating new %1 partition table on %2… +- @status +- 正在 %2 上创建新的 %1 分区表… ++ ++ ++ Creating new %1 partition table on %2… ++ @status ++ 正在 %2 上创建新的 %1 分区表… + + +- +- Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… +- @status +- 正在在 <strong>%2</strong> (%3) 上创建新的 <strong>%1</strong> 分区表… ++ ++ Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… ++ @status ++ 正在在 <strong>%2</strong> (%3) 上创建新的 <strong>%1</strong> 分区表… + + +- +- The installer failed to create a partition table on %1. +- 安装程序于 %1 创建分区表失败。 ++ ++ The installer failed to create a partition table on %1. ++ 安装程序于 %1 创建分区表失败。 + +- +- ++ ++ + CreateUserJob + +- +- Create user %1 +- 创建用户 %1 ++ ++ Create user %1 ++ 创建用户 %1 + + +- +- Create user <strong>%1</strong> +- 创建用户 <strong>%1</strong> ++ ++ Create user <strong>%1</strong> ++ 创建用户 <strong>%1</strong> + + +- +- +- Creating user %1… +- @status +- 创建用户 %1… ++ ++ ++ Creating user %1… ++ @status ++ 创建用户 %1… + + +- +- Preserving home directory… +- @status +- 保留家目录… ++ ++ Preserving home directory… ++ @status ++ 保留家目录… + + +- +- Configuring user %1 +- @status +- 配置用户 %1 ++ ++ Configuring user %1 ++ @status ++ 配置用户 %1 + + +- +- Setting file permissions… +- @status +- 设置文件权限… ++ ++ Setting file permissions… ++ @status ++ 设置文件权限… + +- +- ++ ++ + CreateVolumeGroupDialog + +- +- Create Volume Group +- @title +- 创建存储组 ++ ++ Create Volume Group ++ @title ++ 创建存储组 + +- +- ++ ++ + CreateVolumeGroupJob + +- +- +- Creating new volume group named %1… +- @status +- 新建名为 %1 的分卷组… ++ ++ ++ Creating new volume group named %1… ++ @status ++ 新建名为 %1 的分卷组… + + +- +- Creating new volume group named <strong>%1</strong>… +- @status +- 正在创建名为 <strong>%1</strong>的分卷组… ++ ++ Creating new volume group named <strong>%1</strong>… ++ @status ++ 正在创建名为 <strong>%1</strong>的分卷组… + + +- +- The installer failed to create a volume group named '%1'. +- 安装器未能创建名为'%1'的分卷组 ++ ++ The installer failed to create a volume group named '%1'. ++ 安装器未能创建名为'%1'的分卷组 + +- +- ++ ++ + DeactivateVolumeGroupJob + +- +- +- Deactivating volume group named %1… +- @status +- 正在停用分卷组 %1… ++ ++ ++ Deactivating volume group named %1… ++ @status ++ 正在停用分卷组 %1… + + +- +- Deactivating volume group named <strong>%1</strong>… +- @status +- 正在停用分卷组<strong>%1</strong>… ++ ++ Deactivating volume group named <strong>%1</strong>… ++ @status ++ 正在停用分卷组<strong>%1</strong>… + + +- +- The installer failed to deactivate a volume group named %1. +- 安装器未能创建名为'%1'的分卷组 ++ ++ The installer failed to deactivate a volume group named %1. ++ 安装器未能创建名为'%1'的分卷组 + +- +- ++ ++ + DeletePartitionJob + +- +- +- Deleting partition %1… +- @status +- 正在删除分区 %1… ++ ++ ++ Deleting partition %1… ++ @status ++ 正在删除分区 %1… + + +- +- Deleting partition <strong>%1</strong>… +- @status +- 删除分区 <strong>%1</strong>… ++ ++ Deleting partition <strong>%1</strong>… ++ @status ++ 删除分区 <strong>%1</strong>… + + +- +- The installer failed to delete partition %1. +- 安装程序删除分区 %1 失败。 ++ ++ The installer failed to delete partition %1. ++ 安装程序删除分区 %1 失败。 + +- +- ++ ++ + DeviceInfoWidget + +- +- <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. +- <br><br>此分区表类型只建议用于使用 <strong>BIOS</strong> 引导环境的较旧系统,否则一般建议使用 GPT。<br> ++ ++ <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. ++ <br><br>此分区表类型只建议用于使用 <strong>BIOS</strong> 引导环境的较旧系统,否则一般建议使用 GPT。<br> + <strong>警告:</strong>MSDOS 分区表是一个有着重大缺点、已被弃用的标准。<br>MSDOS 分区表上只能创建 4 个<u>主要</u>分区,其中一个可以是<u>拓展</u>分区,此分区可以再分为许多<u>逻辑</u>分区。 + + +- +- <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. +- <br><br>此分区表类型推荐用于使用 <strong>EFI</strong> 引导环境的系统。 ++ ++ <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. ++ <br><br>此分区表类型推荐用于使用 <strong>EFI</strong> 引导环境的系统。 + + +- +- This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. +- 选定的存储器是一个 <strong>回环</strong> 设备。<br><br>此伪设备不含一个真正的分区表,它只是能让一个文件可如块设备那样访问。这种配置一般只包含一个单独的文件系统。 ++ ++ This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. ++ 选定的存储器是一个 <strong>回环</strong> 设备。<br><br>此伪设备不含一个真正的分区表,它只是能让一个文件可如块设备那样访问。这种配置一般只包含一个单独的文件系统。 + + +- +- This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. +- 本安装程序在选定的存储器上<strong>探测不到分区表</strong>。<br><br>此设备要不是没有分区表,就是其分区表已毁损又或者是一个未知类型的分区表。<br>本安装程序将会为您建立一个新的分区表,可以自动或通过手动分割页面完成。 ++ ++ This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. ++ 本安装程序在选定的存储器上<strong>探测不到分区表</strong>。<br><br>此设备要不是没有分区表,就是其分区表已毁损又或者是一个未知类型的分区表。<br>本安装程序将会为您建立一个新的分区表,可以自动或通过手动分割页面完成。 + + +- +- This device has a <strong>%1</strong> partition table. +- 此设备上有一个 <strong>%1</strong> 分区表。 ++ ++ This device has a <strong>%1</strong> partition table. ++ 此设备上有一个 <strong>%1</strong> 分区表。 + + +- +- The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. +- 目前选定存储器的<strong>分区表</strong>类型。<br><br>变更分区表类型的唯一方法就是抹除再重新从头建立分区表,这会破坏在该存储器上所有的数据。<br>除非您特别选择,否则本安装程序将会保留目前的分区表。<br>若不确定,在现代的系统上,建议使用 GPT。 ++ ++ The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. ++ 目前选定存储器的<strong>分区表</strong>类型。<br><br>变更分区表类型的唯一方法就是抹除再重新从头建立分区表,这会破坏在该存储器上所有的数据。<br>除非您特别选择,否则本安装程序将会保留目前的分区表。<br>若不确定,在现代的系统上,建议使用 GPT。 + +- +- ++ ++ + DeviceModel + +- +- %1 - %2 (%3) +- device[name] - size[number] (device-node[name]) +- %1 - %2 (%3) ++ ++ %1 - %2 (%3) ++ device[name] - size[number] (device-node[name]) ++ %1 - %2 (%3) + + +- +- %1 - (%2) +- device[name] - (device-node[name]) +- %1 - (%2) ++ ++ %1 - (%2) ++ device[name] - (device-node[name]) ++ %1 - (%2) + +- +- ++ ++ + DracutLuksCfgJob + +- +- Writing LUKS configuration for Dracut to %1… +- @status +- 正在将 Dracut 的 LUKS 配置写入到 %1… ++ ++ Writing LUKS configuration for Dracut to %1… ++ @status ++ 正在将 Dracut 的 LUKS 配置写入到 %1… + + +- +- Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted +- @info +- Dracut 的 "/" 分区未加密,正在跳过写入 LUKS 配置 ++ ++ Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted ++ @info ++ Dracut 的 "/" 分区未加密,正在跳过写入 LUKS 配置 + + +- +- Failed to open %1 +- @error +- 无法打开 %1 ++ ++ Failed to open %1 ++ @error ++ 无法打开 %1 + +- +- ++ ++ + DummyCppJob + +- +- Performing dummy C++ job… +- @status +- 正在执行虚拟 C++ 任务… ++ ++ Performing dummy C++ job… ++ @status ++ 正在执行虚拟 C++ 任务… + +- +- ++ ++ + EditExistingPartitionDialog + +- +- Edit Existing Partition +- 编辑已有分区 ++ ++ Edit Existing Partition ++ 编辑已有分区 + + +- +- Con&tent: +- 内容:(&T) ++ ++ Con&tent: ++ 内容:(&T) + + +- +- &Keep +- 保留 (&K) ++ ++ &Keep ++ 保留 (&K) + + +- +- Format +- 格式化 ++ ++ Format ++ 格式化 + + +- +- Warning: Formatting the partition will erase all existing data. +- 警告:格式化分区将删除所有已有数据。 ++ ++ Warning: Formatting the partition will erase all existing data. ++ 警告:格式化分区将删除所有已有数据。 + + +- +- &Mount Point: +- 挂载点(&M): ++ ++ &Mount Point: ++ 挂载点(&M): + + +- +- Si&ze: +- 尺寸 (&Z): ++ ++ Si&ze: ++ 尺寸 (&Z): + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Fi&le System: +- 文件系统 (&L): ++ ++ Fi&le System: ++ 文件系统 (&L): + + +- +- Flags: +- 标记: ++ ++ Flags: ++ 标记: + + +- +- Label for the filesystem +- 此文件系统的卷标名 ++ ++ Label for the filesystem ++ 此文件系统的卷标名 + + +- +- FS Label: +- 文件系统卷标 ++ ++ FS Label: ++ 文件系统卷标 + + +- +- Passphrase for existing partition +- 既有分区的密码 ++ ++ Passphrase for existing partition ++ 既有分区的密码 + + +- +- Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. +- 分区 %1 无法使用给定的密码解密。<br/><br/>请再次编辑分区并输入正确密码或删除并创建新的加密分区。 ++ ++ Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. ++ 分区 %1 无法使用给定的密码解密。<br/><br/>请再次编辑分区并输入正确密码或删除并创建新的加密分区。 + +- +- ++ ++ + EncryptWidget + +- +- En&crypt system +- 加密系统 ++ ++ En&crypt system ++ 加密系统 + + +- +- Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. +- 您的系统似乎不太支持加密,无法对整个系统进行加密。您可以启用加密,但性能可能会受到影响。 ++ ++ Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. ++ 您的系统似乎不太支持加密,无法对整个系统进行加密。您可以启用加密,但性能可能会受到影响。 + + +- +- Passphrase +- 密码 ++ ++ Passphrase ++ 密码 + + +- +- Confirm passphrase +- 确认密码 ++ ++ Confirm passphrase ++ 确认密码 + + +- +- +- Please enter the same passphrase in both boxes. +- @tooltip +- 请在两个输入框中输入同样的密码。 ++ ++ ++ Please enter the same passphrase in both boxes. ++ @tooltip ++ 请在两个输入框中输入同样的密码。 + + +- +- Password must be a minimum of %1 characters. +- @tooltip +- 密码必须至少包含 %1 个字符。 ++ ++ Password must be a minimum of %1 characters. ++ @tooltip ++ 密码必须至少包含 %1 个字符。 + +- +- ++ ++ + ErrorDialog + +- +- Details: +- 详情: ++ ++ Details: ++ 详情: + + +- +- Would you like to paste the install log to the web? +- 需要将安装日志粘贴到网页吗? ++ ++ Would you like to paste the install log to the web? ++ 需要将安装日志粘贴到网页吗? + +- +- ++ ++ + FillGlobalStorageJob + +- +- Set partition information +- @title +- 设置分区信息 ++ ++ Set partition information ++ @title ++ 设置分区信息 + + +- +- Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> +- @info +- 在有 <em>%3</em> 特性的<strong>新</strong> %2 系統分区上安裝 %1 ++ ++ Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> ++ @info ++ 在有 <em>%3</em> 特性的<strong>新</strong> %2 系統分区上安裝 %1 + + +- +- Install %1 on <strong>new</strong> %2 system partition +- @info +- 在 <strong>新的</strong>系统分区 %2 上安装 %1 ++ ++ Install %1 on <strong>new</strong> %2 system partition ++ @info ++ 在 <strong>新的</strong>系统分区 %2 上安装 %1 + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> +- @info +- ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> ++ @info ++ + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 +- @info +- 设置 <strong>新的</strong> 含挂载点 <strong>%1</strong>%3 的 %2 分区 ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 ++ @info ++ 设置 <strong>新的</strong> 含挂载点 <strong>%1</strong>%3 的 %2 分区 + + +- +- Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> +- @info +- ++ ++ Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> ++ @info ++ + + +- +- Install %2 on %3 system partition <strong>%1</strong> +- @info +- 在 %3 系统分区 <strong>%1</strong> 上安装 %2 ++ ++ Install %2 on %3 system partition <strong>%1</strong> ++ @info ++ 在 %3 系统分区 <strong>%1</strong> 上安装 %2 + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> +- @info +- ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> ++ @info ++ + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… +- @info +- ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… ++ @info ++ + + +- +- Install boot loader on <strong>%1</strong>… +- @info +- 在 <strong>%1</strong>上安装引导程序… ++ ++ Install boot loader on <strong>%1</strong>… ++ @info ++ 在 <strong>%1</strong>上安装引导程序… + + +- +- Setting up mount points… +- @status +- 正在设置挂载点… ++ ++ Setting up mount points… ++ @status ++ 正在设置挂载点… + +- +- ++ ++ + FinishedPage + +- +- &Restart now +- 现在重启(&R) ++ ++ &Restart now ++ 现在重启(&R) + + +- +- <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. +- @info +- <h1>安装成功!</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可以重新启动到新系统。 ++ ++ <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. ++ @info ++ <h1>安装成功!</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可以重新启动到新系统。 + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> +- @tooltip +- <html><head/><body><p>当选中此项时,系统会在您关闭安装器或点击 <span style=" font-style:italic;">完成</span> 按钮时立即重启</p></body></html> ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> ++ @tooltip ++ <html><head/><body><p>当选中此项时,系统会在您关闭安装器或点击 <span style=" font-style:italic;">完成</span> 按钮时立即重启</p></body></html> + + +- +- <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. +- @info +- <h1>安装成功!</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可以重新启动到新系统,或是继续使用 %2 Live 环境。 ++ ++ <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. ++ @info ++ <h1>安装成功!</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可以重新启动到新系统,或是继续使用 %2 Live 环境。 + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> +- @tooltip +- <html><head/><body><p>当选中此项时,系统会在您关闭安装器或点击 <span style=" font-style:italic;">完成</span> 按钮时立即重启</p></body></html> ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> ++ @tooltip ++ <html><head/><body><p>当选中此项时,系统会在您关闭安装器或点击 <span style=" font-style:italic;">完成</span> 按钮时立即重启</p></body></html> + + +- +- <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 ++ ++ <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 + + +- +- <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 ++ ++ <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 + +- +- ++ ++ + FinishedQmlViewStep + +- +- Finish +- @label +- 结束 ++ ++ Finish ++ @label ++ 结束 + +- +- ++ ++ + FinishedViewStep + +- +- Finish +- @label +- 结束 ++ ++ Finish ++ @label ++ 结束 + +- +- ++ ++ + FormatPartitionJob + +- +- Format partition %1 (file system: %2, size: %3 MiB) on %4 +- @title +- 格式化在 %4 的分区 %1 (文件系统:%2,大小:%3 MB) ++ ++ Format partition %1 (file system: %2, size: %3 MiB) on %4 ++ @title ++ 格式化在 %4 的分区 %1 (文件系统:%2,大小:%3 MB) + + +- +- Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> +- @info +- 以文件系统 <strong>%2</strong> 格式化 <strong>%3MB</strong> 的分区 <strong>%1</strong> ++ ++ Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> ++ @info ++ 以文件系统 <strong>%2</strong> 格式化 <strong>%3MB</strong> 的分区 <strong>%1</strong> + + +- +- %1 (%2) +- partition label %1 (device path %2) +- %1(%2) ++ ++ %1 (%2) ++ partition label %1 (device path %2) ++ %1(%2) + + +- +- Formatting partition %1 with file system %2… +- @status +- 正在使用 %2 文件系统格式化分区 %1… ++ ++ Formatting partition %1 with file system %2… ++ @status ++ 正在使用 %2 文件系统格式化分区 %1… + + +- +- The installer failed to format partition %1 on disk '%2'. +- 安装程序格式化磁盘“%2”上的分区 %1 失败。 ++ ++ The installer failed to format partition %1 on disk '%2'. ++ 安装程序格式化磁盘“%2”上的分区 %1 失败。 + +- +- ++ ++ + GeneralRequirements + +- +- Please ensure the system has at least %1 GiB available drive space. +- 请确保系统有至少 %1 GiB 可用磁盘空间。 ++ ++ Please ensure the system has at least %1 GiB available drive space. ++ 请确保系统有至少 %1 GiB 可用磁盘空间。 + + +- +- Available drive space is all of the hard disks and SSDs connected to the system. +- 可用驱动器空间是连接到系统的所有硬盘和 SSD。 ++ ++ Available drive space is all of the hard disks and SSDs connected to the system. ++ 可用驱动器空间是连接到系统的所有硬盘和 SSD。 + + +- +- There is not enough drive space. At least %1 GiB is required. +- 没有足够的磁盘空间。至少需要 %1 GB。 ++ ++ There is not enough drive space. At least %1 GiB is required. ++ 没有足够的磁盘空间。至少需要 %1 GB。 + + +- +- has at least %1 GiB working memory +- 至少 %1 GB 可用内存 ++ ++ has at least %1 GiB working memory ++ 至少 %1 GB 可用内存 + + +- +- The system does not have enough working memory. At least %1 GiB is required. +- 系统没有足够的内存。至少需要 %1 GB。 ++ ++ The system does not have enough working memory. At least %1 GiB is required. ++ 系统没有足够的内存。至少需要 %1 GB。 + + +- +- is plugged in to a power source +- 已连接到电源 ++ ++ is plugged in to a power source ++ 已连接到电源 + + +- +- The system is not plugged in to a power source. +- 系统未连接到电源。 ++ ++ The system is not plugged in to a power source. ++ 系统未连接到电源。 + + +- +- is connected to the Internet +- 已连接到互联网 ++ ++ is connected to the Internet ++ 已连接到互联网 + + +- +- The system is not connected to the Internet. +- 系统未连接到互联网。 ++ ++ The system is not connected to the Internet. ++ 系统未连接到互联网。 + + +- +- is running the installer as an administrator (root) +- 正以管理员(root)权限运行安装器 ++ ++ is running the installer as an administrator (root) ++ 正以管理员(root)权限运行安装器 + + +- +- The setup program is not running with administrator rights. +- 安装器未以管理员权限运行 ++ ++ The setup program is not running with administrator rights. ++ 安装器未以管理员权限运行 + + +- +- The installer is not running with administrator rights. +- 安装器未以管理员权限运行 ++ ++ The installer is not running with administrator rights. ++ 安装器未以管理员权限运行 + + +- +- has a screen large enough to show the whole installer +- 有一个足够大的屏幕来显示整个安装器 ++ ++ has a screen large enough to show the whole installer ++ 有一个足够大的屏幕来显示整个安装器 + + +- +- The screen is too small to display the setup program. +- 屏幕太小无法显示安装程序。 ++ ++ The screen is too small to display the setup program. ++ 屏幕太小无法显示安装程序。 + + +- +- The screen is too small to display the installer. +- 屏幕不能完整显示安装器。 ++ ++ The screen is too small to display the installer. ++ 屏幕不能完整显示安装器。 + + +- +- is always false +- ++ ++ is always false ++ + + +- +- The computer says no. +- ++ ++ The computer says no. ++ + + +- +- is always false (slowly) +- ++ ++ is always false (slowly) ++ + + +- +- The computer says no (slowly). +- ++ ++ The computer says no (slowly). ++ + + +- +- is always true +- ++ ++ is always true ++ + + +- +- The computer says yes. +- ++ ++ The computer says yes. ++ + + +- +- is always true (slowly) +- ++ ++ is always true (slowly) ++ + + +- +- The computer says yes (slowly). +- ++ ++ The computer says yes (slowly). ++ + + +- +- is checked three times. +- 已检测了 3 次。 ++ ++ is checked three times. ++ 已检测了 3 次。 + + +- +- The snark has not been checked three times. +- The (some mythological beast) has not been checked three times. +- snark 没有检查三次。 ++ ++ The snark has not been checked three times. ++ The (some mythological beast) has not been checked three times. ++ snark 没有检查三次。 + +- +- ++ ++ + HostInfoJob + +- +- Collecting information about your machine… +- @status +- 正在收集此计算机的信息… ++ ++ Collecting information about your machine… ++ @status ++ 正在收集此计算机的信息… + +- +- ++ ++ + IDJob + +- +- +- +- +- OEM Batch Identifier +- OEM批量标识 ++ ++ ++ ++ ++ OEM Batch Identifier ++ OEM批量标识 + + +- +- Could not create directories <code>%1</code>. +- 无法创建目录<code>%1</code>。 ++ ++ Could not create directories <code>%1</code>. ++ 无法创建目录<code>%1</code>。 + + +- +- Could not open file <code>%1</code>. +- 无法打开文件<code>%1</code>。 ++ ++ Could not open file <code>%1</code>. ++ 无法打开文件<code>%1</code>。 + + +- +- Could not write to file <code>%1</code>. +- 无法写入文件<code>%1</code>。 ++ ++ Could not write to file <code>%1</code>. ++ 无法写入文件<code>%1</code>。 + +- +- ++ ++ + InitcpioJob + +- +- Creating initramfs with mkinitcpio… +- @status +- 正在用 mkinitcpio 创建 initramfs… ++ ++ Creating initramfs with mkinitcpio… ++ @status ++ 正在用 mkinitcpio 创建 initramfs… + +- +- ++ ++ + InitramfsJob + +- +- Creating initramfs… +- @status +- 正在创建 initramfs… ++ ++ Creating initramfs… ++ @status ++ 正在创建 initramfs… + +- +- ++ ++ + InteractiveTerminalPage + +- +- Konsole not installed. +- @error +- 未安装 Konsole 。 ++ ++ Konsole not installed. ++ @error ++ 未安装 Konsole 。 + + +- +- Please install KDE Konsole and try again! +- @info +- 请安装 KDE Konsole 后重试! ++ ++ Please install KDE Konsole and try again! ++ @info ++ 请安装 KDE Konsole 后重试! + + +- +- Executing script: &nbsp;<code>%1</code> +- @info +- 正在运行脚本:&nbsp;<code>%1</code> ++ ++ Executing script: &nbsp;<code>%1</code> ++ @info ++ 正在运行脚本:&nbsp;<code>%1</code> + +- +- ++ ++ + InteractiveTerminalViewStep + +- +- Script +- @label +- 脚本 ++ ++ Script ++ @label ++ 脚本 + +- +- ++ ++ + KeyboardQmlViewStep + +- +- Keyboard +- @label +- 键盘 ++ ++ Keyboard ++ @label ++ 键盘 + +- +- ++ ++ + KeyboardViewStep + +- +- Keyboard +- @label +- 键盘 ++ ++ Keyboard ++ @label ++ 键盘 + +- +- ++ ++ + LCLocaleDialog + +- +- System Locale Setting +- @title +- 系统区域设置 ++ ++ System Locale Setting ++ @title ++ 系统区域设置 + + +- +- The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. +- @info +- 系统语言区域设置会影响部份命令行用户界面的语言及字符集。<br/>目前的设置为 <strong>%1</strong>。 ++ ++ The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. ++ @info ++ 系统语言区域设置会影响部份命令行用户界面的语言及字符集。<br/>目前的设置为 <strong>%1</strong>。 + + +- +- &Cancel +- @button +- 取消(&C) ++ ++ &Cancel ++ @button ++ 取消(&C) + + +- +- &OK +- @button +- &确定 ++ ++ &OK ++ @button ++ &确定 + +- +- ++ ++ + LOSHJob + +- +- Configuring encrypted swap. +- 配置加密交换分区。 ++ ++ Configuring encrypted swap. ++ 配置加密交换分区。 + + +- +- No target system available. +- 没有可用的目标系统。 ++ ++ No target system available. ++ 没有可用的目标系统。 + + +- +- No rootMountPoint is set. +- 没有设定 root 挂载点。 ++ ++ No rootMountPoint is set. ++ 没有设定 root 挂载点。 + + +- +- No configFilePath is set. +- 未设置配置文件路径。 ++ ++ No configFilePath is set. ++ 未设置配置文件路径。 + +- +- ++ ++ + LicensePage + +- +- <h1>License Agreement</h1> +- <h1>许可证</h1> ++ ++ <h1>License Agreement</h1> ++ <h1>许可证</h1> + + +- +- I accept the terms and conditions above. +- @info +- 我同意如上条款。 ++ ++ I accept the terms and conditions above. ++ @info ++ 我同意如上条款。 + + +- +- Please review the End User License Agreements (EULAs). +- @info +- 请查阅最终用户许可协议 (EULAs)。 ++ ++ Please review the End User License Agreements (EULAs). ++ @info ++ 请查阅最终用户许可协议 (EULAs)。 + + +- +- This setup procedure will install proprietary software that is subject to licensing terms. +- @info +- 此安装过程会安装受许可条款约束的专有软件。 ++ ++ This setup procedure will install proprietary software that is subject to licensing terms. ++ @info ++ 此安装过程会安装受许可条款约束的专有软件。 + + +- +- If you do not agree with the terms, the setup procedure cannot continue. +- @info +- 如果您不同意这些条款,安装过程将无法继续。 ++ ++ If you do not agree with the terms, the setup procedure cannot continue. ++ @info ++ 如果您不同意这些条款,安装过程将无法继续。 + + +- +- This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. +- @info +- 此安装过程会安装受许可条款约束的专有软件,用于提供额外功能和提升用户体验。 ++ ++ This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. ++ @info ++ 此安装过程会安装受许可条款约束的专有软件,用于提供额外功能和提升用户体验。 + + +- +- If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. +- @info +- 如果您不同意这些条款,专有软件不会被安装,相应的开源软件替代品将被安装。 ++ ++ If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. ++ @info ++ 如果您不同意这些条款,专有软件不会被安装,相应的开源软件替代品将被安装。 + +- +- ++ ++ + LicenseViewStep + +- +- License +- @label +- 许可证 ++ ++ License ++ @label ++ 许可证 + +- +- ++ ++ + LicenseWidget + +- +- URL: %1 +- @label +- URL: %1 ++ ++ URL: %1 ++ @label ++ URL: %1 + + +- +- <strong>%1 driver</strong><br/>by %2 +- @label, %1 is product name, %2 is product vendor +- %1 is an untranslatable product name, example: Creative Audigy driver +- <strong>%1 驱动程序</strong><br/>由 %2 提供 ++ ++ <strong>%1 driver</strong><br/>by %2 ++ @label, %1 is product name, %2 is product vendor ++ %1 is an untranslatable product name, example: Creative Audigy driver ++ <strong>%1 驱动程序</strong><br/>由 %2 提供 + + +- +- <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- %1 is usually a vendor name, example: Nvidia graphics driver +- <strong>%1 显卡驱动程序</strong><br/><font color="Grey">由 %2 提供</font> ++ ++ <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ %1 is usually a vendor name, example: Nvidia graphics driver ++ <strong>%1 显卡驱动程序</strong><br/><font color="Grey">由 %2 提供</font> + + +- +- <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 浏览器插件</strong><br/><font color="Grey">由 %2 提供</font> ++ ++ <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 浏览器插件</strong><br/><font color="Grey">由 %2 提供</font> + + +- +- <strong>%1 codec</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 编解码器</strong><br/><font color="Grey">由 %2 提供</font> ++ ++ <strong>%1 codec</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 编解码器</strong><br/><font color="Grey">由 %2 提供</font> + + +- +- <strong>%1 package</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 软件包</strong><br/><font color="Grey">由 %2 提供</font> ++ ++ <strong>%1 package</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 软件包</strong><br/><font color="Grey">由 %2 提供</font> + + +- +- <strong>%1</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1</strong><br/><font color="Grey">由 %2 提供</font> ++ ++ <strong>%1</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1</strong><br/><font color="Grey">由 %2 提供</font> + + +- +- File: %1 +- @label +- 文件:%1 ++ ++ File: %1 ++ @label ++ 文件:%1 + + +- +- Hide the license text +- @tooltip +- 隐藏许可证文本 ++ ++ Hide the license text ++ @tooltip ++ 隐藏许可证文本 + + +- +- Show the license text +- @tooltip +- 显示协议文本 ++ ++ Show the license text ++ @tooltip ++ 显示协议文本 + + +- +- Open the license agreement in browser +- @tooltip +- 在浏览器中打开许可协议 ++ ++ Open the license agreement in browser ++ @tooltip ++ 在浏览器中打开许可协议 + +- +- ++ ++ + LocalePage + +- +- Region: +- @label +- 地区: ++ ++ Region: ++ @label ++ 地区: + + +- +- Zone: +- @label +- 区域: ++ ++ Zone: ++ @label ++ 区域: + + +- +- +- &Change… +- @button +- 更改 (&C) ++ ++ ++ &Change… ++ @button ++ 更改 (&C) + +- +- ++ ++ + LocaleQmlViewStep + +- +- Location +- @label +- 位置 ++ ++ Location ++ @label ++ 位置 + +- +- ++ ++ + LocaleTests + +- +- Quit +- 退出 ++ ++ Quit ++ 退出 + +- +- ++ ++ + LocaleViewStep + +- +- Location +- @label +- 位置 ++ ++ Location ++ @label ++ 位置 + +- +- ++ ++ + LuksBootKeyFileJob + +- +- Configuring LUKS key file. +- 配置 LUKS key 文件。 ++ ++ Configuring LUKS key file. ++ 配置 LUKS key 文件。 + + +- +- +- No partitions are defined. +- 未定义分区。 ++ ++ ++ No partitions are defined. ++ 未定义分区。 + + +- +- +- Encrypted rootfs setup error +- 加密根文件系时配置错误 ++ ++ ++ Encrypted rootfs setup error ++ 加密根文件系时配置错误 + + +- +- Root partition %1 is LUKS but no passphrase has been set. +- 根分区%1为LUKS但没有设置密钥。 ++ ++ Root partition %1 is LUKS but no passphrase has been set. ++ 根分区%1为LUKS但没有设置密钥。 + + +- +- Could not create LUKS key file for root partition %1. +- 无法创建根分区%1的LUKS密钥文件。 ++ ++ Could not create LUKS key file for root partition %1. ++ 无法创建根分区%1的LUKS密钥文件。 + +- +- ++ ++ + MachineIdJob + +- +- Generate machine-id. +- 生成 machine-id。 ++ ++ Generate machine-id. ++ 生成 machine-id。 + + +- +- Configuration Error +- 配置错误 ++ ++ Configuration Error ++ 配置错误 + + +- +- No root mount point is set for MachineId. +- MachineId未配置根挂载点/ ++ ++ No root mount point is set for MachineId. ++ MachineId未配置根挂载点/ + + +- +- +- +- +- File not found +- 找不到文件 ++ ++ ++ ++ ++ File not found ++ 找不到文件 + + +- +- Path <pre>%1</pre> must be an absolute path. +- 路径 <pre>%1</pre> 必须是绝对路径。 ++ ++ Path <pre>%1</pre> must be an absolute path. ++ 路径 <pre>%1</pre> 必须是绝对路径。 + + +- +- Could not create new random file <pre>%1</pre>. +- 无法创建新的随机文件 <pre>%1</pre>. ++ ++ Could not create new random file <pre>%1</pre>. ++ 无法创建新的随机文件 <pre>%1</pre>. + +- +- ++ ++ + Map + +- +- Timezone: %1 +- @label +- 时区: %1 ++ ++ Timezone: %1 ++ @label ++ 时区: %1 + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @info +- 请在地图上选择您的首选位置,安装程序可以为您提供可参考的区域 ++ @info ++ 请在地图上选择您的首选位置,安装程序可以为您提供可参考的区域 + 设置和时区设置。 您可以在下面微调推荐的设置。 拖动以搜索地图,然后 + 用 +/- 按钮进行放大/缩小,或使用鼠标滚动进行缩放。 + +- +- ++ ++ + Map-qt6 + +- +- Timezone: %1 +- @label +- 时区: %1 ++ ++ Timezone: %1 ++ @label ++ 时区: %1 + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @label +- 请在地图上选择您的首选位置,安装程序可以为您提供可参考的区域 ++ @label ++ 请在地图上选择您的首选位置,安装程序可以为您提供可参考的区域 + 设置和时区设置。 您可以在下面微调推荐的设置。 拖动以搜索地图,然后 + 用 +/- 按钮进行放大/缩小,或使用鼠标滚动进行缩放。 + +- +- ++ ++ + NetInstallViewStep + +- +- Package selection +- 软件包选择 ++ ++ Package selection ++ 软件包选择 + + +- +- Office software +- 办公软件 ++ ++ Office software ++ 办公软件 + + +- +- Office package +- 办公软件包 ++ ++ Office package ++ 办公软件包 + + +- +- Browser software +- 浏览器软件 ++ ++ Browser software ++ 浏览器软件 + + +- +- Browser package +- 浏览器安装包 ++ ++ Browser package ++ 浏览器安装包 + + +- +- Web browser +- 网页浏览器 ++ ++ Web browser ++ 网页浏览器 + + +- +- Kernel +- label for netinstall module, Linux kernel +- 内核 ++ ++ Kernel ++ label for netinstall module, Linux kernel ++ 内核 + + +- +- Services +- label for netinstall module, system services +- 服务 ++ ++ Services ++ label for netinstall module, system services ++ 服务 + + +- +- Login +- label for netinstall module, choose login manager +- 登录 ++ ++ Login ++ label for netinstall module, choose login manager ++ 登录 + + +- +- Desktop +- label for netinstall module, choose desktop environment +- 桌面 ++ ++ Desktop ++ label for netinstall module, choose desktop environment ++ 桌面 + + +- +- Applications +- 应用程序 ++ ++ Applications ++ 应用程序 + + +- +- Communication +- label for netinstall module +- 通讯 ++ ++ Communication ++ label for netinstall module ++ 通讯 + + +- +- Development +- label for netinstall module +- 开发 ++ ++ Development ++ label for netinstall module ++ 开发 + + +- +- Office +- label for netinstall module +- 办公 ++ ++ Office ++ label for netinstall module ++ 办公 + + +- +- Multimedia +- label for netinstall module +- 多媒体 ++ ++ Multimedia ++ label for netinstall module ++ 多媒体 + + +- +- Internet +- label for netinstall module +- 互联网 ++ ++ Internet ++ label for netinstall module ++ 互联网 + + +- +- Theming +- label for netinstall module +- 主题化 ++ ++ Theming ++ label for netinstall module ++ 主题化 + + +- +- Gaming +- label for netinstall module +- 游戏 ++ ++ Gaming ++ label for netinstall module ++ 游戏 + + +- +- Utilities +- label for netinstall module +- 实用工具 ++ ++ Utilities ++ label for netinstall module ++ 实用工具 + +- +- ++ ++ + NotesQmlViewStep + +- +- Notes +- 备注 ++ ++ Notes ++ 备注 + +- +- ++ ++ + OEMPage + +- +- Ba&tch: +- 批量(&T): ++ ++ Ba&tch: ++ 批量(&T): + + +- +- <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> +- <html><head/><body><p>请输入批量标识。它会被保存到目标系统上。</p></body></html> ++ ++ <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> ++ <html><head/><body><p>请输入批量标识。它会被保存到目标系统上。</p></body></html> + + +- +- <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> +- <html><head/><body><h1>OEM 配置信息</h1><p>Calamares会使用OEM配置信息来配置目标系统。</p></body></html> ++ ++ <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> ++ <html><head/><body><h1>OEM 配置信息</h1><p>Calamares会使用OEM配置信息来配置目标系统。</p></body></html> + +- +- ++ ++ + OEMViewStep + +- +- OEM Configuration +- OEM 配置 ++ ++ OEM Configuration ++ OEM 配置 + + +- +- Set the OEM Batch Identifier to <code>%1</code>. +- 设置OEM批量标识为 <code>%1</code>. ++ ++ Set the OEM Batch Identifier to <code>%1</code>. ++ 设置OEM批量标识为 <code>%1</code>. + +- +- ++ ++ + Offline + +- +- Select your preferred region, or use the default settings +- @label +- 选择您的首选区域,或使用默认设置 ++ ++ Select your preferred region, or use the default settings ++ @label ++ 选择您的首选区域,或使用默认设置 + + +- +- +- +- Timezone: %1 +- @label +- 时区: %1 ++ ++ ++ ++ Timezone: %1 ++ @label ++ 时区: %1 + + +- +- Select your preferred zone within your region +- @label +- 在您的区域内选择您的首选时区 ++ ++ Select your preferred zone within your region ++ @label ++ 在您的区域内选择您的首选时区 + + +- +- Zones +- @button +- 区域 ++ ++ Zones ++ @button ++ 区域 + + +- +- You can fine-tune language and locale settings below +- @label +- 您可以在下面微调语言和区域设置 ++ ++ You can fine-tune language and locale settings below ++ @label ++ 您可以在下面微调语言和区域设置 + +- +- ++ ++ + Offline-qt6 + +- +- Select your preferred region, or use the default settings +- @label +- 选择您的首选区域,或使用默认设置 ++ ++ Select your preferred region, or use the default settings ++ @label ++ 选择您的首选区域,或使用默认设置 + + +- +- +- +- Timezone: %1 +- @label +- 时区: %1 ++ ++ ++ ++ Timezone: %1 ++ @label ++ 时区: %1 + + +- +- Select your preferred zone within your region +- @label +- 在您的区域内选择您的首选时区 ++ ++ Select your preferred zone within your region ++ @label ++ 在您的区域内选择您的首选时区 + + +- +- Zones +- @button +- 区域 ++ ++ Zones ++ @button ++ 区域 + + +- +- You can fine-tune language and locale settings below +- @label +- 您可以在下面微调语言和区域设置 ++ ++ You can fine-tune language and locale settings below ++ @label ++ 您可以在下面微调语言和区域设置 + +- +- ++ ++ + PWQ + +- +- Password is too short +- 密码太短 ++ ++ Password is too short ++ 密码太短 + + +- +- Password is too long +- 密码太长 ++ ++ Password is too long ++ 密码太长 + + +- +- Password is too weak +- 密码强度太弱 ++ ++ Password is too weak ++ 密码强度太弱 + + +- +- Memory allocation error when setting '%1' +- 设置“%1”时发生内存分配错误 ++ ++ Memory allocation error when setting '%1' ++ 设置“%1”时发生内存分配错误 + + +- +- Memory allocation error +- 内存分配错误 ++ ++ Memory allocation error ++ 内存分配错误 + + +- +- The password is the same as the old one +- 新密码和老密码一致 ++ ++ The password is the same as the old one ++ 新密码和老密码一致 + + +- +- The password is a palindrome +- 新密码为回文 ++ ++ The password is a palindrome ++ 新密码为回文 + + +- +- The password differs with case changes only +- 新密码和老密码只有大小写区别 ++ ++ The password differs with case changes only ++ 新密码和老密码只有大小写区别 + + +- +- The password is too similar to the old one +- 新密码和老密码过于相似 ++ ++ The password is too similar to the old one ++ 新密码和老密码过于相似 + + +- +- The password contains the user name in some form +- 新密码包含用户名 ++ ++ The password contains the user name in some form ++ 新密码包含用户名 + + +- +- The password contains words from the real name of the user in some form +- 新密码包含用户真实姓名 ++ ++ The password contains words from the real name of the user in some form ++ 新密码包含用户真实姓名 + + +- +- The password contains forbidden words in some form +- 新密码包含不允许使用的词组 ++ ++ The password contains forbidden words in some form ++ 新密码包含不允许使用的词组 + + +- +- The password contains fewer than %n digits +- +- 密码包含的数字少于 %n 个 +- ++ ++ The password contains fewer than %n digits ++ ++ 密码包含的数字少于 %n 个 ++ + + +- +- The password contains too few digits +- 新密码包含太少数字 ++ ++ The password contains too few digits ++ 新密码包含太少数字 + + +- +- The password contains fewer than %n uppercase letters +- +- 密码包含的大写字母少于 %n 个 +- ++ ++ The password contains fewer than %n uppercase letters ++ ++ 密码包含的大写字母少于 %n 个 ++ + + +- +- The password contains too few uppercase letters +- 新密码包含太少大写字母 ++ ++ The password contains too few uppercase letters ++ 新密码包含太少大写字母 + + +- +- The password contains fewer than %n lowercase letters +- +- 密码包含的小写字母少于 %n 个 +- ++ ++ The password contains fewer than %n lowercase letters ++ ++ 密码包含的小写字母少于 %n 个 ++ + + +- +- The password contains too few lowercase letters +- 新密码包含太少小写字母 ++ ++ The password contains too few lowercase letters ++ 新密码包含太少小写字母 + + +- +- The password contains fewer than %n non-alphanumeric characters +- +- 密码包含的非字母数字字符少于 %n 个 +- ++ ++ The password contains fewer than %n non-alphanumeric characters ++ ++ 密码包含的非字母数字字符少于 %n 个 ++ + + +- +- The password contains too few non-alphanumeric characters +- 新密码包含太少非字母/数字字符 ++ ++ The password contains too few non-alphanumeric characters ++ 新密码包含太少非字母/数字字符 + + +- +- The password is shorter than %n characters +- +- 密码少于 %n 个字符 +- ++ ++ The password is shorter than %n characters ++ ++ 密码少于 %n 个字符 ++ + + +- +- The password is too short +- 新密码过短 ++ ++ The password is too short ++ 新密码过短 + + +- +- The password is a rotated version of the previous one +- 此密码是上一个的字序调整版本 ++ ++ The password is a rotated version of the previous one ++ 此密码是上一个的字序调整版本 + + +- +- The password contains fewer than %n character classes +- +- 新密码包含字符类型少于 %n 个 +- ++ ++ The password contains fewer than %n character classes ++ ++ 新密码包含字符类型少于 %n 个 ++ + + +- +- The password does not contain enough character classes +- 新密码包含太少字符类型 ++ ++ The password does not contain enough character classes ++ 新密码包含太少字符类型 + + +- +- The password contains more than %n same characters consecutively +- +- 新密码包含超过 %n 个连续的相同字符 +- ++ ++ The password contains more than %n same characters consecutively ++ ++ 新密码包含超过 %n 个连续的相同字符 ++ + + +- +- The password contains too many same characters consecutively +- 新密码包含过多连续的相同字符 ++ ++ The password contains too many same characters consecutively ++ 新密码包含过多连续的相同字符 + + +- +- The password contains more than %n characters of the same class consecutively +- +- 新密码包含超过 %n 个连续的同类型字符 +- ++ ++ The password contains more than %n characters of the same class consecutively ++ ++ 新密码包含超过 %n 个连续的同类型字符 ++ + + +- +- The password contains too many characters of the same class consecutively +- 新密码包含过多连续的同类型字符 ++ ++ The password contains too many characters of the same class consecutively ++ 新密码包含过多连续的同类型字符 + + +- +- The password contains monotonic sequence longer than %n characters +- +- 新密码包含超过 %n 个字符长度的单调序列 +- ++ ++ The password contains monotonic sequence longer than %n characters ++ ++ 新密码包含超过 %n 个字符长度的单调序列 ++ + + +- +- The password contains too long of a monotonic character sequence +- 新密码包含过长的单调序列 ++ ++ The password contains too long of a monotonic character sequence ++ 新密码包含过长的单调序列 + + +- +- No password supplied +- 未输入密码 ++ ++ No password supplied ++ 未输入密码 + + +- +- Cannot obtain random numbers from the RNG device +- 无法从随机数生成器 (RNG) 设备获取随机数 ++ ++ Cannot obtain random numbers from the RNG device ++ 无法从随机数生成器 (RNG) 设备获取随机数 + + +- +- Password generation failed - required entropy too low for settings +- 无法生成密码 - 熵值过低 ++ ++ Password generation failed - required entropy too low for settings ++ 无法生成密码 - 熵值过低 + + +- +- The password fails the dictionary check - %1 +- 新密码无法通过字典检查 - %1 ++ ++ The password fails the dictionary check - %1 ++ 新密码无法通过字典检查 - %1 + + +- +- The password fails the dictionary check +- 新密码无法通过字典检查 ++ ++ The password fails the dictionary check ++ 新密码无法通过字典检查 + + +- +- Unknown setting - %1 +- 未知设置 - %1 ++ ++ Unknown setting - %1 ++ 未知设置 - %1 + + +- +- Unknown setting +- 未知设置 ++ ++ Unknown setting ++ 未知设置 + + +- +- Bad integer value of setting - %1 +- 设置的整数值非法 - %1 ++ ++ Bad integer value of setting - %1 ++ 设置的整数值非法 - %1 + + +- +- Bad integer value +- 设置的整数值非法 ++ ++ Bad integer value ++ 设置的整数值非法 + + +- +- Setting %1 is not of integer type +- 设定值 %1 不是整数类型 ++ ++ Setting %1 is not of integer type ++ 设定值 %1 不是整数类型 + + +- +- Setting is not of integer type +- 设定值不是整数类型 ++ ++ Setting is not of integer type ++ 设定值不是整数类型 + + +- +- Setting %1 is not of string type +- 设定值 %1 不是字符串类型 ++ ++ Setting %1 is not of string type ++ 设定值 %1 不是字符串类型 + + +- +- Setting is not of string type +- 设定值不是字符串类型 ++ ++ Setting is not of string type ++ 设定值不是字符串类型 + + +- +- Opening the configuration file failed +- 无法打开配置文件 ++ ++ Opening the configuration file failed ++ 无法打开配置文件 + + +- +- The configuration file is malformed +- 配置文件格式不正确 ++ ++ The configuration file is malformed ++ 配置文件格式不正确 + + +- +- Fatal failure +- 致命错误 ++ ++ Fatal failure ++ 致命错误 + + +- +- Unknown error +- 未知错误 ++ ++ Unknown error ++ 未知错误 + +- +- ++ ++ + PackageChooserPage + +- +- Product Name +- 产品名称 ++ ++ Product Name ++ 产品名称 + + +- +- TextLabel +- 文本标签 ++ ++ TextLabel ++ 文本标签 + + +- +- Long Product Description +- 长产品描述 ++ ++ Long Product Description ++ 长产品描述 + + +- +- Package Selection +- 软件包选择 ++ ++ Package Selection ++ 软件包选择 + + +- +- Please pick a product from the list. The selected product will be installed. +- 请在列表中选一个产品。被选中的产品将会被安装。 ++ ++ Please pick a product from the list. The selected product will be installed. ++ 请在列表中选一个产品。被选中的产品将会被安装。 + +- +- ++ ++ + PackageModel + +- +- Name +- 名称 ++ ++ Name ++ 名称 + + +- +- Description +- 描述 ++ ++ Description ++ 描述 + +- +- ++ ++ + Page_Keyboard + +- +- Keyboard model: +- 键盘型号: ++ ++ Keyboard model: ++ 键盘型号: + + +- +- Type here to test your keyboard +- 在此处输入以测试键盘 ++ ++ Type here to test your keyboard ++ 在此处输入以测试键盘 + + +- +- Switch Keyboard: +- shortcut for switching between keyboard layouts +- 切换键盘: ++ ++ Switch Keyboard: ++ shortcut for switching between keyboard layouts ++ 切换键盘: + +- +- ++ ++ + Page_UserSetup + +- +- What is your name? +- 您的姓名? ++ ++ your name ++ 姓名 ++ ++ ++ ++ ++ Your Full Name ++ 全名 + + +- +- Your Full Name +- 全名 ++ ++ user name ++ 用户名 + + +- +- What name do you want to use to log in? +- 您想要使用的登录用户名是? ++ ++ ++ login ++ 登录 + + +- +- login +- 登录 ++ ++ computer name ++ 计算机名称 + + +- +- What is the name of this computer? +- 计算机名称为? ++ ++ What is your name? ++ 您的姓名? + + +- +- <small>This name will be used if you make the computer visible to others on a network.</small> +- <small>将计算机设置为对其他网络上计算机可见时将使用此名称。</small> ++ ++ What name do you want to use to log in? ++ 您想要使用的登录用户名是? + + +- +- Computer Name +- 计算机名称 ++ ++ What is the name of this computer? ++ 计算机名称为? + + +- +- Choose a password to keep your account safe. +- 选择一个密码来保证您的账户安全。 ++ ++ ++ <small>This name will be used if you make the computer visible to others on a network.</small> ++ <small>将计算机设置为对其他网络上计算机可见时将使用此名称。</small> + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> +- <small>输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。</small> ++ ++ ++ Computer Name ++ 计算机名称 + + +- +- +- Password +- 密码 ++ ++ ++ Choose a password to keep your account safe. ++ 选择一个密码来保证您的账户安全。 + + +- +- +- Repeat Password +- 重复密码 ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ <small>输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。</small> + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 ++ ++ ++ ++ ++ Password ++ 密码 + + +- +- Require strong passwords. +- 要求使用强密码。 ++ ++ ++ ++ ++ Repeat Password ++ 重复密码 + + +- +- Log in automatically without asking for the password. +- 不询问密码自动登录。 ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 + + +- +- Use the same password for the administrator account. +- 为管理员帐号使用同样的密码。 ++ ++ ++ Require strong passwords. ++ 要求使用强密码。 + + +- +- Choose a password for the administrator account. +- 选择管理员账户的密码。 ++ ++ ++ Log in automatically without asking for the password. ++ 不询问密码自动登录。 + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors.</small> +- <small>输入相同密码两次,以检查输入错误。</small> ++ ++ Use the same password for the administrator account. ++ 为管理员帐号使用同样的密码。 + +- +- ++ ++ ++ ++ Use Active Directory ++ ++ ++ ++ ++ ++ Domain: ++ ++ ++ ++ ++ ++ Domain Administrator: ++ ++ ++ ++ ++ ++ Password: ++ ++ ++ ++ ++ ++ IP Address (optional): ++ ++ ++ ++ ++ Use the same password for the root account. ++ 为管理员帐号使用同样的密码。 ++ ++ ++ ++ ++ Choose a password for the administrator account. ++ 选择管理员账户的密码。 ++ ++ ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ <small>输入相同密码两次,以检查输入错误。</small> ++ ++ ++ + PartitionLabelsView + +- +- Root +- 根目录 ++ ++ Root ++ 根目录 + + +- +- Home +- @label +- 主目录 ++ ++ Home ++ @label ++ 主目录 + + +- +- Boot +- @label +- 引导 ++ ++ Boot ++ @label ++ 引导 + + +- +- EFI system +- @label +- EFI 系统 ++ ++ EFI system ++ @label ++ EFI 系统 + + +- +- Swap +- @label +- 交换 ++ ++ Swap ++ @label ++ 交换 + + +- +- New partition for %1 +- @label +- %1 的新分区 ++ ++ New partition for %1 ++ @label ++ %1 的新分区 + + +- +- New partition +- @label +- 新建分区 ++ ++ New partition ++ @label ++ 新建分区 + + +- +- %1 %2 +- size[number] filesystem[name] +- %1 %2 ++ ++ %1 %2 ++ size[number] filesystem[name] ++ %1 %2 + +- +- ++ ++ + PartitionModel + +- +- +- Free Space +- @title +- 空闲空间 ++ ++ ++ Free Space ++ @title ++ 空闲空间 + + +- +- +- New Partition +- @title +- 新建分区 ++ ++ ++ New Partition ++ @title ++ 新建分区 + + +- +- Name +- @title +- 名称 ++ ++ Name ++ @title ++ 名称 + + +- +- File System +- @title +- 文件系统 ++ ++ File System ++ @title ++ 文件系统 + + +- +- File System Label +- @title +- 文件系统卷标 ++ ++ File System Label ++ @title ++ 文件系统卷标 + + +- +- Mount Point +- @title +- 挂载点 ++ ++ Mount Point ++ @title ++ 挂载点 + + +- +- Size +- @title +- 大小 ++ ++ Size ++ @title ++ 大小 + +- +- ++ ++ + PartitionPage + +- +- Storage de&vice: +- 存储器(&V): ++ ++ Storage de&vice: ++ 存储器(&V): + + +- +- &Revert All Changes +- 撤销所有修改(&R) ++ ++ &Revert All Changes ++ 撤销所有修改(&R) + + +- +- New Partition &Table +- 新建分区表(&T) ++ ++ New Partition &Table ++ 新建分区表(&T) + + +- +- Cre&ate +- 创建 ++ ++ Cre&ate ++ 创建 + + +- +- &Edit +- 编辑(&E) ++ ++ &Edit ++ 编辑(&E) + + +- +- &Delete +- 删除(&D) ++ ++ &Delete ++ 删除(&D) + + +- +- New Volume Group +- 新分卷组 ++ ++ New Volume Group ++ 新分卷组 + + +- +- Resize Volume Group +- 调整分卷组大小 ++ ++ Resize Volume Group ++ 调整分卷组大小 + + +- +- Deactivate Volume Group +- 停用分卷组 ++ ++ Deactivate Volume Group ++ 停用分卷组 + + +- +- Remove Volume Group +- 移除分卷组 ++ ++ Remove Volume Group ++ 移除分卷组 + + +- +- I&nstall boot loader on: +- 安装引导程序至: ++ ++ I&nstall boot loader on: ++ 安装引导程序至: + + +- +- Are you sure you want to create a new partition table on %1? +- 您是否确定要在 %1 上创建新分区表? ++ ++ Are you sure you want to create a new partition table on %1? ++ 您是否确定要在 %1 上创建新分区表? + + +- +- Can not create new partition +- 无法创建新分区 ++ ++ Can not create new partition ++ 无法创建新分区 + + +- +- The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. +- %1上的分区表已经有%2个主分区,并且不能再添加。请删除一个主分区并添加扩展分区。 ++ ++ The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. ++ %1上的分区表已经有%2个主分区,并且不能再添加。请删除一个主分区并添加扩展分区。 + +- +- ++ ++ + PartitionViewStep + +- +- Gathering system information… +- @status +- 正在收集系统信息 ... ++ ++ Gathering system information… ++ @status ++ 正在收集系统信息 ... + + +- +- Partitions +- @label +- 分区 ++ ++ Partitions ++ @label ++ 分区 + + +- +- Install %1 <strong>alongside</strong> another operating system +- @label +- ++ ++ Install %1 <strong>alongside</strong> another operating system ++ @label ++ + + +- +- <strong>Erase</strong> disk and install %1 +- @label +- <strong>擦除</strong>磁盘并安装 %1 ++ ++ <strong>Erase</strong> disk and install %1 ++ @label ++ <strong>擦除</strong>磁盘并安装 %1 + + +- +- <strong>Replace</strong> a partition with %1 +- @label +- 以 %1 <strong>替代</strong>一个分区 ++ ++ <strong>Replace</strong> a partition with %1 ++ @label ++ 以 %1 <strong>替代</strong>一个分区 + + +- +- <strong>Manual</strong> partitioning +- @label +- <strong>手动</strong>分区 ++ ++ <strong>Manual</strong> partitioning ++ @label ++ <strong>手动</strong>分区 + + +- +- Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) +- @info +- ++ ++ Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) ++ @info ++ + + +- +- <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 +- @info +- ++ ++ <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 ++ @info ++ + + +- +- <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 +- @info +- ++ ++ <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 ++ @info ++ + + +- +- <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) +- @info +- ++ ++ <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) ++ @info ++ + + +- +- Disk <strong>%1</strong> (%2) +- @info +- 磁盘 <strong>%1</strong> (%2) ++ ++ Disk <strong>%1</strong> (%2) ++ @info ++ 磁盘 <strong>%1</strong> (%2) + + +- +- Unsafe partition actions are enabled. +- 已启用不安全的分区操作。 ++ ++ Unsafe partition actions are enabled. ++ 已启用不安全的分区操作。 + + +- +- Partitioning is configured to <b>always</b> fail. +- 分区操作被配置为<b>总是</b>失败。 ++ ++ Partitioning is configured to <b>always</b> fail. ++ 分区操作被配置为<b>总是</b>失败。 + + +- +- No partitions will be changed. +- 不会更改任何分区。 ++ ++ No partitions will be changed. ++ 不会更改任何分区。 + + +- +- Current: +- @label +- 当前: ++ ++ Current: ++ @label ++ 当前: + + +- +- After: +- @label +- 之后: ++ ++ After: ++ @label ++ 之后: + + +- +- An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. +- 启动 %1 必须需要 EFI 系統分区。<br/><br/>要設定 EFI 系统分区,返回并选择或者建立符合要求的分区。 ++ ++ An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. ++ 启动 %1 必须需要 EFI 系統分区。<br/><br/>要設定 EFI 系统分区,返回并选择或者建立符合要求的分区。 + + +- +- An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. +- EFI系统分区是启动 %1 所必需的。<br/><br/>此 EFI 系统磁盘分区不符合建议。建议返回并选择或创建一个合适的文件系统。 ++ ++ An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. ++ EFI系统分区是启动 %1 所必需的。<br/><br/>此 EFI 系统磁盘分区不符合建议。建议返回并选择或创建一个合适的文件系统。 + + +- +- The filesystem must be mounted on <strong>%1</strong>. +- 文件系统必须挂载于 <strong>%1</strong>。 ++ ++ The filesystem must be mounted on <strong>%1</strong>. ++ 文件系统必须挂载于 <strong>%1</strong>。 + + +- +- The filesystem must have type FAT32. +- 此文件系统必须为FAT32 ++ ++ The filesystem must have type FAT32. ++ 此文件系统必须为FAT32 + + +- +- The filesystem must have flag <strong>%1</strong> set. +- 文件系统必须设置 <strong>%1</strong> 标记。 ++ ++ The filesystem must have flag <strong>%1</strong> set. ++ 文件系统必须设置 <strong>%1</strong> 标记。 + + +- +- +- The filesystem must be at least %1 MiB in size. +- 文件系统必须要有%1 MiB 的大小。 ++ ++ ++ The filesystem must be at least %1 MiB in size. ++ 文件系统必须要有%1 MiB 的大小。 + + +- +- The minimum recommended size for the filesystem is %1 MiB. +- 推荐文件系统的最小尺寸为 %1 MiB。 ++ ++ The minimum recommended size for the filesystem is %1 MiB. ++ 推荐文件系统的最小尺寸为 %1 MiB。 + + +- +- You can continue without setting up an EFI system partition but your system may fail to start. +- 您可以在不设置EFI系统分区的情况下继续,但您的系統可能无法启动。 ++ ++ You can continue without setting up an EFI system partition but your system may fail to start. ++ 您可以在不设置EFI系统分区的情况下继续,但您的系統可能无法启动。 + + +- +- You can continue with this EFI system partition configuration but your system may fail to start. +- 您可以继续此 EFI 系统分区配置,但您的系统可能无法启动。 ++ ++ You can continue with this EFI system partition configuration but your system may fail to start. ++ 您可以继续此 EFI 系统分区配置,但您的系统可能无法启动。 + + +- +- No EFI system partition configured +- 未配置 EFI 系统分区 ++ ++ No EFI system partition configured ++ 未配置 EFI 系统分区 + + +- +- EFI system partition configured incorrectly +- EFI系统分区配置错误 ++ ++ EFI system partition configured incorrectly ++ EFI系统分区配置错误 + + +- +- EFI system partition recommendation +- EFI 系统分区推荐 ++ ++ EFI system partition recommendation ++ EFI 系统分区推荐 + + +- +- Option to use GPT on BIOS +- 在 BIOS 上使用 GPT ++ ++ Option to use GPT on BIOS ++ 在 BIOS 上使用 GPT + + +- +- A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. +- GPT 分区表对所有系统都是最佳选项。此安装程序同时支持 BIOS 系统。<br/><br/>要在 BIOS 上配置 GPT 分区表(如果还没有完成的话),请回到上一步并将分区表设置为 GPT,然后创建 8 MB 的未格式化分区,并启用 <strong>%2</strong> 标记。<br/><br/>要在 BIOS 系统上使用 GPT 分区表启动 %1,必须要有该 8 MB 的未格式化分区。 ++ ++ A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. ++ GPT 分区表对所有系统都是最佳选项。此安装程序同时支持 BIOS 系统。<br/><br/>要在 BIOS 上配置 GPT 分区表(如果还没有完成的话),请回到上一步并将分区表设置为 GPT,然后创建 8 MB 的未格式化分区,并启用 <strong>%2</strong> 标记。<br/><br/>要在 BIOS 系统上使用 GPT 分区表启动 %1,必须要有该 8 MB 的未格式化分区。 + + +- +- Boot partition not encrypted +- 引导分区未加密 ++ ++ Boot partition not encrypted ++ 引导分区未加密 + + +- +- A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. +- 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 ++ ++ A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ++ 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 + + +- +- has at least one disk device available. +- 有至少一个可用的磁盘设备。 ++ ++ has at least one disk device available. ++ 有至少一个可用的磁盘设备。 + + +- +- There are no partitions to install on. +- 无可用于安装的分区。 ++ ++ There are no partitions to install on. ++ 无可用于安装的分区。 + +- +- ++ ++ + PlasmaLnfJob + +- +- Applying Plasma Look-and-Feel… +- @status +- 正在应用 Plasma 观感… ++ ++ Applying Plasma Look-and-Feel… ++ @status ++ 正在应用 Plasma 观感… + + +- +- +- Could not select KDE Plasma Look-and-Feel package +- 无法选中 KDE Plasma 外观主题包 ++ ++ ++ Could not select KDE Plasma Look-and-Feel package ++ 无法选中 KDE Plasma 外观主题包 + +- +- ++ ++ + PlasmaLnfPage + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- 请选择一个 KDE Plasma 桌面外观。你也可以忽略此步骤并在系统安装完成后配置外观。点击外观后可以实时预览效果。 ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ 请选择一个 KDE Plasma 桌面外观。你也可以忽略此步骤并在系统安装完成后配置外观。点击外观后可以实时预览效果。 + + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- 请选择一个 KDE Plasma 桌面外观,可以忽略此步骤并在系统安装完成后配置外观。点击一个外观后可以实时预览效果。 ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ 请选择一个 KDE Plasma 桌面外观,可以忽略此步骤并在系统安装完成后配置外观。点击一个外观后可以实时预览效果。 + +- +- ++ ++ + PlasmaLnfViewStep + +- +- Look-and-Feel +- @label +- 外观主题 ++ ++ Look-and-Feel ++ @label ++ 外观主题 + +- +- ++ ++ ++ PowerManagementInterface ++ ++ ++ Calamares ++ ++ ++ ++ ++ Installation in progress ++ @status ++ ++ ++ ++ + PreserveFiles + +- +- Saving files for later… +- @status +- 保存文件以供日后使用… ++ ++ Saving files for later… ++ @status ++ 保存文件以供日后使用… + + +- +- No files configured to save for later. +- 没有已保存且供日后使用的配置文件。 ++ ++ No files configured to save for later. ++ 没有已保存且供日后使用的配置文件。 + + +- +- Not all of the configured files could be preserved. +- 并不是所有配置文件都可以被保留 ++ ++ Not all of the configured files could be preserved. ++ 并不是所有配置文件都可以被保留 + +- +- ++ ++ + ProcessResult + +- +- ++ ++ + There was no output from the command. +- ++ + 命令没有输出。 + + +- +- ++ ++ + Output: + +- ++ + 输出: + + + +- +- External command crashed. +- 外部命令已崩溃。 ++ ++ External command crashed. ++ 外部命令已崩溃。 + + +- +- Command <i>%1</i> crashed. +- 命令 <i>%1</i> 已崩溃。 ++ ++ Command <i>%1</i> crashed. ++ 命令 <i>%1</i> 已崩溃。 + + +- +- External command failed to start. +- 无法启动外部命令。 ++ ++ External command failed to start. ++ 无法启动外部命令。 + + +- +- Command <i>%1</i> failed to start. +- 无法启动命令 <i>%1</i>。 ++ ++ Command <i>%1</i> failed to start. ++ 无法启动命令 <i>%1</i>。 + + +- +- Internal error when starting command. +- 启动命令时出现内部错误。 ++ ++ Internal error when starting command. ++ 启动命令时出现内部错误。 + + +- +- Bad parameters for process job call. +- 呼叫进程任务出现错误参数 ++ ++ Bad parameters for process job call. ++ 呼叫进程任务出现错误参数 + + +- +- External command failed to finish. +- 外部命令未成功完成。 ++ ++ External command failed to finish. ++ 外部命令未成功完成。 + + +- +- Command <i>%1</i> failed to finish in %2 seconds. +- 命令 <i>%1</i> 未能在 %2 秒内完成。 ++ ++ Command <i>%1</i> failed to finish in %2 seconds. ++ 命令 <i>%1</i> 未能在 %2 秒内完成。 + + +- +- External command finished with errors. +- 外部命令已完成,但出现了错误。 ++ ++ External command finished with errors. ++ 外部命令已完成,但出现了错误。 + + +- +- Command <i>%1</i> finished with exit code %2. +- 命令 <i>%1</i> 以退出代码 %2 完成。 ++ ++ Command <i>%1</i> finished with exit code %2. ++ 命令 <i>%1</i> 以退出代码 %2 完成。 + +- +- ++ ++ + QObject + +- +- %1 (%2) +- %1(%2) ++ ++ %1 (%2) ++ %1(%2) + + +- +- unknown +- @partition info +- 未知 ++ ++ unknown ++ @partition info ++ 未知 + + +- +- extended +- @partition info +- 扩展分区 ++ ++ extended ++ @partition info ++ 扩展分区 + + +- +- unformatted +- @partition info +- 未格式化 ++ ++ unformatted ++ @partition info ++ 未格式化 + + +- +- swap +- @partition info +- 交换分区 ++ ++ swap ++ @partition info ++ 交换分区 + + +- +- +- Default +- 默认 ++ ++ ++ Default ++ 默认 + + +- +- Directory not found +- 找不到目录 ++ ++ Directory not found ++ 找不到目录 + + +- +- Could not create new random file <pre>%1</pre>. +- 无法创建新的随机文件 <pre>%1</pre>. ++ ++ Could not create new random file <pre>%1</pre>. ++ 无法创建新的随机文件 <pre>%1</pre>. + + +- +- No product +- 无产品 ++ ++ No product ++ 无产品 + + +- +- No description provided. +- 未提供描述信息 ++ ++ No description provided. ++ 未提供描述信息 + + +- +- (no mount point) +- (无挂载点) ++ ++ (no mount point) ++ (无挂载点) + + +- +- Unpartitioned space or unknown partition table +- @info +- 尚未分区的空间或分区表未知 ++ ++ Unpartitioned space or unknown partition table ++ @info ++ 尚未分区的空间或分区表未知 + +- +- ++ ++ + Recommended + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- <p>此计算机不满足安装 %1 的某些推荐配置。<br/> ++ <p>此计算机不满足安装 %1 的某些推荐配置。<br/> + 安装可以继续,但是一些特性可能被禁用。</p> + +- +- ++ ++ + RemoveUserJob + +- +- Removing live user from the target system… +- @status +- 正在从目标系统删除 live 用户… ++ ++ Removing live user from the target system… ++ @status ++ 正在从目标系统删除 live 用户… + +- +- ++ ++ + RemoveVolumeGroupJob + +- +- +- Removing Volume Group named %1… +- @status +- 正在移除分卷组 %1… ++ ++ ++ Removing Volume Group named %1… ++ @status ++ 正在移除分卷组 %1… + + +- +- Removing Volume Group named <strong>%1</strong>… +- @status +- 正在移除分卷组 <strong>%1</strong>… ++ ++ Removing Volume Group named <strong>%1</strong>… ++ @status ++ 正在移除分卷组 <strong>%1</strong>… + + +- +- The installer failed to remove a volume group named '%1'. +- 安装器无法移除分卷组 '%1'。 ++ ++ The installer failed to remove a volume group named '%1'. ++ 安装器无法移除分卷组 '%1'。 + +- +- ++ ++ + Requirements + +- +- <p>This computer does not satisfy the minimum requirements for installing %1.<br/> ++ ++ <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> +- <p>此计算机不满足安装 %1 的最低配置。<br/> ++ <p>此计算机不满足安装 %1 的最低配置。<br/> + 安装无法继续。</p> + + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- <p>此计算机不满足安装 %1 的某些推荐配置。<br/> ++ <p>此计算机不满足安装 %1 的某些推荐配置。<br/> + 初始化可以继续,但是一些特性可能被禁用。</p> + +- +- ++ ++ + ResizeFSJob + +- +- Performing file system resize… +- @status +- 正在执行文件系统大小调整… ++ ++ Performing file system resize… ++ @status ++ 正在执行文件系统大小调整… + + +- +- Invalid configuration +- @error +- 无效配置 ++ ++ Invalid configuration ++ @error ++ 无效配置 + + +- +- The file-system resize job has an invalid configuration and will not run. +- @error +- 调整文件系统大小的任务 因为配置文件无效不会被执行。 ++ ++ The file-system resize job has an invalid configuration and will not run. ++ @error ++ 调整文件系统大小的任务 因为配置文件无效不会被执行。 + + +- +- KPMCore not available +- @error +- KPMCore 不可用 ++ ++ KPMCore not available ++ @error ++ KPMCore 不可用 + + +- +- Calamares cannot start KPMCore for the file system resize job. +- @error +- Calamares 无法启动 KPMCore 来完成调整文件系统大小的任务。 ++ ++ Calamares cannot start KPMCore for the file system resize job. ++ @error ++ Calamares 无法启动 KPMCore 来完成调整文件系统大小的任务。 + + +- +- Resize failed. +- @error +- 调整大小失败。 ++ ++ Resize failed. ++ @error ++ 调整大小失败。 + + +- +- The filesystem %1 could not be found in this system, and cannot be resized. +- @info +- 文件系统 %1 未能在此系统上找到,因此无法调整大小。 ++ ++ The filesystem %1 could not be found in this system, and cannot be resized. ++ @info ++ 文件系统 %1 未能在此系统上找到,因此无法调整大小。 + + +- +- The device %1 could not be found in this system, and cannot be resized. +- @info +- 设备 %1 未能在此系统上找到,因此无法调整大小。 ++ ++ The device %1 could not be found in this system, and cannot be resized. ++ @info ++ 设备 %1 未能在此系统上找到,因此无法调整大小。 + + +- +- +- +- +- Resize Failed +- @error +- 调整大小失败 ++ ++ ++ ++ ++ Resize Failed ++ @error ++ 调整大小失败 + + +- +- +- The filesystem %1 cannot be resized. +- @error +- 文件系统 %1 无法被调整大小。 ++ ++ ++ The filesystem %1 cannot be resized. ++ @error ++ 文件系统 %1 无法被调整大小。 + + +- +- +- The device %1 cannot be resized. +- @error +- 设备 %1 无法被调整大小。 ++ ++ ++ The device %1 cannot be resized. ++ @error ++ 设备 %1 无法被调整大小。 + + +- +- The file system %1 must be resized, but cannot. +- @info +- 文件系统 %1 必须调整大小,但无法做到。 ++ ++ The file system %1 must be resized, but cannot. ++ @info ++ 文件系统 %1 必须调整大小,但无法做到。 + + +- +- The device %1 must be resized, but cannot +- @info +- 设备 %1 必须调整大小,但无法做到。 ++ ++ The device %1 must be resized, but cannot ++ @info ++ 设备 %1 必须调整大小,但无法做到。 + +- +- ++ ++ + ResizePartitionJob + +- +- Resize partition %1 +- @title +- 调整分区 %1 大小 ++ ++ Resize partition %1 ++ @title ++ 调整分区 %1 大小 + + +- +- Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> +- @info +- ++ ++ Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> ++ @info ++ + + +- +- Resizing %2MiB partition %1 to %3MiB… +- @status +- ++ ++ Resizing %2MiB partition %1 to %3MiB… ++ @status ++ + + +- +- The installer failed to resize partition %1 on disk '%2'. +- 安装程序调整磁盘“%2”上的分区 %1 大小失败。 ++ ++ The installer failed to resize partition %1 on disk '%2'. ++ 安装程序调整磁盘“%2”上的分区 %1 大小失败。 + +- +- ++ ++ + ResizeVolumeGroupDialog + +- +- Resize Volume Group +- @title +- 调整分卷组大小 ++ ++ Resize Volume Group ++ @title ++ 调整分卷组大小 + +- +- ++ ++ + ResizeVolumeGroupJob + +- +- Resize volume group named %1 from %2 to %3 +- @title +- ++ ++ Resize volume group named %1 from %2 to %3 ++ @title ++ + + +- +- Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> +- @info +- ++ ++ Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> ++ @info ++ + + +- +- Resizing volume group named %1 from %2 to %3… +- @status +- ++ ++ Resizing volume group named %1 from %2 to %3… ++ @status ++ + + +- +- The installer failed to resize a volume group named '%1'. +- 安装器未能调整分卷组'%1'的大小 ++ ++ The installer failed to resize a volume group named '%1'. ++ 安装器未能调整分卷组'%1'的大小 + +- +- ++ ++ + ResultsListWidget + +- +- Checking requirements again in a few seconds ... +- 几秒钟后再次检查要求 ... ++ ++ Checking requirements again in a few seconds ... ++ 几秒钟后再次检查要求 ... + +- +- ++ ++ + ScanningDialog + +- +- Scanning storage devices… +- @status +- 正在扫描存储设备… ++ ++ Scanning storage devices… ++ @status ++ 正在扫描存储设备… + + +- +- Partitioning… +- @status +- 正在分区… ++ ++ Partitioning… ++ @status ++ 正在分区… + +- +- ++ ++ + SetHostNameJob + +- +- Set hostname %1 +- 设置主机名 %1 ++ ++ Set hostname %1 ++ 设置主机名 %1 + + +- +- Set hostname <strong>%1</strong>. +- 设置主机名 <strong>%1</strong>。 ++ ++ Set hostname <strong>%1</strong>. ++ 设置主机名 <strong>%1</strong>。 + + +- +- Setting hostname %1… +- @status +- 正在设置主机名 %1… ++ ++ Setting hostname %1… ++ @status ++ 正在设置主机名 %1… + + +- +- +- Internal Error +- 内部错误 ++ ++ ++ Internal Error ++ 内部错误 + + +- +- +- Cannot write hostname to target system +- 无法向目标系统写入主机名 ++ ++ ++ Cannot write hostname to target system ++ 无法向目标系统写入主机名 + +- +- ++ ++ + SetKeyboardLayoutJob + +- +- Setting keyboard model to %1, layout as %2-%3… +- @status, %1 model, %2 layout, %3 variant +- 正在将键盘型号设置为 %1,布局设置为 %2-%3… ++ ++ Setting keyboard model to %1, layout as %2-%3… ++ @status, %1 model, %2 layout, %3 variant ++ 正在将键盘型号设置为 %1,布局设置为 %2-%3… + + +- +- Failed to write keyboard configuration for the virtual console. +- @error +- 无法将键盘配置写入到虚拟控制台。 ++ ++ Failed to write keyboard configuration for the virtual console. ++ @error ++ 无法将键盘配置写入到虚拟控制台。 + + +- +- Failed to write to %1 +- @error, %1 is virtual console configuration path +- 写入到 %1 失败 ++ ++ Failed to write to %1 ++ @error, %1 is virtual console configuration path ++ 写入到 %1 失败 + + +- +- Failed to write keyboard configuration for X11. +- @error +- 无法为 X11 写入键盘配置。 ++ ++ Failed to write keyboard configuration for X11. ++ @error ++ 无法为 X11 写入键盘配置。 + + +- +- Failed to write to %1 +- @error, %1 is keyboard configuration path +- 写入到 %1 失败 ++ ++ Failed to write to %1 ++ @error, %1 is keyboard configuration path ++ 写入到 %1 失败 + + +- +- Failed to write keyboard configuration to existing /etc/default directory. +- @error +- 无法将键盘配置写入到现有的 /etc/default 目录。 ++ ++ Failed to write keyboard configuration to existing /etc/default directory. ++ @error ++ 无法将键盘配置写入到现有的 /etc/default 目录。 + + +- +- Failed to write to %1 +- @error, %1 is default keyboard path +- 写入到 %1 失败 ++ ++ Failed to write to %1 ++ @error, %1 is default keyboard path ++ 写入到 %1 失败 + +- +- ++ ++ + SetPartFlagsJob + +- +- Set flags on partition %1 +- @title +- 设置分区 %1 的标记 ++ ++ Set flags on partition %1 ++ @title ++ 设置分区 %1 的标记 + + +- +- Set flags on %1MiB %2 partition +- @title +- 设置 %1MiB %2 分区的标记 ++ ++ Set flags on %1MiB %2 partition ++ @title ++ 设置 %1MiB %2 分区的标记 + + +- +- Set flags on new partition +- @title +- 设置新分区标记 ++ ++ Set flags on new partition ++ @title ++ 设置新分区标记 + + +- +- Clear flags on partition <strong>%1</strong> +- @info +- ++ ++ Clear flags on partition <strong>%1</strong> ++ @info ++ + + +- +- Clear flags on %1MiB <strong>%2</strong> partition +- @info +- ++ ++ Clear flags on %1MiB <strong>%2</strong> partition ++ @info ++ + + +- +- Clear flags on new partition +- @info +- ++ ++ Clear flags on new partition ++ @info ++ + + +- +- Set flags on partition <strong>%1</strong> to <strong>%2</strong> +- @info +- ++ ++ Set flags on partition <strong>%1</strong> to <strong>%2</strong> ++ @info ++ + + +- +- Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> +- @info +- ++ ++ Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> ++ @info ++ + + +- +- Set flags on new partition to <strong>%1</strong> +- @info +- ++ ++ Set flags on new partition to <strong>%1</strong> ++ @info ++ + + +- +- Clearing flags on partition <strong>%1</strong>… +- @status +- ++ ++ Clearing flags on partition <strong>%1</strong>… ++ @status ++ + + +- +- Clearing flags on %1MiB <strong>%2</strong> partition… +- @status +- ++ ++ Clearing flags on %1MiB <strong>%2</strong> partition… ++ @status ++ + + +- +- Clearing flags on new partition… +- @status +- ++ ++ Clearing flags on new partition… ++ @status ++ + + +- +- Setting flags <strong>%2</strong> on partition <strong>%1</strong>… +- @status +- ++ ++ Setting flags <strong>%2</strong> on partition <strong>%1</strong>… ++ @status ++ + + +- +- Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… +- @status +- ++ ++ Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… ++ @status ++ + + +- +- Setting flags <strong>%1</strong> on new partition… +- @status +- ++ ++ Setting flags <strong>%1</strong> on new partition… ++ @status ++ + + +- +- The installer failed to set flags on partition %1. +- 安装程序未能成功设置分区 %1 的标记。 ++ ++ The installer failed to set flags on partition %1. ++ 安装程序未能成功设置分区 %1 的标记。 + +- +- ++ ++ + SetPasswordJob + +- +- Set password for user %1 +- 设置用户 %1 的密码 ++ ++ Set password for user %1 ++ 设置用户 %1 的密码 + + +- +- Setting password for user %1… +- @status +- 正在为用户 %1 设置密码… ++ ++ Setting password for user %1… ++ @status ++ 正在为用户 %1 设置密码… + + +- +- Bad destination system path. +- 非法的目标系统路径。 ++ ++ Bad destination system path. ++ 非法的目标系统路径。 + + +- +- rootMountPoint is %1 +- 根挂载点为 %1 ++ ++ rootMountPoint is %1 ++ 根挂载点为 %1 + + +- +- Cannot disable root account. +- 无法禁用 root 帐号。 ++ ++ Cannot disable root account. ++ 无法禁用 root 帐号。 + + +- +- +- usermod terminated with error code %1. +- usermod 以错误代码 %1 中止。 ++ ++ ++ usermod terminated with error code %1. ++ usermod 以错误代码 %1 中止。 + + +- +- Cannot set password for user %1. +- 无法设置用户 %1 的密码。 ++ ++ Cannot set password for user %1. ++ 无法设置用户 %1 的密码。 + +- +- ++ ++ + SetTimezoneJob + +- +- Setting timezone to %1/%2… +- @status +- 正在设置时区为 %1/%2… ++ ++ Setting timezone to %1/%2… ++ @status ++ 正在设置时区为 %1/%2… + + +- +- Cannot access selected timezone path. +- @error +- 无法访问指定的时区路径。 ++ ++ Cannot access selected timezone path. ++ @error ++ 无法访问指定的时区路径。 + + +- +- Bad path: %1 +- @error +- 非法路径:%1 ++ ++ Bad path: %1 ++ @error ++ 非法路径:%1 + + +- +- +- Cannot set timezone. +- @error +- 无法设置时区。 ++ ++ ++ Cannot set timezone. ++ @error ++ 无法设置时区。 + + +- +- Link creation failed, target: %1; link name: %2 +- @info +- 链接创建失败,目标:%1,链接名称:%2 ++ ++ Link creation failed, target: %1; link name: %2 ++ @info ++ 链接创建失败,目标:%1,链接名称:%2 + + +- +- Cannot open /etc/timezone for writing +- @info +- 无法打开要写入的 /etc/timezone ++ ++ Cannot open /etc/timezone for writing ++ @info ++ 无法打开要写入的 /etc/timezone + +- +- ++ ++ + SetupGroupsJob + +- +- Preparing groups… +- @status +- 正在准备群组… ++ ++ Preparing groups… ++ @status ++ 正在准备群组… + + +- +- +- Could not create groups in target system +- 无法在目标系统中创建群组 ++ ++ ++ Could not create groups in target system ++ 无法在目标系统中创建群组 + + +- +- These groups are missing in the target system: %1 +- 目标系统中缺少以下群组: %1 ++ ++ These groups are missing in the target system: %1 ++ 目标系统中缺少以下群组: %1 + +- +- ++ ++ + SetupSudoJob + +- +- Configuring <pre>sudo</pre> users… +- @status +- 配置 <pre>sudo</pre> 用户… ++ ++ Configuring <pre>sudo</pre> users… ++ @status ++ 配置 <pre>sudo</pre> 用户… + + +- +- Cannot chmod sudoers file. +- 无法修改 sudoers 文件权限。 ++ ++ Cannot chmod sudoers file. ++ 无法修改 sudoers 文件权限。 + + +- +- Cannot create sudoers file for writing. +- 无法创建要写入的 sudoers 文件。 ++ ++ Cannot create sudoers file for writing. ++ 无法创建要写入的 sudoers 文件。 + +- +- ++ ++ + ShellProcessJob + +- +- Running shell processes… +- @status +- 正在运行 shell 进程… ++ ++ Running shell processes… ++ @status ++ 正在运行 shell 进程… + +- +- ++ ++ + SlideCounter + +- +- +- %L1 / %L2 +- slide counter, %1 of %2 (numeric) +- %L1 / %L2 ++ ++ ++ %L1 / %L2 ++ slide counter, %1 of %2 (numeric) ++ %L1 / %L2 + +- +- ++ ++ + StandardButtons + +- +- &OK +- &确定 ++ ++ &OK ++ &确定 + + +- +- &Yes +- &是 ++ ++ &Yes ++ &是 + + +- +- &No +- &否 ++ ++ &No ++ &否 + + +- +- &Cancel +- 取消(&C) ++ ++ &Cancel ++ 取消(&C) + + +- +- &Close +- &关闭 ++ ++ &Close ++ &关闭 + +- +- ++ ++ + TrackingInstallJob + +- +- Installation feedback +- 安装反馈 ++ ++ Installation feedback ++ 安装反馈 + + +- +- Sending installation feedback… +- @status +- 正在发送安装反馈… ++ ++ Sending installation feedback… ++ @status ++ 正在发送安装反馈… + + +- +- Internal error in install-tracking. +- 在 install-tracking 步骤发生内部错误。 ++ ++ Internal error in install-tracking. ++ 在 install-tracking 步骤发生内部错误。 + + +- +- HTTP request timed out. +- HTTP 请求超时。 ++ ++ HTTP request timed out. ++ HTTP 请求超时。 + +- +- ++ ++ + TrackingKUserFeedbackJob + +- +- KDE user feedback +- KDE 用户反馈 ++ ++ KDE user feedback ++ KDE 用户反馈 + + +- +- Configuring KDE user feedback… +- @status +- 配置 KDE 用户反馈… ++ ++ Configuring KDE user feedback… ++ @status ++ 配置 KDE 用户反馈… + + +- +- +- Error in KDE user feedback configuration. +- KDE 用户反馈配置中存在错误。 ++ ++ ++ Error in KDE user feedback configuration. ++ KDE 用户反馈配置中存在错误。 + + +- +- Could not configure KDE user feedback correctly, script error %1. +- 无法正确 KDE 用户反馈,脚本错误代码 %1。 ++ ++ Could not configure KDE user feedback correctly, script error %1. ++ 无法正确 KDE 用户反馈,脚本错误代码 %1。 + + +- +- Could not configure KDE user feedback correctly, Calamares error %1. +- 无法正确 KDE 用户反馈,Calamares 错误代码 %1。 ++ ++ Could not configure KDE user feedback correctly, Calamares error %1. ++ 无法正确 KDE 用户反馈,Calamares 错误代码 %1。 + +- +- ++ ++ + TrackingMachineUpdateManagerJob + +- +- Machine feedback +- 机器反馈 ++ ++ Machine feedback ++ 机器反馈 + + +- +- Configuring machine feedback… +- @status +- 正在配置机器反馈… ++ ++ Configuring machine feedback… ++ @status ++ 正在配置机器反馈… + + +- +- +- Error in machine feedback configuration. +- 机器反馈配置中存在错误。 ++ ++ ++ Error in machine feedback configuration. ++ 机器反馈配置中存在错误。 + + +- +- Could not configure machine feedback correctly, script error %1. +- 无法正确配置机器反馈,脚本错误代码 %1。 ++ ++ Could not configure machine feedback correctly, script error %1. ++ 无法正确配置机器反馈,脚本错误代码 %1。 + + +- +- Could not configure machine feedback correctly, Calamares error %1. +- 无法正确配置机器反馈,Calamares 错误代码 %1。 ++ ++ Could not configure machine feedback correctly, Calamares error %1. ++ 无法正确配置机器反馈,Calamares 错误代码 %1。 + +- +- ++ ++ + TrackingPage + +- +- Placeholder +- 占位符 ++ ++ Placeholder ++ 占位符 + + +- +- <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> +- <html><head/><body><p>单击此处 <span style=" font-weight:600;">不发送任何</span> 有关安装的信息。</p></body></html> ++ ++ <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> ++ <html><head/><body><p>单击此处 <span style=" font-weight:600;">不发送任何</span> 有关安装的信息。</p></body></html> + + +- +- <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> +- <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">点击此处以获取关于用户反馈的详细信息</span></a></p></body></html> ++ ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">点击此处以获取关于用户反馈的详细信息</span></a></p></body></html> + + +- +- Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. +- 跟踪帮助 %1 以查看它的安装频率、安装硬件以及使用的应用程序。请点按每项旁的帮助图标以查看即将被发送的信息。 ++ ++ Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. ++ 跟踪帮助 %1 以查看它的安装频率、安装硬件以及使用的应用程序。请点按每项旁的帮助图标以查看即将被发送的信息。 + + +- +- By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. +- 选中此项时,安装器将发送关于安装过程和硬件的信息。该信息仅会在安装结束后发送<b>一次</b> 。 ++ ++ By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. ++ 选中此项时,安装器将发送关于安装过程和硬件的信息。该信息仅会在安装结束后发送<b>一次</b> 。 + + +- +- By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. +- 通过选择此选项,您将定期将有关您 <b>计算机</b>的安装,硬件和应用程序的信息发送到 %1。 ++ ++ By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. ++ 通过选择此选项,您将定期将有关您 <b>计算机</b>的安装,硬件和应用程序的信息发送到 %1。 + + +- +- By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. +- 通过选择此选项,您将定期将有关<b>用户</b> 安装,硬件,应用程序和应用程序使用方式的信息发送到 %1。 ++ ++ By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. ++ 通过选择此选项,您将定期将有关<b>用户</b> 安装,硬件,应用程序和应用程序使用方式的信息发送到 %1。 + +- +- ++ ++ + TrackingViewStep + +- +- Feedback +- @title +- 反馈 ++ ++ Feedback ++ @title ++ 反馈 + +- +- ++ ++ + UmountJob + +- +- Unmounting file systems… +- @status +- 正在卸载文件系统… ++ ++ Unmounting file systems… ++ @status ++ 正在卸载文件系统… + + +- +- No target system available. +- 没有可用的目标系统。 ++ ++ No target system available. ++ 没有可用的目标系统。 + + +- +- No rootMountPoint is set. +- 没有设定 root挂载点。 ++ ++ No rootMountPoint is set. ++ 没有设定 root挂载点。 + +- +- ++ ++ + UsersPage + +- +- <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> +- <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> ++ <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> + + +- +- <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> +- <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> ++ <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> + +- +- ++ ++ + UsersQmlViewStep + +- +- Users +- 用户 ++ ++ Users ++ 用户 + +- +- ++ ++ + UsersViewStep + +- +- Users +- 用户 ++ ++ Users ++ 用户 + +- +- ++ ++ + VariantModel + +- +- Key +- Column header for key/value +- Key ++ ++ Key ++ Column header for key/value ++ Key + + +- +- Value +- Column header for key/value +- ++ ++ Value ++ Column header for key/value ++ + +- +- ++ ++ + VolumeGroupBaseDialog + +- +- Create Volume Group +- 创建存储组 ++ ++ Create Volume Group ++ 创建存储组 + + +- +- List of Physical Volumes +- 物理分卷列表: ++ ++ List of Physical Volumes ++ 物理分卷列表: + + +- +- Volume Group Name: +- 分卷组名称: ++ ++ Volume Group Name: ++ 分卷组名称: + + +- +- Volume Group Type: +- 分卷组类型: ++ ++ Volume Group Type: ++ 分卷组类型: + + +- +- Physical Extent Size: +- 物理区域PE大小: ++ ++ Physical Extent Size: ++ 物理区域PE大小: + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Total Size: +- 大小: ++ ++ Total Size: ++ 大小: + + +- +- Used Size: +- 已用空间: ++ ++ Used Size: ++ 已用空间: + + +- +- Total Sectors: +- 总扇区数: ++ ++ Total Sectors: ++ 总扇区数: + + +- +- Quantity of LVs: +- 逻辑分卷数量: ++ ++ Quantity of LVs: ++ 逻辑分卷数量: + +- +- ++ ++ + WelcomePage + +- +- +- Select application and system language +- 选择应用程序和系统语言 ++ ++ ++ Select application and system language ++ 选择应用程序和系统语言 ++ ++ ++ ++ language ++ 语言 + + +- +- Open donations website +- 打开捐赠信息网页 ++ Open donations website ++ 打开捐赠信息网页 + + +- +- &Donate +- 捐赠(&D) ++ &Donate ++ 捐赠(&D) + + +- +- Open help and support website +- 打开帮助和支持页面 ++ Open help and support website ++ 打开帮助和支持页面 + + +- +- &Support +- 支持信息(&S) ++ &Support ++ 支持信息(&S) + + +- +- Open issues and bug-tracking website +- 打开问题追踪网站 ++ Open issues and bug-tracking website ++ 打开问题追踪网站 + + +- +- &Known issues +- 已知问题(&K) ++ &Known issues ++ 已知问题(&K) + + +- +- Open release notes website +- 打开发布日志网页 ++ Open release notes website ++ 打开发布日志网页 + + +- +- &Release notes +- 发行注记(&R) ++ &Release notes ++ 发行注记(&R) + + +- +- About %1 Setup +- @title +- 关于 %1 安装程序 ++ ++ About %1 Setup ++ @title ++ 关于 %1 安装程序 + + +- +- About %1 Installer +- @title +- 关于 %1 安装程序 ++ ++ About %1 Installer ++ @title ++ 关于 %1 安装程序 + + +- +- %1 Support +- @action +- %1 的支持信息 ++ %1 Support ++ @action ++ %1 的支持信息 + +- +- ++ ++ + WelcomeQmlViewStep + +- +- Welcome +- @title +- 欢迎 ++ ++ Welcome ++ @title ++ 欢迎 + +- +- ++ ++ + WelcomeViewStep + +- +- Welcome +- @title +- 欢迎 ++ ++ Welcome ++ @title ++ 欢迎 + +- +- ++ ++ + ZfsJob + +- +- Creating ZFS pools and datasets… +- @status +- 正在创建 ZFS 池和数据集… ++ ++ Creating ZFS pools and datasets… ++ @status ++ 正在创建 ZFS 池和数据集… + + +- +- Failed to create zpool on +- 创建 zpool 失败于 ++ ++ Failed to create zpool on ++ 创建 zpool 失败于 + + +- +- Configuration Error +- 配置错误 ++ ++ Configuration Error ++ 配置错误 + + +- +- No partitions are available for ZFS. +- 没有可用于 ZFS 的分区。 ++ ++ No partitions are available for ZFS. ++ 没有可用于 ZFS 的分区。 + + +- +- Internal data missing +- 内部数据丢失 ++ ++ Internal data missing ++ 内部数据丢失 + + +- +- +- Failed to create zpool +- 创建 zpool 失败 ++ ++ ++ Failed to create zpool ++ 创建 zpool 失败 + + +- +- Failed to create dataset +- 创建数据集失败 ++ ++ Failed to create dataset ++ 创建数据集失败 + + +- +- The output was: +- 输出为: ++ ++ The output was: ++ 输出为: + +- +- ++ ++ + calamares-sidebar + +- +- About +- 关于 ++ ++ About ++ 关于 + + +- +- Debug +- 调试 ++ ++ Debug ++ 调试 + + +- +- About +- @button +- 关于 ++ ++ About ++ @button ++ 关于 + + +- +- Show information about Calamares +- @tooltip +- 显示关于 Calamares 的信息 ++ ++ Show information about easysoftware ++ @tooltip ++ 显示关于 easysoftware 的信息 + + +- +- Debug +- @button +- 调试 ++ ++ Show information about Calamares ++ @tooltip ++ + + +- +- Show debug information +- @tooltip +- 显示调试信息 ++ ++ ++ Debug ++ @button ++ 调试 + +- +- ++ ++ ++ ++ Show debug information ++ @tooltip ++ 显示调试信息 ++ ++ ++ + finishedq + +- +- Installation Completed +- 安装完成 ++ ++ Installation Completed ++ 安装完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- %1 已安装在您的电脑上了。<br/> ++ %1 已安装在您的电脑上了。<br/> + 您现在可以重新启动到新系统,或是继续使用 Live 环境。 + + +- +- Close Installer +- 关闭安装程序 ++ ++ Close Installer ++ 关闭安装程序 + + +- +- Restart System +- 重启系统 ++ ++ Restart System ++ 重启系统 + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- 安装过程中的翻译已经复制到了临时用户的家目录下 ++ 安装过程中的翻译已经复制到了临时用户的家目录下 + 于此同时安装日志也已经复制到了目标系统,路径为:/var/log/installation.log + +- +- ++ ++ + finishedq-qt6 + +- +- Installation Completed +- @title +- 安装完成 ++ ++ Installation Completed ++ @title ++ 安装完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- @info, %1 is the product name +- %1 已安装在您的电脑上了。<br/> ++ @info, %1 is the product name ++ %1 已安装在您的电脑上了。<br/> + 您现在可以重新启动到新系统,或是继续使用 Live 环境。 + + +- +- Close Installer +- @button +- 关闭安装程序 ++ ++ Close Installer ++ @button ++ 关闭安装程序 + + +- +- Restart System +- @button +- 重启系统 ++ ++ Restart System ++ @button ++ 重启系统 + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- @info +- 安装过程中的翻译已经复制到了临时用户的家目录下 ++ @info ++ 安装过程中的翻译已经复制到了临时用户的家目录下 + 于此同时安装日志也已经复制到了目标系统,路径为:/var/log/installation.log + +- +- ++ ++ + finishedq@mobile + +- +- Installation Completed +- @title +- 安装完成 ++ ++ Installation Completed ++ @title ++ 安装完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart your device. +- @info, %1 is the product name +- %1 已安装在您的计算机上。<br/> ++ @info, %1 is the product name ++ %1 已安装在您的计算机上。<br/> + 现在可以重新启动设备了。 + + +- +- Close +- @button +- 关闭 ++ ++ Close ++ @button ++ 关闭 + + +- +- Restart +- @button +- 重启 ++ ++ Restart ++ @button ++ 重启 + +- +- ++ ++ + keyboardq + +- +- Select a layout to activate keyboard preview +- @label +- 选择布局以激活键盘预览 ++ ++ Select a layout to activate keyboard preview ++ @label ++ 选择布局以激活键盘预览 + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- <b>键盘型号:&nbsp;&nbsp;</b> ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ <b>键盘型号:&nbsp;&nbsp;</b> + + +- +- Layout +- @label +- 布局 ++ ++ Layout ++ @label ++ 布局 + + +- +- Variant +- @label +- 变体 ++ ++ Variant ++ @label ++ 变体 + + +- +- Type here to test your keyboard… +- @label +- 在此处输入以测试键盘… ++ ++ Type here to test your keyboard… ++ @label ++ 在此处输入以测试键盘… + +- +- ++ ++ + keyboardq-qt6 + +- +- Select a layout to activate keyboard preview +- @label +- 选择布局以激活键盘预览 ++ ++ Select a layout to activate keyboard preview ++ @label ++ 选择布局以激活键盘预览 + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- <b>键盘型号:&nbsp;&nbsp;</b> ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ <b>键盘型号:&nbsp;&nbsp;</b> + + +- +- Layout +- @label +- 布局 ++ ++ Layout ++ @label ++ 布局 + + +- +- Variant +- @label +- 变体 ++ ++ Variant ++ @label ++ 变体 + + +- +- Type here to test your keyboard… +- @label +- 在此处输入以测试键盘… ++ ++ Type here to test your keyboard… ++ @label ++ 在此处输入以测试键盘… + +- +- ++ ++ + localeq + +- +- +- Change +- @button +- 更改 ++ ++ ++ Change ++ @button ++ 更改 + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- <h3>语言</h3></br> ++ @info ++ <h3>语言</h3></br> + 系统语言区域设置会影响部份命令行用户界面的语言及字符集。 当前设置是 <strong>%1</strong>。 + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- <h3>区域</h3></br> ++ @info ++ <h3>区域</h3></br> + 系统区域设置会影响数字和日期格式。 当前设置是 <strong>%1</strong>。 + +- +- ++ ++ + localeq-qt6 + +- +- +- Change +- @button +- 更改 ++ ++ ++ Change ++ @button ++ 更改 + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- <h3>语言</h3></br> ++ @info ++ <h3>语言</h3></br> + 系统语言区域设置会影响部份命令行用户界面的语言及字符集。 当前设置是 <strong>%1</strong>。 + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- <h3>区域</h3></br> ++ @info ++ <h3>区域</h3></br> + 系统区域设置会影响数字和日期格式。 当前设置是 <strong>%1</strong>。 + +- +- ++ ++ + notesqml + +- +- <h3>%1</h3> ++ ++ <h3>%1</h3> + <p>These are example release notes.</p> +- <h3>%1</h3> ++ <h3>%1</h3> + <p>这些是发布日志样例</p> + +- +- ++ ++ + packagechooserq + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- LibreOffice 是強大且自由的辦办公软件,世界上有百万级别的用户量。其中包括多种组件模块使其成为世界上最强大的开源并自由的办公软件。<br/> ++ LibreOffice 是強大且自由的辦办公软件,世界上有百万级别的用户量。其中包括多种组件模块使其成为世界上最强大的开源并自由的办公软件。<br/> + 预设选项。 + + +- +- LibreOffice +- LibreOffice ++ ++ LibreOffice ++ LibreOffice + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- 如果你不想安装办公软件,请选择不安装办公软件的选项即可。稍后您可以在安装好的系统上根据个人喜好自行选择安装办公软件与否。您可以随时在安装好的系统上添加一个(或多个)办公软件。 ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ 如果你不想安装办公软件,请选择不安装办公软件的选项即可。稍后您可以在安装好的系统上根据个人喜好自行选择安装办公软件与否。您可以随时在安装好的系统上添加一个(或多个)办公软件。 + + +- +- No Office Suite +- 无办公软件 ++ ++ No Office Suite ++ 无办公软件 + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- 建立最小化的桌面安装,移除所有的附加应用。在稍后自行选择需要安装至系统的应用。同时不会有任何的模板和例子可供选择。无办公软件,无媒体播放器,无图片查看器或者打印支持。仅仅有一个桌面,文件管理器,包管理器,文本编辑器和一个网页浏览器。 ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ 建立最小化的桌面安装,移除所有的附加应用。在稍后自行选择需要安装至系统的应用。同时不会有任何的模板和例子可供选择。无办公软件,无媒体播放器,无图片查看器或者打印支持。仅仅有一个桌面,文件管理器,包管理器,文本编辑器和一个网页浏览器。 + + +- +- Minimal Install +- 最小化安装 ++ ++ Minimal Install ++ 最小化安装 + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- 请为你的安装指定一个选项,或者使用默认选项:安装LibreOffice ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ 请为你的安装指定一个选项,或者使用默认选项:安装LibreOffice + +- +- ++ ++ + packagechooserq-qt6 + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- LibreOffice 是強大且自由的辦办公软件,世界上有百万级别的用户量。其中包括多种组件模块使其成为世界上最强大的开源并自由的办公软件。<br/> ++ LibreOffice 是強大且自由的辦办公软件,世界上有百万级别的用户量。其中包括多种组件模块使其成为世界上最强大的开源并自由的办公软件。<br/> + 预设选项。 + + +- +- LibreOffice +- LibreOffice ++ ++ LibreOffice ++ LibreOffice + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- 如果你不想安装办公软件,请选择不安装办公软件的选项即可。稍后您可以在安装好的系统上根据个人喜好自行选择安装办公软件与否。您可以随时在安装好的系统上添加一个(或多个)办公软件。 ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ 如果你不想安装办公软件,请选择不安装办公软件的选项即可。稍后您可以在安装好的系统上根据个人喜好自行选择安装办公软件与否。您可以随时在安装好的系统上添加一个(或多个)办公软件。 + + +- +- No Office Suite +- 无办公软件 ++ ++ No Office Suite ++ 无办公软件 + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- 建立最小化的桌面安装,移除所有的附加应用。在稍后自行选择需要安装至系统的应用。同时不会有任何的模板和例子可供选择。无办公软件,无媒体播放器,无图片查看器或者打印支持。仅仅有一个桌面,文件管理器,包管理器,文本编辑器和一个网页浏览器。 ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ 建立最小化的桌面安装,移除所有的附加应用。在稍后自行选择需要安装至系统的应用。同时不会有任何的模板和例子可供选择。无办公软件,无媒体播放器,无图片查看器或者打印支持。仅仅有一个桌面,文件管理器,包管理器,文本编辑器和一个网页浏览器。 + + +- +- Minimal Install +- 最小化安装 ++ ++ Minimal Install ++ 最小化安装 + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- 请为你的安装指定一个选项,或者使用默认选项:安装LibreOffice ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ 请为你的安装指定一个选项,或者使用默认选项:安装LibreOffice + +- +- ++ ++ + release_notes + +- +- <h3>%1</h3> ++ <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> +@@ -4890,7 +5023,7 @@ Output: + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> +- <h3>%1</h3> ++ <h3>%1</h3> + <p>这是一个QML 示例文件,显示了具有 Flickable 内容的 RichText 选项。</p> + + <p>带有 RichText 的 QML 可以使用 HTML 标签, +@@ -4914,335 +5047,364 @@ Output: + <p>垂直滚动条是可调的,当前宽度设置为10。</p> + + +- +- Back +- 后退 ++ ++ ### %1 ++This an example QML file, showing options in Markdown with Flickable content. ++ ++QML with RichText can use HTML tags, with Markdown it uses the simple Markdown syntax, Flickable content is useful for touchscreens. ++ ++**This is bold text** ++ ++*This is italic text* ++ ++_This is underlined text_ ++ ++> blockquote ++ ++~~This is strikethrough~~ ++ ++Code example: ++``` ++ls -l /home ++``` ++ ++**Lists:** ++ * Intel CPU systems ++ * AMD CPU systems ++ ++The vertical scrollbar is adjustable, current width set to 10. ++ ++ ++ ++ ++ Back ++ 后退 + +- +- ++ ++ + usersq + +- +- Pick your user name and credentials to login and perform admin tasks +- 选择您的用户名和凭据登录并执行管理任务 ++ ++ Pick your user name and credentials to login and perform admin tasks ++ 选择您的用户名和凭据登录并执行管理任务 + + +- +- What is your name? +- 您的姓名? ++ ++ What is your name? ++ 您的姓名? + + +- +- Your full name +- 您的全名 ++ ++ Your full name ++ 您的全名 + + +- +- What name do you want to use to log in? +- 您想要使用的登录用户名是? ++ ++ What name do you want to use to log in? ++ 您想要使用的登录用户名是? + + +- +- Login name +- 登录名 ++ ++ Login name ++ 登录名 + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- 如果有多人要使用此计算机,您可以在安装后创建多个账户。 ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ 如果有多人要使用此计算机,您可以在安装后创建多个账户。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 只允许小写字母、数组、下划线"_" 和 连字符"-" ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 只允许小写字母、数组、下划线"_" 和 连字符"-" + + +- +- root is not allowed as username. +- 用户名不能为root ++ ++ root is not allowed as username. ++ 用户名不能为root + + +- +- What is the name of this computer? +- 计算机名称为? ++ ++ What is the name of this computer? ++ 计算机名称为? + + +- +- Computer name +- 计算机名称 ++ ++ Computer name ++ 计算机名称 + + +- +- This name will be used if you make the computer visible to others on a network. +- 将计算机设置为对其他网络上计算机可见时将使用此名称。 ++ ++ This name will be used if you make the computer visible to others on a network. ++ 将计算机设置为对其他网络上计算机可见时将使用此名称。 + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- 只允许字母、数组、下划线"_" 和 连字符"-",最少两个字符。 ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ 只允许字母、数组、下划线"_" 和 连字符"-",最少两个字符。 + + +- +- localhost is not allowed as hostname. +- localhost不能为用户名 ++ ++ localhost is not allowed as hostname. ++ localhost不能为用户名 + + +- +- Choose a password to keep your account safe. +- 选择一个密码来保证您的账户安全。 ++ ++ Choose a password to keep your account safe. ++ 选择一个密码来保证您的账户安全。 + + +- +- Password +- 密码 ++ ++ Password ++ 密码 + + +- +- Repeat password +- 确认密码 ++ ++ Repeat password ++ 确认密码 + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- 输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ 输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。 + + +- +- Reuse user password as root password +- 重用用户密码作为 root 密码 ++ ++ Reuse user password as root password ++ 重用用户密码作为 root 密码 + + +- +- Use the same password for the administrator account. +- 为管理员帐号使用同样的密码。 ++ ++ Use the same password for the administrator account. ++ 为管理员帐号使用同样的密码。 + + +- +- Choose a root password to keep your account safe. +- 选择一个 root 密码来保证您的账户安全。 ++ ++ Choose a root password to keep your account safe. ++ 选择一个 root 密码来保证您的账户安全。 + + +- +- Root password +- Root 密码 ++ ++ Root password ++ Root 密码 + + +- +- Repeat root password +- 确认 Root 密码 ++ ++ Repeat root password ++ 确认 Root 密码 + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- 输入相同密码两次,以检查输入错误。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ 输入相同密码两次,以检查输入错误。 + + +- +- Log in automatically without asking for the password +- 不询问密码自动登录 ++ ++ Log in automatically without asking for the password ++ 不询问密码自动登录 + + +- +- Validate passwords quality +- 验证密码质量 ++ ++ Validate passwords quality ++ 验证密码质量 + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 + +- +- ++ ++ + usersq-qt6 + +- +- Pick your user name and credentials to login and perform admin tasks +- 选择您的用户名和凭据登录并执行管理任务 ++ ++ Pick your user name and credentials to login and perform admin tasks ++ 选择您的用户名和凭据登录并执行管理任务 + + +- +- What is your name? +- 您的姓名? ++ ++ What is your name? ++ 您的姓名? + + +- +- Your full name +- 您的全名 ++ ++ Your full name ++ 您的全名 + + +- +- What name do you want to use to log in? +- 您想要使用的登录用户名是? ++ ++ What name do you want to use to log in? ++ 您想要使用的登录用户名是? + + +- +- Login name +- 登录名 ++ ++ Login name ++ 登录名 + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- 如果有多人要使用此计算机,您可以在安装后创建多个账户。 ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ 如果有多人要使用此计算机,您可以在安装后创建多个账户。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 只允许小写字母、数组、下划线"_" 和 连字符"-" ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 只允许小写字母、数组、下划线"_" 和 连字符"-" + + +- +- root is not allowed as username. +- 用户名不能为root ++ ++ root is not allowed as username. ++ 用户名不能为root + + +- +- What is the name of this computer? +- 计算机名称为? ++ ++ What is the name of this computer? ++ 计算机名称为? + + +- +- Computer name +- 计算机名称 ++ ++ Computer name ++ 计算机名称 + + +- +- This name will be used if you make the computer visible to others on a network. +- 将计算机设置为对其他网络上计算机可见时将使用此名称。 ++ ++ This name will be used if you make the computer visible to others on a network. ++ 将计算机设置为对其他网络上计算机可见时将使用此名称。 + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- 只允许字母、数组、下划线"_" 和 连字符"-",最少两个字符。 ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ 只允许字母、数组、下划线"_" 和 连字符"-",最少两个字符。 + + +- +- localhost is not allowed as hostname. +- localhost不能为用户名 ++ ++ localhost is not allowed as hostname. ++ localhost不能为用户名 + + +- +- Choose a password to keep your account safe. +- 选择一个密码来保证您的账户安全。 ++ ++ Choose a password to keep your account safe. ++ 选择一个密码来保证您的账户安全。 + + +- +- Password +- 密码 ++ ++ Password ++ 密码 + + +- +- Repeat password +- 确认密码 ++ ++ Repeat password ++ 确认密码 + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- 输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ 输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。 + + +- +- Reuse user password as root password +- 重用用户密码作为 root 密码 ++ ++ Reuse user password as root password ++ 重用用户密码作为 root 密码 + + +- +- Use the same password for the administrator account. +- 为管理员帐号使用同样的密码。 ++ ++ Use the same password for the administrator account. ++ 为管理员帐号使用同样的密码。 + + +- +- Choose a root password to keep your account safe. +- 选择一个 root 密码来保证您的账户安全。 ++ ++ Choose a root password to keep your account safe. ++ 选择一个 root 密码来保证您的账户安全。 + + +- +- Root password +- Root 密码 ++ ++ Root password ++ Root 密码 + + +- +- Repeat root password +- 确认 Root 密码 ++ ++ Repeat root password ++ 确认 Root 密码 + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- 输入相同密码两次,以检查输入错误。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ 输入相同密码两次,以检查输入错误。 + + +- +- Log in automatically without asking for the password +- 不询问密码自动登录 ++ ++ Log in automatically without asking for the password ++ 不询问密码自动登录 + + +- +- Validate passwords quality +- 验证密码质量 ++ ++ Validate passwords quality ++ 验证密码质量 + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 若选中此项,密码强度检测会开启,你将不被允许使用弱密码。 + +- +- ++ ++ + welcomeq + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- <h3>欢迎来到 %1 <quote>%2</quote> 安装程序</h3> ++ <h3>欢迎来到 %1 <quote>%2</quote> 安装程序</h3> + <p>这个程序将询问您一些问题并在您的计算机上安装 %1。</p> + + +- +- Support +- 支持 ++ ++ Support ++ 支持 + + +- +- Known Issues +- 已知问题 ++ ++ Known Issues ++ 已知问题 + + +- +- Release Notes +- 发行说明 ++ ++ Release Notes ++ 发行说明 + + +- +- Donate +- 捐赠 ++ ++ Donate ++ 捐赠 + +- +- ++ ++ + welcomeq-qt6 + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- <h3>欢迎来到 %1 <quote>%2</quote> 安装程序</h3> ++ <h3>欢迎来到 %1 <quote>%2</quote> 安装程序</h3> + <p>这个程序将询问您一些问题并在您的计算机上安装 %1。</p> + + +- +- Support +- 支持 ++ ++ Support ++ 支持 + + +- +- Known Issues +- 已知问题 ++ ++ Known Issues ++ 已知问题 + + +- +- Release Notes +- 发行说明 ++ ++ Release Notes ++ 发行说明 + + +- +- Donate +- 捐赠 ++ ++ Donate ++ 捐赠 + +- ++ + +diff --git a/lang/calamares_zh_HK.ts b/lang/calamares_zh_HK.ts +index 561087f..9f5dec5 100644 +--- a/lang/calamares_zh_HK.ts ++++ b/lang/calamares_zh_HK.ts +@@ -1,5195 +1,5267 @@ + + +- +- ++ ++ + AboutData + +- +- <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> +- ++ ++ <br/><h2>Release:%1</h2><br/> ++ <br/><h1>發行版本:%1</h1><br/> + + +- +- Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://app.transifex.com/calamares/calamares/">Calamares translators team</a>. +- ++ ++ <strong>Thanks to the openEuler team.</strong> ++ <strong>感謝 openEuler 團隊。</strong> + + +- +- <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. +- ++ ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ Copyright year-year Name <email-address> ++ + ++ ++ ++ ActiveDirectoryJob + +- +- Copyright %1-%2 %3 &lt;%4&gt;<br/> +- Copyright year-year Name <email-address> +- ++ ++ Enroll system in Active Directory ++ @label ++ + +- +- ++ ++ ++ Enrolling system in Active Directory… ++ @status ++ ++ ++ ++ + AutoMountManagementJob + +- +- Managing auto-mount settings… +- @status +- ++ ++ Managing auto-mount settings… ++ @status ++ + +- +- ++ ++ + BootInfoWidget + +- +- The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. +- 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。 ++ ++ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. ++ 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。 + + +- +- This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. +- 這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。 ++ ++ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. ++ 這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。 + + +- +- This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. +- ++ ++ This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. ++ + +- +- ++ ++ + BootLoaderModel + +- +- Master Boot Record of %1 +- @info +- ++ ++ Master Boot Record of %1 ++ @info ++ + + +- +- Boot Partition +- @info +- ++ ++ Boot Partition ++ @info ++ + + +- +- System Partition +- @info +- ++ ++ System Partition ++ @info ++ + + +- +- Do not install a boot loader +- @label +- ++ ++ Do not install a boot loader ++ @label ++ + + +- +- %1 (%2) +- ++ ++ %1 (%2) ++ + +- +- ++ ++ + Calamares::BlankViewStep + +- +- Blank Page +- ++ ++ Blank Page ++ + +- +- ++ ++ + Calamares::DebugWindow + +- +- GlobalStorage +- ++ ++ GlobalStorage ++ + + +- +- JobQueue +- ++ ++ JobQueue ++ + + +- +- Modules +- ++ ++ Modules ++ + + +- +- Type: +- ++ ++ Type: ++ + + +- +- +- none +- ++ ++ ++ none ++ + + +- +- Interface: +- ++ ++ Interface: ++ + + +- +- Crashes Calamares, so that Dr. Konqi can look at it. +- ++ ++ Crashes Calamares, so that Dr. Konqi can look at it. ++ + + +- +- Reloads the stylesheet from the branding directory. +- ++ ++ Reloads the stylesheet from the branding directory. ++ + + +- +- Reload Stylesheet +- ++ ++ Reload Stylesheet ++ + + +- +- Displays the tree of widget names in the log (for stylesheet debugging). +- ++ ++ Displays the tree of widget names in the log (for stylesheet debugging). ++ + + +- +- Widget Tree +- ++ ++ Widget Tree ++ + + +- +- Uploads the session log to the configured pastebin. +- ++ ++ Uploads the session log to the configured pastebin. ++ + + +- +- Send Session Log +- ++ ++ Send Session Log ++ + + +- +- Debug Information +- @title +- ++ ++ Debug Information ++ @title ++ + +- +- ++ ++ + Calamares::ExecutionViewStep + +- +- %p% +- Progress percentage indicator: %p is where the number 0..100 is placed +- ++ ++ %p% ++ Progress percentage indicator: %p is where the number 0..100 is placed ++ + + +- +- Set Up +- @label +- ++ ++ Set Up ++ @label ++ + + +- +- Install +- @label +- ++ ++ Install ++ @label ++ + +- +- ++ ++ + Calamares::FailJob + +- +- Job failed (%1) +- ++ ++ Job failed (%1) ++ + + +- +- Programmed job failure was explicitly requested. +- ++ ++ Programmed job failure was explicitly requested. ++ + +- +- ++ ++ + Calamares::JobThread + +- +- Done +- ++ ++ Done ++ + +- +- ++ ++ + Calamares::NamedJob + +- +- Example job (%1) +- ++ ++ Example job (%1) ++ + +- +- ++ ++ + Calamares::ProcessJob + +- +- Running command %1 in target system… +- @status +- ++ ++ Running command %1 in target system… ++ @status ++ + + +- +- Running command %1… +- @status +- ++ ++ Running command %1… ++ @status ++ + +- +- ++ ++ + Calamares::Python::Job + +- +- Running %1 operation. +- ++ ++ Running %1 operation. ++ + + +- +- Bad working directory path +- ++ ++ Bad working directory path ++ + + +- +- Working directory %1 for python job %2 is not readable. +- ++ ++ Working directory %1 for python job %2 is not readable. ++ + + +- +- +- +- +- +- +- Bad main script file +- ++ ++ ++ ++ ++ ++ ++ Bad main script file ++ + + +- +- Main script file %1 for python job %2 is not readable. +- ++ ++ Main script file %1 for python job %2 is not readable. ++ + + +- +- Bad internal script +- ++ ++ Bad internal script ++ + + +- +- Internal script for python job %1 raised an exception. +- ++ ++ Internal script for python job %1 raised an exception. ++ + + +- +- Main script file %1 for python job %2 could not be loaded because it raised an exception. +- ++ ++ Main script file %1 for python job %2 could not be loaded because it raised an exception. ++ + + +- +- Main script file %1 for python job %2 raised an exception. +- ++ ++ Main script file %1 for python job %2 raised an exception. ++ + + +- +- +- Main script file %1 for python job %2 returned invalid results. +- ++ ++ ++ Main script file %1 for python job %2 returned invalid results. ++ + + +- +- Main script file %1 for python job %2 does not contain a run() function. +- ++ ++ Main script file %1 for python job %2 does not contain a run() function. ++ + +- +- ++ ++ + Calamares::PythonJob + +- +- Running %1 operation… +- @status +- ++ ++ Running %1 operation… ++ @status ++ + + +- +- Bad working directory path +- @error +- ++ ++ Bad working directory path ++ @error ++ + + +- +- Working directory %1 for python job %2 is not readable. +- @error +- ++ ++ Working directory %1 for python job %2 is not readable. ++ @error ++ + + +- +- Bad main script file +- @error +- ++ ++ Bad main script file ++ @error ++ + + +- +- Main script file %1 for python job %2 is not readable. +- @error +- ++ ++ Main script file %1 for python job %2 is not readable. ++ @error ++ + + +- +- Boost.Python error in job "%1" +- @error +- ++ ++ Boost.Python error in job "%1" ++ @error ++ + +- +- ++ ++ + Calamares::QmlViewStep + +- +- Loading… +- @status +- ++ ++ Loading… ++ @status ++ + + +- +- QML step <i>%1</i>. +- @label +- ++ ++ QML step <i>%1</i>. ++ @label ++ + + +- +- Loading failed. +- @info +- ++ ++ Loading failed. ++ @info ++ + +- +- ++ ++ + Calamares::RequirementsChecker + +- +- Requirements checking for module '%1' is complete. +- @info +- ++ ++ Requirements checking for module '%1' is complete. ++ @info ++ + + +- +- Waiting for %n module(s)… +- @status +- +- +- ++ ++ Waiting for %n module(s)… ++ @status ++ ++ ++ + + +- +- (%n second(s)) +- @status +- +- +- ++ ++ (%n second(s)) ++ @status ++ ++ ++ + + +- +- System-requirements checking is complete. +- @info +- ++ ++ System-requirements checking is complete. ++ @info ++ + +- +- ++ ++ + Calamares::ViewManager + +- +- The upload was unsuccessful. No web-paste was done. +- ++ ++ The upload was unsuccessful. No web-paste was done. ++ + + +- +- Install log posted to ++ ++ Install log posted to + + %1 + + Link copied to clipboard +- ++ + + +- +- Install Log Paste URL +- ++ ++ Install Log Paste URL ++ + + +- +- &Yes +- ++ ++ &Yes ++ + + +- +- &No +- ++ ++ &No ++ + + +- +- &Close +- ++ ++ &Close ++ + + +- +- Setup Failed +- @title +- ++ ++ Setup Failed ++ @title ++ + + +- +- Installation Failed +- @title +- ++ ++ Installation Failed ++ @title ++ + + +- +- Error +- @title +- ++ ++ Error ++ @title ++ + + +- +- Calamares Initialization Failed +- @title +- ++ ++ Calamares Initialization Failed ++ @title ++ + + +- +- %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. +- @info +- ++ ++ %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. ++ @info ++ + + +- +- <br/>The following modules could not be loaded: +- @info +- ++ ++ <br/>The following modules could not be loaded: ++ @info ++ + + +- +- Continue with Setup? +- @title +- ++ ++ Continue with Setup? ++ @title ++ + + +- +- Continue with Installation? +- @title +- ++ ++ Continue with Installation? ++ @title ++ + + +- +- The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- ++ ++ The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ + + +- +- The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- ++ ++ The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ + + +- +- &Set Up Now +- @button +- ++ ++ &Set Up Now ++ @button ++ + + +- +- &Install Now +- @button +- ++ ++ &Install Now ++ @button ++ + + +- +- Go &Back +- @button +- ++ ++ Go &Back ++ @button ++ + + +- +- &Set Up +- @button +- ++ ++ &Set Up ++ @button ++ + + +- +- &Install +- @button +- ++ ++ &Install ++ @button ++ + + +- +- Setup is complete. Close the setup program. +- @tooltip +- ++ ++ Setup is complete. Close the setup program. ++ @tooltip ++ + + +- +- The installation is complete. Close the installer. +- @tooltip +- ++ ++ The installation is complete. Close the installer. ++ @tooltip ++ + + +- +- Cancel the setup process without changing the system. +- @tooltip +- ++ ++ Cancel the setup process without changing the system. ++ @tooltip ++ + + +- +- Cancel the installation process without changing the system. +- @tooltip +- ++ ++ Cancel the installation process without changing the system. ++ @tooltip ++ + + +- +- &Next +- @button +- ++ ++ &Next ++ @button ++ + + +- +- &Back +- @button +- ++ ++ &Back ++ @button ++ + + +- +- &Done +- @button +- ++ ++ &Done ++ @button ++ + + +- +- &Cancel +- @button +- ++ ++ &Cancel ++ @button ++ + + +- +- Cancel Setup? +- @title +- ++ ++ Cancel Setup? ++ @title ++ + + +- +- Cancel Installation? +- @title +- ++ ++ Cancel Installation? ++ @title ++ + + +- +- Do you really want to cancel the current setup process? ++ ++ Do you really want to cancel the current setup process? + The setup program will quit and all changes will be lost. +- ++ ++ ++ ++ ++ Do you really want to cancel the current installation process? ++The system will reboot or you can enter the debug mode for further investigation. ++ 您確定要退出當前的安裝過程嗎? ++系統將重啟,或者您可以進入調試模式進行進一步的調查。 + + +- +- Do you really want to cancel the current install process? +-The installer will quit and all changes will be lost. +- ++ ++ &Reboot ++ @button ++ 重啟(&R) + +- +- ++ ++ ++ &Debug ++ @button ++ 調試(&D) ++ ++ ++ + CalamaresPython::Helper + +- +- Unknown exception type +- @error +- ++ ++ Unknown exception type ++ @error ++ + + +- +- Unparseable Python error +- @error +- ++ ++ Unparseable Python error ++ @error ++ + + +- +- Unparseable Python traceback +- @error +- ++ ++ Unparseable Python traceback ++ @error ++ + + +- +- Unfetchable Python error +- @error +- ++ ++ Unfetchable Python error ++ @error ++ + +- +- ++ ++ + CalamaresWindow + +- +- %1 Setup Program +- ++ ++ ++ %1 Setup Program ++ + + +- +- %1 Installer +- ++ ++ ++ %1 Installer ++ + +- +- ++ ++ + ChangeFilesystemLabelJob + +- +- Set filesystem label on %1 +- @title +- ++ ++ Set filesystem label on %1 ++ @title ++ + + +- +- Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> +- @info +- ++ ++ Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> ++ @info ++ + + +- +- Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… +- @status +- ++ ++ Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… ++ @status ++ + + +- +- +- The installer failed to update partition table on disk '%1'. +- @info +- ++ ++ ++ The installer failed to update partition table on disk '%1'. ++ @info ++ + +- +- ++ ++ + CheckerContainer + +- +- Gathering system information... +- ++ ++ Gathering system information... ++ + +- +- ++ ++ + ChoicePage + +- +- Select storage de&vice: +- @label +- ++ ++ Select storage de&vice: ++ @label ++ + + +- +- +- +- +- Current: +- @label +- ++ ++ ++ ++ ++ Current: ++ @label ++ + + +- +- After: +- @label +- ++ ++ After: ++ @label ++ + + +- +- Reuse %1 as home partition for %2 +- @label +- ++ ++ Reuse %1 as home partition for %2 ++ @label ++ + + +- +- <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> +- ++ ++ <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> ++ + + +- +- %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. +- @info, %1 is partition name, %4 is product name +- ++ ++ %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. ++ @info, %1 is partition name, %4 is product name ++ + + +- +- <strong>Select a partition to install on</strong> +- @label +- ++ ++ <strong>Select a partition to install on</strong> ++ @label ++ + + +- +- An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. +- @info, %1 is product name +- ++ ++ An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ++ @info, %1 is product name ++ + + +- +- The EFI system partition at %1 will be used for starting %2. +- @info, %1 is partition path, %2 is product name +- ++ ++ The EFI system partition at %1 will be used for starting %2. ++ @info, %1 is partition path, %2 is product name ++ + + +- +- EFI system partition: +- @label +- ++ ++ EFI system partition: ++ @label ++ + + +- +- This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- ++ ++ This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ + + +- +- +- +- +- <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. +- ++ ++ ++ ++ ++ <strong>Automatic partitioning</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ + + +- +- +- +- +- <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. +- ++ ++ ++ ++ ++ <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. ++ + + +- +- +- +- +- <strong>Replace a partition</strong><br/>Replaces a partition with %1. +- ++ ++ ++ ++ ++ <strong>Replace a partition</strong><br/>Replaces a partition with %1. ++ + + +- +- This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- ++ ++ This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ + + +- +- This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- ++ ++ This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ + + +- +- This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- ++ ++ This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ + + +- +- This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> +- ++ ++ This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> ++ + + +- +- This storage device has one of its partitions <strong>mounted</strong>. +- @info +- ++ ++ This storage device has one of its partitions <strong>mounted</strong>. ++ @info ++ + + +- +- This storage device is a part of an <strong>inactive RAID</strong> device. +- @info +- ++ ++ This storage device is a part of an <strong>inactive RAID</strong> device. ++ @info ++ + + +- +- No swap +- @label +- ++ ++ No swap ++ @label ++ + + +- +- Reuse swap +- @label +- ++ ++ Reuse swap ++ @label ++ + + +- +- Swap (no Hibernate) +- @label +- ++ ++ Swap (no Hibernate) ++ @label ++ + + +- +- Swap (with Hibernate) +- @label +- ++ ++ Swap (with Hibernate) ++ @label ++ + + +- +- Swap to file +- @label +- ++ ++ Swap to file ++ @label ++ + + +- +- <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. +- ++ ++ <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. ++ + + +- +- Bootloader location: +- @label +- ++ ++ Bootloader location: ++ @label ++ + +- +- ++ ++ + ClearMountsJob + +- +- Successfully unmounted %1. +- ++ ++ Successfully unmounted %1. ++ + + +- +- Successfully disabled swap %1. +- ++ ++ Successfully disabled swap %1. ++ + + +- +- Successfully cleared swap %1. +- ++ ++ Successfully cleared swap %1. ++ + + +- +- Successfully closed mapper device %1. +- ++ ++ Successfully closed mapper device %1. ++ + + +- +- Successfully disabled volume group %1. +- ++ ++ Successfully disabled volume group %1. ++ + + +- +- Clear mounts for partitioning operations on %1 +- @title +- ++ ++ Clear mounts for partitioning operations on %1 ++ @title ++ + + +- +- Clearing mounts for partitioning operations on %1… +- @status +- ++ ++ Clearing mounts for partitioning operations on %1… ++ @status ++ + + +- +- Cleared all mounts for %1 +- ++ ++ Cleared all mounts for %1 ++ + +- +- ++ ++ + ClearTempMountsJob + +- +- +- Clearing all temporary mounts… +- @status +- ++ ++ ++ Clearing all temporary mounts… ++ @status ++ + + +- +- Cleared all temporary mounts. +- ++ ++ Cleared all temporary mounts. ++ + +- +- ++ ++ + CommandList + +- +- Could not run command. +- ++ ++ Could not run command. ++ + + +- +- The commands use variables that are not defined. Missing variables are: %1. +- ++ ++ The commands use variables that are not defined. Missing variables are: %1. ++ + +- +- ++ ++ + Config + +- +- Setup Failed +- @title +- ++ ++ Setup Failed ++ @title ++ + + +- +- Installation Failed +- @title +- ++ ++ Installation Failed ++ @title ++ + + +- +- The setup of %1 did not complete successfully. +- @info +- ++ ++ The setup of %1 did not complete successfully. ++ @info ++ + + +- +- The installation of %1 did not complete successfully. +- @info +- ++ ++ The installation of %1 did not complete successfully. ++ @info ++ + + +- +- Setup Complete +- @title +- ++ ++ Setup Complete ++ @title ++ + + +- +- Installation Complete +- @title +- ++ ++ Installation Complete ++ @title ++ + + +- +- The setup of %1 is complete. +- @info +- ++ ++ The setup of %1 is complete. ++ @info ++ + + +- +- The installation of %1 is complete. +- @info +- ++ ++ The installation of %1 is complete. ++ @info ++ + + +- +- Keyboard model has been set to %1<br/>. +- @label, %1 is keyboard model, as in Apple Magic Keyboard +- ++ ++ Keyboard model has been set to %1<br/>. ++ @label, %1 is keyboard model, as in Apple Magic Keyboard ++ + + +- +- Keyboard layout has been set to %1/%2. +- @label, %1 is layout, %2 is layout variant +- ++ ++ Keyboard layout has been set to %1/%2. ++ @label, %1 is layout, %2 is layout variant ++ + + +- +- Set timezone to %1/%2 +- @action +- ++ ++ Set timezone to %1/%2 ++ @action ++ + + +- +- The system language will be set to %1. +- @info +- ++ ++ The system language will be set to %1. ++ @info ++ + + +- +- The numbers and dates locale will be set to %1. +- @info +- ++ ++ The numbers and dates locale will be set to %1. ++ @info ++ + + +- +- Network Installation. (Disabled: Incorrect configuration) +- ++ ++ Network Installation. (Disabled: Incorrect configuration) ++ + + +- +- Network Installation. (Disabled: Received invalid groups data) +- ++ ++ Network Installation. (Disabled: Received invalid groups data) ++ + + +- +- Network Installation. (Disabled: Internal error) +- ++ ++ Network Installation. (Disabled: Internal error) ++ + + +- +- Network Installation. (Disabled: Unable to fetch package lists, check your network connection) +- ++ ++ Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ++ + + +- +- Network Installation. (Disabled: No package list) +- ++ ++ Network Installation. (Disabled: No package list) ++ + + +- +- Package selection +- ++ ++ Package selection ++ + + +- +- Package Selection +- ++ ++ Package Selection ++ + + +- +- Please pick a product from the list. The selected product will be installed. +- ++ ++ Please pick a product from the list. The selected product will be installed. ++ + + +- +- Packages +- ++ ++ Packages ++ + + +- +- Install option: <strong>%1</strong> +- ++ ++ Install option: <strong>%1</strong> ++ + + +- +- None +- ++ ++ None ++ + + +- +- Summary +- @label +- ++ ++ Summary ++ @label ++ + + +- +- This is an overview of what will happen once you start the setup procedure. +- ++ ++ This is an overview of what will happen once you start the setup procedure. ++ + + +- +- This is an overview of what will happen once you start the install procedure. +- ++ ++ This is an overview of what will happen once you start the install procedure. ++ + + +- +- Your username is too long. +- ++ ++ Your username is too long. ++ + + +- +- Your username must start with a lowercase letter or underscore. +- ++ ++ Your username must start with a lowercase letter or underscore. ++ + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ + + +- +- '%1' is not allowed as username. +- ++ ++ '%1' is not allowed as username. ++ + + +- +- Your hostname is too short. +- ++ ++ Your hostname is too short. ++ + + +- +- Your hostname is too long. +- ++ ++ Your hostname is too long. ++ + + +- +- '%1' is not allowed as hostname. +- ++ ++ '%1' is not allowed as hostname. ++ + + +- +- Only letters, numbers, underscore and hyphen are allowed. +- ++ ++ Only letters, numbers, underscore and hyphen are allowed. ++ + + +- +- Your passwords do not match! +- ++ ++ Your passwords do not match! ++ + + +- +- OK! +- ++ ++ OK! ++ + + +- +- This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. +- ++ ++ This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. ++ + + +- +- This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. +- ++ ++ This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. ++ + + +- +- This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. +- ++ ++ This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. ++ + + +- +- This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. +- ++ ++ This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. ++ + + +- +- This program will ask you some questions and set up %2 on your computer. +- ++ ++ <h1>Welcome to the Calamares setup program for %1</h1> ++ + + +- +- <h1>Welcome to the Calamares setup program for %1</h1> +- ++ ++ <h1>Welcome to %1 setup</h1> ++ + + +- +- <h1>Welcome to %1 setup</h1> +- ++ ++ <h1>Welcome to the Calamares installer for %1</h1> ++ + + +- +- <h1>Welcome to the Calamares installer for %1</h1> +- ++ ++ <h1>Welcome to the %1 installer</h1> ++ + +- +- +- <h1>Welcome to the %1 installer</h1> +- +- +- +- ++ ++ + ContextualProcessJob + +- +- Performing contextual processes' job… +- @status +- ++ ++ Performing contextual processes' job… ++ @status ++ + +- +- ++ ++ + CreatePartitionDialog + +- +- Create a Partition +- ++ ++ Create a Partition ++ + + +- +- Si&ze: +- ++ ++ Si&ze: ++ + + +- +- MiB +- ++ ++ MiB ++ + + +- +- Partition &Type: +- ++ ++ Partition &Type: ++ + + +- +- Primar&y +- ++ ++ Primar&y ++ + + +- +- E&xtended +- ++ ++ E&xtended ++ + + +- +- Fi&le System: +- ++ ++ Fi&le System: ++ + + +- +- LVM LV name +- ++ ++ LVM LV name ++ + + +- +- &Mount Point: +- ++ ++ &Mount Point: ++ + + +- +- Flags: +- ++ ++ Flags: ++ + + +- +- Label for the filesystem +- ++ ++ Label for the filesystem ++ + + +- +- FS Label: +- ++ ++ FS Label: ++ + + +- +- En&crypt +- @action +- ++ ++ En&crypt ++ @action ++ + + +- +- Logical +- @label +- ++ ++ Logical ++ @label ++ + + +- +- Primary +- @label +- ++ ++ Primary ++ @label ++ + + +- +- GPT +- @label +- ++ ++ GPT ++ @label ++ + + +- +- Mountpoint already in use. Please select another one. +- @info +- ++ ++ Mountpoint already in use. Please select another one. ++ @info ++ + + +- +- Mountpoint must start with a <tt>/</tt>. +- @info +- ++ ++ Mountpoint must start with a <tt>/</tt>. ++ @info ++ + +- +- ++ ++ + CreatePartitionJob + +- +- Create new %1MiB partition on %3 (%2) with entries %4 +- @title +- ++ ++ Create new %1MiB partition on %3 (%2) with entries %4 ++ @title ++ + + +- +- Create new %1MiB partition on %3 (%2) +- @title +- ++ ++ Create new %1MiB partition on %3 (%2) ++ @title ++ + + +- +- Create new %2MiB partition on %4 (%3) with file system %1 +- @title +- ++ ++ Create new %2MiB partition on %4 (%3) with file system %1 ++ @title ++ + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> +- @info +- ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> ++ @info ++ + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) +- @info +- ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) ++ @info ++ + + +- +- Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> +- @info +- ++ ++ Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> ++ @info ++ + + +- +- +- Creating new %1 partition on %2… +- @status +- ++ ++ ++ Creating new %1 partition on %2… ++ @status ++ + + +- +- The installer failed to create partition on disk '%1'. +- @info +- ++ ++ The installer failed to create partition on disk '%1'. ++ @info ++ + +- +- ++ ++ + CreatePartitionTableDialog + +- +- Create Partition Table +- ++ ++ Create Partition Table ++ + + +- +- Creating a new partition table will delete all existing data on the disk. +- ++ ++ Creating a new partition table will delete all existing data on the disk. ++ + + +- +- What kind of partition table do you want to create? +- ++ ++ What kind of partition table do you want to create? ++ + + +- +- Master Boot Record (MBR) +- ++ ++ Master Boot Record (MBR) ++ + + +- +- GUID Partition Table (GPT) +- ++ ++ GUID Partition Table (GPT) ++ + +- +- ++ ++ + CreatePartitionTableJob + +- +- +- Creating new %1 partition table on %2… +- @status +- ++ ++ ++ Creating new %1 partition table on %2… ++ @status ++ + + +- +- Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… +- @status +- ++ ++ Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… ++ @status ++ + + +- +- The installer failed to create a partition table on %1. +- ++ ++ The installer failed to create a partition table on %1. ++ + +- +- ++ ++ + CreateUserJob + +- +- Create user %1 +- ++ ++ Create user %1 ++ + + +- +- Create user <strong>%1</strong> +- ++ ++ Create user <strong>%1</strong> ++ + + +- +- +- Creating user %1… +- @status +- ++ ++ ++ Creating user %1… ++ @status ++ + + +- +- Preserving home directory… +- @status +- ++ ++ Preserving home directory… ++ @status ++ + + +- +- Configuring user %1 +- @status +- ++ ++ Configuring user %1 ++ @status ++ + + +- +- Setting file permissions… +- @status +- ++ ++ Setting file permissions… ++ @status ++ + +- +- ++ ++ + CreateVolumeGroupDialog + +- +- Create Volume Group +- @title +- ++ ++ Create Volume Group ++ @title ++ + +- +- ++ ++ + CreateVolumeGroupJob + +- +- +- Creating new volume group named %1… +- @status +- ++ ++ ++ Creating new volume group named %1… ++ @status ++ + + +- +- Creating new volume group named <strong>%1</strong>… +- @status +- ++ ++ Creating new volume group named <strong>%1</strong>… ++ @status ++ + + +- +- The installer failed to create a volume group named '%1'. +- ++ ++ The installer failed to create a volume group named '%1'. ++ + +- +- ++ ++ + DeactivateVolumeGroupJob + +- +- +- Deactivating volume group named %1… +- @status +- ++ ++ ++ Deactivating volume group named %1… ++ @status ++ + + +- +- Deactivating volume group named <strong>%1</strong>… +- @status +- ++ ++ Deactivating volume group named <strong>%1</strong>… ++ @status ++ + + +- +- The installer failed to deactivate a volume group named %1. +- ++ ++ The installer failed to deactivate a volume group named %1. ++ + +- +- ++ ++ + DeletePartitionJob + +- +- +- Deleting partition %1… +- @status +- ++ ++ ++ Deleting partition %1… ++ @status ++ + + +- +- Deleting partition <strong>%1</strong>… +- @status +- ++ ++ Deleting partition <strong>%1</strong>… ++ @status ++ + + +- +- The installer failed to delete partition %1. +- ++ ++ The installer failed to delete partition %1. ++ + +- +- ++ ++ + DeviceInfoWidget + +- +- <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. +- ++ ++ <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. ++ + + +- +- <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. +- ++ ++ <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. ++ + + +- +- This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. +- ++ ++ This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. ++ + + +- +- This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. +- ++ ++ This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. ++ + + +- +- This device has a <strong>%1</strong> partition table. +- ++ ++ This device has a <strong>%1</strong> partition table. ++ + + +- +- The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. +- ++ ++ The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. ++ + +- +- ++ ++ + DeviceModel + +- +- %1 - %2 (%3) +- device[name] - size[number] (device-node[name]) +- ++ ++ %1 - %2 (%3) ++ device[name] - size[number] (device-node[name]) ++ + + +- +- %1 - (%2) +- device[name] - (device-node[name]) +- ++ ++ %1 - (%2) ++ device[name] - (device-node[name]) ++ + +- +- ++ ++ + DracutLuksCfgJob + +- +- Writing LUKS configuration for Dracut to %1… +- @status +- ++ ++ Writing LUKS configuration for Dracut to %1… ++ @status ++ + + +- +- Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted +- @info +- ++ ++ Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted ++ @info ++ + + +- +- Failed to open %1 +- @error +- ++ ++ Failed to open %1 ++ @error ++ + +- +- ++ ++ + DummyCppJob + +- +- Performing dummy C++ job… +- @status +- ++ ++ Performing dummy C++ job… ++ @status ++ + +- +- ++ ++ + EditExistingPartitionDialog + +- +- Edit Existing Partition +- ++ ++ Edit Existing Partition ++ + + +- +- Con&tent: +- ++ ++ Con&tent: ++ + + +- +- &Keep +- ++ ++ &Keep ++ + + +- +- Format +- ++ ++ Format ++ + + +- +- Warning: Formatting the partition will erase all existing data. +- ++ ++ Warning: Formatting the partition will erase all existing data. ++ + + +- +- &Mount Point: +- ++ ++ &Mount Point: ++ + + +- +- Si&ze: +- ++ ++ Si&ze: ++ + + +- +- MiB +- ++ ++ MiB ++ + + +- +- Fi&le System: +- ++ ++ Fi&le System: ++ + + +- +- Flags: +- ++ ++ Flags: ++ + + +- +- Label for the filesystem +- ++ ++ Label for the filesystem ++ + + +- +- FS Label: +- ++ ++ FS Label: ++ + + +- +- Passphrase for existing partition +- ++ ++ Passphrase for existing partition ++ + + +- +- Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. +- ++ ++ Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. ++ + +- +- ++ ++ + EncryptWidget + +- +- En&crypt system +- ++ ++ En&crypt system ++ + + +- +- Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. +- ++ ++ Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. ++ + + +- +- Passphrase +- ++ ++ Passphrase ++ + + +- +- Confirm passphrase +- ++ ++ Confirm passphrase ++ + + +- +- +- Please enter the same passphrase in both boxes. +- @tooltip +- ++ ++ ++ Please enter the same passphrase in both boxes. ++ @tooltip ++ + + +- +- Password must be a minimum of %1 characters. +- @tooltip +- ++ ++ Password must be a minimum of %1 characters. ++ @tooltip ++ + +- +- ++ ++ + ErrorDialog + +- +- Details: +- ++ ++ Details: ++ + + +- +- Would you like to paste the install log to the web? +- ++ ++ Would you like to paste the install log to the web? ++ + +- +- ++ ++ + FillGlobalStorageJob + +- +- Set partition information +- @title +- ++ ++ Set partition information ++ @title ++ + + +- +- Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> +- @info +- ++ ++ Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> ++ @info ++ + + +- +- Install %1 on <strong>new</strong> %2 system partition +- @info +- ++ ++ Install %1 on <strong>new</strong> %2 system partition ++ @info ++ + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> +- @info +- ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> ++ @info ++ + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 +- @info +- ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 ++ @info ++ + + +- +- Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> +- @info +- ++ ++ Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> ++ @info ++ + + +- +- Install %2 on %3 system partition <strong>%1</strong> +- @info +- ++ ++ Install %2 on %3 system partition <strong>%1</strong> ++ @info ++ + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> +- @info +- ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> ++ @info ++ + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… +- @info +- ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… ++ @info ++ + + +- +- Install boot loader on <strong>%1</strong>… +- @info +- ++ ++ Install boot loader on <strong>%1</strong>… ++ @info ++ + + +- +- Setting up mount points… +- @status +- ++ ++ Setting up mount points… ++ @status ++ + +- +- ++ ++ + FinishedPage + +- +- &Restart now +- ++ ++ &Restart now ++ + + +- +- <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. +- @info +- ++ ++ <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. ++ @info ++ + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> +- @tooltip +- ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> ++ @tooltip ++ + + +- +- <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. +- @info +- ++ ++ <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. ++ @info ++ + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> +- @tooltip +- ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> ++ @tooltip ++ + + +- +- <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- ++ ++ <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ + + +- +- <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- ++ ++ <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ + +- +- ++ ++ + FinishedQmlViewStep + +- +- Finish +- @label +- ++ ++ Finish ++ @label ++ + +- +- ++ ++ + FinishedViewStep + +- +- Finish +- @label +- ++ ++ Finish ++ @label ++ + +- +- ++ ++ + FormatPartitionJob + +- +- Format partition %1 (file system: %2, size: %3 MiB) on %4 +- @title +- ++ ++ Format partition %1 (file system: %2, size: %3 MiB) on %4 ++ @title ++ + + +- +- Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> +- @info +- ++ ++ Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> ++ @info ++ + + +- +- %1 (%2) +- partition label %1 (device path %2) +- ++ ++ %1 (%2) ++ partition label %1 (device path %2) ++ + + +- +- Formatting partition %1 with file system %2… +- @status +- ++ ++ Formatting partition %1 with file system %2… ++ @status ++ + + +- +- The installer failed to format partition %1 on disk '%2'. +- ++ ++ The installer failed to format partition %1 on disk '%2'. ++ + +- +- ++ ++ + GeneralRequirements + +- +- Please ensure the system has at least %1 GiB available drive space. +- ++ ++ Please ensure the system has at least %1 GiB available drive space. ++ + + +- +- Available drive space is all of the hard disks and SSDs connected to the system. +- ++ ++ Available drive space is all of the hard disks and SSDs connected to the system. ++ + + +- +- There is not enough drive space. At least %1 GiB is required. +- ++ ++ There is not enough drive space. At least %1 GiB is required. ++ + + +- +- has at least %1 GiB working memory +- ++ ++ has at least %1 GiB working memory ++ + + +- +- The system does not have enough working memory. At least %1 GiB is required. +- ++ ++ The system does not have enough working memory. At least %1 GiB is required. ++ + + +- +- is plugged in to a power source +- ++ ++ is plugged in to a power source ++ + + +- +- The system is not plugged in to a power source. +- ++ ++ The system is not plugged in to a power source. ++ + + +- +- is connected to the Internet +- ++ ++ is connected to the Internet ++ + + +- +- The system is not connected to the Internet. +- ++ ++ The system is not connected to the Internet. ++ + + +- +- is running the installer as an administrator (root) +- ++ ++ is running the installer as an administrator (root) ++ + + +- +- The setup program is not running with administrator rights. +- ++ ++ The setup program is not running with administrator rights. ++ + + +- +- The installer is not running with administrator rights. +- ++ ++ The installer is not running with administrator rights. ++ + + +- +- has a screen large enough to show the whole installer +- ++ ++ has a screen large enough to show the whole installer ++ + + +- +- The screen is too small to display the setup program. +- ++ ++ The screen is too small to display the setup program. ++ + + +- +- The screen is too small to display the installer. +- ++ ++ The screen is too small to display the installer. ++ + + +- +- is always false +- ++ ++ is always false ++ + + +- +- The computer says no. +- ++ ++ The computer says no. ++ + + +- +- is always false (slowly) +- ++ ++ is always false (slowly) ++ + + +- +- The computer says no (slowly). +- ++ ++ The computer says no (slowly). ++ + + +- +- is always true +- ++ ++ is always true ++ + + +- +- The computer says yes. +- ++ ++ The computer says yes. ++ + + +- +- is always true (slowly) +- ++ ++ is always true (slowly) ++ + + +- +- The computer says yes (slowly). +- ++ ++ The computer says yes (slowly). ++ + + +- +- is checked three times. +- ++ ++ is checked three times. ++ + + +- +- The snark has not been checked three times. +- The (some mythological beast) has not been checked three times. +- ++ ++ The snark has not been checked three times. ++ The (some mythological beast) has not been checked three times. ++ + +- +- ++ ++ + HostInfoJob + +- +- Collecting information about your machine… +- @status +- ++ ++ Collecting information about your machine… ++ @status ++ + +- +- ++ ++ + IDJob + +- +- +- +- +- OEM Batch Identifier +- ++ ++ ++ ++ ++ OEM Batch Identifier ++ + + +- +- Could not create directories <code>%1</code>. +- ++ ++ Could not create directories <code>%1</code>. ++ + + +- +- Could not open file <code>%1</code>. +- ++ ++ Could not open file <code>%1</code>. ++ + + +- +- Could not write to file <code>%1</code>. +- ++ ++ Could not write to file <code>%1</code>. ++ + +- +- ++ ++ + InitcpioJob + +- +- Creating initramfs with mkinitcpio… +- @status +- ++ ++ Creating initramfs with mkinitcpio… ++ @status ++ + +- +- ++ ++ + InitramfsJob + +- +- Creating initramfs… +- @status +- ++ ++ Creating initramfs… ++ @status ++ + +- +- ++ ++ + InteractiveTerminalPage + +- +- Konsole not installed. +- @error +- ++ ++ Konsole not installed. ++ @error ++ + + +- +- Please install KDE Konsole and try again! +- @info +- ++ ++ Please install KDE Konsole and try again! ++ @info ++ + + +- +- Executing script: &nbsp;<code>%1</code> +- @info +- ++ ++ Executing script: &nbsp;<code>%1</code> ++ @info ++ + +- +- ++ ++ + InteractiveTerminalViewStep + +- +- Script +- @label +- ++ ++ Script ++ @label ++ + +- +- ++ ++ + KeyboardQmlViewStep + +- +- Keyboard +- @label +- ++ ++ Keyboard ++ @label ++ + +- +- ++ ++ + KeyboardViewStep + +- +- Keyboard +- @label +- ++ ++ Keyboard ++ @label ++ + +- +- ++ ++ + LCLocaleDialog + +- +- System Locale Setting +- @title +- ++ ++ System Locale Setting ++ @title ++ + + +- +- The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. +- @info +- ++ ++ The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. ++ @info ++ + + +- +- &Cancel +- @button +- ++ ++ &Cancel ++ @button ++ + + +- +- &OK +- @button +- ++ ++ &OK ++ @button ++ + +- +- ++ ++ + LOSHJob + +- +- Configuring encrypted swap. +- ++ ++ Configuring encrypted swap. ++ + + +- +- No target system available. +- ++ ++ No target system available. ++ + + +- +- No rootMountPoint is set. +- ++ ++ No rootMountPoint is set. ++ + + +- +- No configFilePath is set. +- ++ ++ No configFilePath is set. ++ + +- +- ++ ++ + LicensePage + +- +- <h1>License Agreement</h1> +- ++ ++ <h1>License Agreement</h1> ++ + + +- +- I accept the terms and conditions above. +- @info +- ++ ++ I accept the terms and conditions above. ++ @info ++ + + +- +- Please review the End User License Agreements (EULAs). +- @info +- ++ ++ Please review the End User License Agreements (EULAs). ++ @info ++ + + +- +- This setup procedure will install proprietary software that is subject to licensing terms. +- @info +- ++ ++ This setup procedure will install proprietary software that is subject to licensing terms. ++ @info ++ + + +- +- If you do not agree with the terms, the setup procedure cannot continue. +- @info +- ++ ++ If you do not agree with the terms, the setup procedure cannot continue. ++ @info ++ + + +- +- This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. +- @info +- ++ ++ This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. ++ @info ++ + + +- +- If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. +- @info +- ++ ++ If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. ++ @info ++ + +- +- ++ ++ + LicenseViewStep + +- +- License +- @label +- ++ ++ License ++ @label ++ + +- +- ++ ++ + LicenseWidget + +- +- URL: %1 +- @label +- ++ ++ URL: %1 ++ @label ++ + + +- +- <strong>%1 driver</strong><br/>by %2 +- @label, %1 is product name, %2 is product vendor +- %1 is an untranslatable product name, example: Creative Audigy driver +- ++ ++ <strong>%1 driver</strong><br/>by %2 ++ @label, %1 is product name, %2 is product vendor ++ %1 is an untranslatable product name, example: Creative Audigy driver ++ + + +- +- <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- %1 is usually a vendor name, example: Nvidia graphics driver +- ++ ++ <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ %1 is usually a vendor name, example: Nvidia graphics driver ++ + + +- +- <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- ++ ++ <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ + + +- +- <strong>%1 codec</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- ++ ++ <strong>%1 codec</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ + + +- +- <strong>%1 package</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- ++ ++ <strong>%1 package</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ + + +- +- <strong>%1</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- ++ ++ <strong>%1</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ + + +- +- File: %1 +- @label +- ++ ++ File: %1 ++ @label ++ + + +- +- Hide the license text +- @tooltip +- ++ ++ Hide the license text ++ @tooltip ++ + + +- +- Show the license text +- @tooltip +- ++ ++ Show the license text ++ @tooltip ++ + + +- +- Open the license agreement in browser +- @tooltip +- ++ ++ Open the license agreement in browser ++ @tooltip ++ + +- +- ++ ++ + LocalePage + +- +- Region: +- @label +- ++ ++ Region: ++ @label ++ + + +- +- Zone: +- @label +- ++ ++ Zone: ++ @label ++ + + +- +- +- &Change… +- @button +- ++ ++ ++ &Change… ++ @button ++ + +- +- ++ ++ + LocaleQmlViewStep + +- +- Location +- @label +- ++ ++ Location ++ @label ++ + +- +- ++ ++ + LocaleTests + +- +- Quit +- ++ ++ Quit ++ + +- +- ++ ++ + LocaleViewStep + +- +- Location +- @label +- ++ ++ Location ++ @label ++ + +- +- ++ ++ + LuksBootKeyFileJob + +- +- Configuring LUKS key file. +- ++ ++ Configuring LUKS key file. ++ + + +- +- +- No partitions are defined. +- ++ ++ ++ No partitions are defined. ++ + + +- +- +- Encrypted rootfs setup error +- ++ ++ ++ Encrypted rootfs setup error ++ + + +- +- Root partition %1 is LUKS but no passphrase has been set. +- ++ ++ Root partition %1 is LUKS but no passphrase has been set. ++ + + +- +- Could not create LUKS key file for root partition %1. +- ++ ++ Could not create LUKS key file for root partition %1. ++ + +- +- ++ ++ + MachineIdJob + +- +- Generate machine-id. +- ++ ++ Generate machine-id. ++ + + +- +- Configuration Error +- ++ ++ Configuration Error ++ + + +- +- No root mount point is set for MachineId. +- ++ ++ No root mount point is set for MachineId. ++ + + +- +- +- +- +- File not found +- ++ ++ ++ ++ ++ File not found ++ + + +- +- Path <pre>%1</pre> must be an absolute path. +- ++ ++ Path <pre>%1</pre> must be an absolute path. ++ + + +- +- Could not create new random file <pre>%1</pre>. +- ++ ++ Could not create new random file <pre>%1</pre>. ++ + +- +- ++ ++ + Map + +- +- Timezone: %1 +- @label +- ++ ++ Timezone: %1 ++ @label ++ + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @info +- ++ @info ++ + +- +- ++ ++ + Map-qt6 + +- +- Timezone: %1 +- @label +- ++ ++ Timezone: %1 ++ @label ++ + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @label +- ++ @label ++ + +- +- ++ ++ + NetInstallViewStep + +- +- Package selection +- ++ ++ Package selection ++ + + +- +- Office software +- ++ ++ Office software ++ + + +- +- Office package +- ++ ++ Office package ++ + + +- +- Browser software +- ++ ++ Browser software ++ + + +- +- Browser package +- ++ ++ Browser package ++ + + +- +- Web browser +- ++ ++ Web browser ++ + + +- +- Kernel +- label for netinstall module, Linux kernel +- ++ ++ Kernel ++ label for netinstall module, Linux kernel ++ + + +- +- Services +- label for netinstall module, system services +- ++ ++ Services ++ label for netinstall module, system services ++ + + +- +- Login +- label for netinstall module, choose login manager +- ++ ++ Login ++ label for netinstall module, choose login manager ++ + + +- +- Desktop +- label for netinstall module, choose desktop environment +- ++ ++ Desktop ++ label for netinstall module, choose desktop environment ++ + + +- +- Applications +- ++ ++ Applications ++ + + +- +- Communication +- label for netinstall module +- ++ ++ Communication ++ label for netinstall module ++ + + +- +- Development +- label for netinstall module +- ++ ++ Development ++ label for netinstall module ++ + + +- +- Office +- label for netinstall module +- ++ ++ Office ++ label for netinstall module ++ + + +- +- Multimedia +- label for netinstall module +- ++ ++ Multimedia ++ label for netinstall module ++ + + +- +- Internet +- label for netinstall module +- ++ ++ Internet ++ label for netinstall module ++ + + +- +- Theming +- label for netinstall module +- ++ ++ Theming ++ label for netinstall module ++ + + +- +- Gaming +- label for netinstall module +- ++ ++ Gaming ++ label for netinstall module ++ + + +- +- Utilities +- label for netinstall module +- ++ ++ Utilities ++ label for netinstall module ++ + +- +- ++ ++ + NotesQmlViewStep + +- +- Notes +- ++ ++ Notes ++ + +- +- ++ ++ + OEMPage + +- +- Ba&tch: +- ++ ++ Ba&tch: ++ + + +- +- <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> +- ++ ++ <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> ++ + + +- +- <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> +- ++ ++ <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> ++ + +- +- ++ ++ + OEMViewStep + +- +- OEM Configuration +- ++ ++ OEM Configuration ++ + + +- +- Set the OEM Batch Identifier to <code>%1</code>. +- ++ ++ Set the OEM Batch Identifier to <code>%1</code>. ++ + +- +- ++ ++ + Offline + +- +- Select your preferred region, or use the default settings +- @label +- ++ ++ Select your preferred region, or use the default settings ++ @label ++ + + +- +- +- +- Timezone: %1 +- @label +- ++ ++ ++ ++ Timezone: %1 ++ @label ++ + + +- +- Select your preferred zone within your region +- @label +- ++ ++ Select your preferred zone within your region ++ @label ++ + + +- +- Zones +- @button +- ++ ++ Zones ++ @button ++ + + +- +- You can fine-tune language and locale settings below +- @label +- ++ ++ You can fine-tune language and locale settings below ++ @label ++ + +- +- ++ ++ + Offline-qt6 + +- +- Select your preferred region, or use the default settings +- @label +- ++ ++ Select your preferred region, or use the default settings ++ @label ++ + + +- +- +- +- Timezone: %1 +- @label +- ++ ++ ++ ++ Timezone: %1 ++ @label ++ + + +- +- Select your preferred zone within your region +- @label +- ++ ++ Select your preferred zone within your region ++ @label ++ + + +- +- Zones +- @button +- ++ ++ Zones ++ @button ++ + + +- +- You can fine-tune language and locale settings below +- @label +- ++ ++ You can fine-tune language and locale settings below ++ @label ++ + +- +- ++ ++ + PWQ + +- +- Password is too short +- ++ ++ Password is too short ++ + + +- +- Password is too long +- ++ ++ Password is too long ++ + + +- +- Password is too weak +- ++ ++ Password is too weak ++ + + +- +- Memory allocation error when setting '%1' +- ++ ++ Memory allocation error when setting '%1' ++ + + +- +- Memory allocation error +- ++ ++ Memory allocation error ++ + + +- +- The password is the same as the old one +- ++ ++ The password is the same as the old one ++ + + +- +- The password is a palindrome +- ++ ++ The password is a palindrome ++ + + +- +- The password differs with case changes only +- ++ ++ The password differs with case changes only ++ + + +- +- The password is too similar to the old one +- ++ ++ The password is too similar to the old one ++ + + +- +- The password contains the user name in some form +- ++ ++ The password contains the user name in some form ++ + + +- +- The password contains words from the real name of the user in some form +- ++ ++ The password contains words from the real name of the user in some form ++ + + +- +- The password contains forbidden words in some form +- ++ ++ The password contains forbidden words in some form ++ + + +- +- The password contains fewer than %n digits +- +- +- ++ ++ The password contains fewer than %n digits ++ ++ ++ + + +- +- The password contains too few digits +- ++ ++ The password contains too few digits ++ + + +- +- The password contains fewer than %n uppercase letters +- +- +- ++ ++ The password contains fewer than %n uppercase letters ++ ++ ++ + + +- +- The password contains too few uppercase letters +- ++ ++ The password contains too few uppercase letters ++ + + +- +- The password contains fewer than %n lowercase letters +- +- +- ++ ++ The password contains fewer than %n lowercase letters ++ ++ ++ + + +- +- The password contains too few lowercase letters +- ++ ++ The password contains too few lowercase letters ++ + + +- +- The password contains fewer than %n non-alphanumeric characters +- +- +- ++ ++ The password contains fewer than %n non-alphanumeric characters ++ ++ ++ + + +- +- The password contains too few non-alphanumeric characters +- ++ ++ The password contains too few non-alphanumeric characters ++ + + +- +- The password is shorter than %n characters +- +- +- ++ ++ The password is shorter than %n characters ++ ++ ++ + + +- +- The password is too short +- ++ ++ The password is too short ++ + + +- +- The password is a rotated version of the previous one +- ++ ++ The password is a rotated version of the previous one ++ + + +- +- The password contains fewer than %n character classes +- +- +- ++ ++ The password contains fewer than %n character classes ++ ++ ++ + + +- +- The password does not contain enough character classes +- ++ ++ The password does not contain enough character classes ++ + + +- +- The password contains more than %n same characters consecutively +- +- +- ++ ++ The password contains more than %n same characters consecutively ++ ++ ++ + + +- +- The password contains too many same characters consecutively +- ++ ++ The password contains too many same characters consecutively ++ + + +- +- The password contains more than %n characters of the same class consecutively +- +- +- ++ ++ The password contains more than %n characters of the same class consecutively ++ ++ ++ + + +- +- The password contains too many characters of the same class consecutively +- ++ ++ The password contains too many characters of the same class consecutively ++ + + +- +- The password contains monotonic sequence longer than %n characters +- +- +- ++ ++ The password contains monotonic sequence longer than %n characters ++ ++ ++ + + +- +- The password contains too long of a monotonic character sequence +- ++ ++ The password contains too long of a monotonic character sequence ++ + + +- +- No password supplied +- ++ ++ No password supplied ++ + + +- +- Cannot obtain random numbers from the RNG device +- ++ ++ Cannot obtain random numbers from the RNG device ++ + + +- +- Password generation failed - required entropy too low for settings +- ++ ++ Password generation failed - required entropy too low for settings ++ + + +- +- The password fails the dictionary check - %1 +- ++ ++ The password fails the dictionary check - %1 ++ + + +- +- The password fails the dictionary check +- ++ ++ The password fails the dictionary check ++ + + +- +- Unknown setting - %1 +- ++ ++ Unknown setting - %1 ++ + + +- +- Unknown setting +- ++ ++ Unknown setting ++ + + +- +- Bad integer value of setting - %1 +- ++ ++ Bad integer value of setting - %1 ++ + + +- +- Bad integer value +- ++ ++ Bad integer value ++ + + +- +- Setting %1 is not of integer type +- ++ ++ Setting %1 is not of integer type ++ + + +- +- Setting is not of integer type +- ++ ++ Setting is not of integer type ++ + + +- +- Setting %1 is not of string type +- ++ ++ Setting %1 is not of string type ++ + + +- +- Setting is not of string type +- ++ ++ Setting is not of string type ++ + + +- +- Opening the configuration file failed +- ++ ++ Opening the configuration file failed ++ + + +- +- The configuration file is malformed +- ++ ++ The configuration file is malformed ++ + + +- +- Fatal failure +- ++ ++ Fatal failure ++ + + +- +- Unknown error +- ++ ++ Unknown error ++ + +- +- ++ ++ + PackageChooserPage + +- +- Product Name +- ++ ++ Product Name ++ + + +- +- TextLabel +- ++ ++ TextLabel ++ + + +- +- Long Product Description +- ++ ++ Long Product Description ++ + + +- +- Package Selection +- ++ ++ Package Selection ++ + + +- +- Please pick a product from the list. The selected product will be installed. +- ++ ++ Please pick a product from the list. The selected product will be installed. ++ + +- +- ++ ++ + PackageModel + +- +- Name +- ++ ++ Name ++ + + +- +- Description +- ++ ++ Description ++ + +- +- ++ ++ + Page_Keyboard + +- +- Keyboard model: +- ++ ++ Keyboard model: ++ + + +- +- Type here to test your keyboard +- ++ ++ Type here to test your keyboard ++ + + +- +- Switch Keyboard: +- shortcut for switching between keyboard layouts +- ++ ++ Switch Keyboard: ++ shortcut for switching between keyboard layouts ++ + +- +- ++ ++ + Page_UserSetup + +- +- What is your name? +- ++ ++ What is your name? ++ ++ ++ ++ ++ ++ Your Full Name ++ ++ ++ ++ ++ What name do you want to use to log in? ++ ++ ++ ++ ++ ++ login ++ ++ ++ ++ ++ What is the name of this computer? ++ ++ ++ ++ ++ ++ <small>This name will be used if you make the computer visible to others on a network.</small> ++ ++ ++ ++ ++ ++ Computer Name ++ ++ ++ ++ ++ ++ Choose a password to keep your account safe. ++ ++ ++ ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ ++ ++ ++ ++ ++ ++ ++ Password ++ + + +- +- Your Full Name +- ++ ++ ++ ++ ++ Repeat Password ++ + + +- +- What name do you want to use to log in? +- ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ + + +- +- login +- ++ ++ ++ Require strong passwords. ++ + + +- +- What is the name of this computer? +- ++ ++ ++ Log in automatically without asking for the password. ++ + + +- +- <small>This name will be used if you make the computer visible to others on a network.</small> +- ++ ++ Use the same password for the administrator account. ++ + + +- +- Computer Name +- ++ ++ ++ Choose a password for the administrator account. ++ + + +- +- Choose a password to keep your account safe. +- ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> +- ++ ++ ++ Use Active Directory ++ + + +- +- +- Password +- ++ ++ ++ Domain: ++ + + +- +- +- Repeat Password +- ++ ++ ++ Domain Administrator: ++ + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- ++ ++ ++ Password: ++ + + +- +- Require strong passwords. +- ++ ++ ++ IP Address (optional): ++ + + +- +- Log in automatically without asking for the password. +- ++ ++ your name ++ 姓名 + + +- +- Use the same password for the administrator account. +- ++ ++ user name ++ 用户名 + + +- +- Choose a password for the administrator account. +- ++ ++ computer name ++ 計算機名稱 + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors.</small> +- ++ ++ Use the same password for the root account. ++ + +- +- ++ ++ + PartitionLabelsView + +- +- Root +- ++ ++ Root ++ + + +- +- Home +- @label +- ++ ++ Home ++ @label ++ + + +- +- Boot +- @label +- ++ ++ Boot ++ @label ++ + + +- +- EFI system +- @label +- ++ ++ EFI system ++ @label ++ + + +- +- Swap +- @label +- ++ ++ Swap ++ @label ++ + + +- +- New partition for %1 +- @label +- ++ ++ New partition for %1 ++ @label ++ + + +- +- New partition +- @label +- ++ ++ New partition ++ @label ++ + + +- +- %1 %2 +- size[number] filesystem[name] +- ++ ++ %1 %2 ++ size[number] filesystem[name] ++ + +- +- ++ ++ + PartitionModel + +- +- +- Free Space +- @title +- ++ ++ ++ Free Space ++ @title ++ + + +- +- +- New Partition +- @title +- ++ ++ ++ New Partition ++ @title ++ + + +- +- Name +- @title +- ++ ++ Name ++ @title ++ + + +- +- File System +- @title +- ++ ++ File System ++ @title ++ + + +- +- File System Label +- @title +- ++ ++ File System Label ++ @title ++ + + +- +- Mount Point +- @title +- ++ ++ Mount Point ++ @title ++ + + +- +- Size +- @title +- ++ ++ Size ++ @title ++ + +- +- ++ ++ + PartitionPage + +- +- Storage de&vice: +- ++ ++ Storage de&vice: ++ + + +- +- &Revert All Changes +- ++ ++ &Revert All Changes ++ + + +- +- New Partition &Table +- ++ ++ New Partition &Table ++ + + +- +- Cre&ate +- ++ ++ Cre&ate ++ + + +- +- &Edit +- ++ ++ &Edit ++ + + +- +- &Delete +- ++ ++ &Delete ++ + + +- +- New Volume Group +- ++ ++ New Volume Group ++ + + +- +- Resize Volume Group +- ++ ++ Resize Volume Group ++ + + +- +- Deactivate Volume Group +- ++ ++ Deactivate Volume Group ++ + + +- +- Remove Volume Group +- ++ ++ Remove Volume Group ++ + + +- +- I&nstall boot loader on: +- ++ ++ I&nstall boot loader on: ++ + + +- +- Are you sure you want to create a new partition table on %1? +- ++ ++ Are you sure you want to create a new partition table on %1? ++ + + +- +- Can not create new partition +- ++ ++ Can not create new partition ++ + + +- +- The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. +- ++ ++ The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. ++ + +- +- ++ ++ + PartitionViewStep + +- +- Gathering system information… +- @status +- ++ ++ Gathering system information… ++ @status ++ + + +- +- Partitions +- @label +- ++ ++ Partitions ++ @label ++ + + +- +- Install %1 <strong>alongside</strong> another operating system +- @label +- ++ ++ Install %1 <strong>alongside</strong> another operating system ++ @label ++ + + +- +- <strong>Erase</strong> disk and install %1 +- @label +- ++ ++ <strong>Erase</strong> disk and install %1 ++ @label ++ + + +- +- <strong>Replace</strong> a partition with %1 +- @label +- ++ ++ <strong>Replace</strong> a partition with %1 ++ @label ++ + + +- +- <strong>Manual</strong> partitioning +- @label +- ++ ++ <strong>Manual</strong> partitioning ++ @label ++ + + +- +- Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) +- @info +- ++ ++ Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) ++ @info ++ + + +- +- <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 +- @info +- ++ ++ <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 ++ @info ++ + + +- +- <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 +- @info +- ++ ++ <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 ++ @info ++ + + +- +- <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) +- @info +- ++ ++ <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) ++ @info ++ + + +- +- Disk <strong>%1</strong> (%2) +- @info +- ++ ++ Disk <strong>%1</strong> (%2) ++ @info ++ + + +- +- Unsafe partition actions are enabled. +- ++ ++ Unsafe partition actions are enabled. ++ + + +- +- Partitioning is configured to <b>always</b> fail. +- ++ ++ Partitioning is configured to <b>always</b> fail. ++ + + +- +- No partitions will be changed. +- ++ ++ No partitions will be changed. ++ + + +- +- Current: +- @label +- ++ ++ Current: ++ @label ++ + + +- +- After: +- @label +- ++ ++ After: ++ @label ++ + + +- +- An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. +- ++ ++ An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. ++ + + +- +- An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. +- ++ ++ An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. ++ + + +- +- The filesystem must be mounted on <strong>%1</strong>. +- ++ ++ The filesystem must be mounted on <strong>%1</strong>. ++ + + +- +- The filesystem must have type FAT32. +- ++ ++ The filesystem must have type FAT32. ++ + + +- +- The filesystem must have flag <strong>%1</strong> set. +- ++ ++ The filesystem must have flag <strong>%1</strong> set. ++ + + +- +- +- The filesystem must be at least %1 MiB in size. +- ++ ++ ++ The filesystem must be at least %1 MiB in size. ++ + + +- +- The minimum recommended size for the filesystem is %1 MiB. +- ++ ++ The minimum recommended size for the filesystem is %1 MiB. ++ + + +- +- You can continue without setting up an EFI system partition but your system may fail to start. +- ++ ++ You can continue without setting up an EFI system partition but your system may fail to start. ++ + + +- +- You can continue with this EFI system partition configuration but your system may fail to start. +- ++ ++ You can continue with this EFI system partition configuration but your system may fail to start. ++ + + +- +- No EFI system partition configured +- ++ ++ No EFI system partition configured ++ + + +- +- EFI system partition configured incorrectly +- ++ ++ EFI system partition configured incorrectly ++ + + +- +- EFI system partition recommendation +- ++ ++ EFI system partition recommendation ++ + + +- +- Option to use GPT on BIOS +- ++ ++ Option to use GPT on BIOS ++ + + +- +- A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. +- ++ ++ A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. ++ + + +- +- Boot partition not encrypted +- ++ ++ Boot partition not encrypted ++ + + +- +- A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. +- ++ ++ A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ++ + + +- +- has at least one disk device available. +- ++ ++ has at least one disk device available. ++ + + +- +- There are no partitions to install on. +- ++ ++ There are no partitions to install on. ++ + +- +- ++ ++ + PlasmaLnfJob + +- +- Applying Plasma Look-and-Feel… +- @status +- ++ ++ Applying Plasma Look-and-Feel… ++ @status ++ + + +- +- +- Could not select KDE Plasma Look-and-Feel package +- ++ ++ ++ Could not select KDE Plasma Look-and-Feel package ++ + +- +- ++ ++ + PlasmaLnfPage + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ + + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ + +- +- ++ ++ + PlasmaLnfViewStep + +- +- Look-and-Feel +- @label +- ++ ++ Look-and-Feel ++ @label ++ + +- +- ++ ++ ++ PowerManagementInterface ++ ++ ++ Calamares ++ ++ ++ ++ ++ Installation in progress ++ @status ++ ++ ++ ++ + PreserveFiles + +- +- Saving files for later… +- @status +- ++ ++ Saving files for later… ++ @status ++ + + +- +- No files configured to save for later. +- ++ ++ No files configured to save for later. ++ + + +- +- Not all of the configured files could be preserved. +- ++ ++ Not all of the configured files could be preserved. ++ + +- +- ++ ++ + ProcessResult + +- +- ++ ++ + There was no output from the command. +- ++ + + +- +- ++ ++ + Output: + +- ++ + + +- +- External command crashed. +- ++ ++ External command crashed. ++ + + +- +- Command <i>%1</i> crashed. +- ++ ++ Command <i>%1</i> crashed. ++ + + +- +- External command failed to start. +- ++ ++ External command failed to start. ++ + + +- +- Command <i>%1</i> failed to start. +- ++ ++ Command <i>%1</i> failed to start. ++ + + +- +- Internal error when starting command. +- ++ ++ Internal error when starting command. ++ + + +- +- Bad parameters for process job call. +- ++ ++ Bad parameters for process job call. ++ + + +- +- External command failed to finish. +- ++ ++ External command failed to finish. ++ + + +- +- Command <i>%1</i> failed to finish in %2 seconds. +- ++ ++ Command <i>%1</i> failed to finish in %2 seconds. ++ + + +- +- External command finished with errors. +- ++ ++ External command finished with errors. ++ + + +- +- Command <i>%1</i> finished with exit code %2. +- ++ ++ Command <i>%1</i> finished with exit code %2. ++ + +- +- ++ ++ + QObject + +- +- %1 (%2) +- ++ ++ %1 (%2) ++ + + +- +- unknown +- @partition info +- ++ ++ unknown ++ @partition info ++ + + +- +- extended +- @partition info +- ++ ++ extended ++ @partition info ++ + + +- +- unformatted +- @partition info +- ++ ++ unformatted ++ @partition info ++ + + +- +- swap +- @partition info +- ++ ++ swap ++ @partition info ++ + + +- +- +- Default +- ++ ++ ++ Default ++ + + +- +- Directory not found +- ++ ++ Directory not found ++ + + +- +- Could not create new random file <pre>%1</pre>. +- ++ ++ Could not create new random file <pre>%1</pre>. ++ + + +- +- No product +- ++ ++ No product ++ + + +- +- No description provided. +- ++ ++ No description provided. ++ + + +- +- (no mount point) +- ++ ++ (no mount point) ++ + + +- +- Unpartitioned space or unknown partition table +- @info +- ++ ++ Unpartitioned space or unknown partition table ++ @info ++ + +- +- ++ ++ + Recommended + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- ++ + +- +- ++ ++ + RemoveUserJob + +- +- Removing live user from the target system… +- @status +- ++ ++ Removing live user from the target system… ++ @status ++ + +- +- ++ ++ + RemoveVolumeGroupJob + +- +- +- Removing Volume Group named %1… +- @status +- ++ ++ ++ Removing Volume Group named %1… ++ @status ++ + + +- +- Removing Volume Group named <strong>%1</strong>… +- @status +- ++ ++ Removing Volume Group named <strong>%1</strong>… ++ @status ++ + + +- +- The installer failed to remove a volume group named '%1'. +- ++ ++ The installer failed to remove a volume group named '%1'. ++ + +- +- ++ ++ + Requirements + +- +- <p>This computer does not satisfy the minimum requirements for installing %1.<br/> ++ ++ <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> +- ++ + + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- ++ + +- +- ++ ++ + ResizeFSJob + +- +- Performing file system resize… +- @status +- ++ ++ Performing file system resize… ++ @status ++ + + +- +- Invalid configuration +- @error +- ++ ++ Invalid configuration ++ @error ++ + + +- +- The file-system resize job has an invalid configuration and will not run. +- @error +- ++ ++ The file-system resize job has an invalid configuration and will not run. ++ @error ++ + + +- +- KPMCore not available +- @error +- ++ ++ KPMCore not available ++ @error ++ + + +- +- Calamares cannot start KPMCore for the file system resize job. +- @error +- ++ ++ Calamares cannot start KPMCore for the file system resize job. ++ @error ++ + + +- +- Resize failed. +- @error +- ++ ++ Resize failed. ++ @error ++ + + +- +- The filesystem %1 could not be found in this system, and cannot be resized. +- @info +- ++ ++ The filesystem %1 could not be found in this system, and cannot be resized. ++ @info ++ + + +- +- The device %1 could not be found in this system, and cannot be resized. +- @info +- ++ ++ The device %1 could not be found in this system, and cannot be resized. ++ @info ++ + + +- +- +- +- +- Resize Failed +- @error +- ++ ++ ++ ++ ++ Resize Failed ++ @error ++ + + +- +- +- The filesystem %1 cannot be resized. +- @error +- ++ ++ ++ The filesystem %1 cannot be resized. ++ @error ++ + + +- +- +- The device %1 cannot be resized. +- @error +- ++ ++ ++ The device %1 cannot be resized. ++ @error ++ + + +- +- The file system %1 must be resized, but cannot. +- @info +- ++ ++ The file system %1 must be resized, but cannot. ++ @info ++ + + +- +- The device %1 must be resized, but cannot +- @info +- ++ ++ The device %1 must be resized, but cannot ++ @info ++ + +- +- ++ ++ + ResizePartitionJob + +- +- Resize partition %1 +- @title +- ++ ++ Resize partition %1 ++ @title ++ + + +- +- Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> +- @info +- ++ ++ Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> ++ @info ++ + + +- +- Resizing %2MiB partition %1 to %3MiB… +- @status +- ++ ++ Resizing %2MiB partition %1 to %3MiB… ++ @status ++ + + +- +- The installer failed to resize partition %1 on disk '%2'. +- ++ ++ The installer failed to resize partition %1 on disk '%2'. ++ + +- +- ++ ++ + ResizeVolumeGroupDialog + +- +- Resize Volume Group +- @title +- ++ ++ Resize Volume Group ++ @title ++ + +- +- ++ ++ + ResizeVolumeGroupJob + +- +- Resize volume group named %1 from %2 to %3 +- @title +- ++ ++ Resize volume group named %1 from %2 to %3 ++ @title ++ + + +- +- Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> +- @info +- ++ ++ Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> ++ @info ++ + + +- +- Resizing volume group named %1 from %2 to %3… +- @status +- ++ ++ Resizing volume group named %1 from %2 to %3… ++ @status ++ + + +- +- The installer failed to resize a volume group named '%1'. +- ++ ++ The installer failed to resize a volume group named '%1'. ++ + +- +- ++ ++ + ResultsListWidget + +- +- Checking requirements again in a few seconds ... +- ++ ++ Checking requirements again in a few seconds ... ++ + +- +- ++ ++ + ScanningDialog + +- +- Scanning storage devices… +- @status +- ++ ++ Scanning storage devices… ++ @status ++ + + +- +- Partitioning… +- @status +- ++ ++ Partitioning… ++ @status ++ + +- +- ++ ++ + SetHostNameJob + +- +- Set hostname %1 +- ++ ++ Set hostname %1 ++ + + +- +- Set hostname <strong>%1</strong>. +- ++ ++ Set hostname <strong>%1</strong>. ++ + + +- +- Setting hostname %1… +- @status +- ++ ++ Setting hostname %1… ++ @status ++ + + +- +- +- Internal Error +- ++ ++ ++ Internal Error ++ + + +- +- +- Cannot write hostname to target system +- ++ ++ ++ Cannot write hostname to target system ++ + +- +- ++ ++ + SetKeyboardLayoutJob + +- +- Setting keyboard model to %1, layout as %2-%3… +- @status, %1 model, %2 layout, %3 variant +- ++ ++ Setting keyboard model to %1, layout as %2-%3… ++ @status, %1 model, %2 layout, %3 variant ++ + + +- +- Failed to write keyboard configuration for the virtual console. +- @error +- ++ ++ Failed to write keyboard configuration for the virtual console. ++ @error ++ + + +- +- Failed to write to %1 +- @error, %1 is virtual console configuration path +- ++ ++ Failed to write to %1 ++ @error, %1 is virtual console configuration path ++ + + +- +- Failed to write keyboard configuration for X11. +- @error +- ++ ++ Failed to write keyboard configuration for X11. ++ @error ++ + + +- +- Failed to write to %1 +- @error, %1 is keyboard configuration path +- ++ ++ Failed to write to %1 ++ @error, %1 is keyboard configuration path ++ + + +- +- Failed to write keyboard configuration to existing /etc/default directory. +- @error +- ++ ++ Failed to write keyboard configuration to existing /etc/default directory. ++ @error ++ + + +- +- Failed to write to %1 +- @error, %1 is default keyboard path +- ++ ++ Failed to write to %1 ++ @error, %1 is default keyboard path ++ + +- +- ++ ++ + SetPartFlagsJob + +- +- Set flags on partition %1 +- @title +- ++ ++ Set flags on partition %1 ++ @title ++ + + +- +- Set flags on %1MiB %2 partition +- @title +- ++ ++ Set flags on %1MiB %2 partition ++ @title ++ + + +- +- Set flags on new partition +- @title +- ++ ++ Set flags on new partition ++ @title ++ + + +- +- Clear flags on partition <strong>%1</strong> +- @info +- ++ ++ Clear flags on partition <strong>%1</strong> ++ @info ++ + + +- +- Clear flags on %1MiB <strong>%2</strong> partition +- @info +- ++ ++ Clear flags on %1MiB <strong>%2</strong> partition ++ @info ++ + + +- +- Clear flags on new partition +- @info +- ++ ++ Clear flags on new partition ++ @info ++ + + +- +- Set flags on partition <strong>%1</strong> to <strong>%2</strong> +- @info +- ++ ++ Set flags on partition <strong>%1</strong> to <strong>%2</strong> ++ @info ++ + + +- +- Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> +- @info +- ++ ++ Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> ++ @info ++ + + +- +- Set flags on new partition to <strong>%1</strong> +- @info +- ++ ++ Set flags on new partition to <strong>%1</strong> ++ @info ++ + + +- +- Clearing flags on partition <strong>%1</strong>… +- @status +- ++ ++ Clearing flags on partition <strong>%1</strong>… ++ @status ++ + + +- +- Clearing flags on %1MiB <strong>%2</strong> partition… +- @status +- ++ ++ Clearing flags on %1MiB <strong>%2</strong> partition… ++ @status ++ + + +- +- Clearing flags on new partition… +- @status +- ++ ++ Clearing flags on new partition… ++ @status ++ + + +- +- Setting flags <strong>%2</strong> on partition <strong>%1</strong>… +- @status +- ++ ++ Setting flags <strong>%2</strong> on partition <strong>%1</strong>… ++ @status ++ + + +- +- Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… +- @status +- ++ ++ Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… ++ @status ++ + + +- +- Setting flags <strong>%1</strong> on new partition… +- @status +- ++ ++ Setting flags <strong>%1</strong> on new partition… ++ @status ++ + + +- +- The installer failed to set flags on partition %1. +- ++ ++ The installer failed to set flags on partition %1. ++ + +- +- ++ ++ + SetPasswordJob + +- +- Set password for user %1 +- ++ ++ Set password for user %1 ++ + + +- +- Setting password for user %1… +- @status +- ++ ++ Setting password for user %1… ++ @status ++ + + +- +- Bad destination system path. +- ++ ++ Bad destination system path. ++ + + +- +- rootMountPoint is %1 +- ++ ++ rootMountPoint is %1 ++ + + +- +- Cannot disable root account. +- ++ ++ Cannot disable root account. ++ + + +- +- +- usermod terminated with error code %1. +- ++ ++ ++ usermod terminated with error code %1. ++ + + +- +- Cannot set password for user %1. +- ++ ++ Cannot set password for user %1. ++ + +- +- ++ ++ + SetTimezoneJob + +- +- Setting timezone to %1/%2… +- @status +- ++ ++ Setting timezone to %1/%2… ++ @status ++ + + +- +- Cannot access selected timezone path. +- @error +- ++ ++ Cannot access selected timezone path. ++ @error ++ + + +- +- Bad path: %1 +- @error +- ++ ++ Bad path: %1 ++ @error ++ + + +- +- +- Cannot set timezone. +- @error +- ++ ++ ++ Cannot set timezone. ++ @error ++ + + +- +- Link creation failed, target: %1; link name: %2 +- @info +- ++ ++ Link creation failed, target: %1; link name: %2 ++ @info ++ + + +- +- Cannot open /etc/timezone for writing +- @info +- ++ ++ Cannot open /etc/timezone for writing ++ @info ++ + +- +- ++ ++ + SetupGroupsJob + +- +- Preparing groups… +- @status +- ++ ++ Preparing groups… ++ @status ++ + + +- +- +- Could not create groups in target system +- ++ ++ ++ Could not create groups in target system ++ + + +- +- These groups are missing in the target system: %1 +- ++ ++ These groups are missing in the target system: %1 ++ + +- +- ++ ++ + SetupSudoJob + +- +- Configuring <pre>sudo</pre> users… +- @status +- ++ ++ Configuring <pre>sudo</pre> users… ++ @status ++ + + +- +- Cannot chmod sudoers file. +- ++ ++ Cannot chmod sudoers file. ++ + + +- +- Cannot create sudoers file for writing. +- ++ ++ Cannot create sudoers file for writing. ++ + +- +- ++ ++ + ShellProcessJob + +- +- Running shell processes… +- @status +- ++ ++ Running shell processes… ++ @status ++ + +- +- ++ ++ + SlideCounter + +- +- +- %L1 / %L2 +- slide counter, %1 of %2 (numeric) +- ++ ++ ++ %L1 / %L2 ++ slide counter, %1 of %2 (numeric) ++ + +- +- ++ ++ + StandardButtons + +- +- &OK +- ++ ++ &OK ++ + + +- +- &Yes +- ++ ++ &Yes ++ + + +- +- &No +- ++ ++ &No ++ + + +- +- &Cancel +- ++ ++ &Cancel ++ + + +- +- &Close +- ++ ++ &Close ++ + +- +- ++ ++ + TrackingInstallJob + +- +- Installation feedback +- ++ ++ Installation feedback ++ + + +- +- Sending installation feedback… +- @status +- ++ ++ Sending installation feedback… ++ @status ++ + + +- +- Internal error in install-tracking. +- ++ ++ Internal error in install-tracking. ++ + + +- +- HTTP request timed out. +- ++ ++ HTTP request timed out. ++ + +- +- ++ ++ + TrackingKUserFeedbackJob + +- +- KDE user feedback +- ++ ++ KDE user feedback ++ + + +- +- Configuring KDE user feedback… +- @status +- ++ ++ Configuring KDE user feedback… ++ @status ++ + + +- +- +- Error in KDE user feedback configuration. +- ++ ++ ++ Error in KDE user feedback configuration. ++ + + +- +- Could not configure KDE user feedback correctly, script error %1. +- ++ ++ Could not configure KDE user feedback correctly, script error %1. ++ + + +- +- Could not configure KDE user feedback correctly, Calamares error %1. +- ++ ++ Could not configure KDE user feedback correctly, Calamares error %1. ++ + +- +- ++ ++ + TrackingMachineUpdateManagerJob + +- +- Machine feedback +- ++ ++ Machine feedback ++ + + +- +- Configuring machine feedback… +- @status +- ++ ++ Configuring machine feedback… ++ @status ++ + + +- +- +- Error in machine feedback configuration. +- ++ ++ ++ Error in machine feedback configuration. ++ + + +- +- Could not configure machine feedback correctly, script error %1. +- ++ ++ Could not configure machine feedback correctly, script error %1. ++ + + +- +- Could not configure machine feedback correctly, Calamares error %1. +- ++ ++ Could not configure machine feedback correctly, Calamares error %1. ++ + +- +- ++ ++ + TrackingPage + +- +- Placeholder +- ++ ++ Placeholder ++ + + +- +- <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> +- ++ ++ <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> ++ + + +- +- <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> +- ++ ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> ++ + + +- +- Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. +- ++ ++ Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. ++ + + +- +- By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. +- ++ ++ By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. ++ + + +- +- By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. +- ++ ++ By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. ++ + + +- +- By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. +- ++ ++ By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. ++ + +- +- ++ ++ + TrackingViewStep + +- +- Feedback +- @title +- ++ ++ Feedback ++ @title ++ + +- +- ++ ++ + UmountJob + +- +- Unmounting file systems… +- @status +- ++ ++ Unmounting file systems… ++ @status ++ + + +- +- No target system available. +- ++ ++ No target system available. ++ + + +- +- No rootMountPoint is set. +- ++ ++ No rootMountPoint is set. ++ + +- +- ++ ++ + UsersPage + +- +- <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> +- ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> ++ + + +- +- <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> +- ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> ++ + +- +- ++ ++ + UsersQmlViewStep + +- +- Users +- ++ ++ Users ++ + +- +- ++ ++ + UsersViewStep + +- +- Users +- ++ ++ Users ++ + +- +- ++ ++ + VariantModel + +- +- Key +- Column header for key/value +- ++ ++ Key ++ Column header for key/value ++ + + +- +- Value +- Column header for key/value +- ++ ++ Value ++ Column header for key/value ++ + +- +- ++ ++ + VolumeGroupBaseDialog + +- +- Create Volume Group +- ++ ++ Create Volume Group ++ + + +- +- List of Physical Volumes +- ++ ++ List of Physical Volumes ++ + + +- +- Volume Group Name: +- ++ ++ Volume Group Name: ++ + + +- +- Volume Group Type: +- ++ ++ Volume Group Type: ++ + + +- +- Physical Extent Size: +- ++ ++ Physical Extent Size: ++ + + +- +- MiB +- ++ ++ MiB ++ + + +- +- Total Size: +- ++ ++ Total Size: ++ + + +- +- Used Size: +- ++ ++ Used Size: ++ + + +- +- Total Sectors: +- ++ ++ Total Sectors: ++ + + +- +- Quantity of LVs: +- ++ ++ Quantity of LVs: ++ + +- +- ++ ++ + WelcomePage + +- +- +- Select application and system language +- +- +- +- +- Open donations website +- +- +- +- +- &Donate +- +- +- +- +- Open help and support website +- +- +- +- +- &Support +- +- +- +- +- Open issues and bug-tracking website +- +- +- +- +- &Known issues +- +- +- +- +- Open release notes website +- +- +- +- +- &Release notes +- ++ ++ ++ Select application and system language ++ + + +- +- About %1 Setup +- @title +- ++ ++ language ++ + + +- +- About %1 Installer +- @title +- ++ ++ About %1 Setup ++ @title ++ + + +- +- %1 Support +- @action +- ++ ++ About %1 Installer ++ @title ++ + +- +- ++ ++ + WelcomeQmlViewStep + +- +- Welcome +- @title +- ++ ++ Welcome ++ @title ++ + +- +- ++ ++ + WelcomeViewStep + +- +- Welcome +- @title +- ++ ++ Welcome ++ @title ++ + +- +- ++ ++ + ZfsJob + +- +- Creating ZFS pools and datasets… +- @status +- ++ ++ Creating ZFS pools and datasets… ++ @status ++ + + +- +- Failed to create zpool on +- ++ ++ Failed to create zpool on ++ + + +- +- Configuration Error +- ++ ++ Configuration Error ++ + + +- +- No partitions are available for ZFS. +- ++ ++ No partitions are available for ZFS. ++ + + +- +- Internal data missing +- ++ ++ Internal data missing ++ + + +- +- +- Failed to create zpool +- ++ ++ ++ Failed to create zpool ++ + + +- +- Failed to create dataset +- ++ ++ Failed to create dataset ++ + + +- +- The output was: +- ++ ++ The output was: ++ + +- +- ++ ++ + calamares-sidebar + +- +- About +- ++ ++ About ++ + + +- +- Debug +- ++ ++ Debug ++ + + +- +- About +- @button +- ++ ++ About ++ @button ++ + + +- +- Show information about Calamares +- @tooltip +- ++ ++ Show information about Calamares ++ @tooltip ++ + + +- +- Debug +- @button +- ++ ++ ++ Debug ++ @button ++ + + +- +- Show debug information +- @tooltip +- ++ ++ ++ Show debug information ++ @tooltip ++ + +- +- ++ ++ ++ Show information about easysoftware ++ @tooltip ++ ++ ++ ++ + finishedq + +- +- Installation Completed +- ++ ++ Installation Completed ++ + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- ++ + + +- +- Close Installer +- ++ ++ Close Installer ++ + + +- +- Restart System +- ++ ++ Restart System ++ + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- ++ + +- +- ++ ++ + finishedq-qt6 + +- +- Installation Completed +- @title +- ++ ++ Installation Completed ++ @title ++ + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- @info, %1 is the product name +- ++ @info, %1 is the product name ++ + + +- +- Close Installer +- @button +- ++ ++ Close Installer ++ @button ++ + + +- +- Restart System +- @button +- ++ ++ Restart System ++ @button ++ + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- @info +- ++ @info ++ + +- +- ++ ++ + finishedq@mobile + +- +- Installation Completed +- @title +- ++ ++ Installation Completed ++ @title ++ + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart your device. +- @info, %1 is the product name +- ++ @info, %1 is the product name ++ + + +- +- Close +- @button +- ++ ++ Close ++ @button ++ + + +- +- Restart +- @button +- ++ ++ Restart ++ @button ++ + +- +- ++ ++ + keyboardq + +- +- Select a layout to activate keyboard preview +- @label +- ++ ++ Select a layout to activate keyboard preview ++ @label ++ + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ + + +- +- Layout +- @label +- ++ ++ Layout ++ @label ++ + + +- +- Variant +- @label +- ++ ++ Variant ++ @label ++ + + +- +- Type here to test your keyboard… +- @label +- ++ ++ Type here to test your keyboard… ++ @label ++ + +- +- ++ ++ + keyboardq-qt6 + +- +- Select a layout to activate keyboard preview +- @label +- ++ ++ Select a layout to activate keyboard preview ++ @label ++ + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ + + +- +- Layout +- @label +- ++ ++ Layout ++ @label ++ + + +- +- Variant +- @label +- ++ ++ Variant ++ @label ++ + + +- +- Type here to test your keyboard… +- @label +- ++ ++ Type here to test your keyboard… ++ @label ++ + +- +- ++ ++ + localeq + +- +- +- Change +- @button +- ++ ++ ++ Change ++ @button ++ + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- ++ @info ++ + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- ++ @info ++ + +- +- ++ ++ + localeq-qt6 + +- +- +- Change +- @button +- ++ ++ ++ Change ++ @button ++ + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- ++ @info ++ + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- ++ @info ++ + +- +- ++ ++ + notesqml + +- +- <h3>%1</h3> ++ ++ <h3>%1</h3> + <p>These are example release notes.</p> +- ++ + +- +- ++ ++ + packagechooserq + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- ++ + + +- +- LibreOffice +- ++ ++ LibreOffice ++ + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ + + +- +- No Office Suite +- ++ ++ No Office Suite ++ + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ + + +- +- Minimal Install +- ++ ++ Minimal Install ++ + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ + +- +- ++ ++ + packagechooserq-qt6 + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- ++ + + +- +- LibreOffice +- ++ ++ LibreOffice ++ + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ + + +- +- No Office Suite +- ++ ++ No Office Suite ++ + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ + + +- +- Minimal Install +- ++ ++ Minimal Install ++ + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ + +- +- ++ ++ + release_notes + +- +- <h3>%1</h3> +- <p>This an example QML file, showing options in RichText with Flickable content.</p> ++ ++ ### %1 ++This an example QML file, showing options in Markdown with Flickable content. ++ ++QML with RichText can use HTML tags, with Markdown it uses the simple Markdown syntax, Flickable content is useful for touchscreens. ++ ++**This is bold text** ++ ++*This is italic text* ++ ++_This is underlined text_ + +- <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> ++> blockquote + +- <p><b>This is bold text</b></p> +- <p><i>This is italic text</i></p> +- <p><u>This is underlined text</u></p> +- <p><center>This text will be center-aligned.</center></p> +- <p><s>This is strikethrough</s></p> ++~~This is strikethrough~~ + +- <p>Code example: +- <code>ls -l /home</code></p> ++Code example: ++``` ++ls -l /home ++``` + +- <p><b>Lists:</b></p> +- <ul> +- <li>Intel CPU systems</li> +- <li>AMD CPU systems</li> +- </ul> ++**Lists:** ++ * Intel CPU systems ++ * AMD CPU systems + +- <p>The vertical scrollbar is adjustable, current width set to 10.</p> +- ++The vertical scrollbar is adjustable, current width set to 10. ++ + + +- +- Back +- ++ ++ Back ++ + +- +- ++ ++ + usersq + +- +- Pick your user name and credentials to login and perform admin tasks +- ++ ++ Pick your user name and credentials to login and perform admin tasks ++ + + +- +- What is your name? +- ++ ++ What is your name? ++ + + +- +- Your full name +- ++ ++ Your full name ++ + + +- +- What name do you want to use to log in? +- ++ ++ What name do you want to use to log in? ++ + + +- +- Login name +- ++ ++ Login name ++ + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ + + +- +- root is not allowed as username. +- ++ ++ root is not allowed as username. ++ + + +- +- What is the name of this computer? +- ++ ++ What is the name of this computer? ++ + + +- +- Computer name +- ++ ++ Computer name ++ + + +- +- This name will be used if you make the computer visible to others on a network. +- ++ ++ This name will be used if you make the computer visible to others on a network. ++ + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ + + +- +- localhost is not allowed as hostname. +- ++ ++ localhost is not allowed as hostname. ++ + + +- +- Choose a password to keep your account safe. +- ++ ++ Choose a password to keep your account safe. ++ + + +- +- Password +- ++ ++ Password ++ + + +- +- Repeat password +- ++ ++ Repeat password ++ + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ + + +- +- Reuse user password as root password +- ++ ++ Reuse user password as root password ++ + + +- +- Use the same password for the administrator account. +- ++ ++ Use the same password for the administrator account. ++ + + +- +- Choose a root password to keep your account safe. +- ++ ++ Choose a root password to keep your account safe. ++ + + +- +- Root password +- ++ ++ Root password ++ + + +- +- Repeat root password +- ++ ++ Repeat root password ++ + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ + + +- +- Log in automatically without asking for the password +- ++ ++ Log in automatically without asking for the password ++ + + +- +- Validate passwords quality +- ++ ++ Validate passwords quality ++ + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ + +- +- ++ ++ + usersq-qt6 + +- +- Pick your user name and credentials to login and perform admin tasks +- ++ ++ Pick your user name and credentials to login and perform admin tasks ++ + + +- +- What is your name? +- ++ ++ What is your name? ++ + + +- +- Your full name +- ++ ++ Your full name ++ + + +- +- What name do you want to use to log in? +- ++ ++ What name do you want to use to log in? ++ + + +- +- Login name +- ++ ++ Login name ++ + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ + + +- +- root is not allowed as username. +- ++ ++ root is not allowed as username. ++ + + +- +- What is the name of this computer? +- ++ ++ What is the name of this computer? ++ + + +- +- Computer name +- ++ ++ Computer name ++ + + +- +- This name will be used if you make the computer visible to others on a network. +- ++ ++ This name will be used if you make the computer visible to others on a network. ++ + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ + + +- +- localhost is not allowed as hostname. +- ++ ++ localhost is not allowed as hostname. ++ + + +- +- Choose a password to keep your account safe. +- ++ ++ Choose a password to keep your account safe. ++ + + +- +- Password +- ++ ++ Password ++ + + +- +- Repeat password +- ++ ++ Repeat password ++ + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ + + +- +- Reuse user password as root password +- ++ ++ Reuse user password as root password ++ + + +- +- Use the same password for the administrator account. +- ++ ++ Use the same password for the administrator account. ++ + + +- +- Choose a root password to keep your account safe. +- ++ ++ Choose a root password to keep your account safe. ++ + + +- +- Root password +- ++ ++ Root password ++ + + +- +- Repeat root password +- ++ ++ Repeat root password ++ + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ + + +- +- Log in automatically without asking for the password +- ++ ++ Log in automatically without asking for the password ++ + + +- +- Validate passwords quality +- ++ ++ Validate passwords quality ++ + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ + +- +- ++ ++ + welcomeq + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- ++ + + +- +- Support +- ++ ++ Support ++ + + +- +- Known Issues +- ++ ++ Known Issues ++ + + +- +- Release Notes +- ++ ++ Release Notes ++ + + +- +- Donate +- ++ ++ Donate ++ + +- +- ++ ++ + welcomeq-qt6 + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- ++ + + +- +- Support +- ++ ++ Support ++ + + +- +- Known Issues +- ++ ++ Known Issues ++ + + +- +- Release Notes +- ++ ++ Release Notes ++ + + +- +- Donate +- ++ ++ Donate ++ + +- ++ + +diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts +index d695119..8689629 100644 +--- a/lang/calamares_zh_TW.ts ++++ b/lang/calamares_zh_TW.ts +@@ -1,4873 +1,5001 @@ + + +- +- ++ ++ + AboutData + +- +- <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> +- <h1>%1</h1><br/><strong>%2<br/> for %3</strong><br/><br/> ++ ++ <br/><h2>Release:%1</h2><br/> ++ <br/><h1>發行版本:%1</h1><br/> + + +- +- Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://app.transifex.com/calamares/calamares/">Calamares translators team</a>. +- 感謝 <a href="https://calamares.io/team/">Calamares 團隊</a>與 <a href="https://app.transifex.com/calamares/calamares/">Calamares 翻譯者團隊</a>。 ++ ++ <strong>Thanks to the openEuler team.</strong> ++ <strong>感謝 openEuler 團隊。</strong> + + +- +- <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. +- <a href="https://calamares.io/">Calamares</a> 由 <a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助開發。 ++ <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. ++ <a href="https://calamares.io/">Calamares</a> 由 <a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助開發。 + + +- +- Copyright %1-%2 %3 &lt;%4&gt;<br/> +- Copyright year-year Name <email-address> +- Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> ++ Copyright year-year Name <email-address> ++ Copyright %1-%2 %3 &lt;%4&gt;<br/> + +- +- ++ ++ ++ ActiveDirectoryJob ++ ++ ++ Enroll system in Active Directory ++ @label ++ ++ ++ ++ ++ Enrolling system in Active Directory… ++ @status ++ ++ ++ ++ + AutoMountManagementJob + +- +- Managing auto-mount settings… +- @status +- 管理自動掛載設定…… ++ ++ Managing auto-mount settings… ++ @status ++ 管理自動掛載設定…… + +- +- ++ ++ + BootInfoWidget + +- +- The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. +- 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。 ++ ++ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. ++ 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。 + + +- +- This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. +- 這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。 ++ ++ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. ++ 這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。 + + +- +- This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. +- 這個系統以 <strong>BIOS</strong> 開機。<br><br>要從 BIOS 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong>。而且通常安裝在分割區的開首,又或最好安裝在靠近分割表開首的 <strong>主要開機記錄 (MBR)</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行設定它。 ++ ++ This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. ++ 這個系統以 <strong>BIOS</strong> 開機。<br><br>要從 BIOS 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong>。而且通常安裝在分割區的開首,又或最好安裝在靠近分割表開首的 <strong>主要開機記錄 (MBR)</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行設定它。 + +- +- ++ ++ + BootLoaderModel + +- +- Master Boot Record of %1 +- @info +- %1 的主要開機紀錄 (MBR) ++ ++ Master Boot Record of %1 ++ @info ++ %1 的主要開機紀錄 (MBR) + + +- +- Boot Partition +- @info +- 開機分割區 ++ ++ Boot Partition ++ @info ++ 開機分割區 + + +- +- System Partition +- @info +- 系統分割區 ++ ++ System Partition ++ @info ++ 系統分割區 + + +- +- Do not install a boot loader +- @label +- 無法安裝開機載入器 ++ ++ Do not install a boot loader ++ @label ++ 無法安裝開機載入器 + + +- +- %1 (%2) +- %1 (%2) ++ ++ %1 (%2) ++ %1 (%2) + +- +- ++ ++ + Calamares::BlankViewStep + +- +- Blank Page +- 空白頁 ++ ++ Blank Page ++ 空白頁 + +- +- ++ ++ + Calamares::DebugWindow + +- +- GlobalStorage +- 全域儲存 ++ ++ GlobalStorage ++ 全域儲存 + + +- +- JobQueue +- 工作佇列 ++ ++ JobQueue ++ 工作佇列 + + +- +- Modules +- 模組 ++ ++ Modules ++ 模組 + + +- +- Type: +- 類型: ++ ++ Type: ++ 類型: + + +- +- +- none +- ++ ++ ++ none ++ + + +- +- Interface: +- 介面: ++ ++ Interface: ++ 介面: + + +- +- Crashes Calamares, so that Dr. Konqi can look at it. +- 讓 Calamares 當機,這樣 Dr. Konqi 就能檢視。 ++ ++ Crashes Calamares, so that Dr. Konqi can look at it. ++ 讓 Calamares 當機,這樣 Dr. Konqi 就能檢視。 + + +- +- Reloads the stylesheet from the branding directory. +- 重新自品牌目錄載入樣式表。 ++ ++ Reloads the stylesheet from the branding directory. ++ 重新自品牌目錄載入樣式表。 + + +- +- Reload Stylesheet +- 重新載入樣式表 ++ ++ Reload Stylesheet ++ 重新載入樣式表 + + +- +- Displays the tree of widget names in the log (for stylesheet debugging). +- 在紀錄檔中顯示小工具名稱樹(供樣式表除錯使用)。 ++ ++ Displays the tree of widget names in the log (for stylesheet debugging). ++ 在紀錄檔中顯示小工具名稱樹(供樣式表除錯使用)。 + + +- +- Widget Tree +- 小工具樹 ++ ++ Widget Tree ++ 小工具樹 + + +- +- Uploads the session log to the configured pastebin. +- 將工作階段紀錄檔上傳到設定好的 pastebin。 ++ ++ Uploads the session log to the configured pastebin. ++ 將工作階段紀錄檔上傳到設定好的 pastebin。 + + +- +- Send Session Log +- 傳送工作階段紀錄檔 ++ ++ Send Session Log ++ 傳送工作階段紀錄檔 + + +- +- Debug Information +- @title +- 除錯資訊 ++ ++ Debug Information ++ @title ++ 除錯資訊 + +- +- ++ ++ + Calamares::ExecutionViewStep + +- +- %p% +- Progress percentage indicator: %p is where the number 0..100 is placed +- %p% ++ ++ %p% ++ Progress percentage indicator: %p is where the number 0..100 is placed ++ %p% + + +- +- Set Up +- @label +- 安裝 ++ ++ Set Up ++ @label ++ 安裝 + + +- +- Install +- @label +- 安裝 ++ ++ Install ++ @label ++ 安裝 + +- +- ++ ++ + Calamares::FailJob + +- +- Job failed (%1) +- 排程失敗 (%1) ++ ++ Job failed (%1) ++ 排程失敗 (%1) + + +- +- Programmed job failure was explicitly requested. +- 明確要求程式化排程失敗。 ++ ++ Programmed job failure was explicitly requested. ++ 明確要求程式化排程失敗。 + +- +- ++ ++ + Calamares::JobThread + +- +- Done +- 完成 ++ ++ Done ++ 完成 + +- +- ++ ++ + Calamares::NamedJob + +- +- Example job (%1) +- 範例排程 (%1) ++ ++ Example job (%1) ++ 範例排程 (%1) + +- +- ++ ++ + Calamares::ProcessJob + +- +- Running command %1 in target system… +- @status +- 正於目標系統中執行 %1 命令…… ++ ++ Running command %1 in target system… ++ @status ++ 正於目標系統中執行 %1 命令…… + + +- +- Running command %1… +- @status +- 正在執行 %1 命令 ++ ++ Running command %1… ++ @status ++ 正在執行 %1 命令 + +- +- ++ ++ + Calamares::Python::Job + +- +- Running %1 operation. +- 正在執行 %1 操作。 ++ ++ Running %1 operation. ++ 正在執行 %1 操作。 + + +- +- Bad working directory path +- 不良的工作目錄路徑 ++ ++ Bad working directory path ++ 不良的工作目錄路徑 + + +- +- Working directory %1 for python job %2 is not readable. +- Python 行程 %2 作用中的目錄 %1 不具讀取權限。 ++ ++ Working directory %1 for python job %2 is not readable. ++ Python 行程 %2 作用中的目錄 %1 不具讀取權限。 + + +- +- +- +- +- +- +- Bad main script file +- 錯誤的主要腳本檔 ++ ++ ++ ++ ++ ++ ++ Bad main script file ++ 錯誤的主要腳本檔 + + +- +- Main script file %1 for python job %2 is not readable. +- Python 行程 %2 的主要腳本檔 %1 無法讀取。 ++ ++ Main script file %1 for python job %2 is not readable. ++ Python 行程 %2 的主要腳本檔 %1 無法讀取。 + + +- +- Bad internal script +- 內部命令稿錯誤 ++ ++ Bad internal script ++ 內部命令稿錯誤 + + +- +- Internal script for python job %1 raised an exception. +- python 作業 %1 的內部命令稿引發了例外。 ++ ++ Internal script for python job %1 raised an exception. ++ python 作業 %1 的內部命令稿引發了例外。 + + +- +- Main script file %1 for python job %2 could not be loaded because it raised an exception. +- 無法載入 python 作業 %2 的主要命令稿檔案 %1,因為其引發了例外。 ++ ++ Main script file %1 for python job %2 could not be loaded because it raised an exception. ++ 無法載入 python 作業 %2 的主要命令稿檔案 %1,因為其引發了例外。 + + +- +- Main script file %1 for python job %2 raised an exception. +- python 作業 %2 的主要命令稿 %1 引發了例外。 ++ ++ Main script file %1 for python job %2 raised an exception. ++ python 作業 %2 的主要命令稿 %1 引發了例外。 + + +- +- +- Main script file %1 for python job %2 returned invalid results. +- python 作業 %2 的主要命令稿 %1 回傳了無效結果。 ++ ++ ++ Main script file %1 for python job %2 returned invalid results. ++ python 作業 %2 的主要命令稿 %1 回傳了無效結果。 + + +- +- Main script file %1 for python job %2 does not contain a run() function. +- python 作業 %2 的主要命令稿 %1 不包含 run() 函式。 ++ ++ Main script file %1 for python job %2 does not contain a run() function. ++ python 作業 %2 的主要命令稿 %1 不包含 run() 函式。 + +- +- ++ ++ + Calamares::PythonJob + +- +- Running %1 operation… +- @status +- 正在執行 %1 操作…… ++ ++ Running %1 operation… ++ @status ++ 正在執行 %1 操作…… + + +- +- Bad working directory path +- @error +- 不良的工作目錄路徑 ++ ++ Bad working directory path ++ @error ++ 不良的工作目錄路徑 + + +- +- Working directory %1 for python job %2 is not readable. +- @error +- Python 行程 %2 作用中的目錄 %1 不具讀取權限。 ++ ++ Working directory %1 for python job %2 is not readable. ++ @error ++ Python 行程 %2 作用中的目錄 %1 不具讀取權限。 + + +- +- Bad main script file +- @error +- 錯誤的主要腳本檔 ++ ++ Bad main script file ++ @error ++ 錯誤的主要腳本檔 + + +- +- Main script file %1 for python job %2 is not readable. +- @error +- Python 行程 %2 的主要腳本檔 %1 無法讀取。 ++ ++ Main script file %1 for python job %2 is not readable. ++ @error ++ Python 行程 %2 的主要腳本檔 %1 無法讀取。 + + +- +- Boost.Python error in job "%1" +- @error +- 作業「%1」中的 Boost.Python 錯誤 ++ ++ Boost.Python error in job "%1" ++ @error ++ 作業「%1」中的 Boost.Python 錯誤 + +- +- ++ ++ + Calamares::QmlViewStep + +- +- Loading… +- @status +- 正在載入…… ++ ++ Loading… ++ @status ++ 正在載入…… + + +- +- QML step <i>%1</i>. +- @label +- QML 第 <i>%1</i> 步 ++ ++ QML step <i>%1</i>. ++ @label ++ QML 第 <i>%1</i> 步 + + +- +- Loading failed. +- @info +- 載入失敗。 ++ ++ Loading failed. ++ @info ++ 載入失敗。 + +- +- ++ ++ + Calamares::RequirementsChecker + +- +- Requirements checking for module '%1' is complete. +- @info +- 模組「%1」需求檢查完成。 ++ ++ Requirements checking for module '%1' is complete. ++ @info ++ 模組「%1」需求檢查完成。 + + +- +- Waiting for %n module(s)… +- @status +- +- 正在等待 %n 個模組…… +- ++ ++ Waiting for %n module(s)… ++ @status ++ ++ 正在等待 %n 個模組…… ++ + + +- +- (%n second(s)) +- @status +- +- (%n 秒) +- ++ ++ (%n second(s)) ++ @status ++ ++ (%n 秒) ++ + + +- +- System-requirements checking is complete. +- @info +- 系統需求檢查完成。 ++ ++ System-requirements checking is complete. ++ @info ++ 系統需求檢查完成。 + +- +- ++ ++ + Calamares::ViewManager + +- +- The upload was unsuccessful. No web-paste was done. +- 上傳不成功。並未完成網路張貼。 ++ ++ The upload was unsuccessful. No web-paste was done. ++ 上傳不成功。並未完成網路張貼。 + + +- +- Install log posted to ++ ++ Install log posted to + + %1 + + Link copied to clipboard +- 安裝紀錄檔已張貼到: ++ 安裝紀錄檔已張貼到: + + %1 + + 連結已複製到剪貼簿 + + +- +- Install Log Paste URL +- 安裝紀錄檔張貼 URL ++ ++ Install Log Paste URL ++ 安裝紀錄檔張貼 URL + + +- +- &Yes +- 是(&Y) ++ ++ &Yes ++ 是(&Y) + + +- +- &No +- 否(&N) ++ ++ &No ++ 否(&N) + + +- +- &Close +- 關閉(&C) ++ ++ &Close ++ 關閉(&C) + + +- +- Setup Failed +- @title +- 設定失敗 ++ ++ Setup Failed ++ @title ++ 設定失敗 + + +- +- Installation Failed +- @title +- 安裝失敗 ++ ++ Installation Failed ++ @title ++ 安裝失敗 + + +- +- Error +- @title +- 錯誤 ++ ++ Error ++ @title ++ 錯誤 + + +- +- Calamares Initialization Failed +- @title +- Calamares 初始化失敗 ++ ++ Calamares Initialization Failed ++ @title ++ Calamares 初始化失敗 + + +- +- %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. +- @info +- %1 無法安裝。Calamares 無法載入所有已設定的模組。散佈版使用 Calamares 的方式有問題。 ++ ++ %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. ++ @info ++ %1 無法安裝。Calamares 無法載入所有已設定的模組。散佈版使用 Calamares 的方式有問題。 + + +- +- <br/>The following modules could not be loaded: +- @info +- <br/>以下的模組無法載入: ++ ++ <br/>The following modules could not be loaded: ++ @info ++ <br/>以下的模組無法載入: + + +- +- Continue with Setup? +- @title +- 繼續安裝? ++ ++ Continue with Setup? ++ @title ++ 繼續安裝? + + +- +- Continue with Installation? +- @title +- 繼續安裝? ++ ++ Continue with Installation? ++ @title ++ 繼續安裝? + + +- +- The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- %1 設定程式將在您的磁碟上做出變更以設定 %2。<br/><strong>您將無法復原這些變更。</strong> ++ ++ The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ %1 設定程式將在您的磁碟上做出變更以設定 %2。<br/><strong>您將無法復原這些變更。</strong> + + +- +- The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> +- %1 is short product name, %2 is short product name with version +- %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> ++ ++ The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ++ %1 is short product name, %2 is short product name with version ++ %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> + + +- +- &Set Up Now +- @button +- 立刻進行安裝(&S) ++ ++ &Set Up Now ++ @button ++ 立刻進行安裝(&S) + + +- +- &Install Now +- @button +- 現在安裝(&I) ++ ++ &Install Now ++ @button ++ 現在安裝(&I) + + +- +- Go &Back +- @button +- 上一步(&B) ++ ++ Go &Back ++ @button ++ 上一步(&B) + + +- +- &Set Up +- @button +- 安裝(&S) ++ ++ &Set Up ++ @button ++ 安裝(&S) + + +- +- &Install +- @button +- 安裝(&I) ++ ++ &Install ++ @button ++ 安裝(&I) + + +- +- Setup is complete. Close the setup program. +- @tooltip +- 設定完成。關閉設定程式。 ++ ++ Setup is complete. Close the setup program. ++ @tooltip ++ 設定完成。關閉設定程式。 + + +- +- The installation is complete. Close the installer. +- @tooltip +- 安裝完成。關閉安裝程式。 ++ ++ The installation is complete. Close the installer. ++ @tooltip ++ 安裝完成。關閉安裝程式。 + + +- +- Cancel the setup process without changing the system. +- @tooltip +- 取消安裝流程而不變更系統。 ++ ++ Cancel the setup process without changing the system. ++ @tooltip ++ 取消安裝流程而不變更系統。 + + +- +- Cancel the installation process without changing the system. +- @tooltip +- 取消安裝流程而不變更系統。 ++ ++ Cancel the installation process without changing the system. ++ @tooltip ++ 取消安裝流程而不變更系統。 + + +- +- &Next +- @button +- 下一步 (&N) ++ ++ &Next ++ @button ++ 下一步 (&N) + + +- +- &Back +- @button +- 返回 (&B) ++ ++ &Back ++ @button ++ 返回 (&B) + + +- +- &Done +- @button +- 完成(&D) ++ ++ &Done ++ @button ++ 完成(&D) + + +- +- &Cancel +- @button +- 取消(&C) ++ ++ &Cancel ++ @button ++ 取消(&C) + + +- +- Cancel Setup? +- @title +- 取消安裝? ++ ++ Cancel Setup? ++ @title ++ 取消安裝? + + +- +- Cancel Installation? +- @title +- 取消安裝? ++ ++ Cancel Installation? ++ @title ++ 取消安裝? + + +- +- Do you really want to cancel the current setup process? ++ ++ Do you really want to cancel the current setup process? + The setup program will quit and all changes will be lost. +- 真的想要取消目前的設定程序嗎? ++ 真的想要取消目前的設定程序嗎? + 設定程式將會結束,所有變更都將會遺失。 + + +- +- Do you really want to cancel the current install process? ++ ++ Do you really want to cancel the current installation process? ++The system will reboot or you can enter the debug mode for further investigation. ++ 您確定要退出當前的安裝過程嗎? ++系統將重啟,或者您可以進入調試模式進行進一步的調查。 ++ ++ ++ ++ &Reboot ++ @button ++ 重啟(&R) ++ ++ ++ ++ &Debug ++ @button ++ 調試(&D) ++ ++ ++ Do you really want to cancel the current install process? + The installer will quit and all changes will be lost. +- 您真的想要取消目前的安裝程序嗎? ++ 您真的想要取消目前的安裝程序嗎? + 安裝程式將會退出且所有變動將會遺失。 + +- +- ++ ++ + CalamaresPython::Helper + +- +- Unknown exception type +- @error +- 未知的例外型別 ++ ++ Unknown exception type ++ @error ++ 未知的例外型別 + + +- +- Unparseable Python error +- @error +- 無法解析的 Python 錯誤 ++ ++ Unparseable Python error ++ @error ++ 無法解析的 Python 錯誤 + + +- +- Unparseable Python traceback +- @error +- 無法解析的 Python 回溯紀錄 ++ ++ Unparseable Python traceback ++ @error ++ 無法解析的 Python 回溯紀錄 + + +- +- Unfetchable Python error +- @error +- 無法擷取的 Python 錯誤 ++ ++ Unfetchable Python error ++ @error ++ 無法擷取的 Python 錯誤 + +- +- ++ ++ + CalamaresWindow + +- +- %1 Setup Program +- %1 設定程式 ++ ++ ++ %1 Setup Program ++ %1 設定程式 + + +- +- %1 Installer +- %1 安裝程式 ++ ++ ++ %1 Installer ++ %1 安裝程式 + +- +- ++ ++ + ChangeFilesystemLabelJob + +- +- Set filesystem label on %1 +- @title +- 在 %1 上設定檔案系統標籤 ++ ++ Set filesystem label on %1 ++ @title ++ 在 %1 上設定檔案系統標籤 + + +- +- Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> +- @info +- 設定檔案系統標籤 <strong>%1</strong> 給分割區 <strong>%2</strong> ++ ++ Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> ++ @info ++ 設定檔案系統標籤 <strong>%1</strong> 給分割區 <strong>%2</strong> + + +- +- Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… +- @status +- 設定檔案系統標籤 <strong>%1</strong> 給分割區 <strong>%2</strong>…… ++ ++ Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… ++ @status ++ 設定檔案系統標籤 <strong>%1</strong> 給分割區 <strong>%2</strong>…… + + +- +- +- The installer failed to update partition table on disk '%1'. +- @info +- 安裝程式在磁碟 '%1' 上更新分割區表格失敗。 ++ ++ ++ The installer failed to update partition table on disk '%1'. ++ @info ++ 安裝程式在磁碟 '%1' 上更新分割區表格失敗。 + +- +- ++ ++ + CheckerContainer + +- +- Gathering system information... +- 收集系統資訊中... ++ ++ Gathering system information... ++ 收集系統資訊中... + +- +- ++ ++ + ChoicePage + +- +- Select storage de&vice: +- @label +- 選取儲存裝置(&V): ++ ++ Select storage de&vice: ++ @label ++ 選取儲存裝置(&V): + + +- +- +- +- +- Current: +- @label +- 目前: ++ ++ ++ ++ ++ Current: ++ @label ++ 目前: + + +- +- After: +- @label +- 之後: ++ ++ After: ++ @label ++ 之後: + + +- +- Reuse %1 as home partition for %2 +- @label +- 重新使用 %1 作為 %2 的家目錄分割區 ++ ++ Reuse %1 as home partition for %2 ++ @label ++ 重新使用 %1 作為 %2 的家目錄分割區 + + +- +- <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> +- <strong>選取要縮減的分割區,然後拖曳底部條狀物來調整大小</strong> ++ ++ <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> ++ <strong>選取要縮減的分割區,然後拖曳底部條狀物來調整大小</strong> + + +- +- %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. +- @info, %1 is partition name, %4 is product name +- %1 會縮減到 %2MiB,並且會為 %4 建立新的 %3MiB 分割區。 ++ ++ %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. ++ @info, %1 is partition name, %4 is product name ++ %1 會縮減到 %2MiB,並且會為 %4 建立新的 %3MiB 分割區。 + + +- +- <strong>Select a partition to install on</strong> +- @label +- <strong>選取分割區以安裝在其上</strong> ++ ++ <strong>Select a partition to install on</strong> ++ @label ++ <strong>選取分割區以安裝在其上</strong> + + +- +- An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. +- @info, %1 is product name +- 在這個系統找不到 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 ++ ++ An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ++ @info, %1 is product name ++ 在這個系統找不到 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 + + +- +- The EFI system partition at %1 will be used for starting %2. +- @info, %1 is partition path, %2 is product name +- 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 ++ ++ The EFI system partition at %1 will be used for starting %2. ++ @info, %1 is partition path, %2 is product name ++ 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 + + +- +- EFI system partition: +- @label +- EFI 系統分割區: ++ ++ EFI system partition: ++ @label ++ EFI 系統分割區: + + +- +- This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 這個儲存裝置上似乎還沒有作業系統。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 ++ ++ This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 這個儲存裝置上似乎還沒有作業系統。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 + + +- +- +- +- +- <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. +- <strong>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置所有的資料。 ++ ++ ++ ++ ++ <strong>Automatic partitioning</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. ++ <strong>自動分區</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置所有的資料。 + + +- +- +- +- +- <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. +- <strong>並存安裝</strong><br/>安裝程式會縮小一個分割區,以讓出空間給 %1。 ++ ++ ++ ++ ++ <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. ++ <strong>並存安裝</strong><br/>安裝程式會縮小一個分割區,以讓出空間給 %1。 + + +- +- +- +- +- <strong>Replace a partition</strong><br/>Replaces a partition with %1. +- <strong>取代一個分割區</strong><br/>用 %1 取代一個分割區。 ++ ++ ++ ++ ++ <strong>Replace a partition</strong><br/>Replaces a partition with %1. ++ <strong>取代一個分割區</strong><br/>用 %1 取代一個分割區。 + + +- +- This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 這個儲存裝置上已經有 %1 了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 ++ ++ This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 這個儲存裝置上已經有 %1 了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 + + +- +- This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 這個儲存裝置上已經有一個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 ++ ++ This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 這個儲存裝置上已經有一個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 + + +- +- This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. +- 這個儲存裝置上已經有多個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 ++ ++ This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ++ 這個儲存裝置上已經有多個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 + + +- +- This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> +- 此儲存裝置上已有作業系統,但分割表 <strong>%1</strong> 與需要的 <strong>%2</strong> 不同。<br/> ++ ++ This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> ++ 此儲存裝置上已有作業系統,但分割表 <strong>%1</strong> 與需要的 <strong>%2</strong> 不同。<br/> + + +- +- This storage device has one of its partitions <strong>mounted</strong>. +- @info +- 此裝置<strong>已掛載</strong>其中一個分割區。 ++ ++ This storage device has one of its partitions <strong>mounted</strong>. ++ @info ++ 此裝置<strong>已掛載</strong>其中一個分割區。 + + +- +- This storage device is a part of an <strong>inactive RAID</strong> device. +- @info +- 此儲存裝置是<strong>非作用中 RAID</strong> 裝置的一部份。 ++ ++ This storage device is a part of an <strong>inactive RAID</strong> device. ++ @info ++ 此儲存裝置是<strong>非作用中 RAID</strong> 裝置的一部份。 + + +- +- No swap +- @label +- 無 swap 分割區 ++ ++ No swap ++ @label ++ 無 swap 分割區 + + +- +- Reuse swap +- @label +- 重新使用 swap ++ ++ Reuse swap ++ @label ++ 重新使用 swap + + +- +- Swap (no Hibernate) +- @label +- Swap(沒有冬眠) ++ ++ Swap (no Hibernate) ++ @label ++ Swap(沒有冬眠) + + +- +- Swap (with Hibernate) +- @label +- Swap(有冬眠) ++ ++ Swap (with Hibernate) ++ @label ++ Swap(有冬眠) + + +- +- Swap to file +- @label +- Swap 到檔案 ++ ++ Swap to file ++ @label ++ Swap 到檔案 + + +- +- <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. +- <strong>手動分割</strong><br/>可以自行建立或重新調整分割區大小。 ++ ++ <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. ++ <strong>手動分割</strong><br/>可以自行建立或重新調整分割區大小。 + + +- +- Bootloader location: +- @label +- 開機載入程式位置: ++ ++ Bootloader location: ++ @label ++ 開機載入程式位置: + +- +- ++ ++ + ClearMountsJob + +- +- Successfully unmounted %1. +- 成功解除掛載 %1。 ++ ++ Successfully unmounted %1. ++ 成功解除掛載 %1。 + + +- +- Successfully disabled swap %1. +- 成功停用 swap %1。 ++ ++ Successfully disabled swap %1. ++ 成功停用 swap %1。 + + +- +- Successfully cleared swap %1. +- 成功清除 swap %1。 ++ ++ Successfully cleared swap %1. ++ 成功清除 swap %1。 + + +- +- Successfully closed mapper device %1. +- 成功關閉對映裝置 %1。 ++ ++ Successfully closed mapper device %1. ++ 成功關閉對映裝置 %1。 + + +- +- Successfully disabled volume group %1. +- 成功停用捲軸群組 %1。 ++ ++ Successfully disabled volume group %1. ++ 成功停用捲軸群組 %1。 + + +- +- Clear mounts for partitioning operations on %1 +- @title +- 為了準備分割區操作而完全卸載 %1 ++ ++ Clear mounts for partitioning operations on %1 ++ @title ++ 為了準備分割區操作而完全卸載 %1 + + +- +- Clearing mounts for partitioning operations on %1… +- @status +- 正在為了準備分割區操作而完全清除掛載 %1…… ++ ++ Clearing mounts for partitioning operations on %1… ++ @status ++ 正在為了準備分割區操作而完全清除掛載 %1…… + + +- +- Cleared all mounts for %1 +- 已清除所有與 %1 相關的掛載 ++ ++ Cleared all mounts for %1 ++ 已清除所有與 %1 相關的掛載 + +- +- ++ ++ + ClearTempMountsJob + +- +- +- Clearing all temporary mounts… +- @status +- 正在清除所有臨時掛載…… ++ ++ ++ Clearing all temporary mounts… ++ @status ++ 正在清除所有臨時掛載…… + + +- +- Cleared all temporary mounts. +- 已清除所有暫時掛載。 ++ ++ Cleared all temporary mounts. ++ 已清除所有暫時掛載。 + +- +- ++ ++ + CommandList + +- +- Could not run command. +- 無法執行指令。 ++ ++ Could not run command. ++ 無法執行指令。 + + +- +- The commands use variables that are not defined. Missing variables are: %1. +- 這些指令使用了未定義的變數。缺少的變數為:%1。 ++ ++ The commands use variables that are not defined. Missing variables are: %1. ++ 這些指令使用了未定義的變數。缺少的變數為:%1。 + +- +- ++ ++ + Config + +- +- Setup Failed +- @title +- 設定失敗 ++ ++ Setup Failed ++ @title ++ 設定失敗 ++ ++ ++ ++ Installation Failed ++ @title ++ 安裝失敗 ++ ++ ++ ++ The setup of %1 did not complete successfully. ++ @info ++ %1 的設定並未成功完成。 + + +- +- Installation Failed +- @title +- 安裝失敗 ++ ++ The installation of %1 did not complete successfully. ++ @info ++ %1 的安裝並未成功完成。 + + +- +- The setup of %1 did not complete successfully. +- @info +- %1 的設定並未成功完成。 ++ ++ Setup Complete ++ @title ++ 設定完成 + + +- +- The installation of %1 did not complete successfully. +- @info +- %1 的安裝並未成功完成。 ++ ++ Installation Complete ++ @title ++ 安裝完成 + + +- +- Setup Complete +- @title +- 設定完成 ++ ++ The setup of %1 is complete. ++ @info ++ %1 的設定完成。 + + +- +- Installation Complete +- @title +- 安裝完成 ++ ++ The installation of %1 is complete. ++ @info ++ %1 的安裝已完成。 + + +- +- The setup of %1 is complete. +- @info +- %1 的設定完成。 ++ ++ Keyboard model has been set to %1<br/>. ++ @label, %1 is keyboard model, as in Apple Magic Keyboard ++ 鍵盤型號已設定為 %1<br/>。 + + +- +- The installation of %1 is complete. +- @info +- %1 的安裝已完成。 ++ ++ Keyboard layout has been set to %1/%2. ++ @label, %1 is layout, %2 is layout variant ++ 鍵盤佈局已設定為 %1/%2。 + + +- +- Keyboard model has been set to %1<br/>. +- @label, %1 is keyboard model, as in Apple Magic Keyboard +- 鍵盤型號已設定為 %1<br/>。 ++ ++ Set timezone to %1/%2 ++ @action ++ 設定時區為 %1/%2 + + +- +- Keyboard layout has been set to %1/%2. +- @label, %1 is layout, %2 is layout variant +- 鍵盤佈局已設定為 %1/%2。 ++ ++ The system language will be set to %1. ++ @info ++ 系統語言會設定為 %1。 + + +- +- Set timezone to %1/%2 +- @action +- 設定時區為 %1/%2 ++ ++ The numbers and dates locale will be set to %1. ++ @info ++ 數字與日期格式會設定為 %1。 + + +- +- The system language will be set to %1. +- @info +- 系統語言會設定為%1。 ++ ++ The timezone will be set to %1. ++ @info ++ 設定時區為 %1。 + + +- +- The numbers and dates locale will be set to %1. +- @info +- 數字與日期語系會設定為%1。 ++ The timezone whill be set to %1. ++ @info ++ 設定時區為 %1。 + + +- +- Network Installation. (Disabled: Incorrect configuration) +- 網路安裝。(已停用:設定不正確) ++ ++ Network Installation. (Disabled: Incorrect configuration) ++ 網路安裝。(已停用:設定不正確) + + +- +- Network Installation. (Disabled: Received invalid groups data) +- 網路安裝。(已停用:收到無效的群組資料) ++ ++ Network Installation. (Disabled: Received invalid groups data) ++ 網路安裝。(已停用:收到無效的群組資料) + + +- +- Network Installation. (Disabled: Internal error) +- 網路安裝。(已停用:內部錯誤) ++ ++ Network Installation. (Disabled: Internal error) ++ 網路安裝。(已停用:內部錯誤) + + +- +- Network Installation. (Disabled: Unable to fetch package lists, check your network connection) +- 網路安裝。(已停用:無法擷取軟體包清單,請檢查您的網路連線) ++ ++ Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ++ 網路安裝。(已停用:無法擷取軟體包清單,請檢查您的網路連線) + + +- +- Network Installation. (Disabled: No package list) +- 網路安裝。(已停用:無軟體包清單) ++ ++ Network Installation. (Disabled: No package list) ++ 網路安裝。(已停用:無軟體包清單) + + +- +- Package selection +- 軟體包選擇 ++ ++ Package selection ++ 軟體包選擇 + + +- +- Package Selection +- 軟體包選擇 ++ ++ Package Selection ++ 軟體包選擇 + + +- +- Please pick a product from the list. The selected product will be installed. +- 請從清單中挑選產品。將會安裝選定的產品。 ++ ++ Please pick a product from the list. The selected product will be installed. ++ 請從清單中挑選產品。將會安裝選定的產品。 + + +- +- Packages +- 軟體包 ++ ++ Packages ++ 軟體包 + + +- +- Install option: <strong>%1</strong> +- 安裝選項:<strong>%1</strong> ++ ++ Install option: <strong>%1</strong> ++ 安裝選項:<strong>%1</strong> + + +- +- None +- ++ ++ None ++ + + +- +- Summary +- @label +- 總覽 ++ ++ Summary ++ @label ++ 總覽 + + +- +- This is an overview of what will happen once you start the setup procedure. +- 這是開始安裝後所會發生的事的概覽。 ++ ++ This is an overview of what will happen once you start the setup procedure. ++ 這是開始安裝後所會發生的事的概覽。 + + +- +- This is an overview of what will happen once you start the install procedure. +- 這是您開始安裝後所會發生的事的概覽。 ++ ++ This is an overview of what will happen once you start the install procedure. ++ 這是您開始安裝後所會發生的事的概覽。 + + +- +- Your username is too long. +- 您的使用者名稱太長了。 ++ ++ Your username is too long. ++ 您的使用者名稱太長了。 + + +- +- Your username must start with a lowercase letter or underscore. +- 您的使用者名稱必須以小寫字母或底線開頭。 ++ ++ Your username must start with a lowercase letter or underscore. ++ 您的使用者名稱必須以小寫字母或底線開頭。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 僅允許小寫字母、數字、底線與連接號。 ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 僅允許小寫字母、數字、底線與連接號。 + + +- +- '%1' is not allowed as username. +- 「%1」無法作為使用者名稱。 ++ ++ '%1' is not allowed as username. ++ 「%1」無法作為使用者名稱。 + + +- +- Your hostname is too short. +- 您的主機名稱太短了。 ++ ++ Your hostname is too short. ++ 您的主機名稱太短了。 + + +- +- Your hostname is too long. +- 您的主機名稱太長了。 ++ ++ Your hostname is too long. ++ 您的主機名稱太長了。 + + +- +- '%1' is not allowed as hostname. +- 「%1」無法作為主機名稱。 ++ ++ '%1' is not allowed as hostname. ++ 「%1」無法作為主機名稱。 + + +- +- Only letters, numbers, underscore and hyphen are allowed. +- 僅允許字母、數字、底線與連接號。 ++ ++ Only letters, numbers, underscore and hyphen are allowed. ++ 僅允許字母、數字、底線與連接號。 + + +- +- Your passwords do not match! +- 密碼不符! ++ ++ Your passwords do not match! ++ 密碼不符! + + +- +- OK! +- 確定! ++ ++ OK! ++ 確定! + + +- +- This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. +- 此電腦未滿足安裝 %1 的最低配備。<br/>安裝無法繼續。 ++ ++ This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. ++ 此電腦未滿足安裝 %1 的最低配備。<br/>安裝無法繼續。 + + +- +- This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. +- 此電腦未滿足安裝 %1 的最低配備。<br/>安裝無法繼續。 ++ ++ This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. ++ 此電腦未滿足安裝 %1 的最低配備。<br/>安裝無法繼續。 + + +- +- This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. +- 此電腦未滿足一些安裝 %1 的推薦需求。<br/>設定可以繼續,但部份功能可能會被停用。 ++ ++ This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. ++ 此電腦未滿足一些安裝 %1 的推薦需求。<br/>設定可以繼續,但部份功能可能會被停用。 + + +- +- This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. +- 此電腦未滿足一些安裝 %1 的推薦需求。<br/>安裝可以繼續,但部份功能可能會被停用。 ++ ++ This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. ++ 此電腦未滿足一些安裝 %1 的推薦需求。<br/>安裝可以繼續,但部份功能可能會被停用。 + + +- +- This program will ask you some questions and set up %2 on your computer. +- 本程式會問您一些問題,然後在您的電腦安裝及設定 %2。 ++ This program will ask you some questions and set up %2 on your computer. ++ 本程式會問您一些問題,然後在您的電腦安裝及設定 %2。 + + +- +- <h1>Welcome to the Calamares setup program for %1</h1> +- <h1>歡迎使用 %1 的 Calamares 安裝程式</h1> ++ ++ <h1>Welcome to the Calamares setup program for %1</h1> ++ <h1>歡迎使用 %1 的 Calamares 安裝程式</h1> + + +- +- <h1>Welcome to %1 setup</h1> +- <h1>歡迎使用 %1 安裝程式</h1> ++ ++ <h1>Welcome to %1 setup</h1> ++ <h1>歡迎使用 %1 安裝程式</h1> + + +- +- <h1>Welcome to the Calamares installer for %1</h1> +- <h1>歡迎使用 %1 的 Calamares 安裝程式</h1> ++ ++ <h1>Welcome to the Calamares installer for %1</h1> ++ <h1>歡迎使用 %1 的 Calamares 安裝程式</h1> + + +- +- <h1>Welcome to the %1 installer</h1> +- <h1>歡迎使用 %1 安裝程式</h1> ++ ++ <h1>Welcome to the %1 installer</h1> ++ <h1>歡迎使用 %1 安裝程式</h1> + +- +- ++ ++ + ContextualProcessJob + +- +- Performing contextual processes' job… +- @status +- 正在執行情境流程任務…… ++ ++ Performing contextual processes' job… ++ @status ++ 正在執行情境流程任務…… + +- +- ++ ++ + CreatePartitionDialog + +- +- Create a Partition +- 建立一個分割區 ++ ++ Create a Partition ++ 建立一個分割區 + + +- +- Si&ze: +- 容量大小 (&z) : ++ ++ Si&ze: ++ 容量大小 (&z) : + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Partition &Type: +- 分割區與類型 (&T): ++ ++ Partition &Type: ++ 分割區與類型 (&T): + + +- +- Primar&y +- 基本(&Y) ++ ++ Primar&y ++ 基本(&Y) + + +- +- E&xtended +- 延伸分割區 (&x) ++ ++ E&xtended ++ 延伸分割區 (&x) + + +- +- Fi&le System: +- 檔案系統 (&I): ++ ++ Fi&le System: ++ 檔案系統 (&I): + + +- +- LVM LV name +- LVM LV 名稱 ++ ++ LVM LV name ++ LVM LV 名稱 + + +- +- &Mount Point: +- 掛載點 (&M): ++ ++ &Mount Point: ++ 掛載點 (&M): + + +- +- Flags: +- 旗標: ++ ++ Flags: ++ 旗標: + + +- +- Label for the filesystem +- 檔案系統標籤 ++ ++ Label for the filesystem ++ 檔案系統標籤 + + +- +- FS Label: +- 檔案系統標籤: ++ ++ FS Label: ++ 檔案系統標籤: + + +- +- En&crypt +- @action +- 加密(&C) ++ ++ En&crypt ++ @action ++ 加密(&C) + + +- +- Logical +- @label +- 邏輯分割區 ++ ++ Logical ++ @label ++ 邏輯分割區 + + +- +- Primary +- @label +- 主要分割區 ++ ++ Primary ++ @label ++ 主要分割區 + + +- +- GPT +- @label +- GPT ++ ++ GPT ++ @label ++ GPT + + +- +- Mountpoint already in use. Please select another one. +- @info +- 掛載點使用中。請選擇其他的。 ++ ++ Mountpoint already in use. Please select another one. ++ @info ++ 掛載點使用中。請選擇其他的。 + + +- +- Mountpoint must start with a <tt>/</tt>. +- @info +- 掛載點必須以 <tt>/</tt> 開頭。 ++ ++ Mountpoint must start with a <tt>/</tt>. ++ @info ++ 掛載點必須以 <tt>/</tt> 開頭。 + +- +- ++ ++ + CreatePartitionJob + +- +- Create new %1MiB partition on %3 (%2) with entries %4 +- @title +- 在 %3 (%2) 上使用項目 %4 建立新的 %1MiB 分割區 ++ ++ Create new %1MiB partition on %3 (%2) with entries %4 ++ @title ++ 在 %3 (%2) 上使用項目 %4 建立新的 %1MiB 分割區 + + +- +- Create new %1MiB partition on %3 (%2) +- @title +- 在 %3 (%2) 上建立新的 %1MiB 分割區 ++ ++ Create new %1MiB partition on %3 (%2) ++ @title ++ 在 %3 (%2) 上建立新的 %1MiB 分割區 + + +- +- Create new %2MiB partition on %4 (%3) with file system %1 +- @title +- 使用檔案系統 %1 在 %4 (%3) 建立新的 %2MiB 分割區 ++ ++ Create new %2MiB partition on %4 (%3) with file system %1 ++ @title ++ 使用檔案系統 %1 在 %4 (%3) 建立新的 %2MiB 分割區 + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> +- @info +- 在 <strong>%3</strong> (%2) 上使用項目 <em>%4</em> 建立新的 <strong>%1MiB</strong> 分割區 ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> ++ @info ++ 在 <strong>%3</strong> (%2) 上使用項目 <em>%4</em> 建立新的 <strong>%1MiB</strong> 分割區 + + +- +- Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) +- @info +- 在 <strong>%3</strong> (%2) 上建立新的 <strong>%1MiB</strong> 分割區 ++ ++ Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) ++ @info ++ 在 <strong>%3</strong> (%2) 上建立新的 <strong>%1MiB</strong> 分割區 + + +- +- Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> +- @info +- 使用檔案系統 <strong>%1</strong> 在 <strong>%4</strong> (%3) 建立新的 <strong>%2MiB</strong> 分割區 ++ ++ Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> ++ @info ++ 使用檔案系統 <strong>%1</strong> 在 <strong>%4</strong> (%3) 建立新的 <strong>%2MiB</strong> 分割區 + + +- +- +- Creating new %1 partition on %2… +- @status +- 正在於 %2 建立新的 %1 分割區…… ++ ++ ++ Creating new %1 partition on %2… ++ @status ++ 正在於 %2 建立新的 %1 分割區…… + + +- +- The installer failed to create partition on disk '%1'. +- @info +- 安裝程式在磁碟 '%1' 上建立分割區失敗。 ++ ++ The installer failed to create partition on disk '%1'. ++ @info ++ 安裝程式在磁碟 '%1' 上建立分割區失敗。 + +- +- ++ ++ + CreatePartitionTableDialog + +- +- Create Partition Table +- 建立分割區表格 ++ ++ Create Partition Table ++ 建立分割區表格 + + +- +- Creating a new partition table will delete all existing data on the disk. +- 新增一個分割區表格將會刪除硬碟上所有已存在的資料 ++ ++ Creating a new partition table will delete all existing data on the disk. ++ 新增一個分割區表格將會刪除硬碟上所有已存在的資料 + + +- +- What kind of partition table do you want to create? +- 您想要建立哪一種分割區表格? ++ ++ What kind of partition table do you want to create? ++ 您想要建立哪一種分割區表格? + + +- +- Master Boot Record (MBR) +- 主要開機紀錄 (MBR) ++ ++ Master Boot Record (MBR) ++ 主要開機紀錄 (MBR) + + +- +- GUID Partition Table (GPT) +- GUID 分割區表格 (GPT) ++ ++ GUID Partition Table (GPT) ++ GUID 分割區表格 (GPT) + +- +- ++ ++ + CreatePartitionTableJob + +- +- +- Creating new %1 partition table on %2… +- @status +- 正在於 %2 建立新的 %1 分割表…… ++ ++ ++ Creating new %1 partition table on %2… ++ @status ++ 正在於 %2 建立新的 %1 分割表…… + + +- +- Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… +- @status +- 正在 <strong>%2</strong> (%3) 上建立新的 <strong>%1</strong> 分割表…… ++ ++ Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… ++ @status ++ 正在 <strong>%2</strong> (%3) 上建立新的 <strong>%1</strong> 分割表…… + + +- +- The installer failed to create a partition table on %1. +- 安裝程式在 %1 上建立分割區表格失敗。 ++ ++ The installer failed to create a partition table on %1. ++ 安裝程式在 %1 上建立分割區表格失敗。 + +- +- ++ ++ + CreateUserJob + +- +- Create user %1 +- 建立使用者 %1 ++ ++ Create user %1 ++ 建立使用者 %1 + + +- +- Create user <strong>%1</strong> +- 建立使用者 <strong>%1</strong> ++ ++ Create user <strong>%1</strong> ++ 建立使用者 <strong>%1</strong> + + +- +- +- Creating user %1… +- @status +- 正在建立使用者 %1…… ++ ++ ++ Creating user %1… ++ @status ++ 正在建立使用者 %1…… + + +- +- Preserving home directory… +- @status +- 保留家目錄…… ++ ++ Preserving home directory… ++ @status ++ 保留家目錄…… + + +- +- Configuring user %1 +- @status +- 正在設定使用者 %1 ++ ++ Configuring user %1 ++ @status ++ 正在設定使用者 %1 + + +- +- Setting file permissions… +- @status +- 正在設定檔案權限…… ++ ++ Setting file permissions… ++ @status ++ 正在設定檔案權限…… + +- +- ++ ++ + CreateVolumeGroupDialog + +- +- Create Volume Group +- @title +- 建立卷冊群組 ++ ++ Create Volume Group ++ @title ++ 建立卷冊群組 + +- +- ++ ++ + CreateVolumeGroupJob + +- +- +- Creating new volume group named %1… +- @status +- 正在建立名為 %1 的新卷冊群組…… ++ ++ ++ Creating new volume group named %1… ++ @status ++ 正在建立名為 %1 的新卷冊群組…… + + +- +- Creating new volume group named <strong>%1</strong>… +- @status +- 正在建立名為 <strong>%1</strong> 的新卷冊群組…… ++ ++ Creating new volume group named <strong>%1</strong>… ++ @status ++ 正在建立名為 <strong>%1</strong> 的新卷冊群組…… + + +- +- The installer failed to create a volume group named '%1'. +- 安裝程式建立名為「%1」的新卷冊群組失敗。 ++ ++ The installer failed to create a volume group named '%1'. ++ 安裝程式建立名為「%1」的新卷冊群組失敗。 + +- +- ++ ++ + DeactivateVolumeGroupJob + +- +- +- Deactivating volume group named %1… +- @status +- 正在停用名為 %1 的新卷冊群組…… ++ ++ ++ Deactivating volume group named %1… ++ @status ++ 正在停用名為 %1 的新卷冊群組…… + + +- +- Deactivating volume group named <strong>%1</strong>… +- @status +- 正在停用名為 <strong>%1</strong> 的新卷冊群組…… ++ ++ Deactivating volume group named <strong>%1</strong>… ++ @status ++ 正在停用名為 <strong>%1</strong> 的新卷冊群組…… + + +- +- The installer failed to deactivate a volume group named %1. +- 安裝程式停用名為「%1」的新卷冊群組失敗。 ++ ++ The installer failed to deactivate a volume group named %1. ++ 安裝程式停用名為「%1」的新卷冊群組失敗。 + +- +- ++ ++ + DeletePartitionJob + +- +- +- Deleting partition %1… +- @status +- 正在刪除分割區 %1…… ++ ++ ++ Deleting partition %1… ++ @status ++ 正在刪除分割區 %1…… + + +- +- Deleting partition <strong>%1</strong>… +- @status +- 正在刪除分割區 <strong>%1</strong>…… ++ ++ Deleting partition <strong>%1</strong>… ++ @status ++ 正在刪除分割區 <strong>%1</strong>…… + + +- +- The installer failed to delete partition %1. +- 安裝程式刪除分割區 %1 失敗。 ++ ++ The installer failed to delete partition %1. ++ 安裝程式刪除分割區 %1 失敗。 + +- +- ++ ++ + DeviceInfoWidget + +- +- <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. +- <br><br>建議這個分割表類型只在以 <strong>BIOS</strong> 開機的舊系統使用。其他大多數情況建議使用 GPT。<br><strong>警告:</strong>MBR 分割表是已過時、源自 MS-DOS 時代的標準。<br>最多只能建立 4 個<em>主要</em>分割區;其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。 ++ ++ <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. ++ <br><br>建議這個分割表類型只在以 <strong>BIOS</strong> 開機的舊系統使用。其他大多數情況建議使用 GPT。<br><strong>警告:</strong>MBR 分割表是已過時、源自 MS-DOS 時代的標準。<br>最多只能建立 4 個<em>主要</em>分割區;其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。 + + +- +- <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. +- <br><br>這是對 <strong>EFI</strong> 開機環境而言的現代系統建議分割表類型。 ++ ++ <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. ++ <br><br>這是對 <strong>EFI</strong> 開機環境而言的現代系統建議分割表類型。 + + +- +- This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. +- 這是一個 <strong>迴圈</strong> 裝置。<br><br>它是一個沒有分割表,但讓檔案可以被像塊裝置一樣存取的偽裝置。此種設定通常只包含一個單一的檔案系統。 ++ ++ This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. ++ 這是一個 <strong>迴圈</strong> 裝置。<br><br>它是一個沒有分割表,但讓檔案可以被像塊裝置一樣存取的偽裝置。此種設定通常只包含一個單一的檔案系統。 + + +- +- This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. +- 本安裝程式在選定的儲存裝置上<strong>偵測不到分割表</strong>。<br><br>此裝置要不是沒有分割表,就是其分割表已毀損又或者是一個未知類型的分割表。<br>本安裝程式將會為您建立一個新的分割表,不論是自動或是透過手動分割頁面。 ++ ++ This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. ++ 本安裝程式在選定的儲存裝置上<strong>偵測不到分割表</strong>。<br><br>此裝置要不是沒有分割表,就是其分割表已毀損又或者是一個未知類型的分割表。<br>本安裝程式將會為您建立一個新的分割表,不論是自動或是透過手動分割頁面。 + + +- +- This device has a <strong>%1</strong> partition table. +- 此裝置已有 <strong>%1</strong> 分割表。 ++ ++ This device has a <strong>%1</strong> partition table. ++ 此裝置已有 <strong>%1</strong> 分割表。 + + +- +- The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. +- 選定的儲存裝置的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法,就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置所有的資料。<br>除非特別選擇,否則本安裝程式會保留目前的分割表。<br>若不確定,現時的系統建議使用 GPT。 ++ ++ The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. ++ 選定的儲存裝置的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法,就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置所有的資料。<br>除非特別選擇,否則本安裝程式會保留目前的分割表。<br>若不確定,現時的系統建議使用 GPT。 + +- +- ++ ++ + DeviceModel + +- +- %1 - %2 (%3) +- device[name] - size[number] (device-node[name]) +- %1 - %2 (%3) ++ ++ %1 - %2 (%3) ++ device[name] - size[number] (device-node[name]) ++ %1 - %2 (%3) + + +- +- %1 - (%2) +- device[name] - (device-node[name]) +- %1 - (%2) ++ ++ %1 - (%2) ++ device[name] - (device-node[name]) ++ %1 - (%2) + +- +- ++ ++ + DracutLuksCfgJob + +- +- Writing LUKS configuration for Dracut to %1… +- @status +- 正為 Dracut 寫入 LUKS 設定到 %1…… ++ ++ Writing LUKS configuration for Dracut to %1… ++ @status ++ 正為 Dracut 寫入 LUKS 設定到 %1…… + + +- +- Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted +- @info +- 正在跳過為 Dracut 寫入 LUKS 設定:"/" 分割區未加密 ++ ++ Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted ++ @info ++ 正在跳過為 Dracut 寫入 LUKS 設定:"/" 分割區未加密 + + +- +- Failed to open %1 +- @error +- 開啟 %1 失敗 ++ ++ Failed to open %1 ++ @error ++ 開啟 %1 失敗 + +- +- ++ ++ + DummyCppJob + +- +- Performing dummy C++ job… +- @status +- 正在執行虛擬 C++ 任務…… ++ ++ Performing dummy C++ job… ++ @status ++ 正在執行虛擬 C++ 任務…… + +- +- ++ ++ + EditExistingPartitionDialog + +- +- Edit Existing Partition +- 編輯已經存在的分割區 ++ ++ Edit Existing Partition ++ 編輯已經存在的分割區 + + +- +- Con&tent: +- 內容:(&T) ++ ++ Con&tent: ++ 內容:(&T) + + +- +- &Keep +- 保留(&K) ++ ++ &Keep ++ 保留(&K) + + +- +- Format +- 格式化 ++ ++ Format ++ 格式化 + + +- +- Warning: Formatting the partition will erase all existing data. +- 警告:格式化該分割區換抹除所有已存在的資料。 ++ ++ Warning: Formatting the partition will erase all existing data. ++ 警告:格式化該分割區換抹除所有已存在的資料。 + + +- +- &Mount Point: +- 掛載點 (&M): ++ ++ &Mount Point: ++ 掛載點 (&M): + + +- +- Si&ze: +- 容量大小 (&Z) : ++ ++ Si&ze: ++ 容量大小 (&Z) : + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Fi&le System: +- 檔案系統 (&I): ++ ++ Fi&le System: ++ 檔案系統 (&I): + + +- +- Flags: +- 旗標: ++ ++ Flags: ++ 旗標: + + +- +- Label for the filesystem +- 檔案系統標籤 ++ ++ Label for the filesystem ++ 檔案系統標籤 + + +- +- FS Label: +- 檔案系統標籤: ++ ++ FS Label: ++ 檔案系統標籤: + + +- +- Passphrase for existing partition +- 既有分割區的密碼 ++ ++ Passphrase for existing partition ++ 既有分割區的密碼 + + +- +- Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. +- 分割區 %1 無法使用給予的密碼解密。<br/><br/>再次編輯分割區並給予正確的密碼或刪除並建立新的加密分割區。 ++ ++ Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. ++ 分割區 %1 無法使用給予的密碼解密。<br/><br/>再次編輯分割區並給予正確的密碼或刪除並建立新的加密分割區。 + +- +- ++ ++ + EncryptWidget + +- +- En&crypt system +- 加密系統(&C) ++ ++ En&crypt system ++ 加密系統(&C) + + +- +- Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. +- 您的系統對加密的支援似乎不夠好,無法加密整個系統。您可以啟用加密,但效能可能會受到影響。 ++ ++ Your system does not seem to support encryption well enough to encrypt the entire system. You may enable encryption, but performance may suffer. ++ 您的系統對加密的支援似乎不夠好,無法加密整個系統。您可以啟用加密,但效能可能會受到影響。 + + +- +- Passphrase +- 通關密語 ++ ++ Passphrase ++ 通關密語 + + +- +- Confirm passphrase +- 確認通關密語 ++ ++ Confirm passphrase ++ 確認通關密語 + + +- +- +- Please enter the same passphrase in both boxes. +- @tooltip +- 請在兩個框框中輸入相同的通關密語。 ++ ++ ++ Please enter the same passphrase in both boxes. ++ @tooltip ++ 請在兩個框框中輸入相同的通關密語。 + + +- +- Password must be a minimum of %1 characters. +- @tooltip +- 密碼最少必須 %1 個字元。 ++ ++ Password must be a minimum of %1 characters. ++ @tooltip ++ 密碼最少必須 %1 個字元。 + +- +- ++ ++ + ErrorDialog + +- +- Details: +- 詳細資訊: ++ ++ Details: ++ 詳細資訊: + + +- +- Would you like to paste the install log to the web? +- 想要將安裝紀錄檔貼到網路上嗎? ++ ++ Would you like to paste the install log to the web? ++ 想要將安裝紀錄檔貼到網路上嗎? + +- +- ++ ++ + FillGlobalStorageJob + +- +- Set partition information +- @title +- 設定分割區資訊 ++ ++ Set partition information ++ @title ++ 設定分割區資訊 + + +- +- Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> +- @info +- 在有 <em>%3</em> 功能的<strong>新</strong> %2 系統分割區上安裝 %1 ++ ++ Install %1 on <strong>new</strong> %2 system partition with features <em>%3</em> ++ @info ++ 在有 <em>%3</em> 功能的<strong>新</strong> %2 系統分割區上安裝 %1 + + +- +- Install %1 on <strong>new</strong> %2 system partition +- @info +- 在 <strong>新的</strong>系統分割區 %2 上安裝 %1 ++ ++ Install %1 on <strong>new</strong> %2 system partition ++ @info ++ 在 <strong>新的</strong>系統分割區 %2 上安裝 %1 + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> +- @info +- 設定有掛載點 <strong>%1</strong> 與 <em>%3</em> 的<strong>新</strong> %2 分割區 ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> ++ @info ++ 設定有掛載點 <strong>%1</strong> 與 <em>%3</em> 的<strong>新</strong> %2 分割區 + + +- +- Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 +- @info +- 設定有掛載點 <strong>%1</strong> %3 的<strong>新</strong> %2 分割區 ++ ++ Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 ++ @info ++ 設定有掛載點 <strong>%1</strong> %3 的<strong>新</strong> %2 分割區 + + +- +- Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> +- @info +- 在有功能 <em>%4</em> 的 %3 系統分割區 <strong>%1</strong> 上安裝 %2 ++ ++ Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> ++ @info ++ 在有功能 <em>%4</em> 的 %3 系統分割區 <strong>%1</strong> 上安裝 %2 + + +- +- Install %2 on %3 system partition <strong>%1</strong> +- @info +- 在 %3 系統分割區 <strong>%1</strong> 上安裝 %2 ++ ++ Install %2 on %3 system partition <strong>%1</strong> ++ @info ++ 在 %3 系統分割區 <strong>%1</strong> 上安裝 %2 + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> +- @info +- 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong> 與功能 <em>%4</em> ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> ++ @info ++ 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong> 與功能 <em>%4</em> + + +- +- Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… +- @info +- 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong> %4…… ++ ++ Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… ++ @info ++ 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong> %4…… + + +- +- Install boot loader on <strong>%1</strong>… +- @info +- 在 <strong>%1</strong> 安裝開機載入程式…… ++ ++ Install boot loader on <strong>%1</strong>… ++ @info ++ 在 <strong>%1</strong> 安裝開機載入程式…… + + +- +- Setting up mount points… +- @status +- 設定掛載點…… ++ ++ Setting up mount points… ++ @status ++ 設定掛載點…… + +- +- ++ ++ + FinishedPage + +- +- &Restart now +- 現在重新啟動 (&R) ++ ++ &Restart now ++ 現在重新啟動 (&R) + + +- +- <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. +- @info +- <h1>都完成了。</h1><br/>%1 已經在您的電腦上設定好了。<br/>您現在可能會想要開始使用您的新系統。 ++ ++ <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. ++ @info ++ <h1>都完成了。</h1><br/>%1 已經在您的電腦上設定好了。<br/>您現在可能會想要開始使用您的新系統。 + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> +- @tooltip +- <html><head/><body><p>當這個勾選框被選取時,您的系統將會在按下<span style="font-style:italic;">完成</span>或關閉設定程式時立刻重新啟動。</p></body></html> ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> ++ @tooltip ++ <html><head/><body><p>當這個勾選框被選取時,您的系統將會在按下<span style="font-style:italic;">完成</span>或關閉設定程式時立刻重新啟動。</p></body></html> + + +- +- <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. +- @info +- <h1>都完成了。</h1><br/>%1 已經安裝在您的電腦上了。<br/>您現在可能會想要重新啟動到您的新系統中,或是繼續使用 %2 Live 環境。 ++ ++ <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. ++ @info ++ <h1>都完成了。</h1><br/>%1 已經安裝在您的電腦上了。<br/>您現在可能會想要重新啟動到您的新系統中,或是繼續使用 %2 Live 環境。 + + +- +- <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> +- @tooltip +- <html><head/><body><p>當這個勾選框被選取時,您的系統將會在按下<span style="font-style:italic;">完成</span>或關閉安裝程式時立刻重新啟動。</p></body></html> ++ ++ <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> ++ @tooltip ++ <html><head/><body><p>當這個勾選框被選取時,您的系統將會在按下<span style="font-style:italic;">完成</span>或關閉安裝程式時立刻重新啟動。</p></body></html> + + +- +- <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- <h1>設定失敗</h1><br/>%1 並未在您的電腦設定好。<br/>錯誤訊息為:%2。 ++ ++ <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ <h1>設定失敗</h1><br/>%1 並未在您的電腦設定好。<br/>錯誤訊息為:%2。 + + +- +- <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. +- @info, %1 is product name with version +- <h1>安裝失敗</h1><br/>%1 並未安裝到您的電腦上。<br/>錯誤訊息為:%2。 ++ ++ <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. ++ @info, %1 is product name with version ++ <h1>安裝失敗</h1><br/>%1 並未安裝到您的電腦上。<br/>錯誤訊息為:%2。 + +- +- ++ ++ + FinishedQmlViewStep + +- +- Finish +- @label +- 完成 ++ ++ Finish ++ @label ++ 完成 + +- +- ++ ++ + FinishedViewStep + +- +- Finish +- @label +- 完成 ++ ++ Finish ++ @label ++ 完成 + +- +- ++ ++ + FormatPartitionJob + +- +- Format partition %1 (file system: %2, size: %3 MiB) on %4 +- @title +- 格式化分割區 %1(檔案系統:%2,大小:%3 MiB)在 %4 ++ ++ Format partition %1 (file system: %2, size: %3 MiB) on %4 ++ @title ++ 格式化分割區 %1(檔案系統:%2,大小:%3 MiB)在 %4 + + +- +- Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> +- @info +- 格式化 <strong>%3MiB</strong> 分割區 <strong>%1</strong>,使用檔案系統 <strong>%2</strong> ++ ++ Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> ++ @info ++ 格式化 <strong>%3MiB</strong> 分割區 <strong>%1</strong>,使用檔案系統 <strong>%2</strong> + + +- +- %1 (%2) +- partition label %1 (device path %2) +- %1 (%2) ++ ++ %1 (%2) ++ partition label %1 (device path %2) ++ %1 (%2) + + +- +- Formatting partition %1 with file system %2… +- @status +- 正在以 %2 檔案系統格式化分割區 %1…… ++ ++ Formatting partition %1 with file system %2… ++ @status ++ 正在以 %2 檔案系統格式化分割區 %1…… + + +- +- The installer failed to format partition %1 on disk '%2'. +- 安裝程式格式化在磁碟 '%2' 上的分割區 %1 失敗。 ++ ++ The installer failed to format partition %1 on disk '%2'. ++ 安裝程式格式化在磁碟 '%2' 上的分割區 %1 失敗。 + +- +- ++ ++ + GeneralRequirements + +- +- Please ensure the system has at least %1 GiB available drive space. +- 請確保系統有至少 %1 GiB 的可用磁碟空間。 ++ ++ Please ensure the system has at least %1 GiB available drive space. ++ 請確保系統有至少 %1 GiB 的可用磁碟空間。 + + +- +- Available drive space is all of the hard disks and SSDs connected to the system. +- 可用磁碟空間是連結到系統的所有硬碟與 SSD。 ++ ++ Available drive space is all of the hard disks and SSDs connected to the system. ++ 可用磁碟空間是連結到系統的所有硬碟與 SSD。 + + +- +- There is not enough drive space. At least %1 GiB is required. +- 沒有足夠的磁碟空間。至少需要 %1 GiB。 ++ ++ There is not enough drive space. At least %1 GiB is required. ++ 沒有足夠的磁碟空間。至少需要 %1 GiB。 + + +- +- has at least %1 GiB working memory +- 有至少 %1 GiB 的可用記憶體 ++ ++ has at least %1 GiB working memory ++ 有至少 %1 GiB 的可用記憶體 + + +- +- The system does not have enough working memory. At least %1 GiB is required. +- 系統沒有足夠的記憶體。至少需要 %1 GiB。 ++ ++ The system does not have enough working memory. At least %1 GiB is required. ++ 系統沒有足夠的記憶體。至少需要 %1 GiB。 + + +- +- is plugged in to a power source +- 已插入外接電源 ++ ++ is plugged in to a power source ++ 已插入外接電源 + + +- +- The system is not plugged in to a power source. +- 系統未插入外接電源。 ++ ++ The system is not plugged in to a power source. ++ 系統未插入外接電源。 + + +- +- is connected to the Internet +- 已連上網際網路 ++ ++ is connected to the Internet ++ 已連上網際網路 + + +- +- The system is not connected to the Internet. +- 系統未連上網際網路 ++ ++ The system is not connected to the Internet. ++ 系統未連上網際網路 + + +- +- is running the installer as an administrator (root) +- 以管理員 (root) 權限執行安裝程式 ++ ++ is running the installer as an administrator (root) ++ 以管理員 (root) 權限執行安裝程式 + + +- +- The setup program is not running with administrator rights. +- 設定程式並未以管理員權限執行。 ++ ++ The setup program is not running with administrator rights. ++ 設定程式並未以管理員權限執行。 + + +- +- The installer is not running with administrator rights. +- 安裝程式並未以管理員權限執行。 ++ ++ The installer is not running with administrator rights. ++ 安裝程式並未以管理員權限執行。 + + +- +- has a screen large enough to show the whole installer +- 螢幕夠大,可以顯示整個安裝程式 ++ ++ has a screen large enough to show the whole installer ++ 螢幕夠大,可以顯示整個安裝程式 + + +- +- The screen is too small to display the setup program. +- 螢幕太小了,沒辦法顯示設定程式。 ++ ++ The screen is too small to display the setup program. ++ 螢幕太小了,沒辦法顯示設定程式。 + + +- +- The screen is too small to display the installer. +- 螢幕太小了,沒辦法顯示安裝程式。 ++ ++ The screen is too small to display the installer. ++ 螢幕太小了,沒辦法顯示安裝程式。 + + +- +- is always false +- 一律為 false ++ ++ is always false ++ 一律為 false + + +- +- The computer says no. +- 電腦說否。 ++ ++ The computer says no. ++ 電腦說否。 + + +- +- is always false (slowly) +- 一律為 false(慢) ++ ++ is always false (slowly) ++ 一律為 false(慢) + + +- +- The computer says no (slowly). +- 電腦說否(慢)。 ++ ++ The computer says no (slowly). ++ 電腦說否(慢)。 + + +- +- is always true +- 一律為 true ++ ++ is always true ++ 一律為 true + + +- +- The computer says yes. +- 電腦說是。 ++ ++ The computer says yes. ++ 電腦說是。 + + +- +- is always true (slowly) +- 一律為 true(慢) ++ ++ is always true (slowly) ++ 一律為 true(慢) + + +- +- The computer says yes (slowly). +- 電腦說是(慢)。 ++ ++ The computer says yes (slowly). ++ 電腦說是(慢)。 + + +- +- is checked three times. +- 被檢查了三次。 ++ ++ is checked three times. ++ 被檢查了三次。 + + +- +- The snark has not been checked three times. +- The (some mythological beast) has not been checked three times. +- snark 並未檢查三次。 ++ ++ The snark has not been checked three times. ++ The (some mythological beast) has not been checked three times. ++ snark 並未檢查三次。 + +- +- ++ ++ + HostInfoJob + +- +- Collecting information about your machine… +- @status +- 正在蒐集關於您機器的資訊…… ++ ++ Collecting information about your machine… ++ @status ++ 正在蒐集關於您機器的資訊…… + +- +- ++ ++ + IDJob + +- +- +- +- +- OEM Batch Identifier +- OEM 批次識別記號 ++ ++ ++ ++ ++ OEM Batch Identifier ++ OEM 批次識別記號 + + +- +- Could not create directories <code>%1</code>. +- 無法建立目錄 <code>%1</code>。 ++ ++ Could not create directories <code>%1</code>. ++ 無法建立目錄 <code>%1</code>。 + + +- +- Could not open file <code>%1</code>. +- 無法開啟檔案 <code>%1</code>。 ++ ++ Could not open file <code>%1</code>. ++ 無法開啟檔案 <code>%1</code>。 + + +- +- Could not write to file <code>%1</code>. +- 無法寫入至檔案 <code>%1</code>。 ++ ++ Could not write to file <code>%1</code>. ++ 無法寫入至檔案 <code>%1</code>。 + +- +- ++ ++ + InitcpioJob + +- +- Creating initramfs with mkinitcpio… +- @status +- 正在使用 mkinitcpio 建立 initramfs…… ++ ++ Creating initramfs with mkinitcpio… ++ @status ++ 正在使用 mkinitcpio 建立 initramfs…… + +- +- ++ ++ + InitramfsJob + +- +- Creating initramfs… +- @status +- 正在建立 initramfs…… ++ ++ Creating initramfs… ++ @status ++ 正在建立 initramfs…… + +- +- ++ ++ + InteractiveTerminalPage + +- +- Konsole not installed. +- @error +- 未安裝 Konsole。 ++ ++ Konsole not installed. ++ @error ++ 未安裝 Konsole。 + + +- +- Please install KDE Konsole and try again! +- @info +- 請安裝 KDE Konsole 並再試一次! ++ ++ Please install KDE Konsole and try again! ++ @info ++ 請安裝 KDE Konsole 並再試一次! + + +- +- Executing script: &nbsp;<code>%1</code> +- @info +- 正在執行指令稿:&nbsp;<code>%1</code> ++ ++ Executing script: &nbsp;<code>%1</code> ++ @info ++ 正在執行指令稿:&nbsp;<code>%1</code> + +- +- ++ ++ + InteractiveTerminalViewStep + +- +- Script +- @label +- 指令稿 ++ ++ Script ++ @label ++ 指令稿 + +- +- ++ ++ + KeyboardQmlViewStep + +- +- Keyboard +- @label +- 鍵盤 ++ ++ Keyboard ++ @label ++ 鍵盤 + +- +- ++ ++ + KeyboardViewStep + +- +- Keyboard +- @label +- 鍵盤 ++ ++ Keyboard ++ @label ++ 鍵盤 + +- +- ++ ++ + LCLocaleDialog + +- +- System Locale Setting +- @title +- 系統語系設定 ++ ++ System Locale Setting ++ @title ++ 系統語系設定 + + +- +- The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. +- @info +- 系統語系設定會影響部份命令列使用者介面的語言及字元集。<br/>目前的設定為 <strong>%1</strong>。 ++ ++ The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. ++ @info ++ 系統語系設定會影響部份命令列使用者介面的語言及字元集。<br/>目前的設定為 <strong>%1</strong>。 + + +- +- &Cancel +- @button +- 取消(&C) ++ ++ &Cancel ++ @button ++ 取消(&C) + + +- +- &OK +- @button +- 確定(&O) ++ ++ &OK ++ @button ++ 確定(&O) + +- +- ++ ++ + LOSHJob + +- +- Configuring encrypted swap. +- 正在設定已加密的 swap。 ++ ++ Configuring encrypted swap. ++ 正在設定已加密的 swap。 + + +- +- No target system available. +- 沒有可用的目標系統。 ++ ++ No target system available. ++ 沒有可用的目標系統。 + + +- +- No rootMountPoint is set. +- 未設定 rootMountPoint。 ++ ++ No rootMountPoint is set. ++ 未設定 rootMountPoint。 + + +- +- No configFilePath is set. +- 未設定 configFilePath。 ++ ++ No configFilePath is set. ++ 未設定 configFilePath。 + +- +- ++ ++ + LicensePage + +- +- <h1>License Agreement</h1> +- <h1>授權條款</h1> ++ ++ <h1>License Agreement</h1> ++ <h1>授權條款</h1> + + +- +- I accept the terms and conditions above. +- @info +- 我接受上述的條款與條件。 ++ ++ I accept the terms and conditions above. ++ @info ++ 我接受上述的條款與條件。 + + +- +- Please review the End User License Agreements (EULAs). +- @info +- 請審閱終端使用者授權條款 (EULAs)。 ++ ++ Please review the End User License Agreements (EULAs). ++ @info ++ 請審閱終端使用者授權條款 (EULAs)。 + + +- +- This setup procedure will install proprietary software that is subject to licensing terms. +- @info +- 此設定過程將會安裝需要同意其授權條款的專有軟體。 ++ ++ This setup procedure will install proprietary software that is subject to licensing terms. ++ @info ++ 此設定過程將會安裝需要同意其授權條款的專有軟體。 + + +- +- If you do not agree with the terms, the setup procedure cannot continue. +- @info +- 如果您不同意此條款,安裝程序就無法繼續。 ++ ++ If you do not agree with the terms, the setup procedure cannot continue. ++ @info ++ 如果您不同意此條款,安裝程序就無法繼續。 + + +- +- This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. +- @info +- 此設定過程會安裝需要同意授權條款的專有軟體以提供附加功能並強化使用者體驗。 ++ ++ This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. ++ @info ++ 此設定過程會安裝需要同意授權條款的專有軟體以提供附加功能並強化使用者體驗。 + + +- +- If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. +- @info +- 如果您不同意條款,就不會安裝專有軟體,而將會使用開放原始碼的替代方案。 ++ ++ If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. ++ @info ++ 如果您不同意條款,就不會安裝專有軟體,而將會使用開放原始碼的替代方案。 + +- +- ++ ++ + LicenseViewStep + +- +- License +- @label +- 授權條款 ++ ++ License ++ @label ++ 授權條款 + +- +- ++ ++ + LicenseWidget + +- +- URL: %1 +- @label +- URL:%1 ++ ++ URL: %1 ++ @label ++ URL:%1 + + +- +- <strong>%1 driver</strong><br/>by %2 +- @label, %1 is product name, %2 is product vendor +- %1 is an untranslatable product name, example: Creative Audigy driver +- <strong>%1 驅動程式</strong><br/>由 %2 所提供 ++ ++ <strong>%1 driver</strong><br/>by %2 ++ @label, %1 is product name, %2 is product vendor ++ %1 is an untranslatable product name, example: Creative Audigy driver ++ <strong>%1 驅動程式</strong><br/>由 %2 所提供 + + +- +- <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- %1 is usually a vendor name, example: Nvidia graphics driver +- <strong>%1 顯示卡驅動程式</strong><br/><font color="Grey">由 %2 所提供</font> ++ ++ <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ %1 is usually a vendor name, example: Nvidia graphics driver ++ <strong>%1 顯示卡驅動程式</strong><br/><font color="Grey">由 %2 所提供</font> + + +- +- <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 瀏覽器外掛程式</strong><br/><font color="Grey">由 %2 所提供</font> ++ ++ <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 瀏覽器外掛程式</strong><br/><font color="Grey">由 %2 所提供</font> + + +- +- <strong>%1 codec</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 編解碼器</strong><br/><font color="Grey">由 %2 所提供</font> ++ ++ <strong>%1 codec</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 編解碼器</strong><br/><font color="Grey">由 %2 所提供</font> + + +- +- <strong>%1 package</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1 軟體包</strong><br/><font color="Grey">由 %2 所提供</font> ++ ++ <strong>%1 package</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1 軟體包</strong><br/><font color="Grey">由 %2 所提供</font> + + +- +- <strong>%1</strong><br/><font color="Grey">by %2</font> +- @label, %1 is product name, %2 is product vendor +- <strong>%1</strong><br/><font color="Grey">由 %2 所提供</font> ++ ++ <strong>%1</strong><br/><font color="Grey">by %2</font> ++ @label, %1 is product name, %2 is product vendor ++ <strong>%1</strong><br/><font color="Grey">由 %2 所提供</font> + + +- +- File: %1 +- @label +- 檔案:%1 ++ ++ File: %1 ++ @label ++ 檔案:%1 + + +- +- Hide the license text +- @tooltip +- 隱藏授權條款文字 ++ ++ Hide the license text ++ @tooltip ++ 隱藏授權條款文字 + + +- +- Show the license text +- @tooltip +- 顯示授權條款文字 ++ ++ Show the license text ++ @tooltip ++ 顯示授權條款文字 + + +- +- Open the license agreement in browser +- @tooltip +- 在瀏覽器中開啟授權條款文字 ++ ++ Open the license agreement in browser ++ @tooltip ++ 在瀏覽器中開啟授權條款文字 + +- +- ++ ++ + LocalePage + +- +- Region: +- @label +- 地區 ++ ++ Region: ++ @label ++ 地區 + + +- +- Zone: +- @label +- 時區 ++ ++ Zone: ++ @label ++ 時區 + + +- +- +- &Change… +- @button +- 變更……(&C) ++ ++ ++ &Change… ++ @button ++ 變更……(&C) + +- +- ++ ++ + LocaleQmlViewStep + +- +- Location +- @label +- 位置 ++ ++ Location ++ @label ++ 位置 + +- +- ++ ++ + LocaleTests + +- +- Quit +- 結束 ++ ++ Quit ++ 結束 + +- +- ++ ++ + LocaleViewStep + +- +- Location +- @label +- 位置 ++ ++ Location ++ @label ++ 位置 + +- +- ++ ++ + LuksBootKeyFileJob + +- +- Configuring LUKS key file. +- 正在設定 LUKS 金鑰檔案。 ++ ++ Configuring LUKS key file. ++ 正在設定 LUKS 金鑰檔案。 + + +- +- +- No partitions are defined. +- 沒有已定義的分割區。 ++ ++ ++ No partitions are defined. ++ 沒有已定義的分割區。 + + +- +- +- Encrypted rootfs setup error +- 已加密的 rootfs 設定錯誤 ++ ++ ++ Encrypted rootfs setup error ++ 已加密的 rootfs 設定錯誤 + + +- +- Root partition %1 is LUKS but no passphrase has been set. +- 根分割區 %1 為 LUKS 但沒有設定密碼。 ++ ++ Root partition %1 is LUKS but no passphrase has been set. ++ 根分割區 %1 為 LUKS 但沒有設定密碼。 + + +- +- Could not create LUKS key file for root partition %1. +- 無法為根分割區 %1 建立 LUKS 金鑰檔。 ++ ++ Could not create LUKS key file for root partition %1. ++ 無法為根分割區 %1 建立 LUKS 金鑰檔。 + +- +- ++ ++ + MachineIdJob + +- +- Generate machine-id. +- 生成 machine-id。 ++ ++ Generate machine-id. ++ 生成 machine-id。 + + +- +- Configuration Error +- 設定錯誤 ++ ++ Configuration Error ++ 設定錯誤 + + +- +- No root mount point is set for MachineId. +- 未為 MachineId 設定根掛載點。 ++ ++ No root mount point is set for MachineId. ++ 未為 MachineId 設定根掛載點。 + + +- +- +- +- +- File not found +- 找不到檔案 ++ ++ ++ ++ ++ File not found ++ 找不到檔案 + + +- +- Path <pre>%1</pre> must be an absolute path. +- 路徑 <pre>%1</pre> 必須為絕對路徑。 ++ ++ Path <pre>%1</pre> must be an absolute path. ++ 路徑 <pre>%1</pre> 必須為絕對路徑。 + + +- +- Could not create new random file <pre>%1</pre>. +- 無法建立新的隨機檔案 <pre>%1</pre>。 ++ ++ Could not create new random file <pre>%1</pre>. ++ 無法建立新的隨機檔案 <pre>%1</pre>。 + +- +- ++ ++ + Map + +- +- Timezone: %1 +- @label +- 時區:%1 ++ ++ Timezone: %1 ++ @label ++ 時區:%1 + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @info +- 請在地圖上選取您的偏好位置,這樣安裝程式就可以為您建議 ++ @info ++ 請在地圖上選取您的偏好位置,這樣安裝程式就可以為您建議 + 語系與時區。您可以在下面微調建議的設定。透過拖曳來移動地圖, + 並使用 +/- 按鈕來縮放,或是使用滑鼠滾輪來縮放。 + +- +- ++ ++ + Map-qt6 + +- +- Timezone: %1 +- @label +- 時區:%1 ++ ++ Timezone: %1 ++ @label ++ 時區:%1 + + +- +- Please select your preferred location on the map so the installer can suggest the locale ++ ++ Please select your preferred location on the map so the installer can suggest the locale + and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging + to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. +- @label +- 請在地圖上選取您的偏好位置,這樣安裝程式就可以為您建議 ++ @label ++ 請在地圖上選取您的偏好位置,這樣安裝程式就可以為您建議 + 語系與時區。您可以在下面微調建議的設定。透過拖曳來移動地圖, + 並使用 +/- 按鈕來縮放,或是使用滑鼠滾輪來縮放。 + +- +- ++ ++ + NetInstallViewStep + +- +- Package selection +- 軟體包選擇 ++ ++ Package selection ++ 軟體包選擇 + + +- +- Office software +- 辦公軟體 ++ ++ Office software ++ 辦公軟體 + + +- +- Office package +- 辦公套件 ++ ++ Office package ++ 辦公套件 + + +- +- Browser software +- 瀏覽器軟體 ++ ++ Browser software ++ 瀏覽器軟體 + + +- +- Browser package +- 瀏覽器套件 ++ ++ Browser package ++ 瀏覽器套件 + + +- +- Web browser +- 網頁瀏覽器 ++ ++ Web browser ++ 網頁瀏覽器 + + +- +- Kernel +- label for netinstall module, Linux kernel +- 內核 ++ ++ Kernel ++ label for netinstall module, Linux kernel ++ 內核 + + +- +- Services +- label for netinstall module, system services +- 服務 ++ ++ Services ++ label for netinstall module, system services ++ 服務 + + +- +- Login +- label for netinstall module, choose login manager +- 登入 ++ ++ Login ++ label for netinstall module, choose login manager ++ 登入 + + +- +- Desktop +- label for netinstall module, choose desktop environment +- 桌面 ++ ++ Desktop ++ label for netinstall module, choose desktop environment ++ 桌面 + + +- +- Applications +- 應用程式 ++ ++ Applications ++ 應用程式 + + +- +- Communication +- label for netinstall module +- 通訊 ++ ++ Communication ++ label for netinstall module ++ 通訊 + + +- +- Development +- label for netinstall module +- 開發 ++ ++ Development ++ label for netinstall module ++ 開發 + + +- +- Office +- label for netinstall module +- 辦公 ++ ++ Office ++ label for netinstall module ++ 辦公 + + +- +- Multimedia +- label for netinstall module +- 多媒體 ++ ++ Multimedia ++ label for netinstall module ++ 多媒體 + + +- +- Internet +- label for netinstall module +- 網際網路 ++ ++ Internet ++ label for netinstall module ++ 網際網路 + + +- +- Theming +- label for netinstall module +- 主題 ++ ++ Theming ++ label for netinstall module ++ 主題 + + +- +- Gaming +- label for netinstall module +- 遊戲 ++ ++ Gaming ++ label for netinstall module ++ 遊戲 + + +- +- Utilities +- label for netinstall module +- 實用工具 ++ ++ Utilities ++ label for netinstall module ++ 實用工具 + +- +- ++ ++ + NotesQmlViewStep + +- +- Notes +- 記事 ++ ++ Notes ++ 記事 + +- +- ++ ++ + OEMPage + +- +- Ba&tch: +- 批次:(&T) ++ ++ Ba&tch: ++ 批次:(&T) + + +- +- <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> +- <html><head/><body><p>在此輸入批次識別記號。這將會儲存在目標系統中。</p></body></html> ++ ++ <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> ++ <html><head/><body><p>在此輸入批次識別記號。這將會儲存在目標系統中。</p></body></html> + + +- +- <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> +- <html><head/><body><h1>OEM 設定</h1><p>在設定目標系統時,Calamares 將會使用 OEM 設定。</p></body></html> ++ ++ <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> ++ <html><head/><body><h1>OEM 設定</h1><p>在設定目標系統時,Calamares 將會使用 OEM 設定。</p></body></html> + +- +- ++ ++ + OEMViewStep + +- +- OEM Configuration +- OEM 設定 ++ ++ OEM Configuration ++ OEM 設定 + + +- +- Set the OEM Batch Identifier to <code>%1</code>. +- 設定 OEM 批次識別符號為 <code>%1</code>。 ++ ++ Set the OEM Batch Identifier to <code>%1</code>. ++ 設定 OEM 批次識別符號為 <code>%1</code>。 + +- +- ++ ++ + Offline + +- +- Select your preferred region, or use the default settings +- @label +- 選取您偏好的區域,或是使用預設設定 ++ ++ Select your preferred region, or use the default settings ++ @label ++ 選取您偏好的區域,或是使用預設設定 + + +- +- +- +- Timezone: %1 +- @label +- 時區:%1 ++ ++ ++ ++ Timezone: %1 ++ @label ++ 時區:%1 + + +- +- Select your preferred zone within your region +- @label +- 在您的區域中選取您偏好的時區 ++ ++ Select your preferred zone within your region ++ @label ++ 在您的區域中選取您偏好的時區 + + +- +- Zones +- @button +- 時區 ++ ++ Zones ++ @button ++ 時區 + + +- +- You can fine-tune language and locale settings below +- @label +- 您可以在下方微調語言與語系設定 ++ ++ You can fine-tune language and locale settings below ++ @label ++ 您可以在下方微調語言與語系設定 + +- +- ++ ++ + Offline-qt6 + +- +- Select your preferred region, or use the default settings +- @label +- 選取您偏好的區域,或是使用預設設定 ++ ++ Select your preferred region, or use the default settings ++ @label ++ 選取您偏好的區域,或是使用預設設定 + + +- +- +- +- Timezone: %1 +- @label +- 時區:%1 ++ ++ ++ ++ Timezone: %1 ++ @label ++ 時區:%1 + + +- +- Select your preferred zone within your region +- @label +- 在您的區域中選取您偏好的時區 ++ ++ Select your preferred zone within your region ++ @label ++ 在您的區域中選取您偏好的時區 + + +- +- Zones +- @button +- 時區 ++ ++ Zones ++ @button ++ 時區 + + +- +- You can fine-tune language and locale settings below +- @label +- 您可以在下方微調語言與語系設定 ++ ++ You can fine-tune language and locale settings below ++ @label ++ 您可以在下方微調語言與語系設定 + +- +- ++ ++ + PWQ + +- +- Password is too short +- 密碼太短 ++ ++ Password is too short ++ 密碼太短 + + +- +- Password is too long +- 密碼太長 ++ ++ Password is too long ++ 密碼太長 + + +- +- Password is too weak +- 密碼太弱 ++ ++ Password is too weak ++ 密碼太弱 + + +- +- Memory allocation error when setting '%1' +- 當設定「%1」時記憶體分配錯誤 ++ ++ Memory allocation error when setting '%1' ++ 當設定「%1」時記憶體分配錯誤 + + +- +- Memory allocation error +- 記憶體分配錯誤 ++ ++ Memory allocation error ++ 記憶體分配錯誤 + + +- +- The password is the same as the old one +- 密碼與舊的相同 ++ ++ The password is the same as the old one ++ 密碼與舊的相同 + + +- +- The password is a palindrome +- 此密碼為迴文 ++ ++ The password is a palindrome ++ 此密碼為迴文 + + +- +- The password differs with case changes only +- 密碼僅大小寫不同 ++ ++ The password differs with case changes only ++ 密碼僅大小寫不同 + + +- +- The password is too similar to the old one +- 密碼與舊的太過相似 ++ ++ The password is too similar to the old one ++ 密碼與舊的太過相似 + + +- +- The password contains the user name in some form +- 密碼包含某種形式的使用者名稱 ++ ++ The password contains the user name in some form ++ 密碼包含某種形式的使用者名稱 + + +- +- The password contains words from the real name of the user in some form +- 密碼包含了某種形式的使用者真實姓名 ++ ++ The password contains words from the real name of the user in some form ++ 密碼包含了某種形式的使用者真實姓名 + + +- +- The password contains forbidden words in some form +- 密碼包含了某種形式的無效文字 ++ ++ The password contains forbidden words in some form ++ 密碼包含了某種形式的無效文字 + + +- +- The password contains fewer than %n digits +- +- 密碼中僅有少於 %n 位數字 +- ++ ++ The password contains fewer than %n digits ++ ++ 密碼中僅有少於 %n 位數字 ++ + + +- +- The password contains too few digits +- 密碼包含的數字太少了 ++ ++ The password contains too few digits ++ 密碼包含的數字太少了 + + +- +- The password contains fewer than %n uppercase letters +- +- 密碼中僅有少於 %n 個大寫字母 +- ++ ++ The password contains fewer than %n uppercase letters ++ ++ 密碼中僅有少於 %n 個大寫字母 ++ + + +- +- The password contains too few uppercase letters +- 密碼包含的大寫字母太少了 ++ ++ The password contains too few uppercase letters ++ 密碼包含的大寫字母太少了 + + +- +- The password contains fewer than %n lowercase letters +- +- 密碼中僅有少於 %n 個小寫字母 +- ++ ++ The password contains fewer than %n lowercase letters ++ ++ 密碼中僅有少於 %n 個小寫字母 ++ + + +- +- The password contains too few lowercase letters +- 密碼包含的小寫字母太少了 ++ ++ The password contains too few lowercase letters ++ 密碼包含的小寫字母太少了 + + +- +- The password contains fewer than %n non-alphanumeric characters +- +- 密碼中僅有少於 %n 個非字母字元 +- ++ ++ The password contains fewer than %n non-alphanumeric characters ++ ++ 密碼中僅有少於 %n 個非字母字元 ++ + + +- +- The password contains too few non-alphanumeric characters +- 密碼包含的非字母與數字的字元太少了 ++ ++ The password contains too few non-alphanumeric characters ++ 密碼包含的非字母與數字的字元太少了 + + +- +- The password is shorter than %n characters +- +- 密碼短於 %n 個字元 +- ++ ++ The password is shorter than %n characters ++ ++ 密碼短於 %n 個字元 ++ + + +- +- The password is too short +- 密碼太短 ++ ++ The password is too short ++ 密碼太短 + + +- +- The password is a rotated version of the previous one +- 密碼是上一個密碼的輪換版本 ++ ++ The password is a rotated version of the previous one ++ 密碼是上一個密碼的輪換版本 + + +- +- The password contains fewer than %n character classes +- +- 密碼中僅有少於 %n 種字元類型 +- ++ ++ The password contains fewer than %n character classes ++ ++ 密碼中僅有少於 %n 種字元類型 ++ + + +- +- The password does not contain enough character classes +- 密碼未包含足夠的字元類型 ++ ++ The password does not contain enough character classes ++ 密碼未包含足夠的字元類型 + + +- +- The password contains more than %n same characters consecutively +- +- 密碼中包含了 %n 個連續的相同字元 +- ++ ++ The password contains more than %n same characters consecutively ++ ++ 密碼中包含了 %n 個連續的相同字元 ++ + + +- +- The password contains too many same characters consecutively +- 密碼包含連續太多個相同的字元 ++ ++ The password contains too many same characters consecutively ++ 密碼包含連續太多個相同的字元 + + +- +- The password contains more than %n characters of the same class consecutively +- +- 密碼中包含了 %n 個連續的相同類型字元 +- ++ ++ The password contains more than %n characters of the same class consecutively ++ ++ 密碼中包含了 %n 個連續的相同類型字元 ++ + + +- +- The password contains too many characters of the same class consecutively +- 密碼包含了連續太多相同類型的字元 ++ ++ The password contains too many characters of the same class consecutively ++ 密碼包含了連續太多相同類型的字元 + + +- +- The password contains monotonic sequence longer than %n characters +- +- 密碼包含了長度超過 %n 個字元的單調序列 +- ++ ++ The password contains monotonic sequence longer than %n characters ++ ++ 密碼包含了長度超過 %n 個字元的單調序列 ++ + + +- +- The password contains too long of a monotonic character sequence +- 密碼包含了長度過長的單調字元序列 ++ ++ The password contains too long of a monotonic character sequence ++ 密碼包含了長度過長的單調字元序列 + + +- +- No password supplied +- 未提供密碼 ++ ++ No password supplied ++ 未提供密碼 + + +- +- Cannot obtain random numbers from the RNG device +- 無法從 RNG 裝置中取得隨機數 ++ ++ Cannot obtain random numbers from the RNG device ++ 無法從 RNG 裝置中取得隨機數 + + +- +- Password generation failed - required entropy too low for settings +- 密碼生成失敗,設定的必要熵太低 ++ ++ Password generation failed - required entropy too low for settings ++ 密碼生成失敗,設定的必要熵太低 + + +- +- The password fails the dictionary check - %1 +- 密碼在字典檢查時失敗 - %1 ++ ++ The password fails the dictionary check - %1 ++ 密碼在字典檢查時失敗 - %1 + + +- +- The password fails the dictionary check +- 密碼在字典檢查時失敗 ++ ++ The password fails the dictionary check ++ 密碼在字典檢查時失敗 + + +- +- Unknown setting - %1 +- 未知的設定 - %1 ++ ++ Unknown setting - %1 ++ 未知的設定 - %1 + + +- +- Unknown setting +- 未知的設定 ++ ++ Unknown setting ++ 未知的設定 + + +- +- Bad integer value of setting - %1 +- 整數值設定不正確 - %1 ++ ++ Bad integer value of setting - %1 ++ 整數值設定不正確 - %1 + + +- +- Bad integer value +- 整數值不正確 ++ ++ Bad integer value ++ 整數值不正確 + + +- +- Setting %1 is not of integer type +- 設定 %1 不是整數類型 ++ ++ Setting %1 is not of integer type ++ 設定 %1 不是整數類型 + + +- +- Setting is not of integer type +- 設定不是整數類型 ++ ++ Setting is not of integer type ++ 設定不是整數類型 + + +- +- Setting %1 is not of string type +- 設定 %1 不是字串類型 ++ ++ Setting %1 is not of string type ++ 設定 %1 不是字串類型 + + +- +- Setting is not of string type +- 設定不是字串類型 ++ ++ Setting is not of string type ++ 設定不是字串類型 + + +- +- Opening the configuration file failed +- 開啟設定檔失敗 ++ ++ Opening the configuration file failed ++ 開啟設定檔失敗 + + +- +- The configuration file is malformed +- 設定檔格式不正確 ++ ++ The configuration file is malformed ++ 設定檔格式不正確 + + +- +- Fatal failure +- 無法挽回的失敗 ++ ++ Fatal failure ++ 無法挽回的失敗 + + +- +- Unknown error +- 未知的錯誤 ++ ++ Unknown error ++ 未知的錯誤 + +- +- ++ ++ + PackageChooserPage + +- +- Product Name +- 產品名稱 ++ ++ Product Name ++ 產品名稱 + + +- +- TextLabel +- 文字標籤 ++ ++ TextLabel ++ 文字標籤 + + +- +- Long Product Description +- 較長的產品描述 ++ ++ Long Product Description ++ 較長的產品描述 + + +- +- Package Selection +- 軟體包選擇 ++ ++ Package Selection ++ 軟體包選擇 + + +- +- Please pick a product from the list. The selected product will be installed. +- 請從清單中挑選產品。將會安裝選定的產品。 ++ ++ Please pick a product from the list. The selected product will be installed. ++ 請從清單中挑選產品。將會安裝選定的產品。 + +- +- ++ ++ + PackageModel + +- +- Name +- 名稱 ++ ++ Name ++ 名稱 + + +- +- Description +- 描述 ++ ++ Description ++ 描述 + +- +- ++ ++ + Page_Keyboard + +- +- Keyboard model: +- 鍵盤型號: ++ ++ Keyboard model: ++ 鍵盤型號: + + +- +- Type here to test your keyboard +- 在此輸入以測試您的鍵盤 ++ ++ Type here to test your keyboard ++ 在此輸入以測試您的鍵盤 + + +- +- Switch Keyboard: +- shortcut for switching between keyboard layouts +- 切換鍵盤: ++ ++ Switch Keyboard: ++ shortcut for switching between keyboard layouts ++ 切換鍵盤: + +- +- ++ ++ + Page_UserSetup + +- +- What is your name? +- 該如何稱呼您? ++ ++ What is your name? ++ 該如何稱呼您? ++ ++ ++ ++ ++ Your Full Name ++ 您的全名 ++ ++ ++ ++ What name do you want to use to log in? ++ 您想使用何種登入名稱? ++ ++ ++ ++ ++ login ++ 登入 ++ ++ ++ ++ What is the name of this computer? ++ 這部電腦的名字是? ++ ++ ++ ++ ++ <small>This name will be used if you make the computer visible to others on a network.</small> ++ <small>若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。</small> ++ ++ ++ ++ ++ Computer Name ++ 電腦名稱 + + +- +- Your Full Name +- 您的全名 ++ ++ ++ Choose a password to keep your account safe. ++ 輸入密碼以確保帳號的安全性。 + + +- +- What name do you want to use to log in? +- 您想使用何種登入名稱? ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ <small>輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。</small> + + +- +- login +- 登入 ++ ++ ++ ++ ++ Password ++ 密碼 + + +- +- What is the name of this computer? +- 這部電腦的名字是? ++ ++ ++ ++ ++ Repeat Password ++ 確認密碼 + + +- +- <small>This name will be used if you make the computer visible to others on a network.</small> +- <small>若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。</small> ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 + + +- +- Computer Name +- 電腦名稱 ++ ++ ++ Require strong passwords. ++ 需要強密碼。 + + +- +- Choose a password to keep your account safe. +- 輸入密碼以確保帳號的安全性。 ++ ++ ++ Log in automatically without asking for the password. ++ 不詢問密碼自動登入。 + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> +- <small>輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。</small> ++ ++ Use the same password for the administrator account. ++ 為管理員帳號使用同樣的密碼。 + + +- +- +- Password +- 密碼 ++ ++ ++ Use Active Directory ++ + + +- +- +- Repeat Password +- 確認密碼 ++ ++ ++ Domain: ++ + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 ++ ++ ++ Domain Administrator: ++ + + +- +- Require strong passwords. +- 需要強密碼。 ++ ++ ++ Password: ++ + + +- +- Log in automatically without asking for the password. +- 不詢問密碼自動登入。 ++ ++ ++ IP Address (optional): ++ + + +- +- Use the same password for the administrator account. +- 為管理員帳號使用同樣的密碼。 ++ ++ your name ++ 姓名 + + +- +- Choose a password for the administrator account. +- 替系統管理員帳號設定一組密碼 ++ ++ user name ++ 使用者名稱 + + +- +- +- <small>Enter the same password twice, so that it can be checked for typing errors.</small> +- <small>輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。</small> ++ ++ computer name ++ 計算機名稱 + +- +- ++ ++ ++ Use the same password for the root account. ++ 為管理員帳號使用同樣的密碼。 ++ ++ ++ ++ ++ Choose a password for the administrator account. ++ 替系統管理員帳號設定一組密碼 ++ ++ ++ ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ <small>輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。</small> ++ ++ ++ + PartitionLabelsView + +- +- Root +- 根目錄 ++ ++ Root ++ 根目錄 + + +- +- Home +- @label +- 家目錄 ++ ++ Home ++ @label ++ 家目錄 + + +- +- Boot +- @label +- Boot ++ ++ Boot ++ @label ++ Boot + + +- +- EFI system +- @label +- EFI 系統 ++ ++ EFI system ++ @label ++ EFI 系統 + + +- +- Swap +- @label +- Swap ++ ++ Swap ++ @label ++ Swap + + +- +- New partition for %1 +- @label +- %1 的新分割區 ++ ++ New partition for %1 ++ @label ++ %1 的新分割區 + + +- +- New partition +- @label +- 新分割區 ++ ++ New partition ++ @label ++ 新分割區 + + +- +- %1 %2 +- size[number] filesystem[name] +- %1 %2 ++ ++ %1 %2 ++ size[number] filesystem[name] ++ %1 %2 + +- +- ++ ++ + PartitionModel + +- +- +- Free Space +- @title +- 剩餘空間 ++ ++ ++ Free Space ++ @title ++ 剩餘空間 + + +- +- +- New Partition +- @title +- 新分割區 ++ ++ ++ New Partition ++ @title ++ 新分割區 + + +- +- Name +- @title +- 名稱 ++ ++ Name ++ @title ++ 名稱 + + +- +- File System +- @title +- 檔案系統 ++ ++ File System ++ @title ++ 檔案系統 + + +- +- File System Label +- @title +- 檔案系統標籤 ++ ++ File System Label ++ @title ++ 檔案系統標籤 + + +- +- Mount Point +- @title +- 掛載點 ++ ++ Mount Point ++ @title ++ 掛載點 + + +- +- Size +- @title +- 大小 ++ ++ Size ++ @title ++ 大小 + +- +- ++ ++ + PartitionPage + +- +- Storage de&vice: +- 儲存裝置(&V): ++ ++ Storage de&vice: ++ 儲存裝置(&V): + + +- +- &Revert All Changes +- 將所有變更恢復原狀 (&R) ++ ++ &Revert All Changes ++ 將所有變更恢復原狀 (&R) + + +- +- New Partition &Table +- 新的分割表格 (&T) ++ ++ New Partition &Table ++ 新的分割表格 (&T) + + +- +- Cre&ate +- 建立(&A) ++ ++ Cre&ate ++ 建立(&A) + + +- +- &Edit +- 編輯 (&E) ++ ++ &Edit ++ 編輯 (&E) + + +- +- &Delete +- 刪除 (&D) ++ ++ &Delete ++ 刪除 (&D) + + +- +- New Volume Group +- 新卷冊群組 ++ ++ New Volume Group ++ 新卷冊群組 + + +- +- Resize Volume Group +- 調整卷冊群組大小 ++ ++ Resize Volume Group ++ 調整卷冊群組大小 + + +- +- Deactivate Volume Group +- 停用卷冊群組 ++ ++ Deactivate Volume Group ++ 停用卷冊群組 + + +- +- Remove Volume Group +- 移除卷冊群組 ++ ++ Remove Volume Group ++ 移除卷冊群組 + + +- +- I&nstall boot loader on: +- 安裝開機管理程式於: ++ ++ I&nstall boot loader on: ++ 安裝開機管理程式於: + + +- +- Are you sure you want to create a new partition table on %1? +- 您是否確定要在 %1 上建立一個新的分割區表格? ++ ++ Are you sure you want to create a new partition table on %1? ++ 您是否確定要在 %1 上建立一個新的分割區表格? + + +- +- Can not create new partition +- 無法建立新分割區 ++ ++ Can not create new partition ++ 無法建立新分割區 + + +- +- The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. +- 在 %1 上的分割表已有 %2 個主要分割區,無法再新增。請移除一個主要分割區並新增一個延伸分割區。 ++ ++ The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. ++ 在 %1 上的分割表已有 %2 個主要分割區,無法再新增。請移除一個主要分割區並新增一個延伸分割區。 + +- +- ++ ++ + PartitionViewStep + +- +- Gathering system information… +- @status +- 正在蒐集系統資訊…… ++ ++ Gathering system information… ++ @status ++ 正在蒐集系統資訊…… + + +- +- Partitions +- @label +- 分割區 ++ ++ Partitions ++ @label ++ 分割區 + + +- +- Install %1 <strong>alongside</strong> another operating system +- @label +- 將 %1 安裝在其他作業系統<strong>旁邊</strong> ++ ++ Install %1 <strong>alongside</strong> another operating system ++ @label ++ 將 %1 安裝在其他作業系統<strong>旁邊</strong> + + +- +- <strong>Erase</strong> disk and install %1 +- @label +- <strong>抹除</strong>磁碟並安裝 %1 ++ ++ <strong>Erase</strong> disk and install %1 ++ @label ++ <strong>抹除</strong>磁碟並安裝 %1 + + +- +- <strong>Replace</strong> a partition with %1 +- @label +- 以 %1 <strong>取代</strong>一個分割區 ++ ++ <strong>Replace</strong> a partition with %1 ++ @label ++ 以 %1 <strong>取代</strong>一個分割區 + + +- +- <strong>Manual</strong> partitioning +- @label +- <strong>手動</strong>分割 ++ ++ <strong>Manual</strong> partitioning ++ @label ++ <strong>手動</strong>分割 + + +- +- Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) +- @info +- 將 %1 安裝在磁碟 <strong>%2</strong> (%3) 上的另一個作業系統<strong>旁邊</strong> ++ ++ Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) ++ @info ++ 將 %1 安裝在磁碟 <strong>%2</strong> (%3) 上的另一個作業系統<strong>旁邊</strong> + + +- +- <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 +- @info +- <strong>抹除</strong> 磁碟 <strong>%2</strong> (%3) 並且安裝 %1 ++ ++ <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 ++ @info ++ <strong>抹除</strong> 磁碟 <strong>%2</strong> (%3) 並且安裝 %1 + + +- +- <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 +- @info +- 以 %1 <strong>取代</strong> 一個在磁碟 <strong>%2</strong> (%3) 上的分割區 ++ ++ <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 ++ @info ++ 以 %1 <strong>取代</strong> 一個在磁碟 <strong>%2</strong> (%3) 上的分割區 + + +- +- <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) +- @info +- 在磁碟 <strong>%1</strong> (%2) 上<strong>手動</strong>分割 ++ ++ <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) ++ @info ++ 在磁碟 <strong>%1</strong> (%2) 上<strong>手動</strong>分割 + + +- +- Disk <strong>%1</strong> (%2) +- @info +- 磁碟 <strong>%1</strong> (%2) ++ ++ Disk <strong>%1</strong> (%2) ++ @info ++ 磁碟 <strong>%1</strong> (%2) + + +- +- Unsafe partition actions are enabled. +- 啟用了不安全的分割動作。 ++ ++ Unsafe partition actions are enabled. ++ 啟用了不安全的分割動作。 + + +- +- Partitioning is configured to <b>always</b> fail. +- 分割被設定為<b>一律</b>失敗。 ++ ++ Partitioning is configured to <b>always</b> fail. ++ 分割被設定為<b>一律</b>失敗。 + + +- +- No partitions will be changed. +- 不會更動任何分割區。 ++ ++ No partitions will be changed. ++ 不會更動任何分割區。 + + +- +- Current: +- @label +- 目前: ++ ++ Current: ++ @label ++ 目前: + + +- +- After: +- @label +- 之後: ++ ++ After: ++ @label ++ 之後: + + +- +- An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. +- 要啟動 %1 必須要有 EFI 系統分割區。<br/><br/>要設定 EFI 系統分割區,返回並選取或建立適合的檔案系統。 ++ ++ An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. ++ 要啟動 %1 必須要有 EFI 系統分割區。<br/><br/>要設定 EFI 系統分割區,返回並選取或建立適合的檔案系統。 + + +- +- An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. +- 要啟動 %1 必須要有 EFI 系統分割區。<br/><br/>EFI 系統分割區不符合建議。建議回到上一步並選擇或建立適合的檔案系統。 ++ ++ An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. ++ 要啟動 %1 必須要有 EFI 系統分割區。<br/><br/>EFI 系統分割區不符合建議。建議回到上一步並選擇或建立適合的檔案系統。 + + +- +- The filesystem must be mounted on <strong>%1</strong>. +- 檔案系統必須掛載於 <strong>%1</strong>。 ++ ++ The filesystem must be mounted on <strong>%1</strong>. ++ 檔案系統必須掛載於 <strong>%1</strong>。 + + +- +- The filesystem must have type FAT32. +- 檔案系統必須有類型 FAT32。 ++ ++ The filesystem must have type FAT32. ++ 檔案系統必須有類型 FAT32。 + + +- +- The filesystem must have flag <strong>%1</strong> set. +- 檔案系統必須有旗標 <strong>%1</strong> 設定。 ++ ++ The filesystem must have flag <strong>%1</strong> set. ++ 檔案系統必須有旗標 <strong>%1</strong> 設定。 + + +- +- +- The filesystem must be at least %1 MiB in size. +- 檔案系統必須至少有 %1 MiB 的大小。 ++ ++ ++ The filesystem must be at least %1 MiB in size. ++ 檔案系統必須至少有 %1 MiB 的大小。 + + +- +- The minimum recommended size for the filesystem is %1 MiB. +- 建議的檔案系統最小大小為 %1 MiB。 ++ ++ The minimum recommended size for the filesystem is %1 MiB. ++ 建議的檔案系統最小大小為 %1 MiB。 + + +- +- You can continue without setting up an EFI system partition but your system may fail to start. +- 您可以在不設定 EFI 系統分割區的情況下繼續,但您的系統可能無法啟動。 ++ ++ You can continue without setting up an EFI system partition but your system may fail to start. ++ 您可以在不設定 EFI 系統分割區的情況下繼續,但您的系統可能無法啟動。 + + +- +- You can continue with this EFI system partition configuration but your system may fail to start. +- 您可以繼續此 EFI 系統分割區組態,但您的系統可能無法啟動。 ++ ++ You can continue with this EFI system partition configuration but your system may fail to start. ++ 您可以繼續此 EFI 系統分割區組態,但您的系統可能無法啟動。 + + +- +- No EFI system partition configured +- 未設定 EFI 系統分割區 ++ ++ No EFI system partition configured ++ 未設定 EFI 系統分割區 + + +- +- EFI system partition configured incorrectly +- EFI 系統分割區設定不正確 ++ ++ EFI system partition configured incorrectly ++ EFI 系統分割區設定不正確 + + +- +- EFI system partition recommendation +- EFI 系統分割區建議 ++ ++ EFI system partition recommendation ++ EFI 系統分割區建議 + + +- +- Option to use GPT on BIOS +- 在 BIOS 上使用 GPT 的選項 ++ ++ Option to use GPT on BIOS ++ 在 BIOS 上使用 GPT 的選項 + + +- +- A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. +- GPT 分割表對所有系統都是最佳選項。此安裝程式同時也支援 BIOS 系統。<br/><br/>要在 BIOS 上設定 GPT 分割表,(如果還沒有完成的話)請回上一步並將分割表設定為 GPT,然後建立 8 MB 的未格式化分割區,並啟用 <strong>%2</strong> 旗標。<br/><br/>要在 BIOS 系統上使用 GPT 分割區啟動 %1 則必須使用未格式化的 8MB 分割區。 ++ ++ A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. ++ GPT 分割表對所有系統都是最佳選項。此安裝程式同時也支援 BIOS 系統。<br/><br/>要在 BIOS 上設定 GPT 分割表,(如果還沒有完成的話)請回上一步並將分割表設定為 GPT,然後建立 8 MB 的未格式化分割區,並啟用 <strong>%2</strong> 旗標。<br/><br/>要在 BIOS 系統上使用 GPT 分割區啟動 %1 則必須使用未格式化的 8MB 分割區。 + + +- +- Boot partition not encrypted +- 開機分割區未加密 ++ ++ Boot partition not encrypted ++ 開機分割區未加密 + + +- +- A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. +- 設定了單獨的開機分割區以及加密的根分割區,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全問題,因為重要的系統檔案是放在未加密的分割區中。<br/>您也可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,並在分割區建立視窗選取<strong>加密</strong>。 ++ ++ A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ++ 設定了單獨的開機分割區以及加密的根分割區,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全問題,因為重要的系統檔案是放在未加密的分割區中。<br/>您也可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,並在分割區建立視窗選取<strong>加密</strong>。 + + +- +- has at least one disk device available. +- 有至少一個可用的磁碟裝置。 ++ ++ has at least one disk device available. ++ 有至少一個可用的磁碟裝置。 + + +- +- There are no partitions to install on. +- 沒有可用於安裝的分割區。 ++ ++ There are no partitions to install on. ++ 沒有可用於安裝的分割區。 + +- +- ++ ++ + PlasmaLnfJob + +- +- Applying Plasma Look-and-Feel… +- @status +- 正在套用 Plasma 外觀與感覺…… ++ ++ Applying Plasma Look-and-Feel… ++ @status ++ 正在套用 Plasma 外觀與感覺…… + + +- +- +- Could not select KDE Plasma Look-and-Feel package +- 無法選取 KDE Plasma 外觀與感覺軟體包 ++ ++ ++ Could not select KDE Plasma Look-and-Feel package ++ 無法選取 KDE Plasma 外觀與感覺軟體包 + +- +- ++ ++ + PlasmaLnfPage + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- 請為 KDE Plasma 桌面選擇外觀與感覺。您也可以跳過此步驟並在系統設定好之後再設定。在外觀與感覺小節點按將會給您特定外觀與感覺的即時預覽。 ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ 請為 KDE Plasma 桌面選擇外觀與感覺。您也可以跳過此步驟並在系統設定好之後再設定。在外觀與感覺小節點按將會給您特定外觀與感覺的即時預覽。 + + +- +- Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. +- 請為 KDE Plasma 桌面選擇外觀與感覺。您也可以跳過此步驟並在系統安裝好之後再設定。在外觀與感覺小節點按將會給您特定外觀與感覺的即時預覽。 ++ ++ Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. ++ 請為 KDE Plasma 桌面選擇外觀與感覺。您也可以跳過此步驟並在系統安裝好之後再設定。在外觀與感覺小節點按將會給您特定外觀與感覺的即時預覽。 + +- +- ++ ++ + PlasmaLnfViewStep + +- +- Look-and-Feel +- @label +- 外觀與感覺 ++ ++ Look-and-Feel ++ @label ++ 外觀與感覺 + +- +- ++ ++ ++ PowerManagementInterface ++ ++ ++ Calamares ++ ++ ++ ++ ++ Installation in progress ++ @status ++ ++ ++ ++ + PreserveFiles + +- +- Saving files for later… +- @status +- 儲存檔案以供日後使用…… ++ ++ Saving files for later… ++ @status ++ 儲存檔案以供日後使用…… + + +- +- No files configured to save for later. +- 沒有檔案被設定為稍後儲存。 ++ ++ No files configured to save for later. ++ 沒有檔案被設定為稍後儲存。 + + +- +- Not all of the configured files could be preserved. +- 並非所有已設定的檔案都可以被保留。 ++ ++ Not all of the configured files could be preserved. ++ 並非所有已設定的檔案都可以被保留。 + +- +- ++ ++ + ProcessResult + +- +- ++ ++ + There was no output from the command. +- ++ + 指令沒有輸出。 + + +- +- ++ ++ + Output: + +- ++ + 輸出: + + + +- +- External command crashed. +- 外部指令當機。 ++ ++ External command crashed. ++ 外部指令當機。 + + +- +- Command <i>%1</i> crashed. +- 指令 <i>%1</i> 已當機。 ++ ++ Command <i>%1</i> crashed. ++ 指令 <i>%1</i> 已當機。 + + +- +- External command failed to start. +- 外部指令啟動失敗。 ++ ++ External command failed to start. ++ 外部指令啟動失敗。 + + +- +- Command <i>%1</i> failed to start. +- 指令 <i>%1</i> 啟動失敗。 ++ ++ Command <i>%1</i> failed to start. ++ 指令 <i>%1</i> 啟動失敗。 + + +- +- Internal error when starting command. +- 當啟動指令時發生內部錯誤。 ++ ++ Internal error when starting command. ++ 當啟動指令時發生內部錯誤。 + + +- +- Bad parameters for process job call. +- 呼叫程序的參數無效。 ++ ++ Bad parameters for process job call. ++ 呼叫程序的參數無效。 + + +- +- External command failed to finish. +- 外部指令結束失敗。 ++ ++ External command failed to finish. ++ 外部指令結束失敗。 + + +- +- Command <i>%1</i> failed to finish in %2 seconds. +- 指令 <i>%1</i> 在結束 %2 秒內失敗。 ++ ++ Command <i>%1</i> failed to finish in %2 seconds. ++ 指令 <i>%1</i> 在結束 %2 秒內失敗。 + + +- +- External command finished with errors. +- 外部指令結束時發生錯誤。 ++ ++ External command finished with errors. ++ 外部指令結束時發生錯誤。 + + +- +- Command <i>%1</i> finished with exit code %2. +- 指令 <i>%1</i> 結束時有錯誤碼 %2。 ++ ++ Command <i>%1</i> finished with exit code %2. ++ 指令 <i>%1</i> 結束時有錯誤碼 %2。 + +- +- ++ ++ + QObject + +- +- %1 (%2) +- %1 (%2) ++ ++ %1 (%2) ++ %1 (%2) + + +- +- unknown +- @partition info +- 未知 ++ ++ unknown ++ @partition info ++ 未知 + + +- +- extended +- @partition info +- 延伸分割區 ++ ++ extended ++ @partition info ++ 延伸分割區 + + +- +- unformatted +- @partition info +- 未格式化 ++ ++ unformatted ++ @partition info ++ 未格式化 + + +- +- swap +- @partition info +- swap ++ ++ swap ++ @partition info ++ swap + + +- +- +- Default +- 預設值 ++ ++ ++ Default ++ 預設值 + + +- +- Directory not found +- 找不到目錄 ++ ++ Directory not found ++ 找不到目錄 + + +- +- Could not create new random file <pre>%1</pre>. +- 無法建立新的隨機檔案 <pre>%1</pre>。 ++ ++ Could not create new random file <pre>%1</pre>. ++ 無法建立新的隨機檔案 <pre>%1</pre>。 + + +- +- No product +- 沒有產品 ++ ++ No product ++ 沒有產品 + + +- +- No description provided. +- 未提供描述。 ++ ++ No description provided. ++ 未提供描述。 + + +- +- (no mount point) +- (沒有掛載點) ++ ++ (no mount point) ++ (沒有掛載點) + + +- +- Unpartitioned space or unknown partition table +- @info +- 尚未分割的空間或是不明的分割表 ++ ++ Unpartitioned space or unknown partition table ++ @info ++ 尚未分割的空間或是不明的分割表 + +- +- ++ ++ + Recommended + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- <p>此電腦未滿足部份安裝 %1 的建議系統需求。<br/> ++ <p>此電腦未滿足部份安裝 %1 的建議系統需求。<br/> + 可以繼續安裝,但某些功能可能會被停用。</p> + +- +- ++ ++ + RemoveUserJob + +- +- Removing live user from the target system… +- @status +- 正在從目標系統移除 live 使用者…… ++ ++ Removing live user from the target system… ++ @status ++ 正在從目標系統移除 live 使用者…… + +- +- ++ ++ + RemoveVolumeGroupJob + +- +- +- Removing Volume Group named %1… +- @status +- 正在移除名為 %1 的卷冊群組…… ++ ++ ++ Removing Volume Group named %1… ++ @status ++ 正在移除名為 %1 的卷冊群組…… + + +- +- Removing Volume Group named <strong>%1</strong>… +- @status +- 正在移除名為 <strong>%1</strong> 的卷冊群組…… ++ ++ Removing Volume Group named <strong>%1</strong>… ++ @status ++ 正在移除名為 <strong>%1</strong> 的卷冊群組…… + + +- +- The installer failed to remove a volume group named '%1'. +- 安裝程式移除名為「%1」的新卷冊群組失敗。 ++ ++ The installer failed to remove a volume group named '%1'. ++ 安裝程式移除名為「%1」的新卷冊群組失敗。 + +- +- ++ ++ + Requirements + +- +- <p>This computer does not satisfy the minimum requirements for installing %1.<br/> ++ ++ <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> +- <p>此電腦未滿足安裝 %1 的最低系統需求。<br/> ++ <p>此電腦未滿足安裝 %1 的最低系統需求。<br/> + 無法繼˙續安裝。</p> + + +- +- <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> ++ ++ <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> +- <p>此電腦未滿足部份安裝 %1 的建議系統需求。<br/> ++ <p>此電腦未滿足部份安裝 %1 的建議系統需求。<br/> + 可以繼續安裝,但某些功能可能會被停用。</p> + +- +- ++ ++ + ResizeFSJob + +- +- Performing file system resize… +- @status +- 正在調整檔案系統大小…… ++ ++ Performing file system resize… ++ @status ++ 正在調整檔案系統大小…… + + +- +- Invalid configuration +- @error +- 無效的設定 ++ ++ Invalid configuration ++ @error ++ 無效的設定 + + +- +- The file-system resize job has an invalid configuration and will not run. +- @error +- 檔案系統調整大小工作有無效的設定且將不會執行。 ++ ++ The file-system resize job has an invalid configuration and will not run. ++ @error ++ 檔案系統調整大小工作有無效的設定且將不會執行。 + + +- +- KPMCore not available +- @error +- KPMCore 未提供 ++ ++ KPMCore not available ++ @error ++ KPMCore 未提供 + + +- +- Calamares cannot start KPMCore for the file system resize job. +- @error +- Calamares 無法啟動 KPMCore 來進行調整檔案系統大小的工作。 ++ ++ Calamares cannot start KPMCore for the file system resize job. ++ @error ++ Calamares 無法啟動 KPMCore 來進行調整檔案系統大小的工作。 + + +- +- Resize failed. +- @error +- 調整大小失敗。 ++ ++ Resize failed. ++ @error ++ 調整大小失敗。 + + +- +- The filesystem %1 could not be found in this system, and cannot be resized. +- @info +- 檔案系統 %1 在此系統中找不到,且無法調整大小。 ++ ++ The filesystem %1 could not be found in this system, and cannot be resized. ++ @info ++ 檔案系統 %1 在此系統中找不到,且無法調整大小。 + + +- +- The device %1 could not be found in this system, and cannot be resized. +- @info +- 裝置 %1 在此系統中找不到,且無法調整大小。 ++ ++ The device %1 could not be found in this system, and cannot be resized. ++ @info ++ 裝置 %1 在此系統中找不到,且無法調整大小。 + + +- +- +- +- +- Resize Failed +- @error +- 調整大小失敗 ++ ++ ++ ++ ++ Resize Failed ++ @error ++ 調整大小失敗 + + +- +- +- The filesystem %1 cannot be resized. +- @error +- 檔案系統 %1 無法調整大小。 ++ ++ ++ The filesystem %1 cannot be resized. ++ @error ++ 檔案系統 %1 無法調整大小。 + + +- +- +- The device %1 cannot be resized. +- @error +- 裝置 %1 無法調整大小。 ++ ++ ++ The device %1 cannot be resized. ++ @error ++ 裝置 %1 無法調整大小。 + + +- +- The file system %1 must be resized, but cannot. +- @info +- 檔案系統 %1 必須調整大小,但是無法調整。 ++ ++ The file system %1 must be resized, but cannot. ++ @info ++ 檔案系統 %1 必須調整大小,但是無法調整。 + + +- +- The device %1 must be resized, but cannot +- @info +- 裝置 %1 必須調整大小,但是無法調整。 ++ ++ The device %1 must be resized, but cannot ++ @info ++ 裝置 %1 必須調整大小,但是無法調整。 + +- +- ++ ++ + ResizePartitionJob + +- +- Resize partition %1 +- @title +- 調整分割區 %1 大小 ++ ++ Resize partition %1 ++ @title ++ 調整分割區 %1 大小 + + +- +- Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> +- @info +- 調整 <strong>%2MiB</strong> 分割區 <strong>%1</strong> 大小為 <strong>%3MiB</strong> ++ ++ Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> ++ @info ++ 調整 <strong>%2MiB</strong> 分割區 <strong>%1</strong> 大小為 <strong>%3MiB</strong> + + +- +- Resizing %2MiB partition %1 to %3MiB… +- @status +- 正在調整 %2MiB 分割區 %1 大小為 %3MiB…… ++ ++ Resizing %2MiB partition %1 to %3MiB… ++ @status ++ 正在調整 %2MiB 分割區 %1 大小為 %3MiB…… + + +- +- The installer failed to resize partition %1 on disk '%2'. +- 安裝程式調整在磁碟 '%2' 上的分割區 %1 的大小失敗。 ++ ++ The installer failed to resize partition %1 on disk '%2'. ++ 安裝程式調整在磁碟 '%2' 上的分割區 %1 的大小失敗。 + +- +- ++ ++ + ResizeVolumeGroupDialog + +- +- Resize Volume Group +- @title +- 調整卷冊群組大小 ++ ++ Resize Volume Group ++ @title ++ 調整卷冊群組大小 + +- +- ++ ++ + ResizeVolumeGroupJob + +- +- Resize volume group named %1 from %2 to %3 +- @title +- 調整名為 %1 的卷冊群組從 %2 到 %3 ++ ++ Resize volume group named %1 from %2 to %3 ++ @title ++ 調整名為 %1 的卷冊群組從 %2 到 %3 + + +- +- Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> +- @info +- 調整名為 <strong>%1</strong> 的卷冊群組從 <strong>%2</strong> 到 <strong>%3</strong> ++ ++ Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> ++ @info ++ 調整名為 <strong>%1</strong> 的卷冊群組從 <strong>%2</strong> 到 <strong>%3</strong> + + +- +- Resizing volume group named %1 from %2 to %3… +- @status +- 正在調整名為 %1 的卷冊群組從 %2 到 %3…… ++ ++ Resizing volume group named %1 from %2 to %3… ++ @status ++ 正在調整名為 %1 的卷冊群組從 %2 到 %3…… + + +- +- The installer failed to resize a volume group named '%1'. +- 安裝程式對名為「%1」的新卷冊群組調整大小失敗。 ++ ++ The installer failed to resize a volume group named '%1'. ++ 安裝程式對名為「%1」的新卷冊群組調整大小失敗。 + +- +- ++ ++ + ResultsListWidget + +- +- Checking requirements again in a few seconds ... +- 幾秒鐘後再次檢查要求…… ++ ++ Checking requirements again in a few seconds ... ++ 幾秒鐘後再次檢查要求…… + +- +- ++ ++ + ScanningDialog + +- +- Scanning storage devices… +- @status +- 正在掃描儲存裝置…… ++ ++ Scanning storage devices… ++ @status ++ 正在掃描儲存裝置…… + + +- +- Partitioning… +- @status +- 正在進行分割…… ++ ++ Partitioning… ++ @status ++ 正在進行分割…… + +- +- ++ ++ + SetHostNameJob + +- +- Set hostname %1 +- 設定主機名 %1 ++ ++ Set hostname %1 ++ 設定主機名 %1 + + +- +- Set hostname <strong>%1</strong>. +- 設定主機名稱 <strong>%1</strong>。 ++ ++ Set hostname <strong>%1</strong>. ++ 設定主機名稱 <strong>%1</strong>。 + + +- +- Setting hostname %1… +- @status +- 正在設定主機名稱 %1…… ++ ++ Setting hostname %1… ++ @status ++ 正在設定主機名稱 %1…… + + +- +- +- Internal Error +- 內部錯誤 ++ ++ ++ Internal Error ++ 內部錯誤 + + +- +- +- Cannot write hostname to target system +- 無法寫入主機名稱到目標系統 ++ ++ ++ Cannot write hostname to target system ++ 無法寫入主機名稱到目標系統 + +- +- ++ ++ + SetKeyboardLayoutJob + +- +- Setting keyboard model to %1, layout as %2-%3… +- @status, %1 model, %2 layout, %3 variant +- 正在將鍵盤型號設定為 %1,鍵盤佈局為 %2-%3…… ++ ++ Setting keyboard model to %1, layout as %2-%3… ++ @status, %1 model, %2 layout, %3 variant ++ 正在將鍵盤型號設定為 %1,鍵盤佈局為 %2-%3…… + + +- +- Failed to write keyboard configuration for the virtual console. +- @error +- 為虛擬終端機寫入鍵盤設定失敗。 ++ ++ Failed to write keyboard configuration for the virtual console. ++ @error ++ 為虛擬終端機寫入鍵盤設定失敗。 + + +- +- Failed to write to %1 +- @error, %1 is virtual console configuration path +- 寫入到 %1 失敗 ++ ++ Failed to write to %1 ++ @error, %1 is virtual console configuration path ++ 寫入到 %1 失敗 + + +- +- Failed to write keyboard configuration for X11. +- @error +- 為 X11 寫入鍵盤設定失敗。 ++ ++ Failed to write keyboard configuration for X11. ++ @error ++ 為 X11 寫入鍵盤設定失敗。 + + +- +- Failed to write to %1 +- @error, %1 is keyboard configuration path +- 寫入到 %1 失敗 ++ ++ Failed to write to %1 ++ @error, %1 is keyboard configuration path ++ 寫入到 %1 失敗 + + +- +- Failed to write keyboard configuration to existing /etc/default directory. +- @error +- 寫入鍵盤設定到已存在的 /etc/default 目錄失敗。 ++ ++ Failed to write keyboard configuration to existing /etc/default directory. ++ @error ++ 寫入鍵盤設定到已存在的 /etc/default 目錄失敗。 + + +- +- Failed to write to %1 +- @error, %1 is default keyboard path +- 寫入到 %1 失敗 ++ ++ Failed to write to %1 ++ @error, %1 is default keyboard path ++ 寫入到 %1 失敗 + +- +- ++ ++ + SetPartFlagsJob + +- +- Set flags on partition %1 +- @title +- 設定分割區 %1 的旗標 ++ ++ Set flags on partition %1 ++ @title ++ 設定分割區 %1 的旗標 + + +- +- Set flags on %1MiB %2 partition +- @title +- 設定 %1MiB %2 分割區的旗標 ++ ++ Set flags on %1MiB %2 partition ++ @title ++ 設定 %1MiB %2 分割區的旗標 + + +- +- Set flags on new partition +- @title +- 設定新分割區的旗標 ++ ++ Set flags on new partition ++ @title ++ 設定新分割區的旗標 + + +- +- Clear flags on partition <strong>%1</strong> +- @info +- 清除分割區 <strong>%1</strong> 的旗標 ++ ++ Clear flags on partition <strong>%1</strong> ++ @info ++ 清除分割區 <strong>%1</strong> 的旗標 + + +- +- Clear flags on %1MiB <strong>%2</strong> partition +- @info +- 清除 %1MiB <strong>%2</strong> 分割區的旗標 ++ ++ Clear flags on %1MiB <strong>%2</strong> partition ++ @info ++ 清除 %1MiB <strong>%2</strong> 分割區的旗標 + + +- +- Clear flags on new partition +- @info +- 清除新分割區的旗標 ++ ++ Clear flags on new partition ++ @info ++ 清除新分割區的旗標 + + +- +- Set flags on partition <strong>%1</strong> to <strong>%2</strong> +- @info +- 設定分割區 <strong>%1</strong> 的旗標為 <strong>%2</strong> ++ ++ Set flags on partition <strong>%1</strong> to <strong>%2</strong> ++ @info ++ 設定分割區 <strong>%1</strong> 的旗標為 <strong>%2</strong> + + +- +- Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> +- @info +- 將 %1MiB <strong>%2</strong> 分割區標記為 <strong>%3</strong> ++ ++ Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> ++ @info ++ 將 %1MiB <strong>%2</strong> 分割區標記為 <strong>%3</strong> + + +- +- Set flags on new partition to <strong>%1</strong> +- @info +- 設定新分割區的旗標為 <strong>%1</strong> ++ ++ Set flags on new partition to <strong>%1</strong> ++ @info ++ 設定新分割區的旗標為 <strong>%1</strong> + + +- +- Clearing flags on partition <strong>%1</strong>… +- @status +- 正在清除分割區 <strong>%1</strong> 的旗標…… ++ ++ Clearing flags on partition <strong>%1</strong>… ++ @status ++ 正在清除分割區 <strong>%1</strong> 的旗標…… + + +- +- Clearing flags on %1MiB <strong>%2</strong> partition… +- @status +- 正在清除 %1MiB <strong>%2</strong> 分割區的旗標…… ++ ++ Clearing flags on %1MiB <strong>%2</strong> partition… ++ @status ++ 正在清除 %1MiB <strong>%2</strong> 分割區的旗標…… + + +- +- Clearing flags on new partition… +- @status +- 清除新分割區的旗標…… ++ ++ Clearing flags on new partition… ++ @status ++ 清除新分割區的旗標…… + + +- +- Setting flags <strong>%2</strong> on partition <strong>%1</strong>… +- @status +- 正在設定 <strong>%1</strong> 分割區的 <strong>%2</strong> 旗標…… ++ ++ Setting flags <strong>%2</strong> on partition <strong>%1</strong>… ++ @status ++ 正在設定 <strong>%1</strong> 分割區的 <strong>%2</strong> 旗標…… + + +- +- Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… +- @status +- 正在設定 %1MiB <strong>%2</strong> 分割區的 <strong>%3</strong> 旗標…… ++ ++ Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… ++ @status ++ 正在設定 %1MiB <strong>%2</strong> 分割區的 <strong>%3</strong> 旗標…… + + +- +- Setting flags <strong>%1</strong> on new partition… +- @status +- 正在設定新分割區的 <strong>%1</strong> 旗標…… ++ ++ Setting flags <strong>%1</strong> on new partition… ++ @status ++ 正在設定新分割區的 <strong>%1</strong> 旗標…… + + +- +- The installer failed to set flags on partition %1. +- 安裝程式未能在分割區 %1 設定旗標。 ++ ++ The installer failed to set flags on partition %1. ++ 安裝程式未能在分割區 %1 設定旗標。 + +- +- ++ ++ + SetPasswordJob + +- +- Set password for user %1 +- 為使用者 %1 設定密碼 ++ ++ Set password for user %1 ++ 為使用者 %1 設定密碼 + + +- +- Setting password for user %1… +- @status +- 正在為使用者 %1 設定密碼…… ++ ++ Setting password for user %1… ++ @status ++ 正在為使用者 %1 設定密碼…… + + +- +- Bad destination system path. +- 非法的目標系統路徑。 ++ ++ Bad destination system path. ++ 非法的目標系統路徑。 + + +- +- rootMountPoint is %1 +- 根掛載點為 %1 ++ ++ rootMountPoint is %1 ++ 根掛載點為 %1 + + +- +- Cannot disable root account. +- 無法停用 root 帳號。 ++ ++ Cannot disable root account. ++ 無法停用 root 帳號。 + + +- +- +- usermod terminated with error code %1. +- usermod 以錯誤代碼 %1 終止。 ++ ++ ++ usermod terminated with error code %1. ++ usermod 以錯誤代碼 %1 終止。 + + +- +- Cannot set password for user %1. +- 無法為使用者 %1 設定密碼。 ++ ++ Cannot set password for user %1. ++ 無法為使用者 %1 設定密碼。 + +- +- ++ ++ + SetTimezoneJob + +- +- Setting timezone to %1/%2… +- @status +- 正在設定時區為 %1/%2…… ++ ++ Setting timezone to %1/%2… ++ @status ++ 正在設定時區為 %1/%2…… + + +- +- Cannot access selected timezone path. +- @error +- 無法存取指定的時區路徑。 ++ ++ Cannot access selected timezone path. ++ @error ++ 無法存取指定的時區路徑。 + + +- +- Bad path: %1 +- @error +- 非法路徑:%1 ++ ++ Bad path: %1 ++ @error ++ 非法路徑:%1 + + +- +- +- Cannot set timezone. +- @error +- 無法設定時區。 ++ ++ ++ Cannot set timezone. ++ @error ++ 無法設定時區。 + + +- +- Link creation failed, target: %1; link name: %2 +- @info +- 連結建立失敗,目標:%1;連結名稱:%2 ++ ++ Link creation failed, target: %1; link name: %2 ++ @info ++ 連結建立失敗,目標:%1;連結名稱:%2 + + +- +- Cannot open /etc/timezone for writing +- @info +- 無法開啟要寫入的 /etc/timezone ++ ++ Cannot open /etc/timezone for writing ++ @info ++ 無法開啟要寫入的 /etc/timezone + +- +- ++ ++ + SetupGroupsJob + +- +- Preparing groups… +- @status +- 正在準備群組…… ++ ++ Preparing groups… ++ @status ++ 正在準備群組…… + + +- +- +- Could not create groups in target system +- 無法在目標系統中建立群組 ++ ++ ++ Could not create groups in target system ++ 無法在目標系統中建立群組 + + +- +- These groups are missing in the target system: %1 +- 這些群組在目標系統中不存在:%1 ++ ++ These groups are missing in the target system: %1 ++ 這些群組在目標系統中不存在:%1 + +- +- ++ ++ + SetupSudoJob + +- +- Configuring <pre>sudo</pre> users… +- @status +- 正在設定 <pre>sudo</pre> 使用者…… ++ ++ Configuring <pre>sudo</pre> users… ++ @status ++ 正在設定 <pre>sudo</pre> 使用者…… + + +- +- Cannot chmod sudoers file. +- 無法修改 sudoers 檔案權限。 ++ ++ Cannot chmod sudoers file. ++ 無法修改 sudoers 檔案權限。 + + +- +- Cannot create sudoers file for writing. +- 無法建立要寫入的 sudoers 檔案。 ++ ++ Cannot create sudoers file for writing. ++ 無法建立要寫入的 sudoers 檔案。 + +- +- ++ ++ + ShellProcessJob + +- +- Running shell processes… +- @status +- 正在執行 shell 子處理程序…… ++ ++ Running shell processes… ++ @status ++ 正在執行 shell 子處理程序…… + +- +- ++ ++ + SlideCounter + +- +- +- %L1 / %L2 +- slide counter, %1 of %2 (numeric) +- %L1 / %L2 ++ ++ ++ %L1 / %L2 ++ slide counter, %1 of %2 (numeric) ++ %L1 / %L2 + +- +- ++ ++ + StandardButtons + +- +- &OK +- 確定(&O) ++ ++ &OK ++ 確定(&O) + + +- +- &Yes +- 是(&Y) ++ ++ &Yes ++ 是(&Y) + + +- +- &No +- 否(&N) ++ ++ &No ++ 否(&N) + + +- +- &Cancel +- 取消(&C) ++ ++ &Cancel ++ 取消(&C) + + +- +- &Close +- 關閉(&C) ++ ++ &Close ++ 關閉(&C) + +- +- ++ ++ + TrackingInstallJob + +- +- Installation feedback +- 安裝回饋 ++ ++ Installation feedback ++ 安裝回饋 + + +- +- Sending installation feedback… +- @status +- 正在傳送安裝回饋…… ++ ++ Sending installation feedback… ++ @status ++ 正在傳送安裝回饋…… + + +- +- Internal error in install-tracking. +- 在安裝追蹤裡的內部錯誤。 ++ ++ Internal error in install-tracking. ++ 在安裝追蹤裡的內部錯誤。 + + +- +- HTTP request timed out. +- HTTP 請求逾時。 ++ ++ HTTP request timed out. ++ HTTP 請求逾時。 + +- +- ++ ++ + TrackingKUserFeedbackJob + +- +- KDE user feedback +- KDE 使用者回饋 ++ ++ KDE user feedback ++ KDE 使用者回饋 + + +- +- Configuring KDE user feedback… +- @status +- 正在設定 KDE 使用者回饋…… ++ ++ Configuring KDE user feedback… ++ @status ++ 正在設定 KDE 使用者回饋…… + + +- +- +- Error in KDE user feedback configuration. +- KDE 使用者回饋設定錯誤。 ++ ++ ++ Error in KDE user feedback configuration. ++ KDE 使用者回饋設定錯誤。 + + +- +- Could not configure KDE user feedback correctly, script error %1. +- 無法正確設定 KDE 使用者回饋,指令稿錯誤 %1。 ++ ++ Could not configure KDE user feedback correctly, script error %1. ++ 無法正確設定 KDE 使用者回饋,指令稿錯誤 %1。 + + +- +- Could not configure KDE user feedback correctly, Calamares error %1. +- 無法正確設定 KDE 使用者回饋,Calamares 錯誤 %1。 ++ ++ Could not configure KDE user feedback correctly, Calamares error %1. ++ 無法正確設定 KDE 使用者回饋,Calamares 錯誤 %1。 + +- +- ++ ++ + TrackingMachineUpdateManagerJob + +- +- Machine feedback +- 機器回饋 ++ ++ Machine feedback ++ 機器回饋 + + +- +- Configuring machine feedback… +- @status +- 正在設定機器回饋…… ++ ++ Configuring machine feedback… ++ @status ++ 正在設定機器回饋…… + + +- +- +- Error in machine feedback configuration. +- 在機器回饋設定中的錯誤。 ++ ++ ++ Error in machine feedback configuration. ++ 在機器回饋設定中的錯誤。 + + +- +- Could not configure machine feedback correctly, script error %1. +- 無法正確設定機器回饋,指令稿錯誤 %1。 ++ ++ Could not configure machine feedback correctly, script error %1. ++ 無法正確設定機器回饋,指令稿錯誤 %1。 + + +- +- Could not configure machine feedback correctly, Calamares error %1. +- 無法正確設定機器回饋,Calamares 錯誤 %1。 ++ ++ Could not configure machine feedback correctly, Calamares error %1. ++ 無法正確設定機器回饋,Calamares 錯誤 %1。 + +- +- ++ ++ + TrackingPage + +- +- Placeholder +- 佔位符 ++ ++ Placeholder ++ 佔位符 + + +- +- <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> +- <html><head/><body><p>點擊此處<span style=" font-weight:600;">不會傳送任何</span>關於您安裝的資訊。</p></body></html> ++ ++ <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> ++ <html><head/><body><p>點擊此處<span style=" font-weight:600;">不會傳送任何</span>關於您安裝的資訊。</p></body></html> + + +- +- <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> +- <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">點選這裡來取得更多關於使用者回饋的資訊</span></a></p></body></html> ++ ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> ++ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">點選這裡來取得更多關於使用者回饋的資訊</span></a></p></body></html> + + +- +- Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. +- 追蹤可以協助 %1 檢視其安裝頻率、安裝在什麼硬體上以及使用了哪些應用程式。要檢視會傳送哪些資訊,請點擊每個區域旁的說明按鈕。 ++ ++ Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. ++ 追蹤可以協助 %1 檢視其安裝頻率、安裝在什麼硬體上以及使用了哪些應用程式。要檢視會傳送哪些資訊,請點擊每個區域旁的說明按鈕。 + + +- +- By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. +- 選取這個後,您將會傳送關於您的安裝與硬體的資訊。這個資訊將只會傳送</b>一次</b>,且在安裝完成後。 ++ ++ By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. ++ 選取這個後,您將會傳送關於您的安裝與硬體的資訊。這個資訊將只會傳送</b>一次</b>,且在安裝完成後。 + + +- +- By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. +- 選取這個後,您將會週期性地傳送關於您的<b>機器</b>安裝、硬體與應用程式的資訊給 %1。 ++ ++ By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. ++ 選取這個後,您將會週期性地傳送關於您的<b>機器</b>安裝、硬體與應用程式的資訊給 %1。 + + +- +- By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. +- 選取這個後,您將會經常傳送關於您的<b>使用者</b>安裝、硬體、應用程式與使用模式的資訊給 %1。 ++ ++ By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. ++ 選取這個後,您將會經常傳送關於您的<b>使用者</b>安裝、硬體、應用程式與使用模式的資訊給 %1。 + +- +- ++ ++ + TrackingViewStep + +- +- Feedback +- @title +- 回饋 ++ ++ Feedback ++ @title ++ 回饋 + +- +- ++ ++ + UmountJob + +- +- Unmounting file systems… +- @status +- 正在解除掛載檔案系統…… ++ ++ Unmounting file systems… ++ @status ++ 正在解除掛載檔案系統…… + + +- +- No target system available. +- 沒有可用的目標系統。 ++ ++ No target system available. ++ 沒有可用的目標系統。 + + +- +- No rootMountPoint is set. +- 未設定根掛載點。 ++ ++ No rootMountPoint is set. ++ 未設定根掛載點。 + +- +- ++ ++ + UsersPage + +- +- <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> +- <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> ++ <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> + + +- +- <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> +- <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> ++ ++ <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> ++ <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> + +- +- ++ ++ + UsersQmlViewStep + +- +- Users +- 使用者 ++ ++ Users ++ 使用者 + +- +- ++ ++ + UsersViewStep + +- +- Users +- 使用者 ++ ++ Users ++ 使用者 + +- +- ++ ++ + VariantModel + +- +- Key +- Column header for key/value +- 金鑰 ++ ++ Key ++ Column header for key/value ++ 金鑰 + + +- +- Value +- Column header for key/value +- ++ ++ Value ++ Column header for key/value ++ + +- +- ++ ++ + VolumeGroupBaseDialog + +- +- Create Volume Group +- 建立卷冊群組 ++ ++ Create Volume Group ++ 建立卷冊群組 + + +- +- List of Physical Volumes +- 物理卷冊清單 ++ ++ List of Physical Volumes ++ 物理卷冊清單 + + +- +- Volume Group Name: +- 卷冊群組名稱: ++ ++ Volume Group Name: ++ 卷冊群組名稱: + + +- +- Volume Group Type: +- 卷冊群組類型: ++ ++ Volume Group Type: ++ 卷冊群組類型: + + +- +- Physical Extent Size: +- 物理延展大小: ++ ++ Physical Extent Size: ++ 物理延展大小: + + +- +- MiB +- MiB ++ ++ MiB ++ MiB + + +- +- Total Size: +- 大小總計: ++ ++ Total Size: ++ 大小總計: + + +- +- Used Size: +- 已使用大小: ++ ++ Used Size: ++ 已使用大小: + + +- +- Total Sectors: +- 總磁區數: ++ ++ Total Sectors: ++ 總磁區數: + + +- +- Quantity of LVs: +- 邏輯卷冊數量: ++ ++ Quantity of LVs: ++ 邏輯卷冊數量: + +- +- ++ ++ + WelcomePage + +- +- +- Select application and system language +- 選取應用程式與系統語言 ++ ++ ++ Select application and system language ++ 選取應用程式與系統語言 + + +- +- Open donations website +- 開啟捐款網頁 ++ ++ language ++ + + +- +- &Donate +- 捐款(&D) ++ Open donations website ++ 開啟捐款網頁 + + +- +- Open help and support website +- 開啟說明與支援網頁 ++ &Donate ++ 捐款(&D) + + +- +- &Support +- 支援(&S) ++ Open help and support website ++ 開啟說明與支援網頁 + + +- +- Open issues and bug-tracking website +- 開啟問題與錯誤追蹤網頁 ++ &Support ++ 支援(&S) + + +- +- &Known issues +- 已知問題(&K) ++ Open issues and bug-tracking website ++ 開啟問題與錯誤追蹤網頁 + + +- +- Open release notes website +- 開啟發行記事網站 ++ &Known issues ++ 已知問題(&K) + + +- +- &Release notes +- 發行註記(&R) ++ Open release notes website ++ 開啟發行記事網站 + + +- +- About %1 Setup +- @title +- 關於 %1 安裝程式 ++ &Release notes ++ 發行註記(&R) + + +- +- About %1 Installer +- @title +- 關於 %1 安裝程式 ++ ++ About %1 Setup ++ @title ++ 關於 %1 安裝程式 + + +- +- %1 Support +- @action +- %1 支援 ++ ++ About %1 Installer ++ @title ++ 關於 %1 安裝程式 + +- +- ++ ++ %1 Support ++ @action ++ %1 支援 ++ ++ ++ + WelcomeQmlViewStep + +- +- Welcome +- @title +- 歡迎 ++ ++ Welcome ++ @title ++ 歡迎 + +- +- ++ ++ + WelcomeViewStep + +- +- Welcome +- @title +- 歡迎 ++ ++ Welcome ++ @title ++ 歡迎 + +- +- ++ ++ + ZfsJob + +- +- Creating ZFS pools and datasets… +- @status +- 正在建立 ZFS 池與資料集…… ++ ++ Creating ZFS pools and datasets… ++ @status ++ 正在建立 ZFS 池與資料集…… + + +- +- Failed to create zpool on +- 建立 zpool 失敗於 ++ ++ Failed to create zpool on ++ 建立 zpool 失敗於 + + +- +- Configuration Error +- 設定錯誤 ++ ++ Configuration Error ++ 設定錯誤 + + +- +- No partitions are available for ZFS. +- ZFS 沒有可用的分割區。 ++ ++ No partitions are available for ZFS. ++ ZFS 沒有可用的分割區。 + + +- +- Internal data missing +- 內部資料遺失 ++ ++ Internal data missing ++ 內部資料遺失 + + +- +- +- Failed to create zpool +- 建立 zpool 失敗 ++ ++ ++ Failed to create zpool ++ 建立 zpool 失敗 + + +- +- Failed to create dataset +- 建立資料集失敗 ++ ++ Failed to create dataset ++ 建立資料集失敗 + + +- +- The output was: +- 輸出為: ++ ++ The output was: ++ 輸出為: + +- +- ++ ++ + calamares-sidebar + +- +- About +- 關於 ++ ++ About ++ 關於 + + +- +- Debug +- Debug ++ ++ Debug ++ Debug + + +- +- About +- @button +- 關於 ++ ++ About ++ @button ++ 關於 + + +- +- Show information about Calamares +- @tooltip +- 顯示關於 Calamares 的資訊 ++ ++ Show information about Calamares ++ @tooltip ++ 顯示關於 Calamares 的資訊 + + +- +- Debug +- @button +- Debug ++ ++ ++ Debug ++ @button ++ Debug + + +- +- Show debug information +- @tooltip +- 顯示除錯資訊 ++ ++ ++ Show debug information ++ @tooltip ++ 顯示除錯資訊 + +- +- ++ ++ ++ Show information about easysoftware ++ @tooltip ++ ++ ++ ++ + finishedq + +- +- Installation Completed +- 安裝完成 ++ ++ Installation Completed ++ 安裝完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- %1 已安裝到您的電腦上。<br/> ++ %1 已安裝到您的電腦上。<br/> + 現在,您可以重新啟動到您的新系統,或繼續使用 Live 環境。 + + +- +- Close Installer +- 關閉安裝程式 ++ ++ Close Installer ++ 關閉安裝程式 + + +- +- Restart System +- 重新啟動系統 ++ ++ Restart System ++ 重新啟動系統 + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- <p>完整安裝紀錄檔可在 Live 使用者的家目錄中以 installation.log 的名稱取得。<br/> ++ <p>完整安裝紀錄檔可在 Live 使用者的家目錄中以 installation.log 的名稱取得。<br/> + 此紀錄檔已複製到目標系統的 /var/log/installation.log。</p> + +- +- ++ ++ + finishedq-qt6 + +- +- Installation Completed +- @title +- 安裝完成 ++ ++ Installation Completed ++ @title ++ 安裝完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart into your new system, or continue using the Live environment. +- @info, %1 is the product name +- %1 已安裝到您的電腦上。<br/> ++ @info, %1 is the product name ++ %1 已安裝到您的電腦上。<br/> + 現在,您可以重新啟動到您的新系統,或繼續使用 Live 環境。 + + +- +- Close Installer +- @button +- 關閉安裝程式 ++ ++ Close Installer ++ @button ++ 關閉安裝程式 + + +- +- Restart System +- @button +- 重新啟動系統 ++ ++ Restart System ++ @button ++ 重新啟動系統 + + +- +- <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> ++ ++ <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> + This log is copied to /var/log/installation.log of the target system.</p> +- @info +- <p>完整安裝紀錄檔可在 Live 使用者的家目錄中以 installation.log 的名稱取得。<br/> ++ @info ++ <p>完整安裝紀錄檔可在 Live 使用者的家目錄中以 installation.log 的名稱取得。<br/> + 此紀錄檔已複製到目標系統的 /var/log/installation.log。</p> + +- +- ++ ++ + finishedq@mobile + +- +- Installation Completed +- @title +- 安裝完成 ++ ++ Installation Completed ++ @title ++ 安裝完成 + + +- +- %1 has been installed on your computer.<br/> ++ ++ %1 has been installed on your computer.<br/> + You may now restart your device. +- @info, %1 is the product name +- %1 已安裝到您的電腦上。<br/> ++ @info, %1 is the product name ++ %1 已安裝到您的電腦上。<br/> + 您現在可以重新啟動您的裝置了。 + + +- +- Close +- @button +- 關閉 ++ ++ Close ++ @button ++ 關閉 + + +- +- Restart +- @button +- 重新啟動 ++ ++ Restart ++ @button ++ 重新啟動 + +- +- ++ ++ + keyboardq + +- +- Select a layout to activate keyboard preview +- @label +- 選取佈局以啟動鍵盤預覽 ++ ++ Select a layout to activate keyboard preview ++ @label ++ 選取佈局以啟動鍵盤預覽 + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- <b>鍵盤型號:&nbsp;&nbsp;</b> ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ <b>鍵盤型號:&nbsp;&nbsp;</b> + + +- +- Layout +- @label +- 配置 ++ ++ Layout ++ @label ++ 配置 + + +- +- Variant +- @label +- 變體 ++ ++ Variant ++ @label ++ 變體 + + +- +- Type here to test your keyboard… +- @label +- 在此輸入以測試您的鍵盤…… ++ ++ Type here to test your keyboard… ++ @label ++ 在此輸入以測試您的鍵盤…… + +- +- ++ ++ + keyboardq-qt6 + +- +- Select a layout to activate keyboard preview +- @label +- 選取佈局以啟動鍵盤預覽 ++ ++ Select a layout to activate keyboard preview ++ @label ++ 選取佈局以啟動鍵盤預覽 + + +- +- <b>Keyboard model:&nbsp;&nbsp;</b> +- @label +- <b>鍵盤型號:&nbsp;&nbsp;</b> ++ ++ <b>Keyboard model:&nbsp;&nbsp;</b> ++ @label ++ <b>鍵盤型號:&nbsp;&nbsp;</b> + + +- +- Layout +- @label +- 配置 ++ ++ Layout ++ @label ++ 配置 + + +- +- Variant +- @label +- 變體 ++ ++ Variant ++ @label ++ 變體 + + +- +- Type here to test your keyboard… +- @label +- 在此輸入以測試您的鍵盤…… ++ ++ Type here to test your keyboard… ++ @label ++ 在此輸入以測試您的鍵盤…… + +- +- ++ ++ + localeq + +- +- +- Change +- @button +- 變更 ++ ++ ++ Change ++ @button ++ 變更 + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- <h3>語言</h3> </br> ++ @info ++ <h3>語言</h3> </br> + 系統語系設定會影響某些命令列使用者介面元素的語言與字元集。目前的設定為 <strong>%1</strong>。 + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- <h3>語系</h3> </br> ++ @info ++ <h3>語系</h3> </br> + 系統語系設定會影響數字與日期格式。目前的設定為 <strong>%1</strong>。 + +- +- ++ ++ + localeq-qt6 + +- +- +- Change +- @button +- 變更 ++ ++ ++ Change ++ @button ++ 變更 + + +- +- <h3>Languages</h3> </br> ++ ++ <h3>Languages</h3> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. +- @info +- <h3>語言</h3> </br> ++ @info ++ <h3>語言</h3> </br> + 系統語系設定會影響某些命令列使用者介面元素的語言與字元集。目前的設定為 <strong>%1</strong>。 + + +- +- <h3>Locales</h3> </br> ++ ++ <h3>Locales</h3> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. +- @info +- <h3>語系</h3> </br> ++ @info ++ <h3>語系</h3> </br> + 系統語系設定會影響數字與日期格式。目前的設定為 <strong>%1</strong>。 + +- +- ++ ++ + notesqml + +- +- <h3>%1</h3> ++ ++ <h3>%1</h3> + <p>These are example release notes.</p> +- <h3>%1</h3> ++ <h3>%1</h3> + <p>此為發行記事範本。</p> + +- +- ++ ++ + packagechooserq + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- LibreOffice 是強大且自由的辦公室套裝軟體,被世界上數以百萬計的人們使用。其包含了多個應用程式,使其成為市場上功能最強大的自由與開放原始碼辦公室套裝軟體。<br/> ++ LibreOffice 是強大且自由的辦公室套裝軟體,被世界上數以百萬計的人們使用。其包含了多個應用程式,使其成為市場上功能最強大的自由與開放原始碼辦公室套裝軟體。<br/> + 預設選項。 + + +- +- LibreOffice +- LibreOffice ++ ++ LibreOffice ++ LibreOffice + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- 如果您不想安裝辦公室套裝軟體,只要選取「不要辦公室套裝軟體」就好。您隨時都可以在已安裝的系統上新增一個或多個您需要的軟體。 ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ 如果您不想安裝辦公室套裝軟體,只要選取「不要辦公室套裝軟體」就好。您隨時都可以在已安裝的系統上新增一個或多個您需要的軟體。 + + +- +- No Office Suite +- 不要辦公室套裝軟體 ++ ++ No Office Suite ++ 不要辦公室套裝軟體 + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- 建立最小化的桌面安裝,移除所有額外的應用程式並稍後再決定您想要新增哪些東西到您的系統中。如此的安裝不會有什麼例子,其不會有辦公室套裝軟體、沒有多媒體播放程式、沒有圖片檢視程式或列印支援。其就只有桌面、檔案瀏覽器、軟體包管理程式、文字編輯器與簡易的網路瀏覽器。 ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ 建立最小化的桌面安裝,移除所有額外的應用程式並稍後再決定您想要新增哪些東西到您的系統中。如此的安裝不會有什麼例子,其不會有辦公室套裝軟體、沒有多媒體播放程式、沒有圖片檢視程式或列印支援。其就只有桌面、檔案瀏覽器、軟體包管理程式、文字編輯器與簡易的網路瀏覽器。 + + +- +- Minimal Install +- 最小安裝 ++ ++ Minimal Install ++ 最小安裝 + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- 請選取您安裝的選項,或使用預設:包含 LibreOffice。 ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ 請選取您安裝的選項,或使用預設:包含 LibreOffice。 + +- +- ++ ++ + packagechooserq-qt6 + +- +- LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> ++ ++ LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/> + Default option. +- LibreOffice 是強大且自由的辦公室套裝軟體,被世界上數以百萬計的人們使用。其包含了多個應用程式,使其成為市場上功能最強大的自由與開放原始碼辦公室套裝軟體。<br/> ++ LibreOffice 是強大且自由的辦公室套裝軟體,被世界上數以百萬計的人們使用。其包含了多個應用程式,使其成為市場上功能最強大的自由與開放原始碼辦公室套裝軟體。<br/> + 預設選項。 + + +- +- LibreOffice +- LibreOffice ++ ++ LibreOffice ++ LibreOffice + + +- +- If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. +- 如果您不想安裝辦公室套裝軟體,只要選取「不要辦公室套裝軟體」就好。您隨時都可以在已安裝的系統上新增一個或多個您需要的軟體。 ++ ++ If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives. ++ 如果您不想安裝辦公室套裝軟體,只要選取「不要辦公室套裝軟體」就好。您隨時都可以在已安裝的系統上新增一個或多個您需要的軟體。 + + +- +- No Office Suite +- 不要辦公室套裝軟體 ++ ++ No Office Suite ++ 不要辦公室套裝軟體 + + +- +- Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. +- 建立最小化的桌面安裝,移除所有額外的應用程式並稍後再決定您想要新增哪些東西到您的系統中。如此的安裝不會有什麼例子,其不會有辦公室套裝軟體、沒有多媒體播放程式、沒有圖片檢視程式或列印支援。其就只有桌面、檔案瀏覽器、軟體包管理程式、文字編輯器與簡易的網路瀏覽器。 ++ ++ Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser. ++ 建立最小化的桌面安裝,移除所有額外的應用程式並稍後再決定您想要新增哪些東西到您的系統中。如此的安裝不會有什麼例子,其不會有辦公室套裝軟體、沒有多媒體播放程式、沒有圖片檢視程式或列印支援。其就只有桌面、檔案瀏覽器、軟體包管理程式、文字編輯器與簡易的網路瀏覽器。 + + +- +- Minimal Install +- 最小安裝 ++ ++ Minimal Install ++ 最小安裝 + + +- +- Please select an option for your install, or use the default: LibreOffice included. +- 請選取您安裝的選項,或使用預設:包含 LibreOffice。 ++ ++ Please select an option for your install, or use the default: LibreOffice included. ++ 請選取您安裝的選項,或使用預設:包含 LibreOffice。 + +- +- ++ ++ + release_notes + +- +- <h3>%1</h3> ++ <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> +@@ -4888,7 +5016,7 @@ Output: + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> +- <h3>%1</h3> ++ <h3>%1</h3> + <p>這是範例 QML 檔案,展示了 RichText 的各種選項,並有可縮放的內容。</p> + + <p>有 RichText 的 QML 可以使用 HTML 標籤,可縮放的內容則對觸控螢幕非常有用。</p> +@@ -4911,335 +5039,364 @@ Output: + <p>垂直捲動軸是可調整的,目前的寬度設定為 10。</p> + + +- +- Back +- 返回 ++ ++ ### %1 ++This an example QML file, showing options in Markdown with Flickable content. ++ ++QML with RichText can use HTML tags, with Markdown it uses the simple Markdown syntax, Flickable content is useful for touchscreens. ++ ++**This is bold text** ++ ++*This is italic text* ++ ++_This is underlined text_ ++ ++> blockquote ++ ++~~This is strikethrough~~ ++ ++Code example: ++``` ++ls -l /home ++``` ++ ++**Lists:** ++ * Intel CPU systems ++ * AMD CPU systems ++ ++The vertical scrollbar is adjustable, current width set to 10. ++ ++ ++ ++ ++ Back ++ 返回 + +- +- ++ ++ + usersq + +- +- Pick your user name and credentials to login and perform admin tasks +- 挑選您的使用者名稱與憑證以登入並執行管理工作 ++ ++ Pick your user name and credentials to login and perform admin tasks ++ 挑選您的使用者名稱與憑證以登入並執行管理工作 + + +- +- What is your name? +- 該如何稱呼您? ++ ++ What is your name? ++ 該如何稱呼您? + + +- +- Your full name +- 您的全名 ++ ++ Your full name ++ 您的全名 + + +- +- What name do you want to use to log in? +- 您想使用何種登入名稱? ++ ++ What name do you want to use to log in? ++ 您想使用何種登入名稱? + + +- +- Login name +- 登入名稱 ++ ++ Login name ++ 登入名稱 + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- 若有多於一個人使用此電腦,您可以在安裝後建立多個帳號。 ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ 若有多於一個人使用此電腦,您可以在安裝後建立多個帳號。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 僅允許小寫字母、數字、底線與連接號。 ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 僅允許小寫字母、數字、底線與連接號。 + + +- +- root is not allowed as username. +- 不允許使用 root 作為使用者名稱。 ++ ++ root is not allowed as username. ++ 不允許使用 root 作為使用者名稱。 + + +- +- What is the name of this computer? +- 這部電腦的名字是? ++ ++ What is the name of this computer? ++ 這部電腦的名字是? + + +- +- Computer name +- 電腦名稱 ++ ++ Computer name ++ 電腦名稱 + + +- +- This name will be used if you make the computer visible to others on a network. +- 若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。 ++ ++ This name will be used if you make the computer visible to others on a network. ++ 若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。 + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- 僅允許字母、數字、底線與連接號,最少兩個字元。 ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ 僅允許字母、數字、底線與連接號,最少兩個字元。 + + +- +- localhost is not allowed as hostname. +- 不允許使用 localhost 作為主機名稱。 ++ ++ localhost is not allowed as hostname. ++ 不允許使用 localhost 作為主機名稱。 + + +- +- Choose a password to keep your account safe. +- 輸入密碼以確保帳號的安全性。 ++ ++ Choose a password to keep your account safe. ++ 輸入密碼以確保帳號的安全性。 + + +- +- Password +- 密碼 ++ ++ Password ++ 密碼 + + +- +- Repeat password +- 確認密碼 ++ ++ Repeat password ++ 確認密碼 + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- 輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ 輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。 + + +- +- Reuse user password as root password +- 重用使用者密碼為 root 密碼 ++ ++ Reuse user password as root password ++ 重用使用者密碼為 root 密碼 + + +- +- Use the same password for the administrator account. +- 為管理員帳號使用同樣的密碼。 ++ ++ Use the same password for the administrator account. ++ 為管理員帳號使用同樣的密碼。 + + +- +- Choose a root password to keep your account safe. +- 選擇 root 密碼來維護您的帳號安全。 ++ ++ Choose a root password to keep your account safe. ++ 選擇 root 密碼來維護您的帳號安全。 + + +- +- Root password +- Root 密碼 ++ ++ Root password ++ Root 密碼 + + +- +- Repeat root password +- 確認 Root 密碼 ++ ++ Repeat root password ++ 確認 Root 密碼 + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- 輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ 輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。 + + +- +- Log in automatically without asking for the password +- 自動登入,無需輸入密碼 ++ ++ Log in automatically without asking for the password ++ 自動登入,無需輸入密碼 + + +- +- Validate passwords quality +- 驗證密碼品質 ++ ++ Validate passwords quality ++ 驗證密碼品質 + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 + +- +- ++ ++ + usersq-qt6 + +- +- Pick your user name and credentials to login and perform admin tasks +- 挑選您的使用者名稱與憑證以登入並執行管理工作 ++ ++ Pick your user name and credentials to login and perform admin tasks ++ 挑選您的使用者名稱與憑證以登入並執行管理工作 + + +- +- What is your name? +- 該如何稱呼您? ++ ++ What is your name? ++ 該如何稱呼您? + + +- +- Your full name +- 您的全名 ++ ++ Your full name ++ 您的全名 + + +- +- What name do you want to use to log in? +- 您想使用何種登入名稱? ++ ++ What name do you want to use to log in? ++ 您想使用何種登入名稱? + + +- +- Login name +- 登入名稱 ++ ++ Login name ++ 登入名稱 + + +- +- If more than one person will use this computer, you can create multiple accounts after installation. +- 若有多於一個人使用此電腦,您可以在安裝後建立多個帳號。 ++ ++ If more than one person will use this computer, you can create multiple accounts after installation. ++ 若有多於一個人使用此電腦,您可以在安裝後建立多個帳號。 + + +- +- Only lowercase letters, numbers, underscore and hyphen are allowed. +- 僅允許小寫字母、數字、底線與連接號。 ++ ++ Only lowercase letters, numbers, underscore and hyphen are allowed. ++ 僅允許小寫字母、數字、底線與連接號。 + + +- +- root is not allowed as username. +- 不允許使用 root 作為使用者名稱。 ++ ++ root is not allowed as username. ++ 不允許使用 root 作為使用者名稱。 + + +- +- What is the name of this computer? +- 這部電腦的名字是? ++ ++ What is the name of this computer? ++ 這部電腦的名字是? + + +- +- Computer name +- 電腦名稱 ++ ++ Computer name ++ 電腦名稱 + + +- +- This name will be used if you make the computer visible to others on a network. +- 若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。 ++ ++ This name will be used if you make the computer visible to others on a network. ++ 若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。 + + +- +- Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. +- 僅允許字母、數字、底線與連接號,最少兩個字元。 ++ ++ Only letters, numbers, underscore and hyphen are allowed, minimal of two characters. ++ 僅允許字母、數字、底線與連接號,最少兩個字元。 + + +- +- localhost is not allowed as hostname. +- 不允許使用 localhost 作為主機名稱。 ++ ++ localhost is not allowed as hostname. ++ 不允許使用 localhost 作為主機名稱。 + + +- +- Choose a password to keep your account safe. +- 輸入密碼以確保帳號的安全性。 ++ ++ Choose a password to keep your account safe. ++ 輸入密碼以確保帳號的安全性。 + + +- +- Password +- 密碼 ++ ++ Password ++ 密碼 + + +- +- Repeat password +- 確認密碼 ++ ++ Repeat password ++ 確認密碼 + + +- +- Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. +- 輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals. ++ 輸入同一個密碼兩次,以檢查輸入錯誤。一個好的密碼包含了字母、數字及標點符號的組合、至少八個字母長,且按一固定週期更換。 + + +- +- Reuse user password as root password +- 重用使用者密碼為 root 密碼 ++ ++ Reuse user password as root password ++ 重用使用者密碼為 root 密碼 + + +- +- Use the same password for the administrator account. +- 為管理員帳號使用同樣的密碼。 ++ ++ Use the same password for the administrator account. ++ 為管理員帳號使用同樣的密碼。 + + +- +- Choose a root password to keep your account safe. +- 選擇 root 密碼來維護您的帳號安全。 ++ ++ Choose a root password to keep your account safe. ++ 選擇 root 密碼來維護您的帳號安全。 + + +- +- Root password +- Root 密碼 ++ ++ Root password ++ Root 密碼 + + +- +- Repeat root password +- 確認 Root 密碼 ++ ++ Repeat root password ++ 確認 Root 密碼 + + +- +- Enter the same password twice, so that it can be checked for typing errors. +- 輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。 ++ ++ Enter the same password twice, so that it can be checked for typing errors. ++ 輸入同樣的密碼兩次,這樣可以檢查輸入錯誤。 + + +- +- Log in automatically without asking for the password +- 自動登入,無需輸入密碼 ++ ++ Log in automatically without asking for the password ++ 自動登入,無需輸入密碼 + + +- +- Validate passwords quality +- 驗證密碼品質 ++ ++ Validate passwords quality ++ 驗證密碼品質 + + +- +- When this box is checked, password-strength checking is done and you will not be able to use a weak password. +- 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ 當此勾選框被勾選,密碼強度檢查即完成,您也無法再使用弱密碼。 + +- +- ++ ++ + welcomeq + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- <h3>歡迎使用 %1 <quote>%2</quote> 安裝程式</h3> ++ <h3>歡迎使用 %1 <quote>%2</quote> 安裝程式</h3> + <p>本程式將會問您一些問題並在您的電腦上安裝及設定 %1。</p> + + +- +- Support +- 支援 ++ ++ Support ++ 支援 + + +- +- Known Issues +- 已知問題 ++ ++ Known Issues ++ 已知問題 + + +- +- Release Notes +- 發行註記 ++ ++ Release Notes ++ 發行註記 + + +- +- Donate +- 捐助 ++ ++ Donate ++ 捐助 + +- +- ++ ++ + welcomeq-qt6 + +- +- <h3>Welcome to the %1 <quote>%2</quote> installer</h3> ++ ++ <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> +- <h3>歡迎使用 %1 <quote>%2</quote> 安裝程式</h3> ++ <h3>歡迎使用 %1 <quote>%2</quote> 安裝程式</h3> + <p>本程式將會問您一些問題並在您的電腦上安裝及設定 %1。</p> + + +- +- Support +- 支援 ++ ++ Support ++ 支援 + + +- +- Known Issues +- 已知問題 ++ ++ Known Issues ++ 已知問題 + + +- +- Release Notes +- 發行註記 ++ ++ Release Notes ++ 發行註記 + + +- +- Donate +- 捐助 ++ ++ Donate ++ 捐助 + +- ++ + +diff --git a/lang/python/en_US/LC_MESSAGES/python.po b/lang/python/en_US/LC_MESSAGES/python.po +new file mode 100644 +index 0000000..e323c0c +--- /dev/null ++++ b/lang/python/en_US/LC_MESSAGES/python.po +@@ -0,0 +1,399 @@ ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR , YEAR. ++# ++# Translators: ++# Jason Collins , 2018 ++# Karthik Balan , 2021 ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2024-02-12 21:37+0100\n" ++"PO-Revision-Date: 2017-08-09 10:34+0000\n" ++"Last-Translator: Karthik Balan , 2021\n" ++"Language-Team: English (United Kingdom) (https://app.transifex.com/calamares/teams/20061/en_GB/)\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: en_GB\n" ++"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++ ++#: src/modules/bootloader/main.py:46 ++msgid "Install bootloader." ++msgstr "" ++ ++#: src/modules/bootloader/main.py:666 ++msgid "Failed to install grub, no partitions defined in global storage" ++msgstr "" ++ ++#: src/modules/bootloader/main.py:926 ++msgid "Bootloader installation error" ++msgstr "Bootloader installation error" ++ ++#: src/modules/bootloader/main.py:927 ++msgid "" ++"The bootloader could not be installed. The installation command " ++"
{!s}
returned error code {!s}." ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:509 ++msgid "Cannot write LXDM configuration file" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:510 ++msgid "LXDM config file {!s} does not exist" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:598 ++msgid "Cannot write LightDM configuration file" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:599 ++msgid "LightDM config file {!s} does not exist" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:684 ++msgid "Cannot configure LightDM" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:685 ++msgid "No LightDM greeter installed." ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:716 ++msgid "Cannot write SLIM configuration file" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:717 ++msgid "SLIM config file {!s} does not exist" ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:938 ++msgid "No display managers selected for the displaymanager module." ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:939 ++msgid "" ++"The displaymanagers list is empty or undefined in both globalstorage and " ++"displaymanager.conf." ++msgstr "" ++ ++#: src/modules/displaymanager/main.py:1026 ++msgid "Display manager configuration was incomplete" ++msgstr "" ++ ++#: src/modules/dracut/main.py:29 ++msgid "Creating initramfs with dracut." ++msgstr "" ++ ++#: src/modules/dracut/main.py:63 ++msgid "Failed to run dracut" ++msgstr "" ++ ++#: src/modules/dracut/main.py:64 ++#, python-brace-format ++msgid "Dracut failed to run on the target with return code: {return_code}" ++msgstr "" ++ ++#: src/modules/dummypython/main.py:35 ++msgid "Dummy python job." ++msgstr "Dummy python job." ++ ++#: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:104 ++#: src/modules/dummypython/main.py:105 ++msgid "Dummy python step {}" ++msgstr "Dummy python step {}" ++ ++#: src/modules/fstab/main.py:29 ++msgid "Writing fstab." ++msgstr "" ++ ++#: src/modules/fstab/main.py:378 src/modules/fstab/main.py:384 ++#: src/modules/fstab/main.py:412 src/modules/initcpiocfg/main.py:256 ++#: src/modules/initcpiocfg/main.py:260 src/modules/initramfscfg/main.py:85 ++#: src/modules/initramfscfg/main.py:89 src/modules/localecfg/main.py:140 ++#: src/modules/mount/main.py:334 src/modules/networkcfg/main.py:106 ++#: src/modules/openrcdmcryptcfg/main.py:72 ++#: src/modules/openrcdmcryptcfg/main.py:76 src/modules/rawfs/main.py:164 ++msgid "Configuration Error" ++msgstr "Configuration Error " ++ ++#: src/modules/fstab/main.py:379 src/modules/initramfscfg/main.py:86 ++#: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73 ++#: src/modules/rawfs/main.py:165 ++msgid "No partitions are defined for
{!s}
to use." ++msgstr "" ++ ++#: src/modules/fstab/main.py:385 src/modules/initramfscfg/main.py:90 ++#: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:107 ++#: src/modules/openrcdmcryptcfg/main.py:77 ++msgid "No root mount point is given for
{!s}
to use." ++msgstr "" ++ ++#: src/modules/fstab/main.py:413 ++msgid "No
{!s}
configuration is given for
{!s}
to use." ++msgstr "" ++ ++#: src/modules/grubcfg/main.py:30 ++msgid "Configure GRUB." ++msgstr "" ++ ++#: src/modules/hwclock/main.py:26 ++msgid "Setting hardware clock." ++msgstr "" ++ ++#: src/modules/initcpiocfg/main.py:27 ++msgid "Configuring mkinitcpio." ++msgstr "" ++ ++#: src/modules/initcpiocfg/main.py:257 ++msgid "No partitions are defined for
initcpiocfg
." ++msgstr "" ++ ++#: src/modules/initcpiocfg/main.py:261 ++msgid "No root mount point for
initcpiocfg
." ++msgstr "" ++ ++#: src/modules/initramfscfg/main.py:32 ++msgid "Configuring initramfs." ++msgstr "" ++ ++#: src/modules/localecfg/main.py:31 ++msgid "Configuring locales." ++msgstr "" ++ ++#: src/modules/mkinitfs/main.py:27 ++msgid "Creating initramfs with mkinitfs." ++msgstr "" ++ ++#: src/modules/mkinitfs/main.py:49 ++msgid "Failed to run mkinitfs on the target" ++msgstr "" ++ ++#: src/modules/mkinitfs/main.py:50 ++msgid "The exit code was {}" ++msgstr "" ++ ++#: src/modules/mount/main.py:43 ++msgid "Mounting partitions." ++msgstr "" ++ ++#: src/modules/mount/main.py:164 src/modules/mount/main.py:200 ++msgid "Internal error mounting zfs datasets" ++msgstr "" ++ ++#: src/modules/mount/main.py:176 ++msgid "Failed to import zpool" ++msgstr "" ++ ++#: src/modules/mount/main.py:192 ++msgid "Failed to unlock zpool" ++msgstr "" ++ ++#: src/modules/mount/main.py:209 src/modules/mount/main.py:214 ++msgid "Failed to set zfs mountpoint" ++msgstr "" ++ ++#: src/modules/mount/main.py:370 ++msgid "zfs mounting error" ++msgstr "" ++ ++#: src/modules/networkcfg/main.py:30 ++msgid "Saving network configuration." ++msgstr "Saving network configuration " ++ ++#: src/modules/openrcdmcryptcfg/main.py:26 ++msgid "Configuring OpenRC dmcrypt service." ++msgstr "" ++ ++#: src/modules/packages/main.py:54 src/modules/packages/main.py:65 ++#: src/modules/packages/main.py:75 ++msgid "Install packages." ++msgstr "Install packages." ++ ++#: src/modules/packages/main.py:63 ++#, python-format ++msgid "Processing packages (%(count)d / %(total)d)" ++msgstr "Processing packages (%(count)d / %(total)d)" ++ ++#: src/modules/packages/main.py:68 ++#, python-format ++msgid "Installing one package." ++msgid_plural "Installing %(num)d packages." ++msgstr[0] "Installing one package." ++msgstr[1] "Installing %(num)d packages." ++ ++#: src/modules/packages/main.py:71 ++#, python-format ++msgid "Removing one package." ++msgid_plural "Removing %(num)d packages." ++msgstr[0] "Removing one package." ++msgstr[1] "Removing %(num)d packages." ++ ++#: src/modules/packages/main.py:740 src/modules/packages/main.py:752 ++#: src/modules/packages/main.py:780 ++msgid "Package Manager error" ++msgstr "Package Manager error" ++ ++#: src/modules/packages/main.py:741 ++msgid "" ++"The package manager could not prepare updates. The command
{!s}
" ++"returned error code {!s}." ++msgstr "" ++ ++#: src/modules/packages/main.py:753 ++msgid "" ++"The package manager could not update the system. The command
{!s}
" ++" returned error code {!s}." ++msgstr "" ++ ++#: src/modules/packages/main.py:781 ++msgid "" ++"The package manager could not make changes to the installed system. The " ++"command
{!s}
returned error code {!s}." ++msgstr "" ++ ++#: src/modules/plymouthcfg/main.py:27 ++msgid "Configure Plymouth theme" ++msgstr "" ++ ++#: src/modules/rawfs/main.py:26 ++msgid "Installing data." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:29 ++msgid "Configure OpenRC services" ++msgstr "Configure OpenRC services" ++ ++#: src/modules/services-openrc/main.py:57 ++msgid "Cannot add service {name!s} to run-level {level!s}." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:59 ++msgid "Cannot remove service {name!s} from run-level {level!s}." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:61 ++msgid "" ++"Unknown service-action {arg!s} for service {name!s} in run-" ++"level {level!s}." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:93 ++msgid "Cannot modify service" ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:94 ++msgid "" ++"rc-update {arg!s} call in chroot returned error code {num!s}." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:101 ++msgid "Target runlevel does not exist" ++msgstr "Target runlevel does not exist" ++ ++#: src/modules/services-openrc/main.py:102 ++msgid "" ++"The path for runlevel {level!s} is {path!s}, which does not " ++"exist." ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:110 ++msgid "Target service does not exist" ++msgstr "" ++ ++#: src/modules/services-openrc/main.py:111 ++msgid "" ++"The path for service {name!s} is {path!s}, which does not " ++"exist." ++msgstr "" ++ ++#: src/modules/services-systemd/main.py:26 ++msgid "Configure systemd units" ++msgstr "" ++ ++#: src/modules/services-systemd/main.py:64 ++msgid "Cannot modify unit" ++msgstr "" ++ ++#: src/modules/services-systemd/main.py:65 ++msgid "" ++"systemctl {_action!s} call in chroot returned error code " ++"{_exit_code!s}." ++msgstr "" ++ ++#: src/modules/services-systemd/main.py:66 ++msgid "Cannot {_action!s} systemd unit {_name!s}." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:34 ++msgid "Filling up filesystems." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:254 ++msgid "rsync failed with error code {}." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:299 ++msgid "Unpacking image {}/{}, file {}/{}" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:314 ++msgid "Starting to unpack {}" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467 ++msgid "Failed to unpack image \"{}\"" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:430 ++msgid "No mount point for root partition" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:431 ++msgid "globalstorage does not contain a \"rootMountPoint\" key." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:434 ++msgid "Bad mount point for root partition" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:435 ++msgid "rootMountPoint is \"{}\", which does not exist." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:439 src/modules/unpackfs/main.py:455 ++#: src/modules/unpackfs/main.py:459 src/modules/unpackfs/main.py:465 ++#: src/modules/unpackfs/main.py:480 ++msgid "Bad unpackfs configuration" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:440 ++msgid "There is no configuration information." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:456 ++msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:460 ++msgid "The source filesystem \"{}\" does not exist" ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:466 ++msgid "" ++"Failed to find unsquashfs, make sure you have the squashfs-tools package " ++"installed." ++msgstr "" ++ ++#: src/modules/unpackfs/main.py:481 ++msgid "The destination \"{}\" in the target system is not a directory" ++msgstr "" ++ ++#: src/modules/zfshostid/main.py:27 ++msgid "Copying zfs generated hostid." ++msgstr "" +-- +2.43.0 + diff --git a/0003-calamares.patch b/0003-calamares.patch new file mode 100644 index 0000000000000000000000000000000000000000..e2ce5fdef21b57edcdfbe07880271258a71da420 --- /dev/null +++ b/0003-calamares.patch @@ -0,0 +1,1441 @@ +From c56fc65fc13db133e4e7190d638cad608e3b7579 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 01:04:06 +0800 +Subject: [PATCH 1/4] =?UTF-8?q?calamares=E6=96=87=E4=BB=B6=E5=A4=B9?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/calamares/CalamaresApplication.cpp | 605 ++++++++++--------- + src/calamares/CalamaresApplication.h | 128 ++-- + src/calamares/CalamaresWindow.cpp | 88 +-- + src/calamares/CalamaresWindow.h | 100 +-- + src/calamares/DebugWindow.cpp | 14 +- + src/calamares/DebugWindow.ui | 314 +++++----- + src/calamares/calamares-3.3.7.code-workspace | 11 + + 7 files changed, 646 insertions(+), 614 deletions(-) + create mode 100644 src/calamares/calamares-3.3.7.code-workspace + +diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp +index 09d3bfc..a07edad 100644 +--- a/src/calamares/CalamaresApplication.cpp ++++ b/src/calamares/CalamaresApplication.cpp +@@ -1,302 +1,303 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2018 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +-#include "CalamaresApplication.h" +- +-#include "CalamaresConfig.h" +-#include "CalamaresVersionX.h" +-#include "CalamaresWindow.h" +-#include "progresstree/ProgressTreeView.h" +- +-#include "Branding.h" +-#include "JobQueue.h" +-#include "Settings.h" +-#include "ViewManager.h" +-#include "locale/TranslationsModel.h" +-#include "modulesystem/ModuleManager.h" +-#include "utils/Dirs.h" +-#include "utils/Gui.h" +-#include "utils/Logger.h" +-#include "utils/System.h" +-#ifdef WITH_QML +-#include "utils/Qml.h" +-#endif +-#include "utils/Retranslator.h" +-#include "viewpages/ViewStep.h" +- +-#include +-#include +-#include +-#include +- +-/// @brief Convenience for "are the settings in debug mode" +-static bool +-isDebug() +-{ +- return Calamares::Settings::instance() && Calamares::Settings::instance()->debugMode(); +-} +- +-CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) +- : QApplication( argc, argv ) +- , m_mainwindow( nullptr ) +- , m_moduleManager( nullptr ) +-{ +- // Setting the organization name makes the default cache +- // directory -- where Calamares stores logs, for instance -- +- // //, so we end up with ~/.cache/Calamares/calamares/ +- // which is excessively squidly. +- // +- // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) ); +- setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) ); +- setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) ); +- setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) ); +- +- QFont f = font(); +- Calamares::setDefaultFontSize( f.pointSize() ); +-} +- +-void +-CalamaresApplication::init() +-{ +- Logger::setupLogfile(); +- cDebug() << "Calamares version:" << CALAMARES_VERSION; +- cDebug() << Logger::SubEntry << "Using Qt version:" << qVersion(); +- cDebug() << Logger::SubEntry << "Build type:" << CMAKE_BUILD_TYPE; +-#ifdef WITH_PYBIND11 +- cDebug() << Logger::SubEntry << "Using PyBind11"; +-#endif +-#ifdef WITH_BOOST_PYTHON +- cDebug() << Logger::SubEntry << "Using Boost Python"; +-#endif +- cDebug() << Logger::SubEntry << "Using settings:" << Calamares::Settings::instance()->path(); +- cDebug() << Logger::SubEntry << "Using log file:" << Logger::logFile(); +- cDebug() << Logger::SubEntry << "Languages:" << Calamares::Locale::availableLanguages(); +- +- if ( !Calamares::Settings::instance() ) +- { +- cError() << "Must create Calamares::Settings before the application."; +- ::exit( 1 ); +- } +- initQmlPath(); +- initBranding(); +- +- Calamares::installTranslator(); +- +- setQuitOnLastWindowClosed( false ); +- setWindowIcon( QIcon( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductIcon ) ) ); +- +- cDebug() << Logger::SubEntry << "STARTUP: initSettings, initQmlPath, initBranding done"; +- +- initModuleManager(); //also shows main window +- +- cDebug() << Logger::SubEntry << "STARTUP: initModuleManager: module init started"; +-} +- +-CalamaresApplication::~CalamaresApplication() +-{ +- Logger::CDebug( Logger::LOGVERBOSE ) << "Shutting down Calamares..."; +- Logger::CDebug( Logger::LOGVERBOSE ) << Logger::SubEntry << "Finished shutdown."; +-} +- +-CalamaresApplication* +-CalamaresApplication::instance() +-{ +- return qobject_cast< CalamaresApplication* >( QApplication::instance() ); +-} +- +-CalamaresWindow* +-CalamaresApplication::mainWindow() +-{ +- return m_mainwindow; +-} +- +-static QStringList +-brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename ) +-{ +- QStringList brandingPaths; +- if ( Calamares::isAppDataDirOverridden() ) +- { +- brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename ); +- } +- else +- { +- if ( assumeBuilddir ) +- { +- brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename ); +- } +- if ( Calamares::haveExtraDirs() ) +- { +- for ( auto s : Calamares::extraDataDirs() ) +- { +- brandingPaths << ( s + brandingFilename ); +- } +- } +- brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename ); +- brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename ); +- } +- +- return brandingPaths; +-} +- +-void +-CalamaresApplication::initQmlPath() +-{ +-#ifdef WITH_QML +- if ( !Calamares::initQmlModulesDir() ) +- { +- ::exit( EXIT_FAILURE ); +- } +-#endif +-} +- +-void +-CalamaresApplication::initBranding() +-{ +- QString brandingComponentName = Calamares::Settings::instance()->brandingComponentName(); +- if ( brandingComponentName.simplified().isEmpty() ) +- { +- cError() << "FATAL: branding component not set in settings.conf"; +- ::exit( EXIT_FAILURE ); +- } +- +- QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ).arg( brandingComponentName ); +- QStringList brandingFileCandidatesByPriority = brandingFileCandidates( isDebug(), brandingDescriptorSubpath ); +- +- QFileInfo brandingFile; +- bool found = false; +- +- foreach ( const QString& path, brandingFileCandidatesByPriority ) +- { +- QFileInfo pathFi( path ); +- if ( pathFi.exists() && pathFi.isReadable() ) +- { +- brandingFile = pathFi; +- found = true; +- break; +- } +- } +- +- if ( !found || !brandingFile.exists() || !brandingFile.isReadable() ) +- { +- cError() << "Cowardly refusing to continue startup without branding." +- << Logger::DebugList( brandingFileCandidatesByPriority ); +- if ( Calamares::isAppDataDirOverridden() ) +- { +- cError() << "FATAL: explicitly configured application data directory is missing" << brandingComponentName; +- } +- else +- { +- cError() << "FATAL: none of the expected branding descriptor file paths exist."; +- } +- ::exit( EXIT_FAILURE ); +- } +- +- new Calamares::Branding( brandingFile.absoluteFilePath(), this, devicePixelRatio() ); +-} +- +-void +-CalamaresApplication::initModuleManager() +-{ +- m_moduleManager = new Calamares::ModuleManager( Calamares::Settings::instance()->modulesSearchPaths(), this ); +- connect( m_moduleManager, &Calamares::ModuleManager::initDone, this, &CalamaresApplication::initView ); +- m_moduleManager->init(); +-} +- +-/** @brief centers the widget @p w on (a) screen +- * +- * This tries to duplicate the (deprecated) qApp->desktop()->availableGeometry() +- * placement by iterating over screens and putting Calamares in the first +- * one where it fits; this is *generally* the primary screen. +- * +- * With debugging, it would look something like this (2 screens attached, +- * primary at +1080+240 because I have a very strange X setup). Before +- * being mapped, the Calamares window is at +0+0 but does have a size. +- * The first screen's geometry includes the offset from the origin in +- * screen coordinates. +- * +- * Proposed window size: 1024 520 +- * Window QRect(0,0 1024x520) +- * Screen QRect(1080,240 2560x1440) +- * Moving QPoint(1848,700) +- * Screen QRect(0,0 1080x1920) +- * +- */ +-static void +-centerWindowOnScreen( QWidget* w ) +-{ +- QList< QScreen* > screens = qApp->screens(); +- QPoint windowCenter = w->rect().center(); +- QSize windowSize = w->rect().size(); +- +- for ( const auto* screen : screens ) +- { +- QSize screenSize = screen->availableGeometry().size(); +- if ( ( screenSize.width() >= windowSize.width() ) && ( screenSize.height() >= windowSize.height() ) ) +- { +- w->move( screen->availableGeometry().center() - windowCenter ); +- break; +- } +- } +-} +- +-void +-CalamaresApplication::initView() +-{ +- cDebug() << "STARTUP: initModuleManager: all modules init done"; +- initJobQueue(); +- cDebug() << "STARTUP: initJobQueue done"; +- +- m_mainwindow = new CalamaresWindow(); //also creates ViewManager +- +- connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps ); +- connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, this, &CalamaresApplication::initFailed ); +- +- QTimer::singleShot( 0, m_moduleManager, &Calamares::ModuleManager::loadModules ); +- +- if ( Calamares::Branding::instance() && Calamares::Branding::instance()->windowPlacementCentered() ) +- { +- centerWindowOnScreen( m_mainwindow ); +- } +- cDebug() << "STARTUP: CalamaresWindow created; loadModules started"; +-} +- +-void +-CalamaresApplication::initViewSteps() +-{ +- cDebug() << "STARTUP: loadModules for all modules done"; +- m_moduleManager->checkRequirements(); +- if ( Calamares::Branding::instance()->windowMaximize() ) +- { +- m_mainwindow->setWindowFlag( Qt::FramelessWindowHint ); +- m_mainwindow->showMaximized(); +- } +- else +- { +- m_mainwindow->show(); +- } +- +- cDebug() << "STARTUP: Window now visible and ProgressTreeView populated"; +- cDebug() << Logger::SubEntry << Calamares::ViewManager::instance()->viewSteps().count() << "view steps loaded."; +- Calamares::ViewManager::instance()->onInitComplete(); +-} +- +-void +-CalamaresApplication::initFailed( const QStringList& l ) +-{ +- cError() << "STARTUP: failed modules are" << l; +- m_mainwindow->show(); +-} +- +-void +-CalamaresApplication::initJobQueue() +-{ +- Calamares::JobQueue* jobQueue = new Calamares::JobQueue( this ); +- new Calamares::System( Calamares::Settings::instance()->doChroot(), this ); +- Calamares::Branding::instance()->setGlobals( jobQueue->globalStorage() ); +-} ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2018 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++#include "CalamaresApplication.h" ++ ++#include "CalamaresConfig.h" ++#include "CalamaresVersionX.h" ++#include "CalamaresWindow.h" ++#include "progresstree/ProgressTreeView.h" ++ ++#include "Branding.h" ++#include "JobQueue.h" ++#include "Settings.h" ++#include "ViewManager.h" ++#include "locale/TranslationsModel.h" ++#include "modulesystem/ModuleManager.h" ++#include "utils/Dirs.h" ++#include "utils/Gui.h" ++#include "utils/Logger.h" ++#include "utils/System.h" ++#ifdef WITH_QML ++#include "utils/Qml.h" ++#endif ++#include "utils/Retranslator.h" ++#include "viewpages/ViewStep.h" ++ ++#include ++#include ++#include ++#include ++ ++/// @brief Convenience for "are the settings in debug mode" ++static bool ++isDebug() ++{ ++ return Calamares::Settings::instance() && Calamares::Settings::instance()->debugMode(); ++} ++ ++CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) ++ : QApplication( argc, argv ) ++ , m_mainwindow( nullptr ) ++ , m_moduleManager( nullptr ) ++{ ++ // Setting the organization name makes the default cache ++ // directory -- where Calamares stores logs, for instance -- ++ // //, so we end up with ~/.cache/Calamares/calamares/ ++ // which is excessively squidly. ++ // ++ // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) ); ++ setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) ); ++ setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) ); ++ setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) ); ++ ++ QFont f = font(); ++ Calamares::setDefaultFontSize( f.pointSize() ); ++} ++ ++void ++CalamaresApplication::init() ++{ ++ Logger::setupLogfile(); ++ cDebug() << "Calamares version:" << CALAMARES_VERSION; ++ cDebug() << Logger::SubEntry << "Using Qt version:" << qVersion(); ++ cDebug() << Logger::SubEntry << "Build type:" << CMAKE_BUILD_TYPE; ++#ifdef WITH_PYBIND11 ++ cDebug() << Logger::SubEntry << "Using PyBind11"; ++#endif ++#ifdef WITH_BOOST_PYTHON ++ cDebug() << Logger::SubEntry << "Using Boost Python"; ++#endif ++ cDebug() << Logger::SubEntry << "Using settings:" << Calamares::Settings::instance()->path(); ++ cDebug() << Logger::SubEntry << "Using log file:" << Logger::logFile(); ++ cDebug() << Logger::SubEntry << "Languages:" << Calamares::Locale::availableLanguages(); ++ ++ if ( !Calamares::Settings::instance() ) ++ { ++ cError() << "Must create Calamares::Settings before the application."; ++ ::exit( 1 ); ++ } ++ initQmlPath(); ++ initBranding(); ++ ++ Calamares::installTranslator(); ++ ++ setQuitOnLastWindowClosed( false ); ++ setWindowIcon( QIcon( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductIcon ) ) ); ++ ++ cDebug() << Logger::SubEntry << "STARTUP: initSettings, initQmlPath, initBranding done"; ++ ++ initModuleManager(); //also shows main window ++ ++ cDebug() << Logger::SubEntry << "STARTUP: initModuleManager: module init started"; ++} ++ ++CalamaresApplication::~CalamaresApplication() ++{ ++ Logger::CDebug( Logger::LOGVERBOSE ) << "Shutting down Calamares..."; ++ Logger::CDebug( Logger::LOGVERBOSE ) << Logger::SubEntry << "Finished shutdown."; ++} ++ ++CalamaresApplication* ++CalamaresApplication::instance() ++{ ++ return qobject_cast< CalamaresApplication* >( QApplication::instance() ); ++} ++ ++CalamaresWindow* ++CalamaresApplication::mainWindow() ++{ ++ return m_mainwindow; ++} ++ ++static QStringList ++brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename ) ++{ ++ QStringList brandingPaths; ++ if ( Calamares::isAppDataDirOverridden() ) ++ { ++ brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename ); ++ } ++ else ++ { ++ if ( assumeBuilddir ) ++ { ++ brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename ); ++ } ++ if ( Calamares::haveExtraDirs() ) ++ { ++ for ( auto s : Calamares::extraDataDirs() ) ++ { ++ brandingPaths << ( s + brandingFilename ); ++ } ++ } ++ brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename ); ++ brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename ); ++ } ++ ++ return brandingPaths; ++} ++ ++void ++CalamaresApplication::initQmlPath() ++{ ++#ifdef WITH_QML ++ if ( !Calamares::initQmlModulesDir() ) ++ { ++ ::exit( EXIT_FAILURE ); ++ } ++#endif ++} ++ ++void ++CalamaresApplication::initBranding() ++{ ++ QString brandingComponentName = Calamares::Settings::instance()->brandingComponentName(); ++ if ( brandingComponentName.simplified().isEmpty() ) ++ { ++ cError() << "FATAL: branding component not set in settings.conf"; ++ ::exit( EXIT_FAILURE ); ++ } ++ ++ QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ).arg( brandingComponentName ); ++ QStringList brandingFileCandidatesByPriority = brandingFileCandidates( isDebug(), brandingDescriptorSubpath ); ++ cDebug() << "brandingFileCandidatesByPriority" << brandingFileCandidatesByPriority; ++ ++ QFileInfo brandingFile; ++ bool found = false; ++ ++ foreach ( const QString& path, brandingFileCandidatesByPriority ) ++ { ++ QFileInfo pathFi( path ); ++ if ( pathFi.exists() && pathFi.isReadable() ) ++ { ++ brandingFile = pathFi; ++ found = true; ++ break; ++ } ++ } ++ ++ if ( !found || !brandingFile.exists() || !brandingFile.isReadable() ) ++ { ++ cError() << "Cowardly refusing to continue startup without branding." ++ << Logger::DebugList( brandingFileCandidatesByPriority ); ++ if ( Calamares::isAppDataDirOverridden() ) ++ { ++ cError() << "FATAL: explicitly configured application data directory is missing" << brandingComponentName; ++ } ++ else ++ { ++ cError() << "FATAL: none of the expected branding descriptor file paths exist."; ++ } ++ ::exit( EXIT_FAILURE ); ++ } ++ ++ new Calamares::Branding( brandingFile.absoluteFilePath(), this, devicePixelRatio() ); ++} ++ ++void ++CalamaresApplication::initModuleManager() ++{ ++ m_moduleManager = new Calamares::ModuleManager( Calamares::Settings::instance()->modulesSearchPaths(), this ); ++ connect( m_moduleManager, &Calamares::ModuleManager::initDone, this, &CalamaresApplication::initView ); ++ m_moduleManager->init(); ++} ++ ++/** @brief centers the widget @p w on (a) screen ++ * ++ * This tries to duplicate the (deprecated) qApp->desktop()->availableGeometry() ++ * placement by iterating over screens and putting Calamares in the first ++ * one where it fits; this is *generally* the primary screen. ++ * ++ * With debugging, it would look something like this (2 screens attached, ++ * primary at +1080+240 because I have a very strange X setup). Before ++ * being mapped, the Calamares window is at +0+0 but does have a size. ++ * The first screen's geometry includes the offset from the origin in ++ * screen coordinates. ++ * ++ * Proposed window size: 1024 520 ++ * Window QRect(0,0 1024x520) ++ * Screen QRect(1080,240 2560x1440) ++ * Moving QPoint(1848,700) ++ * Screen QRect(0,0 1080x1920) ++ * ++ */ ++static void ++centerWindowOnScreen( QWidget* w ) ++{ ++ QList< QScreen* > screens = qApp->screens(); ++ QPoint windowCenter = w->rect().center(); ++ QSize windowSize = w->rect().size(); ++ ++ for ( const auto* screen : screens ) ++ { ++ QSize screenSize = screen->availableGeometry().size(); ++ if ( ( screenSize.width() >= windowSize.width() ) && ( screenSize.height() >= windowSize.height() ) ) ++ { ++ w->move( screen->availableGeometry().center() - windowCenter ); ++ break; ++ } ++ } ++} ++ ++void ++CalamaresApplication::initView() ++{ ++ cDebug() << "STARTUP: initModuleManager: all modules init done"; ++ initJobQueue(); ++ cDebug() << "STARTUP: initJobQueue done"; ++ ++ m_mainwindow = new CalamaresWindow(); //also creates ViewManager ++ ++ connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps ); ++ connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, this, &CalamaresApplication::initFailed ); ++ ++ QTimer::singleShot( 0, m_moduleManager, &Calamares::ModuleManager::loadModules ); ++ ++ if ( Calamares::Branding::instance() && Calamares::Branding::instance()->windowPlacementCentered() ) ++ { ++ centerWindowOnScreen( m_mainwindow ); ++ } ++ cDebug() << "STARTUP: CalamaresWindow created; loadModules started"; ++} ++ ++void ++CalamaresApplication::initViewSteps() ++{ ++ cDebug() << "STARTUP: loadModules for all modules done"; ++ m_moduleManager->checkRequirements(); ++ if ( Calamares::Branding::instance()->windowMaximize() ) ++ { ++ m_mainwindow->setWindowFlag( Qt::FramelessWindowHint ); ++ m_mainwindow->showMaximized(); ++ } ++ else ++ { ++ m_mainwindow->show(); ++ } ++ ++ cDebug() << "STARTUP: Window now visible and ProgressTreeView populated"; ++ cDebug() << Logger::SubEntry << Calamares::ViewManager::instance()->viewSteps().count() << "view steps loaded."; ++ Calamares::ViewManager::instance()->onInitComplete(); ++} ++ ++void ++CalamaresApplication::initFailed( const QStringList& l ) ++{ ++ cError() << "STARTUP: failed modules are" << l; ++ m_mainwindow->show(); ++} ++ ++void ++CalamaresApplication::initJobQueue() ++{ ++ Calamares::JobQueue* jobQueue = new Calamares::JobQueue( this ); ++ new Calamares::System( Calamares::Settings::instance()->doChroot(), this ); ++ Calamares::Branding::instance()->setGlobals( jobQueue->globalStorage() ); ++} +diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h +index 77cf3a0..0a99d26 100644 +--- a/src/calamares/CalamaresApplication.h ++++ b/src/calamares/CalamaresApplication.h +@@ -1,64 +1,64 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#ifndef CALAMARESAPPLICATION_H +-#define CALAMARESAPPLICATION_H +- +-#include +- +-class CalamaresWindow; +- +-namespace Calamares +-{ +-class ModuleManager; +-} // namespace Calamares +- +- +-/** +- * @brief The CalamaresApplication class extends QApplication to handle +- * Calamares startup and lifetime of main components. +- */ +-class CalamaresApplication : public QApplication +-{ +- Q_OBJECT +-public: +- CalamaresApplication( int& argc, char* argv[] ); +- ~CalamaresApplication() override; +- +- /** +- * @brief init handles the first part of Calamares application startup. +- * After the main window shows up, the latter part of the startup sequence +- * (including modules loading) happens asynchronously. +- */ +- void init(); +- static CalamaresApplication* instance(); +- +- /** +- * @brief mainWindow returns the Calamares application main window. +- */ +- CalamaresWindow* mainWindow(); +- +-private slots: +- void initView(); +- void initViewSteps(); +- void initFailed( const QStringList& l ); +- +-private: +- // Initialization steps happen in this order +- void initQmlPath(); +- void initBranding(); +- void initModuleManager(); +- void initJobQueue(); +- +- CalamaresWindow* m_mainwindow; +- Calamares::ModuleManager* m_moduleManager; +-}; +- +-#endif // CALAMARESAPPLICATION_H ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#ifndef CALAMARESAPPLICATION_H ++#define CALAMARESAPPLICATION_H ++ ++#include ++ ++class CalamaresWindow; ++ ++namespace Calamares ++{ ++class ModuleManager; ++} // namespace Calamares ++ ++ ++/** ++ * @brief The CalamaresApplication class extends QApplication to handle ++ * Calamares startup and lifetime of main components. ++ */ ++class CalamaresApplication : public QApplication ++{ ++ Q_OBJECT ++public: ++ CalamaresApplication( int& argc, char* argv[] ); ++ ~CalamaresApplication() override; ++ ++ /** ++ * @brief init handles the first part of Calamares application startup. ++ * After the main window shows up, the latter part of the startup sequence ++ * (including modules loading) happens asynchronously. ++ */ ++ void init(); ++ static CalamaresApplication* instance(); ++ ++ /** ++ * @brief mainWindow returns the Calamares application main window. ++ */ ++ CalamaresWindow* mainWindow(); ++ ++private slots: ++ void initView(); ++ void initViewSteps(); ++ void initFailed( const QStringList& l ); ++ ++private: ++ // Initialization steps happen in this order ++ void initQmlPath(); ++ void initBranding(); ++ void initModuleManager(); ++ void initJobQueue(); ++ ++ CalamaresWindow* m_mainwindow; ++ Calamares::ModuleManager* m_moduleManager; ++}; ++ ++#endif // CALAMARESAPPLICATION_H +diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp +index e1892e7..4721cb9 100644 +--- a/src/calamares/CalamaresWindow.cpp ++++ b/src/calamares/CalamaresWindow.cpp +@@ -104,20 +104,23 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug, + Calamares::ViewManager* viewManager, + QWidget* parent, + Qt::Orientation, +- int desiredWidth ) ++ int desiredWidth ++ ) + { + const Calamares::Branding* const branding = Calamares::Branding::instance(); +- ++ + QWidget* sideBox = new QWidget( parent ); + sideBox->setObjectName( "sidebarApp" ); + +- QBoxLayout* sideLayout = new QVBoxLayout; ++ QBoxLayout* sideLayout = new QHBoxLayout; ++ sideLayout->addSpacing(10); + sideBox->setLayout( sideLayout ); + // Set this attribute into qss file + sideBox->setFixedWidth( desiredWidth ); ++ sideBox->setFixedHeight( parent->height()*0.13 ); + sideBox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); + +- QHBoxLayout* logoLayout = new QHBoxLayout; ++ QBoxLayout* logoLayout = new QVBoxLayout; + sideLayout->addLayout( logoLayout ); + logoLayout->addStretch(); + QLabel* logoLabel = new QLabel( sideBox ); +@@ -132,19 +135,19 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug, + logoLabel->setPalette( plt ); + } + logoLabel->setAlignment( Qt::AlignCenter ); +- logoLabel->setFixedSize( 80, 80 ); ++ logoLabel->setFixedSize( 388*0.3, 96*0.3 ); + logoLabel->setPixmap( branding->image( Calamares::Branding::ProductLogo, logoLabel->size() ) ); +- logoLayout->addWidget( logoLabel ); ++ logoLayout->addWidget( logoLabel ,2); + logoLayout->addStretch(); +- ++ sideLayout->addSpacing(10); + ProgressTreeView* tv = new ProgressTreeView( sideBox ); + tv->setModel( viewManager ); + tv->setFocusPolicy( Qt::NoFocus ); +- sideLayout->addWidget( tv ); +- +- QHBoxLayout* extraButtons = new QHBoxLayout; +- sideLayout->addLayout( extraButtons ); ++ sideLayout->addWidget( tv ,20); + ++ QBoxLayout* extraButtons = new QVBoxLayout; ++ sideLayout->addLayout( extraButtons ,1); ++ sideLayout->addSpacing(15); + const int defaultFontHeight = Calamares::defaultFontHeight(); + + if ( /* About-Calamares Button enabled */ true ) +@@ -154,13 +157,17 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug, + aboutDialog->setIcon( Calamares::defaultPixmap( + Calamares::Information, Calamares::Original, 2 * QSize( defaultFontHeight, defaultFontHeight ) ) ); + CALAMARES_RETRANSLATE_FOR( +- aboutDialog, aboutDialog->setText( QCoreApplication::translate( "calamares-sidebar", "About", "@button" ) ); ++ aboutDialog, aboutDialog->setText( QCoreApplication::translate( "calamares-sidebar", "", "@button" ) ); + aboutDialog->setToolTip( +- QCoreApplication::translate( "calamares-sidebar", "Show information about Calamares", "@tooltip" ) ); ); ++ QCoreApplication::translate( "calamares-sidebar", "Show information about easysoftware", "@tooltip" ) ); ); + extraButtons->addWidget( aboutDialog ); + aboutDialog->setFlat( true ); + aboutDialog->setCheckable( true ); +- QObject::connect( aboutDialog, &QPushButton::clicked, debug, &Calamares::DebugWindowManager::about ); ++ QObject::connect( aboutDialog, &QPushButton::clicked, [aboutDialog,debug](){ ++ aboutDialog->setDown(false); ++ aboutDialog->setChecked(false); ++ debug->about(); ++ } ); + } + if ( debug && debug->enabled() ) + { +@@ -182,6 +189,7 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug, + } + + Calamares::unmarginLayout( sideLayout ); ++ + return sideBox; + } + +@@ -246,7 +254,8 @@ getWidgetNavigation( Calamares::DebugWindowManager*, + bottomLayout->addWidget( quit ); + } + +- bottomLayout->setContentsMargins( 0, 0, 6, 6 ); ++ ++ bottomLayout->setContentsMargins( 0, 0,40,40 ); + navigation->setLayout( bottomLayout ); + return navigation; + } +@@ -271,7 +280,7 @@ setDimension( QQuickWidget* w, Qt::Orientation o, int desiredWidth ) + // Bound between (16, 64) with a default of 48. + qreal minimumHeight = qBound( qreal( 16 ), w->rootObject() ? w->rootObject()->height() : 48, qreal( 64 ) ); + w->setMinimumHeight( int( minimumHeight ) ); +- w->setFixedHeight( int( minimumHeight ) ); ++ w->setFixedHeight( int( minimumHeight )); + } + w->setResizeMode( QQuickWidget::SizeRootObjectToView ); + } +@@ -417,7 +426,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + + // Needs to match what's checked in DebugWindow + this->setObjectName( "mainApp" ); +- ++ this->setWindowFlags(Qt::FramelessWindowHint); + QSize availableSize = desktopSize( this ); + QSize minimumSize( qBound( windowMinimumWidth, availableSize.width(), windowPreferredWidth ), + qBound( windowMinimumHeight, availableSize.height(), windowPreferredHeight ) ); +@@ -429,26 +438,26 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + + int w = qBound( minimumSize.width(), windowDimensionToPixels( brandingSizes.first ), availableSize.width() ); + int h = qBound( minimumSize.height(), windowDimensionToPixels( brandingSizes.second ), availableSize.height() ); +- +- cDebug() << Logger::SubEntry << "Proposed window size:" << w << h; +- resize( w, h ); +- +- QWidget* baseWidget = this; +- if ( !( branding->imagePath( ImageEntry::ProductWallpaper ).isEmpty() ) ) +- { +- QWidget* label = new QWidget( this ); +- QVBoxLayout* l = new QVBoxLayout; +- Calamares::unmarginLayout( l ); +- l->addWidget( label ); +- setLayout( l ); +- label->setObjectName( "backgroundWidget" ); +- label->setStyleSheet( +- QStringLiteral( "#backgroundWidget { background-image: url(%1); background-repeat: repeat-xy; }" ) ++ ++ cDebug() << Logger::SubEntry << "Proposed window size:" << w << h; ++ //resize( availableSize.width(), availableSize.height() );//通用桌面大小作为窗口大小 ++ resize( w, h );//通用桌面大小作为窗口大小 ++ QWidget* baseWidget = this; ++ if ( !( branding->imagePath( ImageEntry::ProductWallpaper ).isEmpty() ) ) ++ { ++ QWidget* label = new QWidget( this ); ++ QVBoxLayout* l = new QVBoxLayout; ++ Calamares::unmarginLayout( l ); ++ l->addWidget( label ); ++ setLayout( l ); ++ label->setObjectName( "backgroundWidget" ); ++ label->setFixedSize(availableSize.width(),h); ++ label->setStyleSheet( ++ QStringLiteral( "#backgroundWidget { background-image: url(%1); background-repeat: No repeat; }" ) + .arg( branding->imagePath( ImageEntry::ProductWallpaper ) ) ); +- ++ + baseWidget = label; + } +- + m_viewManager = Calamares::ViewManager::instance( baseWidget ); + if ( branding->windowExpands() ) + { +@@ -463,7 +472,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + // is too annoying. Instead, leave it up to ignoring-the-quit- + // event, which is also the ViewManager's responsibility. + +- QBoxLayout* mainLayout = new QHBoxLayout; ++ QBoxLayout* mainLayout = new QVBoxLayout; + QBoxLayout* contentsLayout = new QVBoxLayout; + contentsLayout->setSpacing( 0 ); + +@@ -474,7 +483,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + baseWidget, + ::getWidgetSidebar, + ::getQmlSidebar, +- qBound( 100, Calamares::defaultFontHeight() * 12, w < windowPreferredWidth ? 100 : 190 ) ); ++ qBound( w, Calamares::defaultFontHeight() * 12, w < windowPreferredWidth ? 200 : 290 )); + QWidget* navigation = flavoredWidget( branding->navigationFlavor(), + ::orientation( branding->navigationSide() ), + m_debugManager, +@@ -482,9 +491,9 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + ::getWidgetNavigation, + ::getQmlNavigation, + 64 ); +- + // Build up the contentsLayout (a VBox) top-to-bottom + // .. note that the bottom is mirrored wrt. the top ++ sideBox->resize(availableSize.width(),300); + insertIf( contentsLayout, PanelSide::Top, sideBox, branding->sidebarSide() ); + insertIf( contentsLayout, PanelSide::Top, navigation, branding->navigationSide() ); + contentsLayout->addWidget( m_viewManager->centralWidget() ); +@@ -497,7 +506,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + mainLayout->addLayout( contentsLayout ); + insertIf( mainLayout, PanelSide::Right, navigation, branding->navigationSide() ); + insertIf( mainLayout, PanelSide::Right, sideBox, branding->sidebarSide() ); +- ++ connect(m_viewManager, &Calamares::ViewManager::currentStepChanged, [ = ]( int currentStep ) { sideBox->setVisible(currentStep > 0); } ); + // layout->count() returns number of things in it; above we have put + // at **least** the central widget, which comes from the view manager, + // both vertically and horizontally -- so if there's a panel along +@@ -510,6 +519,9 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) + Calamares::unmarginLayout( contentsLayout ); + baseWidget->setLayout( mainLayout ); + setStyleSheet( Calamares::Branding::instance()->stylesheet() ); ++ cDebug()<<"<---------------------------WindowWindowSize-------------------------------------->"<size(); ++ cDebug()<< "<--------------------sideBox->size()-------------------->"<< sideBox->size(); ++ this->setFixedSize(this->size()); + } + + void +diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h +index f5dd7fe..e2a0fea 100644 +--- a/src/calamares/CalamaresWindow.h ++++ b/src/calamares/CalamaresWindow.h +@@ -1,50 +1,50 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#ifndef CALAMARESWINDOW_H +-#define CALAMARESWINDOW_H +- +-#include +- +-#include +- +-namespace Calamares +-{ +-class DebugWindowManager; +-class ViewManager; +-} // namespace Calamares +- +-/** +- * @brief The CalamaresWindow class represents the main window of the Calamares UI. +- */ +-class CalamaresWindow : public QWidget +-{ +- Q_OBJECT +-public: +- CalamaresWindow( QWidget* parent = nullptr ); +- ~CalamaresWindow() override {} +- +-public Q_SLOTS: +- /** +- * This asks the main window to grow to accomodate @p size pixels, to accomodate +- * larger-than-expected window contents. The enlargement may be silently +- * ignored. +- */ +- void ensureSize( QSize size ); +- +-protected: +- virtual void closeEvent( QCloseEvent* e ) override; +- +-private: +- Calamares::DebugWindowManager* m_debugManager = nullptr; +- Calamares::ViewManager* m_viewManager = nullptr; +-}; +- +-#endif // CALAMARESWINDOW_H ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#ifndef CALAMARESWINDOW_H ++#define CALAMARESWINDOW_H ++ ++#include ++ ++#include ++ ++namespace Calamares ++{ ++class DebugWindowManager; ++class ViewManager; ++} // namespace Calamares ++ ++/** ++ * @brief The CalamaresWindow class represents the main window of the Calamares UI. ++ */ ++class CalamaresWindow : public QWidget ++{ ++ Q_OBJECT ++public: ++ CalamaresWindow( QWidget* parent = nullptr ); ++ ~CalamaresWindow() override {} ++ ++public Q_SLOTS: ++ /** ++ * This asks the main window to grow to accomodate @p size pixels, to accomodate ++ * larger-than-expected window contents. The enlargement may be silently ++ * ignored. ++ */ ++ void ensureSize( QSize size ); ++ ++protected: ++ virtual void closeEvent( QCloseEvent* e ) override; ++ ++private: ++ Calamares::DebugWindowManager* m_debugManager = nullptr; ++ Calamares::ViewManager* m_viewManager = nullptr; ++}; ++ ++#endif // CALAMARESWINDOW_H +diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp +index 51b3fca..b28661e 100644 +--- a/src/calamares/DebugWindow.cpp ++++ b/src/calamares/DebugWindow.cpp +@@ -242,10 +242,18 @@ DebugWindowManager::about() + QMessageBox::Ok, + nullptr ); + Calamares::fixButtonLabels( &mb ); ++ mb.setStyleSheet( ++ "QMessageBox {" ++ "border: 1px solid hsl(240,2%,79%);" ++ "border-radius: 5px;" ++ "background-color: #FFFFFF;" // 设置对话框背景颜色 ++ "}" ++ ); ++ mb.setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); + mb.setIconPixmap( +- Calamares::defaultPixmap( Calamares::Squid, +- Calamares::Original, +- QSize( Calamares::defaultFontHeight() * 6, Calamares::defaultFontHeight() * 6 ) ) ); ++ Calamares::defaultPixmap( Calamares::BigLogo,//Biglogo.svg ++ Calamares::Original, ++ QSize( 321/1.9, 297/2 ) ) ); + QGridLayout* layout = reinterpret_cast< QGridLayout* >( mb.layout() ); + if ( layout ) + { +diff --git a/src/calamares/DebugWindow.ui b/src/calamares/DebugWindow.ui +index 16cc4a4..649915e 100644 +--- a/src/calamares/DebugWindow.ui ++++ b/src/calamares/DebugWindow.ui +@@ -1,157 +1,157 @@ +- +- +- +-SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> +-SPDX-License-Identifier: GPL-3.0-or-later +- +- Calamares::DebugWindow +- +- +- +- 0 +- 0 +- 962 +- 651 +- +- +- +- Form +- +- +- +- +- +- 0 +- +- +- +- GlobalStorage +- +- +- +- +- +- +- +- +- +- JobQueue +- +- +- +- +- +- +- +- +- +- Modules +- +- +- +- +- +- +- +- +- +- +- +- +- Type: +- +- +- +- +- +- +- none +- +- +- +- +- +- +- Interface: +- +- +- +- +- +- +- none +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- Crashes Calamares, so that Dr. Konqi can look at it. +- +- +- Crash now +- +- +- +- +- +- +- +- +- +- Reloads the stylesheet from the branding directory. +- +- +- Reload Stylesheet +- +- +- +- +- +- +- +- +- +- Displays the tree of widget names in the log (for stylesheet debugging). +- +- +- Widget Tree +- +- +- +- +- +- +- +- +- +- Uploads the session log to the configured pastebin. +- +- +- Send Session Log +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> ++SPDX-License-Identifier: GPL-3.0-or-later ++ ++ Calamares::DebugWindow ++ ++ ++ ++ 0 ++ 0 ++ 962 ++ 651 ++ ++ ++ ++ Form ++ ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ GlobalStorage ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ JobQueue ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Modules ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Type: ++ ++ ++ ++ ++ ++ ++ none ++ ++ ++ ++ ++ ++ ++ Interface: ++ ++ ++ ++ ++ ++ ++ none ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Crashes Calamares, so that Dr. Konqi can look at it. ++ ++ ++ Crash now ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Reloads the stylesheet from the branding directory. ++ ++ ++ Reload Stylesheet ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Displays the tree of widget names in the log (for stylesheet debugging). ++ ++ ++ Widget Tree ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Uploads the session log to the configured pastebin. ++ ++ ++ Send Session Log ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/src/calamares/calamares-3.3.7.code-workspace b/src/calamares/calamares-3.3.7.code-workspace +new file mode 100644 +index 0000000..100afc6 +--- /dev/null ++++ b/src/calamares/calamares-3.3.7.code-workspace +@@ -0,0 +1,11 @@ ++{ ++ "folders": [ ++ { ++ "path": "../../../calamares-3.3.7" ++ }, ++ { ++ "path": "../.." ++ } ++ ], ++ "settings": {} ++} +\ No newline at end of file +-- +2.43.0 + diff --git a/0004-libcalamares.patch b/0004-libcalamares.patch new file mode 100644 index 0000000000000000000000000000000000000000..8ba2080c81b2baa3323556ed58607043ea89ee5b --- /dev/null +++ b/0004-libcalamares.patch @@ -0,0 +1,165 @@ +From 0d9fb9f2b3efbd5d4ba0c4d9640bdfdb2896c999 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 01:14:31 +0800 +Subject: [PATCH 2/4] =?UTF-8?q?libcalamares=E6=96=87=E4=BB=B6=E5=A4=B9?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/libcalamares/CalamaresAbout.cpp | 15 ++++++----- + src/libcalamares/locale/TimeZone.cpp | 33 ++++++++++++++++++++++++- + src/libcalamares/locale/Translation.cpp | 14 ++++++++--- + 3 files changed, 49 insertions(+), 13 deletions(-) + +diff --git a/src/libcalamares/CalamaresAbout.cpp b/src/libcalamares/CalamaresAbout.cpp +index 4ff4435..65a1b9d 100644 +--- a/src/libcalamares/CalamaresAbout.cpp ++++ b/src/libcalamares/CalamaresAbout.cpp +@@ -14,13 +14,11 @@ + #include + + static const char s_header[] +- = QT_TRANSLATE_NOOP( "AboutData", "

%1


%2
for %3


" ); ++ = QT_TRANSLATE_NOOP( "AboutData", "

Release:%1


" ); + + static const char s_footer[] + = QT_TRANSLATE_NOOP( "AboutData", +- "Thanks to the Calamares team " +- "and the Calamares " +- "translators team." ); ++ "Thanks to the openEuler team."); + + struct Maintainer + { +@@ -40,9 +38,9 @@ struct Maintainer + }; + + static constexpr const Maintainer maintainers[] = { +- { 2014, 2017, "Teo Mrnjavac", "teo@kde.org" }, +- { 2017, 2022, "Adriaan de Groot", "groot@kde.org" }, +- { 2022, 2024, "Adriaan de Groot (community)", "groot@kde.org" }, ++ // { 2014, 2017, "Teo Mrnjavac", "teo@kde.org" }, ++ // { 2017, 2022, "Adriaan de Groot", "groot@kde.org" }, ++ // { 2022, 2024, "Adriaan de Groot (community)", "groot@kde.org" }, + }; + + static QString +@@ -59,7 +57,7 @@ aboutMaintainers() + static QString + substituteVersions( const QString& s ) + { +- return s.arg( CALAMARES_APPLICATION_NAME ).arg( CALAMARES_VERSION ); ++ return s.arg( "openEuler-24.09" ).arg(""); + } + + const QString +@@ -67,6 +65,7 @@ Calamares::aboutString() + { + return substituteVersions( QCoreApplication::translate( "AboutData", s_header ) ) + aboutMaintainers() + + QCoreApplication::translate( "AboutData", s_footer ); ++ // return aboutMaintainers()+ QCoreApplication::translate( "AboutData", s_footer ); + } + + const QString +diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp +index 0115618..8ad2525 100644 +--- a/src/libcalamares/locale/TimeZone.cpp ++++ b/src/libcalamares/locale/TimeZone.cpp +@@ -20,6 +20,17 @@ + + static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; + ++static const QVector ASIA_ZONE_FILER = { ++ "Beijing", ++ "Shanghai", ++ "Urumqi", ++ "Hong_Kong", ++ "Taipei", ++ "Singapore", ++ "Vientiane", ++ "Tokyo" ++}; ++ + namespace Calamares + { + namespace Locale +@@ -96,6 +107,15 @@ RegionData::translated() const + return QObject::tr( m_human, "tz_regions" ); + } + ++bool containsQString(const QVector& vec, const QString& str) { ++ for (const QString& item : vec) { ++ if (item == str) { ++ return true; ++ } ++ } ++ return false; ++} ++ + static void + loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) + { +@@ -137,6 +157,12 @@ loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) + { + continue; + } ++ // NOTE: Taking into account ease of use, filtering zone in Asia. ++ if (region == "Asia") { ++ if (!containsQString(ASIA_ZONE_FILER, zone)) { ++ continue; ++ } ++ } + + QString position = list.at( 1 ); + int cooSplitPos = position.indexOf( QRegularExpression( "[-+]" ), 1 ); +@@ -166,7 +192,12 @@ loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) + { + regions.append( new RegionData( region ) ); + } +- zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) ); ++ QString adjustedZone = zone; ++ if(zone == "Hong_Kong" || zone == "Taipei" || zone == "Macau") ++ { ++ adjustedZone += "(China)"; ++ } ++ zones.append( new TimeZoneData( region, adjustedZone, countryCode, latitude, longitude ) ); + } + } + +diff --git a/src/libcalamares/locale/Translation.cpp b/src/libcalamares/locale/Translation.cpp +index 49e4c05..e5b3402 100644 +--- a/src/libcalamares/locale/Translation.cpp ++++ b/src/libcalamares/locale/Translation.cpp +@@ -167,8 +167,8 @@ Translation::Translation( const Id& localeId, LabelFormat format, QObject* paren + [ &localeId ]( const TranslationSpecialCase& s ) { return localeId.name == s.id; } ); + const char* name = ( it != std::cend( special_cases ) ) ? it->name : nullptr; + +- QString longFormat = QObject::tr( "%1 (%2)" ); +- ++ // QString longFormat = QObject::tr( "%1 (%2)" ); ++ QString longFormat = QObject::tr( "%1" ); + QString languageName = name ? QString::fromUtf8( name ) : m_locale.nativeLanguageName(); + QString englishName = m_locale.languageToString( m_locale.language() ); + +@@ -181,9 +181,15 @@ Translation::Translation( const Id& localeId, LabelFormat format, QObject* paren + || ( !name && localeId.name.contains( '_' ) + && QLocale::countriesForLanguage( m_locale.language() ).count() > 1 ); + QString countryName = needsCountryName ? m_locale.nativeCountryName() : QString(); ++ if (countryName == "台灣") { ++ countryName = "中國台灣"; ++ } ++ ++ // m_label = needsCountryName ? longFormat.arg( languageName, countryName ) : languageName; + m_label = needsCountryName ? longFormat.arg( languageName, countryName ) : languageName; +- m_englishLabel = needsCountryName ? longFormat.arg( englishName, QLocale::countryToString( m_locale.country() ) ) +- : englishName; ++ // m_englishLabel = needsCountryName ? longFormat.arg( englishName, QLocale::countryToString( m_locale.country() ) ) ++ // : englishName; ++ m_englishLabel = englishName; + } + + QLocale +-- +2.43.0 + diff --git a/0005-libcalamaresui.patch b/0005-libcalamaresui.patch new file mode 100644 index 0000000000000000000000000000000000000000..bb77da336fefbb10e2dd7f820b7dc24fed6a3c40 --- /dev/null +++ b/0005-libcalamaresui.patch @@ -0,0 +1,246 @@ +From 7a3011e5efe45680acac9ad3f2493a5bed5ce85f Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 01:23:08 +0800 +Subject: [PATCH 3/4] =?UTF-8?q?libcalamaresui=E6=96=87=E4=BB=B6=E5=A4=B9?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/libcalamaresui/Branding.h | 3 +- + src/libcalamaresui/ViewManager.cpp | 54 +++++++++++++++---- + src/libcalamaresui/ViewManager.h | 5 +- + src/libcalamaresui/libcalamaresui.qrc | 2 + + src/libcalamaresui/utils/Gui.cpp | 6 ++- + src/libcalamaresui/utils/Gui.h | 5 +- + .../viewpages/ExecutionViewStep.cpp | 3 +- + 7 files changed, 63 insertions(+), 15 deletions(-) + +diff --git a/src/libcalamaresui/Branding.h b/src/libcalamaresui/Branding.h +index 3fffa02..e374fa1 100644 +--- a/src/libcalamaresui/Branding.h ++++ b/src/libcalamaresui/Branding.h +@@ -68,7 +68,8 @@ public: + ProductIcon, + ProductLogo, + ProductWallpaper, +- ProductWelcome ++ ProductWelcome, ++ welcomebackground + }; + Q_ENUM( ImageEntry ) + +diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp +index 2fd7f45..1e097b5 100644 +--- a/src/libcalamaresui/ViewManager.cpp ++++ b/src/libcalamaresui/ViewManager.cpp +@@ -21,6 +21,7 @@ + #include "utils/Paste.h" + #include "utils/Retranslator.h" + #include "utils/String.h" ++#include "utils/Gui.h" + #include "viewpages/BlankViewStep.h" + #include "viewpages/ExecutionViewStep.h" + #include "viewpages/ViewStep.h" +@@ -34,6 +35,7 @@ + #include + #include + #include ++#include + + #define UPDATE_BUTTON_PROPERTY( name, value ) \ + do \ +@@ -220,7 +222,7 @@ ViewManager::onInitComplete() + m_steps.first()->onActivate(); + } + +- emit currentStepChanged(); ++ emit currentStepChanged(m_currentStep); + } + + void +@@ -368,7 +370,7 @@ ViewManager::next() + { + m_steps.at( m_currentStep )->onActivate(); + executing = qobject_cast< ExecutionViewStep* >( m_steps.at( m_currentStep ) ) != nullptr; +- emit currentStepChanged(); ++ emit currentStepChanged(m_currentStep); + } + else + { +@@ -466,7 +468,7 @@ ViewManager::back() + m_stack->setCurrentIndex( m_currentStep ); + step->onLeave(); + m_steps.at( m_currentStep )->onActivate(); +- emit currentStepChanged(); ++ emit currentStepChanged(m_currentStep); + } + else if ( !step->isAtBeginning() ) + { +@@ -486,6 +488,20 @@ ViewManager::back() + updateButtonLabels(); + } + ++void ++ViewManager::restartInstallation() ++{ ++ QString restartNowCommand = QStringLiteral( "shutdown -r now" ); ++ QProcess::execute( "/bin/sh", { "-c", restartNowCommand } ); ++} ++ ++void ++ViewManager::startDebugTerminal() ++{ ++ //QProcess::startDetached("/bin/bash", QStringList()); ++ QApplication::quit(); ++} ++ + void + ViewManager::quit() + { +@@ -524,13 +540,33 @@ ViewManager::confirmCancelInstallation() + QString title = settings->isSetupMode() ? tr( "Cancel Setup?", "@title" ) : tr( "Cancel Installation?", "@title" ); + QString question = settings->isSetupMode() ? tr( "Do you really want to cancel the current setup process?\n" + "The setup program will quit and all changes will be lost." ) +- : tr( "Do you really want to cancel the current install process?\n" +- "The installer will quit and all changes will be lost." ); +- QMessageBox mb( QMessageBox::Question, title, question, QMessageBox::Yes | QMessageBox::No, m_widget ); +- mb.setDefaultButton( QMessageBox::No ); ++ : tr( "Do you really want to cancel the current installation process?\n" ++ "The system will reboot or you can enter the debug mode for further investigation." ); ++ QMessageBox mb( QMessageBox::Question, title, question, QMessageBox::NoButton, m_widget ); ++ QPushButton* rebootButton = mb.addButton( tr( "&Reboot", "@button" ), QMessageBox::ActionRole ); ++ QPushButton* debugButton = mb.addButton( tr( "&Try Now", "@button" ), QMessageBox::ActionRole ); ++ QPushButton* cancelButton = mb.addButton( QMessageBox::Cancel ); ++ mb.setIconPixmap( ++ Calamares::defaultPixmap( Calamares::BigLogo,//Biglogo.svgz ++ Calamares::Original, ++ QSize( 321/5, 297/5 ) )); ++ mb.setDefaultButton( cancelButton ); ++ mb.setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); + Calamares::fixButtonLabels( &mb ); +- int response = mb.exec(); +- return response == QMessageBox::Yes; ++ ++ mb.exec(); ++ ++ if ( mb.clickedButton() == rebootButton ) ++ { ++ restartInstallation(); ++ return false; ++ } ++ else if ( mb.clickedButton() == debugButton ) ++ { ++ startDebugTerminal(); ++ return true; ++ } ++ return false; + } + + void +diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h +index 5a449a1..da9e9bd 100644 +--- a/src/libcalamaresui/ViewManager.h ++++ b/src/libcalamaresui/ViewManager.h +@@ -87,6 +87,9 @@ public: + */ + ViewStepList viewSteps() const; + ++ void restartInstallation(); ++ void startDebugTerminal(); ++ + /** + * @brief currentStep returns the currently active ViewStep, i.e. the ViewStep + * which owns the currently visible view page. +@@ -213,7 +216,7 @@ public Q_SLOTS: + QString logFilePath() const; + + signals: +- void currentStepChanged(); ++ void currentStepChanged(int m_currentStep); + void ensureSize( QSize size ) const; // See ViewStep::ensureSize() + void cancelEnabled( bool enabled ) const; + +diff --git a/src/libcalamaresui/libcalamaresui.qrc b/src/libcalamaresui/libcalamaresui.qrc +index 62a7df2..ddb197d 100644 +--- a/src/libcalamaresui/libcalamaresui.qrc ++++ b/src/libcalamaresui/libcalamaresui.qrc +@@ -24,5 +24,7 @@ + ../../data/images/state-ok.svg + ../../data/images/state-warning.svg + ../../data/images/state-error.svg ++ ../../data/images/Biglogo.svg ++ ../../data/images/Biglogo.svgz + + +diff --git a/src/libcalamaresui/utils/Gui.cpp b/src/libcalamaresui/utils/Gui.cpp +index 57f67ae..3915cb7 100644 +--- a/src/libcalamaresui/utils/Gui.cpp ++++ b/src/libcalamaresui/utils/Gui.cpp +@@ -101,7 +101,7 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) + break; + + case Squid: +- pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/squid.svg", size ); ++ pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/Biglogo.svg", size ); + break; + + case StatusOk: +@@ -115,6 +115,10 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) + case StatusError: + pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/state-error.svg", size ); + break; ++ ++ case BigLogo: ++ pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/Biglogo.svgz", size ); ++ break; + } + + if ( pixmap.isNull() ) +diff --git a/src/libcalamaresui/utils/Gui.h b/src/libcalamaresui/utils/Gui.h +index 1264bc1..947be64 100644 +--- a/src/libcalamaresui/utils/Gui.h ++++ b/src/libcalamaresui/utils/Gui.h +@@ -50,7 +50,8 @@ enum ImageType : int + Squid, + StatusOk, // Icons for the requirements checker + StatusWarning, +- StatusError ++ StatusError, ++ BigLogo + }; + + /** +@@ -94,7 +95,7 @@ UIDLLEXPORT QSize defaultIconSize(); + */ + constexpr int windowMinimumWidth = 800; + constexpr int windowMinimumHeight = 520; +-constexpr int windowPreferredWidth = 1024; ++constexpr int windowPreferredWidth = 912; + constexpr int windowPreferredHeight = 520; + + } // namespace Calamares +diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +index 71ea85b..c34d308 100644 +--- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp ++++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + static Calamares::Slideshow* + makeSlideshow( QWidget* parent ) +@@ -101,7 +102,7 @@ ExecutionViewStep::ExecutionViewStep( QObject* parent ) + Branding::instance()->image( + { "utilities-log-viewer", "utilities-terminal", "text-x-log", "text-x-changelog", "preferences-log" }, + QSize( 32, 32 ) ), +- "Toggle log" ); ++ QCoreApplication::translate("Calamares::ExecutionViewStep","Toggle log" ) ); + auto toggleLogButton = dynamic_cast< QToolButton* >( toolBar->widgetForAction( toggleLogAction ) ); + connect( toggleLogButton, &QToolButton::clicked, this, &ExecutionViewStep::toggleLog ); + +-- +2.43.0 + diff --git a/0006-modules-file.patch b/0006-modules-file.patch new file mode 100644 index 0000000000000000000000000000000000000000..d7473eaa46201d24be087139a7cadaada19487f9 --- /dev/null +++ b/0006-modules-file.patch @@ -0,0 +1,2819 @@ +From 572a273a33d05cb2811df32bccd361e3b99a7c61 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 02:44:45 +0800 +Subject: [PATCH 4/4] modules Commit without .png, .svg, and .svgz files + +--- + src/modules/bootloader/bootloader.conf | 8 +- + src/modules/bootloader/main.py | 45 +- + src/modules/fstab/main.py | 0 + src/modules/initcpiocfg/initcpiocfg.conf | 2 +- + src/modules/initramfscfg/encrypt_hook | 0 + src/modules/initramfscfg/encrypt_hook_nokey | 0 + src/modules/keyboard/KeyboardPage.cpp | 39 +- + src/modules/keyboard/KeyboardPage.ui | 4 +- + src/modules/locale/Config.cpp | 14 + + src/modules/locale/Config.h | 4 + + src/modules/locale/LocalePage.cpp | 54 +- + src/modules/locale/LocalePage.h | 1 + + src/modules/locale/SetTimezoneJob.cpp | 4 + + src/modules/locale/locale.conf | 6 +- + src/modules/localeq/localeq.conf | 2 +- + src/modules/mount/mount.conf | 9 + + src/modules/packagechooser/Config.cpp | 2 +- + .../packagechooser/PackageChooserPage.cpp | 24 +- + .../packagechooser/packagechooser.conf | 41 +- + src/modules/packagechooser/packagechooser.qrc | 6 + + src/modules/packages/main.py | 132 +++- + src/modules/packages/packages.conf | 37 +- + src/modules/partition/PartitionViewStep.cpp | 3 +- + src/modules/partition/gui/BootInfoWidget.cpp | 10 +- + src/modules/partition/gui/ChoicePage.cpp | 10 +- + .../partition/gui/DeviceInfoWidget.cpp | 13 +- + src/modules/partition/gui/EncryptWidget.cpp | 2 +- + src/modules/summary/SummaryPage.cpp | 9 +- + src/modules/umount/UmountJob.cpp | 23 + + src/modules/unpackfs/main.py | 82 +- + src/modules/unpackfs/unpackfs.conf | 12 +- + src/modules/users/UsersPage.cpp | 2 +- + src/modules/users/page_usersetup.bak.ui | 710 ++++++++++++++++++ + src/modules/users/page_usersetup.ui | 158 ++-- + src/modules/users/users.conf | 2 +- + src/modules/welcome/Config.cpp | 3 +- + src/modules/welcome/WelcomePage.cpp | 143 ++-- + src/modules/welcome/WelcomePage.ui | 73 +- + .../welcome/checker/ResultsListWidget.cpp | 20 +- + src/modules/welcome/welcome.conf | 6 +- + src/modules/welcome/welcome.qrc | 10 +- + src/modules/welcomeq/welcomeq.conf | 2 +- + 43 files changed, 1392 insertions(+), 340 deletions(-) + mode change 100755 => 100644 src/modules/fstab/main.py + mode change 100755 => 100644 src/modules/initramfscfg/encrypt_hook + mode change 100755 => 100644 src/modules/initramfscfg/encrypt_hook_nokey + create mode 100644 src/modules/users/page_usersetup.bak.ui + + +diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf +index 9679f66..acaf424 100644 +--- a/src/modules/bootloader/bootloader.conf ++++ b/src/modules/bootloader/bootloader.conf +@@ -41,10 +41,10 @@ kernelParams: [ "quiet" ] + # GRUB functionality (notably grub-probe) to work. As needed, you may use + # complete paths like `/usr/bin/efibootmgr` for the executables. + # +-grubInstall: "grub-install" +-grubMkconfig: "grub-mkconfig" +-grubCfg: "/boot/grub/grub.cfg" +-grubProbe: "grub-probe" ++grubInstall: "grub2-install" ++grubMkconfig: "grub2-mkconfig" ++grubCfg: "/boot/grub2/grub.cfg" ++grubProbe: "grub2-probe" + efiBootMgr: "efibootmgr" + + # Optionally set the bootloader ID to use for EFI. This is passed to +diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py +index 0a9e965..570fc87 100644 +--- a/src/modules/bootloader/main.py ++++ b/src/modules/bootloader/main.py +@@ -25,7 +25,7 @@ import os + import re + import shutil + import subprocess +- ++import platform + import libcalamares + + from libcalamares.utils import check_target_env_call +@@ -567,7 +567,6 @@ def get_grub_efi_parameters(): + set for the current machine. May return unsuitable values if the + host architecture is unknown (e.g. defaults to x86_64). + """ +- import platform + efi_bitness = efi_word_size() + cpu_type = platform.machine() + +@@ -594,6 +593,8 @@ def run_grub_mkconfig(partitions, output_file): + :param output_file: A string containing the path to the generating grub config file + :return: + """ ++ fw_type = libcalamares.globalstorage.value("firmwareType") ++ efi_directory = libcalamares.globalstorage.value("efiSystemPartition") + + # zfs needs an environment variable set for grub-mkconfig + if any([is_zfs_root(partition) for partition in partitions]): +@@ -602,7 +603,14 @@ def run_grub_mkconfig(partitions, output_file): + else: + # The input file /etc/default/grub should already be filled out by the + # grubcfg job module. +- check_target_env_call([libcalamares.job.configuration["grubMkconfig"], "-o", output_file]) ++ if fw_type == "efi": ++ assert efi_directory is not None ++ efi_bootloader_id = efi_label(efi_directory) ++ check_target_env_call([libcalamares.job.configuration["grubMkconfig"], ++ "-o", os.path.join(efi_directory, "EFI", ++ efi_bootloader_id, "grub.cfg")]) ++ else: ++ check_target_env_call([libcalamares.job.configuration["grubMkconfig"], "-o", output_file]) + + + def run_grub_install(fw_type, partitions, efi_directory): +@@ -614,6 +622,9 @@ def run_grub_install(fw_type, partitions, efi_directory): + :param efi_directory: The path of the efi directory relative to the root of the install + :return: + """ ++ cpu_type = platform.machine() ++ ++ installation_root_path = libcalamares.globalstorage.value("rootMountPoint") + + is_zfs = any([is_zfs_root(partition) for partition in partitions]) + +@@ -631,11 +642,29 @@ def run_grub_install(fw_type, partitions, efi_directory): + + " --target=" + efi_target + " --efi-directory=" + efi_directory + + " --bootloader-id=" + efi_bootloader_id + " --force"]) + else: +- check_target_env_call([libcalamares.job.configuration["grubInstall"], +- "--target=" + efi_target, +- "--efi-directory=" + efi_directory, +- "--bootloader-id=" + efi_bootloader_id, +- "--force"]) ++ install_efi_directory = installation_root_path + efi_directory ++ ++ efi_disk = subprocess.check_output([ ++ libcalamares.job.configuration["grubProbe"], ++ "-t", "disk", "--device-map=", install_efi_directory]).decode("ascii").strip() ++ if cpu_type == "aarch64": ++ check_target_env_call([ ++ "efibootmgr", ++ "--create", ++ "--disk", efi_disk, ++ "--part", "1", ++ "--label", "shim", ++ "--loader", "/EFI/openEuler/shimaa64.efi" ++ ]) ++ else: ++ check_target_env_call([ ++ "efibootmgr", ++ "--create", ++ "--disk", efi_disk, ++ "--part", "1", ++ "--label", "shim", ++ "--loader", "/EFI/openEuler/shimx64.efi" ++ ]) + else: + assert efi_directory is None + if libcalamares.globalstorage.value("bootLoader") is None: +diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py +old mode 100755 +new mode 100644 +diff --git a/src/modules/initcpiocfg/initcpiocfg.conf b/src/modules/initcpiocfg/initcpiocfg.conf +index a660393..549157c 100644 +--- a/src/modules/initcpiocfg/initcpiocfg.conf ++++ b/src/modules/initcpiocfg/initcpiocfg.conf +@@ -35,4 +35,4 @@ hooks: + # does not match the target in a useful way. If unset or + # empty, defaults to /etc/mkinitcpio.conf + # +-source: "/etc/mkinitcpio.conf" ++source: "/etc/dracut.conf" +diff --git a/src/modules/initramfscfg/encrypt_hook b/src/modules/initramfscfg/encrypt_hook +old mode 100755 +new mode 100644 +diff --git a/src/modules/initramfscfg/encrypt_hook_nokey b/src/modules/initramfscfg/encrypt_hook_nokey +old mode 100755 +new mode 100644 +diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp +index dbb80c6..3f06158 100644 +--- a/src/modules/keyboard/KeyboardPage.cpp ++++ b/src/modules/keyboard/KeyboardPage.cpp +@@ -43,13 +43,14 @@ LayoutItem::~LayoutItem() {} + KeyboardPage::KeyboardPage( Config* config, QWidget* parent ) + : QWidget( parent ) + , ui( new Ui::Page_Keyboard ) +- , m_keyboardPreview( new KeyBoardPreview( this ) ) ++ , m_keyboardPreview( nullptr ) + , m_config( config ) + { + ui->setupUi( this ); +- ++ this->setContentsMargins(50,0,50,0); + // Keyboard Preview +- ui->KBPreviewLayout->addWidget( m_keyboardPreview ); ++ // ui->KBPreviewLayout->addWidget( m_keyboardPreview ); ++ + + { + auto* model = config->keyboardModels(); +@@ -92,27 +93,27 @@ KeyboardPage::KeyboardPage( Config* config, QWidget* parent ) + &QItemSelectionModel::currentChanged, + [ this ]( const QModelIndex& current ) + { m_config->keyboardLayouts()->setCurrentIndex( current.row() ); } ); +- connect( config->keyboardLayouts(), +- &KeyboardLayoutModel::currentIndexChanged, +- [ this ]( int index ) +- { +- ui->layoutSelector->setCurrentIndex( m_config->keyboardLayouts()->index( index ) ); +- m_keyboardPreview->setLayout( m_config->keyboardLayouts()->key( index ) ); +- m_keyboardPreview->setVariant( +- m_config->keyboardVariants()->key( m_config->keyboardVariants()->currentIndex() ) ); +- } ); ++ // connect( config->keyboardLayouts(), ++ // &KeyboardLayoutModel::currentIndexChanged, ++ // [ this ]( int index ) ++ // { ++ // ui->layoutSelector->setCurrentIndex( m_config->keyboardLayouts()->index( index ) ); ++ // m_keyboardPreview->setLayout( m_config->keyboardLayouts()->key( index ) ); ++ // m_keyboardPreview->setVariant( ++ // m_config->keyboardVariants()->key( m_config->keyboardVariants()->currentIndex() ) ); ++ // } ); + + connect( ui->variantSelector->selectionModel(), + &QItemSelectionModel::currentChanged, + [ this ]( const QModelIndex& current ) + { m_config->keyboardVariants()->setCurrentIndex( current.row() ); } ); +- connect( config->keyboardVariants(), +- &KeyboardVariantsModel::currentIndexChanged, +- [ this ]( int index ) +- { +- ui->variantSelector->setCurrentIndex( m_config->keyboardVariants()->index( index ) ); +- m_keyboardPreview->setVariant( m_config->keyboardVariants()->key( index ) ); +- } ); ++ // connect( config->keyboardVariants(), ++ // &KeyboardVariantsModel::currentIndexChanged, ++ // [ this ]( int index ) ++ // { ++ // ui->variantSelector->setCurrentIndex( m_config->keyboardVariants()->index( index ) ); ++ // m_keyboardPreview->setVariant( m_config->keyboardVariants()->key( index ) ); ++ // } ); + + connect( ui->groupSelector, + QOverload< int >::of( &QComboBox::currentIndexChanged ), +diff --git a/src/modules/keyboard/KeyboardPage.ui b/src/modules/keyboard/KeyboardPage.ui +index e131e5c..1d6afbf 100644 +--- a/src/modules/keyboard/KeyboardPage.ui ++++ b/src/modules/keyboard/KeyboardPage.ui +@@ -45,9 +45,9 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- ++ + + + +diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp +index 8fa17a7..0d70ff3 100644 +--- a/src/modules/locale/Config.cpp ++++ b/src/modules/locale/Config.cpp +@@ -305,6 +305,7 @@ Config::setCurrentLocation( const Calamares::Locale::TimeZoneData* location ) + m_selectedLocaleConfiguration.lc_identification = newLocale.lc_identification; + + emit currentLCStatusChanged( currentLCStatus() ); ++ emit currentZoneChanged( currentTimeZoneStatus() ); + } + emit currentLocationChanged( m_currentLocation ); + // Other signals come from the LocationChanged signal +@@ -370,6 +371,7 @@ Config::setLCLocaleExplicitly( const QString& locale ) + m_selectedLocaleConfiguration.explicit_lc = true; + + emit currentLCStatusChanged( currentLCStatus() ); ++ emit currentZoneChanged( currentTimeZoneStatus() ); + emit currentLCCodeChanged( currentLCCode() ); + } + +@@ -424,6 +426,18 @@ Config::currentLCStatus() const + .arg( localeLabel( m_selectedLocaleConfiguration.lc_numeric ) ); + } + ++QString ++Config::currentTimeZoneStatus() const ++{ ++ QString zone = m_currentLocation->zone(); ++ if(zone == "Hong_Kong(China)") ++ { ++ zone = "Hong Kong(China)"; ++ } ++ return tr("The timezone will be set to %1.","@info") ++ .arg( zone ); ++} ++ + QString + Config::prettyStatus() const + { +diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h +index a26d25a..6a8bea1 100644 +--- a/src/modules/locale/Config.h ++++ b/src/modules/locale/Config.h +@@ -34,6 +34,7 @@ class Config : public QObject + + // Status are complete, human-readable, messages + Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) ++ Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentZoneChanged) + Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged ) + Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged ) + // Name are shorter human-readable names +@@ -72,6 +73,8 @@ public: + /// The human-readable summary of what the module will do + QString prettyStatus() const; + ++ QString currentTimeZoneStatus() const; ++ + // A long list of locale codes (e.g. en_US.UTF-8) + const QStringList& supportedLocales() const { return m_localeGenLines; } + // All the regions (Africa, America, ...) +@@ -139,6 +142,7 @@ signals: + void currentLCCodeChanged( const QString& ) const; + void currentTimezoneCodeChanged( const QString& ) const; + void currentTimezoneNameChanged( const QString& ) const; ++ void currentZoneChanged( const QString&) const; + + private: + /// A list of supported locale identifiers (e.g. "en_US.UTF-8") +diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp +index e74373a..0568067 100644 +--- a/src/modules/locale/LocalePage.cpp ++++ b/src/modules/locale/LocalePage.cpp +@@ -31,20 +31,21 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) + , m_blockTzWidgetSet( false ) + { + QBoxLayout* mainLayout = new QVBoxLayout; +- +- QBoxLayout* tzwLayout = new QHBoxLayout; +- m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this ); +- tzwLayout->addStretch(); +- tzwLayout->addWidget( m_tzWidget ); +- tzwLayout->addStretch(); ++ mainLayout->setContentsMargins(50,0,50,0); ++ //QBoxLayout* tzwLayout = new QHBoxLayout; ++ //m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this ); ++ //tzwLayout->addStretch(); ++ //tzwLayout->addWidget( m_tzWidget ); ++ //tzwLayout->addStretch(); + // Adjust for margins and spacing in this page +- m_tzWidget->setMinimumHeight( m_tzWidget->minimumHeight() + 12 ); // 2 * spacing ++ //m_tzWidget->setMinimumHeight( m_tzWidget->minimumHeight() + 12 ); // 2 * spacing + +- QBoxLayout* zoneAndRegionLayout = new QHBoxLayout; ++ QBoxLayout* zoneAndRegionLayout = new QVBoxLayout; + m_regionLabel = new QLabel( this ); + zoneAndRegionLayout->addWidget( m_regionLabel ); + + m_regionCombo = new QComboBox( this ); ++ m_regionCombo->setFixedSize(400,30); + zoneAndRegionLayout->addWidget( m_regionCombo ); + m_regionCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + m_regionLabel->setBuddy( m_regionCombo ); +@@ -52,9 +53,11 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) + zoneAndRegionLayout->addSpacing( 20 ); + + m_zoneLabel = new QLabel( this ); ++ + zoneAndRegionLayout->addWidget( m_zoneLabel ); + + m_zoneCombo = new QComboBox( this ); ++ m_zoneCombo->setFixedSize(400,30); + m_zoneCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + zoneAndRegionLayout->addWidget( m_zoneCombo ); + m_zoneLabel->setBuddy( m_zoneCombo ); +@@ -65,10 +68,17 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) + m_localeLabel->setWordWrap( true ); + m_localeLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + localeLayout->addWidget( m_localeLabel ); +- + m_localeChangeButton = new QPushButton( this ); + m_localeChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + localeLayout->addWidget( m_localeChangeButton ); ++ localeLayout->addSpacing(20); ++ ++ QBoxLayout* timezoneLayout = new QHBoxLayout; ++ m_timezoneLabel = new QLabel( this ); ++ m_timezoneLabel->setWordWrap( true ); ++ m_timezoneLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); ++ timezoneLayout->addWidget( m_timezoneLabel ); ++ timezoneLayout->addSpacing( 20 ); + + QBoxLayout* formatsLayout = new QHBoxLayout; + m_formatsLabel = new QLabel( this ); +@@ -79,16 +89,22 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) + m_formatsChangeButton = new QPushButton( this ); + m_formatsChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + formatsLayout->addWidget( m_formatsChangeButton ); +- +- mainLayout->addLayout( tzwLayout ); ++ formatsLayout->addSpacing(20); ++ //mainLayout->addLayout( tzwLayout ); + mainLayout->addStretch(); + mainLayout->addLayout( zoneAndRegionLayout ); + mainLayout->addStretch(); + mainLayout->addLayout( localeLayout ); ++ mainLayout->addSpacing(20); + mainLayout->addLayout( formatsLayout ); +- setMinimumWidth( m_tzWidget->width() ); ++ mainLayout->addSpacing(20); ++ mainLayout->addLayout( timezoneLayout ); ++ mainLayout->addStretch(); ++ //setMinimumWidth( m_tzWidget->width() ); + setLayout( mainLayout ); + ++ m_localeChangeButton->hide(); ++ m_formatsChangeButton->hide(); + // Set up the location before connecting signals, to avoid a signal + // storm as various parts interact. + { +@@ -98,18 +114,19 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) + zones->setRegion( location->region() ); + m_regionCombo->setModel( regions ); + m_zoneCombo->setModel( zones ); +- m_tzWidget->setCurrentLocation( location ); ++ //m_tzWidget->setCurrentLocation( location ); + locationChanged( location ); // doesn't inform TZ widget + } + + connect( config, &Config::currentLCStatusChanged, m_formatsLabel, &QLabel::setText ); + connect( config, &Config::currentLanguageStatusChanged, m_localeLabel, &QLabel::setText ); +- connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); ++ connect( config, &Config::currentZoneChanged, m_timezoneLabel , &QLabel::setText); ++ //connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); + connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); +- connect( m_tzWidget, +- &TimeZoneWidget::locationChanged, +- config, +- QOverload< const Calamares::Locale::TimeZoneData* >::of( &Config::setCurrentLocation ) ); ++ // connect( m_tzWidget, ++ // &TimeZoneWidget::locationChanged, ++ // config, ++ // QOverload< const Calamares::Locale::TimeZoneData* >::of( &Config::setCurrentLocation ) ); + + connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged ); + connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged ); +@@ -133,6 +150,7 @@ LocalePage::updateLocaleLabels() + m_formatsChangeButton->setText( tr( "&Change…", "@button" ) ); + m_localeLabel->setText( m_config->currentLanguageStatus() ); + m_formatsLabel->setText( m_config->currentLCStatus() ); ++ m_timezoneLabel->setText( m_config->currentTimeZoneStatus()) ; + } + + +diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h +index 66502e6..b5fb06d 100644 +--- a/src/modules/locale/LocalePage.h ++++ b/src/modules/locale/LocalePage.h +@@ -58,6 +58,7 @@ private: + QPushButton* m_localeChangeButton; + QLabel* m_formatsLabel; + QPushButton* m_formatsChangeButton; ++ QLabel* m_timezoneLabel; + + + bool m_blockTzWidgetSet; +diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp +index 3d88bd0..2a586f7 100644 +--- a/src/modules/locale/SetTimezoneJob.cpp ++++ b/src/modules/locale/SetTimezoneJob.cpp +@@ -50,6 +50,10 @@ SetTimezoneJob::exec() + + QString localtimeSlink( "/etc/localtime" ); + QString zoneinfoPath( "/usr/share/zoneinfo" ); ++ if(m_zone.contains("(China)")) ++ { ++ m_zone.remove("(China)"); ++ } + zoneinfoPath.append( QDir::separator() + m_region ); + zoneinfoPath.append( QDir::separator() + m_zone ); + +diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf +index 4463f7a..028071f 100644 +--- a/src/modules/locale/locale.conf ++++ b/src/modules/locale/locale.conf +@@ -17,8 +17,8 @@ + # Note that useSystemTimezone and GeoIP settings can change the + # starting time zone. + # +-region: "America" +-zone: "New_York" ++region: "Asia" ++zone: "Beijing" + + # Instead of using *region* and *zone* specified above, + # you can use the system's notion of the timezone, instead. +@@ -117,7 +117,7 @@ zone: "New_York" + # Also, note the analogous feature in src/modules/welcome/welcome.conf. + # + geoip: +- style: "json" ++ style: "none" + url: "https://geoip.kde.org/v1/calamares" + selector: "" # leave blank for the default + +diff --git a/src/modules/localeq/localeq.conf b/src/modules/localeq/localeq.conf +index bb2a7e8..35a819a 100644 +--- a/src/modules/localeq/localeq.conf ++++ b/src/modules/localeq/localeq.conf +@@ -95,6 +95,6 @@ zone: "New_York" + # Also, note the analogous feature in src/modules/welcome/welcome.conf. + # + geoip: +- style: "json" ++ style: "none" + url: "https://geoip.kde.org/v1/calamares" + selector: "" # leave blank for the default +diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf +index da95395..bf06fe9 100644 +--- a/src/modules/mount/mount.conf ++++ b/src/modules/mount/mount.conf +@@ -28,12 +28,21 @@ extraMounts: + - device: /dev + mountPoint: /dev + options: [ bind ] ++ - device: /dev/pts ++ mountPoint: /dev/pts ++ options: [ bind ] + - device: tmpfs + fs: tmpfs + mountPoint: /run + - device: /run/udev + mountPoint: /run/udev + options: [ bind ] ++ - device: /run/initramfs ++ mountPoint: /run/initramfs ++ options: [ bind ] ++ - device: /run/initramfs/live ++ mountPoint: /run/initramfs/live ++ options: [ bind ] + - device: efivarfs + fs: efivarfs + mountPoint: /sys/firmware/efi/efivars +diff --git a/src/modules/packagechooser/Config.cpp b/src/modules/packagechooser/Config.cpp +index 642311b..0abeafa 100644 +--- a/src/modules/packagechooser/Config.cpp ++++ b/src/modules/packagechooser/Config.cpp +@@ -238,7 +238,7 @@ Config::setPackageChoice( const QString& packageChoice ) + QString + Config::prettyName() const + { +- return m_stepName ? m_stepName->get() : tr( "Packages" ); ++ return tr( "Packages"); + } + + QString +diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp +index 44a570d..53bd82a 100644 +--- a/src/modules/packagechooser/PackageChooserPage.cpp ++++ b/src/modules/packagechooser/PackageChooserPage.cpp +@@ -16,7 +16,8 @@ + #include "utils/Retranslator.h" + + #include +- ++#include ++#include + PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent ) + : QWidget( parent ) + , ui( new Ui::PackageChooserPage ) +@@ -29,7 +30,7 @@ PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent + + ui->setupUi( this ); + CALAMARES_RETRANSLATE( updateLabels(); ); +- ++ this->setContentsMargins(50,15,50,0); + switch ( mode ) + { + case PackageChooserMode::Optional: +@@ -69,7 +70,24 @@ PackageChooserPage::currentChanged( const QModelIndex& index ) + } + else + { +- ui->productScreenshot->setPixmap( currentScreenshot ); ++ QVariant screenshotVariant = model->data( index, PackageListModel::ScreenshotRole ); ++ QString imagePath = screenshotVariant.toString(); ++ QPixmap currentScreenshot; ++ if(imagePath.toLower().endsWith(".svg")){ ++ QSvgRenderer svgRenderer(imagePath); ++ if(svgRenderer.isValid()){ ++ currentScreenshot = QPixmap(svgRenderer.defaultSize()); ++ currentScreenshot.fill(Qt::transparent); ++ QPainter painter(¤tScreenshot); ++ svgRenderer.render(&painter); ++ painter.end(); ++ } ++ } ++ else{ ++ ui->productScreenshot->setPixmap( model->data( index, PackageListModel::ScreenshotRole ).value< QPixmap >() ); ++ } ++ ++ + } + } + } +diff --git a/src/modules/packagechooser/packagechooser.conf b/src/modules/packagechooser/packagechooser.conf +index 5b40aeb..e7b9b00 100644 +--- a/src/modules/packagechooser/packagechooser.conf ++++ b/src/modules/packagechooser/packagechooser.conf +@@ -9,7 +9,7 @@ + # Possible modes are "optional", "required" (for zero-or-one or exactly-one) + # or "optionalmultiple", "requiredmultiple" (for zero-or-more + # or one-or-more). +-mode: required ++mode: optionalmultiple + + # Software installation method: + # +@@ -46,7 +46,7 @@ mode: required + # are no jobs that this module provides. You should put **other** + # modules, either *contextualprocess* or *packages* or some custom + # module, in the `exec` section to do the actual work. +-method: legacy ++method: packages + + + # Human-visible strings in this module. These are all optional. +@@ -150,23 +150,32 @@ labels: + items: + - id: "" + # packages: [] # This item installs no packages +- name: "No Desktop" ++ name: "Minimal Install" + name[nl]: "Geen desktop" ++ name[zh]: "最小安装" + description: "Please pick a desktop environment from the list. If you don't want to install a desktop, that's fine, your system will start up in text-only mode and you can install a desktop environment later." + description[nl]: "Kies eventueel een desktop-omgeving uit deze lijst. Als u geen desktop-omgeving wenst te gebruiken, kies er dan geen. In dat geval start het systeem straks op in tekst-modus en kunt u later alsnog een desktop-omgeving installeren." +- screenshot: ":/images/no-selection.png" +- - id: kde +- packages: [ kde-frameworks, kde-plasma, kde-gear ] +- name: Plasma Desktop +- description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks." +- screenshot: ":/images/kde.png" ++ description[zh]: "请选择一个桌面环境。如果您不想安装桌面环境也没关系,您可以稍后再为系统安装桌面环境。" ++ screenshot: ":/images/Minimal-Install.png" ++ # - id: kde ++ # packages: [ kde-frameworks, kde-plasma, kde-gear ] ++ # name: Plasma Desktop ++ # description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks." ++ # screenshot: ":/images/Plasma.png" + - id: gnome +- packages: [ gnome-all ] +- name: GNOME ++ packages: [ checkpolicy, code, xorg-*, dejavu-fonts, liberation-fonts, gnu-*-fonts, google-*-fonts, adwaita-icon-theme, atk, atkmm, at-spi2-atk, at-spi2-core, baobab, abattis-cantarell-fonts, cheese, clutter, clutter-gst3, clutter-gtk, cogl, dconf, dconf-editor, devhelp, eog, epiphany, evince, evolution-data-server, file-roller, folks, gcab, gcr, gdk-pixbuf2, gdm, gedit, geocode-glib, gfbgraph, gjs, glib2, glibmm24, glib-networking, gmime30, gnome-autoar, gnome-backgrounds, gnome-bluetooth, gnome-builder, gnome-calculator, gnome-calendar, gnome-characters, gnome-clocks, gnome-color-manager, gnome-contacts, gnome-control-center, gnome-desktop3, gnome-disk-utility, gnome-font-viewer, gnome-getting-started-docs, gnome-initial-setup, gnome-keyring, gnome-logs, gnome-menus, gnome-music, gnome-online-accounts, gnome-online-miners, gnome-photos, gnome-remote-desktop, gnome-screenshot, gnome-session, gnome-settings-daemon, gnome-shell, gnome-shell-extensions, gnome-software, gnome-system-monitor, gnome-terminal, gnome-tour, gnome-user-docs, gnome-user-share, gnome-video-effects, gnome-weather, gobject-introspection, gom, grilo, grilo-plugins, gsettings-desktop-schemas, gsound, gspell, gssdp, gtk3, gtk4, gtk-doc, gtkmm30, gtksourceview4, gtk-vnc2, gupnp, gupnp-av, gupnp-dlna, gvfs, json-glib, libchamplain, libdazzle, libgdata, libgee, libgnomekbd, libgsf, libgtop2, libgweather, libgxps, libhandy, libmediaart, libnma, libnotify, libpeas, librsvg2, libsecret, libsigc++20, libsoup, mm-common, mutter, nautilus, orca, pango, pangomm, libphodav, python3-pyatspi, python3-gobject, rest, rygel, simple-scan, sushi, sysprof, tepl, totem, totem-pl-parser, tracker3, tracker3-miners, vala, vte291, yelp, yelp-tools, yelp-xsl, zenity, devstation-config, ibus-libpinyin ] ++ name: DevStation ++ name[zh]: DevStation + description: GNU Networked Object Modeling Environment Desktop ++ description[zh]: Devstation系统桌面 + screenshot: ":/images/gnome.png" +- - id: calamares +- appdata: ../io.calamares.calamares.appdata.xml +- screenshot: ":/images/calamares.png" +- - id: kate +- appstream: org.kde.kwrite.desktop ++ #- id: ukui ++ # packages: [ ukui ] ++ # name: UKUI ++ # description: Linux Desktop ++ # screenshot: ":/images/UKUI.png" ++ # - id: calamares ++ # appdata: ../io.calamares.calamares.appdata.xml ++ # screenshot: ":/images/calamares.png" ++ # - id: kate ++ # appstream: org.kde.kwrite.desktop +diff --git a/src/modules/packagechooser/packagechooser.qrc b/src/modules/packagechooser/packagechooser.qrc +index 3b9c96a..05944ce 100644 +--- a/src/modules/packagechooser/packagechooser.qrc ++++ b/src/modules/packagechooser/packagechooser.qrc +@@ -2,5 +2,11 @@ + + images/no-selection.png + images/calamares.png ++ ++ images/gnome.png ++ ++ ++ ++ images/Minimal-Install.png + + +diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py +index d2a2552..8c165e8 100644 +--- a/src/modules/packages/main.py ++++ b/src/modules/packages/main.py +@@ -123,7 +123,7 @@ class PackageManager(metaclass=abc.ABCMeta): + if script != "": + check_target_env_call(script.split(" ")) + +- def install_package(self, packagedata, from_local=False): ++ def install_package(self, packagedata, from_local=False, options=None): + """ + Install a package from a single entry in the install list. + This can be either a single package name, or an object +@@ -135,11 +135,18 @@ class PackageManager(metaclass=abc.ABCMeta): + see install.from_local + """ + if isinstance(packagedata, str): +- self.install([packagedata], from_local=from_local) ++ self.install([packagedata], from_local=from_local, options=options) + else: + self.run(packagedata["pre-script"]) +- self.install([packagedata["package"]], from_local=from_local) +- self.run(packagedata["post-script"]) ++ if isinstance(packagedata["package"], list): ++ self.install(packagedata["package"], from_local=from_local, options=options) ++ else: ++ self.install([packagedata["package"]], from_local=from_local, options=options) ++ if isinstance(packagedata["post-script"], list): ++ for script in packagedata["post-script"]: ++ self.run(script) ++ else: ++ self.run(packagedata["post-script"]) + + def remove_package(self, packagedata): + """ +@@ -155,9 +162,15 @@ class PackageManager(metaclass=abc.ABCMeta): + else: + self.run(packagedata["pre-script"]) + self.remove([packagedata["package"]]) +- self.run(packagedata["post-script"]) ++ if isinstance(packagedata["post-script"], list): ++ for script in packagedata["post-script"]: ++ self.run(script) ++ else: ++ self.run(packagedata["post-script"]) ++ + +- def operation_install(self, package_list, from_local=False): ++ ++ def operation_install(self, package_list, from_local=False, options=None): + """ + Installs the list of packages named in @p package_list . + These can be strings -- plain package names -- or +@@ -172,11 +185,14 @@ class PackageManager(metaclass=abc.ABCMeta): + NOTE: exceptions are expected to leave this method, to indicate + failure of the installation. + """ ++ if options is None: ++ options = [] ++ + if all([isinstance(x, str) for x in package_list]): +- self.install(package_list, from_local=from_local) ++ self.install(package_list, from_local=from_local, options=options) + else: + for package in package_list: +- self.install_package(package, from_local=from_local) ++ self.install_package(package, from_local=from_local, options=options) + + def operation_try_install(self, package_list): + """ +@@ -286,8 +302,10 @@ class PMDnf(PackageManager): + """ + backend = "dnf" + +- def install(self, pkgs, from_local=False): +- check_target_env_call(["dnf-3", "-y", "install"] + pkgs) ++ def install(self, pkgs, from_local=False, options=None): ++ if options is None: ++ options = [] ++ check_target_env_call(["dnf-3", "-y", "install"] + options + pkgs) + + def remove(self, pkgs): + # ignore the error code for now because dnf thinks removing a +@@ -651,6 +669,55 @@ def subst_locale(plist): + locale is 'en' (e.g. English, US) then these localized + packages are dropped from the list. + ++ @param plist: list[str|dict] ++ Candidate packages to install. ++ @return: list[str|dict] ++ """ ++ locale = libcalamares.globalstorage.value("locale") ++ if not locale: ++ # It is possible to skip the locale-setting entirely. ++ # Then pretend it is "en", so that {LOCALE}-decorated ++ # package names are removed from the list. ++ locale = "en" ++ ++ ret = [] ++ for packagedata in plist: ++ if isinstance(packagedata, str): ++ packagename = packagedata ++ else: ++ if isinstance(packagedata["package"], list): ++ packagename = [ ++ Template(pkg).safe_substitute(LOCALE=locale) ++ if locale != "en" or 'LOCALE' not in pkg else None ++ for pkg in packagedata["package"] ++ ] ++ packagename = [pkg for pkg in packagename if pkg is not None] ++ else: ++ packagename = packagedata["package"] ++ if locale != "en": ++ packagename = Template(packagename).safe_substitute(LOCALE=locale) ++ elif 'LOCALE' in packagename: ++ packagename = None ++ ++ if packagename: ++ if isinstance(packagedata, str): ++ packagedata = packagename ++ else: ++ packagedata["package"] = packagename ++ ++ ret.append(packagedata) ++ ++ return ret ++ ++ ++def subst_locale_orig(plist): ++ """ ++ Returns a locale-aware list of packages, based on @p plist. ++ Package names that contain LOCALE are localized with the ++ BCP47 name of the chosen system locale; if the system ++ locale is 'en' (e.g. English, US) then these localized ++ packages are dropped from the list. ++ + @param plist: list[str|dict] + Candidate packages to install. + @return: list[str|dict] +@@ -688,7 +755,24 @@ def subst_locale(plist): + return ret + + +-def run_operations(pkgman, entry): ++def handle_packagechooser(entry): ++ """ ++ Handle special logic for entries with source "packagechooser@packagechooser". ++ Modifies the entry to include specific pre- and post-scripts. ++ ++ :param entry: dict ++ The operation entry to process. ++ """ ++ if "install" in entry: ++ item = { ++ "package": entry["install"], ++ "pre-script": "", ++ "post-script": ["/bin/bash /etc/add_selinux_policy.sh", "systemctl enable gdm", "systemctl set-default graphical.target"] ++ } ++ entry["install"] = [item] ++ ++ ++def run_operations(pkgman, entry, options): + """ + Call package manager with suitable parameters for the given + package actions. +@@ -705,24 +789,28 @@ def run_operations(pkgman, entry): + """ + global group_packages, completed_packages, mode_packages + ++ if "source" in entry and entry["source"] == "packagechooser@packagechooser": ++ handle_packagechooser(entry) ++ + for key in entry.keys(): + package_list = subst_locale(entry[key]) + group_packages = len(package_list) ++ + if key == "install": + _change_mode(INSTALL) +- pkgman.operation_install(package_list) ++ pkgman.operation_install(package_list, options=options) + elif key == "try_install": + _change_mode(INSTALL) +- pkgman.operation_try_install(package_list) ++ pkgman.operation_try_install(package_list, options=options) + elif key == "remove": + _change_mode(REMOVE) +- pkgman.operation_remove(package_list) ++ pkgman.operation_remove(package_list, options=options) + elif key == "try_remove": + _change_mode(REMOVE) +- pkgman.operation_try_remove(package_list) ++ pkgman.operation_try_remove(package_list, options=options) + elif key == "localInstall": + _change_mode(INSTALL) +- pkgman.operation_install(package_list, from_local=True) ++ pkgman.operation_install(package_list, from_local=True, options=options) + elif key == "source": + libcalamares.utils.debug("Package-list from {!s}".format(entry[key])) + else: +@@ -796,12 +884,21 @@ def run(): + if not total_packages: + # Avoids potential divide-by-zero in progress reporting + return None ++ ++ options = [] ++ for entry in operations: ++ option = entry.get("options", []) ++ if isinstance(option, list): ++ options.extend(option) ++ else: ++ options.append(option) + + for entry in operations: + group_packages = 0 + libcalamares.utils.debug(pretty_name()) + try: +- run_operations(pkgman, entry) ++ check_target_env_call(["dnf-3", "clean", "all"]) ++ run_operations(pkgman, entry, options) + except subprocess.CalledProcessError as e: + libcalamares.utils.warning(str(e)) + libcalamares.utils.debug("stdout:" + str(e.stdout)) +@@ -811,6 +908,7 @@ def run(): + .format(e.cmd, e.returncode)) + + mode_packages = None ++ check_target_env_call(["rm", "-f", "/etc/yum.repos.d/local.repo"]) + + libcalamares.job.setprogress(1.0) + +diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf +index b9777f6..490c289 100644 +--- a/src/modules/packages/packages.conf ++++ b/src/modules/packages/packages.conf +@@ -36,7 +36,7 @@ + # Not actually a package manager, but suitable for testing: + # - dummy - Dummy manager, only logs + # +-backend: dummy ++backend: dnf + + # + # Often package installation needs an internet connection. +@@ -202,13 +202,32 @@ pacman: + # "binutils", and then a second time for "wget". When installing large numbers + # of packages, this can lead to a considerable time savings. + # ++sources: ++ - /etc/yum.repos.d/local.repo ++ + operations: + - install: +- - vi +- - vi-${LOCALE} +- - wget +- - binutils +- - remove: +- - vi +- - wget +- - binutils ++ - openssh ++ - iproute ++ - dhcp ++ - kernel ++ - bash ++ - coreutils ++ - efibootmgr ++ - shim ++ - java-11-openjdk-devel ++ - vim ++ - gdb ++ - perf ++ - CUnit ++ - CUnit-devel ++ - firewalld ++ - gtest ++ - gtest-devel ++ - python3-pytest ++ ++ options: ++ - --nogpgcheck ++ - --setopt=sslverify=0 ++ - --disablerepo=* ++ - --enablerepo=local-repo +diff --git a/src/modules/partition/PartitionViewStep.cpp b/src/modules/partition/PartitionViewStep.cpp +index db087b5..2f98fe1 100644 +--- a/src/modules/partition/PartitionViewStep.cpp ++++ b/src/modules/partition/PartitionViewStep.cpp +@@ -48,8 +48,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent ) + , m_choicePage( nullptr ) + , m_manualPartitionPage( nullptr ) + { +- m_widget->setContentsMargins( 0, 0, 0, 0 ); +- ++ m_widget->setContentsMargins( 50, 20, 50, 0 ); + m_waitingWidget = new WaitingWidget( QString() ); + m_widget->addWidget( m_waitingWidget ); + CALAMARES_RETRANSLATE( +diff --git a/src/modules/partition/gui/BootInfoWidget.cpp b/src/modules/partition/gui/BootInfoWidget.cpp +index b4339be..eb70b4a 100644 +--- a/src/modules/partition/gui/BootInfoWidget.cpp ++++ b/src/modules/partition/gui/BootInfoWidget.cpp +@@ -42,7 +42,8 @@ BootInfoWidget::BootInfoWidget( QWidget* parent ) + QFontMetrics fm = QFontMetrics( QFont() ); + m_bootLabel->setMinimumWidth( fm.boundingRect( "BIOS" ).width() + Calamares::defaultFontHeight() / 2 ); + m_bootLabel->setAlignment( Qt::AlignCenter ); +- ++ m_bootLabel->setStyleSheet("background-color:#FFFFFF;"); ++ m_bootIcon->setStyleSheet("background-color:#FFFFFF;"); + QPalette palette; + palette.setBrush( WindowText, QColor( "#4D4D4D" ) ); //dark grey + +@@ -62,7 +63,12 @@ BootInfoWidget::retranslateUi() + "Modern systems usually use EFI, but " + "may also show up as BIOS if started in compatibility " + "mode." ) ); +- ++ m_bootIcon->setStyleSheet( ++ "QLabel {" ++ "background-color: #ffffff;" ++ "color: black;" ++ "}" ++ ); + QString bootToolTip; + if ( PartUtils::isEfiSystem() ) + { +diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp +index 62cf0f6..6185d3f 100644 +--- a/src/modules/partition/gui/ChoicePage.cpp ++++ b/src/modules/partition/gui/ChoicePage.cpp +@@ -1344,7 +1344,7 @@ ChoicePage::setupActions() + "You will be able to review and confirm your choices " + "before any change is made to the storage device." ) ); + +- m_eraseButton->setText( tr( "Erase disk
" ++ m_eraseButton->setText( tr( "Automatic partitioning
" + "This will delete all data " + "currently present on the selected storage device." ) ); + +@@ -1381,7 +1381,7 @@ ChoicePage::setupActions() + "The installer will shrink a partition to make room for %1." ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + +- m_eraseButton->setText( tr( "Erase disk
" ++ m_eraseButton->setText( tr( "Automatic partitioning
" + "This will delete all data " + "currently present on the selected storage device." ) ); + +@@ -1402,7 +1402,7 @@ ChoicePage::setupActions() + "The installer will shrink a partition to make room for %1." ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + +- m_eraseButton->setText( tr( "Erase disk
" ++ m_eraseButton->setText( tr( "Automatic partitioning
" + "This will delete all data " + "currently present on the selected storage device." ) ); + +@@ -1427,7 +1427,7 @@ ChoicePage::setupActions() + "The installer will shrink a partition to make room for %1." ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + +- m_eraseButton->setText( tr( "Erase disk
" ++ m_eraseButton->setText( tr( "Automatic partitioning
" + "This will delete all data " + "currently present on the selected storage device." ) ); + +@@ -1593,7 +1593,7 @@ ChoicePage::calculateNextEnabled() const + { + case EncryptWidget::Encryption::Unconfirmed: + cDebug() << "No passphrase provided or passphrase mismatch."; +- return false; ++ //return false; + case EncryptWidget::Encryption::Disabled: + case EncryptWidget::Encryption::Confirmed: + // Checkbox not checked, **or** passphrases match +diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp +index f57ed91..a22344d 100644 +--- a/src/modules/partition/gui/DeviceInfoWidget.cpp ++++ b/src/modules/partition/gui/DeviceInfoWidget.cpp +@@ -52,7 +52,18 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) + m_ptLabel->setAutoFillBackground( true ); + m_ptIcon->setPalette( palette ); + m_ptLabel->setPalette( palette ); +- ++ m_ptLabel->setStyleSheet( ++ "QLabel {" ++ "background-color: #ffffff;" ++ "color: black;" ++ "}" ++ ); ++ m_ptIcon->setStyleSheet( ++ "QLabel {" ++ "background-color: #ffffff;" ++ "color: black;" ++ "}" ++ ); + CALAMARES_RETRANSLATE_SLOT( &DeviceInfoWidget::retranslateUi ); + } + +diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp +index 8726df1..ebb076e 100644 +--- a/src/modules/partition/gui/EncryptWidget.cpp ++++ b/src/modules/partition/gui/EncryptWidget.cpp +@@ -59,7 +59,7 @@ EncryptWidget::EncryptWidget( QWidget* parent ) + m_ui->m_encryptionUnsupportedLabel->setText( QStringLiteral( "🔓" ) ); + m_ui->m_encryptionUnsupportedLabel->show(); + } +- ++ m_ui->m_encryptCheckBox->hide(); + connect( m_ui->m_encryptCheckBox, &QCheckBox::stateChanged, this, &EncryptWidget::onCheckBoxStateChanged ); + connect( m_ui->m_passphraseLineEdit, &QLineEdit::textEdited, this, &EncryptWidget::onPassphraseEdited ); + connect( m_ui->m_confirmLineEdit, &QLineEdit::textEdited, this, &EncryptWidget::onPassphraseEdited ); +diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp +index 41881e4..08a4d51 100644 +--- a/src/modules/summary/SummaryPage.cpp ++++ b/src/modules/summary/SummaryPage.cpp +@@ -35,7 +35,7 @@ SummaryPage::SummaryPage( Config* config, QWidget* parent ) + Q_UNUSED( parent ) + + this->setObjectName( "summaryStep" ); +- ++ this->setContentsMargins(50,15,50,0); + QVBoxLayout* layout = new QVBoxLayout( this ); + layout->setContentsMargins( 0, 0, 0, 0 ); + +@@ -118,6 +118,9 @@ ensureSize( QWidget* parent, QScrollArea* container, Calamares::ViewStep* viewst + + emit viewstep->ensureSize( widgetSize ); // Only expand height + } ++ else{ ++ container->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ++ } + } + + // Adds a widget for those ViewSteps that want a summary; +@@ -131,10 +134,10 @@ SummaryPage::buildWidgets( Config* config, SummaryViewStep* viewstep ) + m_contentWidget = new QWidget; + m_layout = new QVBoxLayout( m_contentWidget ); + Calamares::unmarginLayout( m_layout ); +- ++ m_contentWidget->setStyleSheet("background-color:#FFFFFF"); + QFont titleFont = font(); + titleFont.setWeight( QFont::Light ); +- titleFont.setPointSize( Calamares::defaultFontSize() * 2 ); ++ titleFont.setPointSize( Calamares::defaultFontSize() * 1.3 ); + + QPalette bodyPalette( palette() ); + bodyPalette.setColor( WindowBackground, palette().window().color().lighter( 108 ) ); +diff --git a/src/modules/umount/UmountJob.cpp b/src/modules/umount/UmountJob.cpp +index 83cf2f1..90f2373 100644 +--- a/src/modules/umount/UmountJob.cpp ++++ b/src/modules/umount/UmountJob.cpp +@@ -42,6 +42,29 @@ UmountJob::prettyName() const + static Calamares::JobResult + unmountTargetMounts( const QString& rootMountPoint ) + { ++ // 先删除 /etc/yum.repos.d/local.repo 文件 ++ QString repoFilePath = rootMountPoint + "/etc/yum.repos.d/local.repo"; ++ if ( QFile::exists( repoFilePath ) ) ++ { ++ if ( !QFile::remove( repoFilePath ) ) ++ { ++ return Calamares::JobResult::internalError( ++ QCoreApplication::translate( UmountJob::staticMetaObject.className(), "Could not remove local.repo." ), ++ QCoreApplication::translate( UmountJob::staticMetaObject.className(), ++ "Failed to remove '%1'. Check permissions." ) ++ .arg( repoFilePath ), ++ Calamares::JobResult::GenericError ); ++ } ++ else ++ { ++ cDebug() << "Removed local repo file:" << repoFilePath; ++ } ++ } ++ else ++ { ++ cDebug() << "No local.repo file to remove at" << repoFilePath; ++ } ++ + QDir targetMount( rootMountPoint ); + if ( !targetMount.exists() ) + { +diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py +index 814556f..4148720 100644 +--- a/src/modules/unpackfs/main.py ++++ b/src/modules/unpackfs/main.py +@@ -23,6 +23,7 @@ import sys + import tempfile + + import libcalamares ++import platform + + import gettext + _ = gettext.translation("calamares-python", +@@ -153,6 +154,40 @@ def global_excludes(): + + return lst + ++def create_se_content(): ++ te_content = """ ++#!/bin/bash ++ ++# 恢复sshd和rpmdb SELinux上下文 ++chcon -t sshd_exec_t /usr/sbin/sshd ++chcon -t rpm_var_lib_t /var/lib/rpm/Index.db ++ ++# 创建 TE 文件 ++cat < gdm_policy.te ++module gdm_policy 1.0; ++ ++require { ++ type unconfined_service_t; ++ type unconfined_t; ++ class process { transition }; ++} ++ ++# Allow unconfined_service_t to transition to unconfined_t ++allow unconfined_service_t unconfined_t:process transition; ++EOF ++ ++# 编译 TE 文件 ++checkmodule -M -m -o gdm_policy.mod gdm_policy.te ++ ++# 生成策略模块包 ++semodule_package -o gdm_policy.pp -m gdm_policy.mod ++ ++# 安装策略模块 ++semodule -i gdm_policy.pp ++""".strip() ++ with open('/etc/add_selinux_policy.sh', 'w') as te_file: ++ te_file.write(te_content) ++ + def file_copy(source, entry, progress_cb): + """ + Extract given image using rsync. +@@ -226,9 +261,44 @@ def file_copy(source, entry, progress_cb): + counter.last_timestamp_reported = now + counter.last_total_reported = num_files_total_local + progress_cb(num_files_copied, num_files_total_local) +- + try: +- returncode = libcalamares.utils.host_env_process_output(args, output_cb) ++ returncode = 0 ++ arch = platform.machine() ++ ++ libcalamares.utils.host_env_process_output(["mkdir", "-p", entry.destination + "/etc/yum.repos.d/"], output_cb) ++ libcalamares.utils.host_env_process_output(["multipath", "-F"], output_cb) ++ ++ create_se_content() ++ libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/add_selinux_policy.sh", entry.destination + "/etc/add_selinux_policy.sh"], output_cb) ++ libcalamares.utils.host_env_process_output(["chmod", "+x", entry.destination + "/etc/add_selinux_policy.sh"], output_cb) ++ ++ if os.path.exists("/etc/yum.repos.d/local.repo"): ++ libcalamares.utils.host_env_process_output( ++ ["cp", "-af", "/etc/yum.repos.d/local.repo", entry.destination + "/etc/yum.repos.d/"], output_cb) ++ ++ if arch == "aarch64": ++ packages = ["yum", "grub2-efi", "passwd", "sudo"] ++ else: ++ packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"] ++ ++ libcalamares.utils.host_env_process_output( ++ ["yum", "--installroot=" + entry.destination, "--disablerepo=*", "--enablerepo=local-repo", ++ "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0", "install", "-y"] + packages, output_cb) ++ else: ++ libcalamares.utils.host_env_process_output( ++ ["cp", "-af", "/etc/yum.repos.d/openEuler.repo", entry.destination + "/etc/yum.repos.d/"], output_cb) ++ if arch == "aarch64": ++ packages = ["yum", "grub2-efi", "passwd", "sudo"] ++ else: ++ packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"] ++ ++ libcalamares.utils.host_env_process_output( ++ ["yum", "--installroot=" + entry.destination, "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0", ++ "install", "-y"] + packages, output_cb) ++ ++ libcalamares.utils.host_env_process_output(["rm", "-f", entry.destination + "/etc/shadow"], output_cb) ++ libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/shadow", entry.destination + "/etc/shadow"], output_cb) ++ + except subprocess.CalledProcessError as e: + returncode = e.returncode + +@@ -454,10 +524,10 @@ def run(): + libcalamares.utils.warning(" ... modprobe {} may solve the problem".format(sourcefs)) + return (_("Bad unpackfs configuration"), + _("The filesystem for \"{}\" ({}) is not supported by your current kernel").format(source, sourcefs)) +- if not os.path.exists(source): +- libcalamares.utils.warning("The source filesystem \"{}\" does not exist".format(source)) +- return (_("Bad unpackfs configuration"), +- _("The source filesystem \"{}\" does not exist").format(source)) ++ #if not os.path.exists(source): ++ # libcalamares.utils.warning("The source filesystem \"{}\" does not exist".format(source)) ++ # return (_("Bad unpackfs configuration"), ++ # _("The source filesystem \"{}\" does not exist").format(source)) + if sourcefs == "squashfs": + if shutil.which("unsquashfs") is None: + libcalamares.utils.warning("Failed to find unsquashfs") +diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf +index d12110b..1b053a6 100644 +--- a/src/modules/unpackfs/unpackfs.conf ++++ b/src/modules/unpackfs/unpackfs.conf +@@ -88,13 +88,7 @@ + # for its destination name, as in the example below. + + unpack: +- - source: ../CHANGES +- sourcefs: file +- destination: "/tmp/changes.txt" ++ - source: "/dev/mapper/live-base" ++ sourcefs: "ext4" ++ destination: "" + weight: 1 # Single file +- - source: src/qml/calamares/slideshow +- sourcefs: file +- destination: "/tmp/slideshow/" +- exclude: [ "*.qmlc", "qmldir" ] +- weight: 5 # Lots of files +- # excludeFile: /etc/calamares/modules/unpackfs/exclude-list.txt +diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp +index 1ecc0eb..72fb3e0 100644 +--- a/src/modules/users/UsersPage.cpp ++++ b/src/modules/users/UsersPage.cpp +@@ -82,7 +82,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) + , m_config( config ) + { + ui->setupUi( this ); +- ++ this->setContentsMargins(50,15,50,0); + // Connect signals and slots + ui->textBoxUserPassword->setText( config->userPassword() ); + connect( ui->textBoxUserPassword, &QLineEdit::textChanged, config, &Config::setUserPassword ); +diff --git a/src/modules/users/page_usersetup.bak.ui b/src/modules/users/page_usersetup.bak.ui +new file mode 100644 +index 0000000..f808c89 +--- /dev/null ++++ b/src/modules/users/page_usersetup.bak.ui +@@ -0,0 +1,710 @@ ++ ++ ++ ++SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org> ++SPDX-License-Identifier: GPL-3.0-or-later ++ ++ Page_UserSetup ++ ++ ++ ++ 0 ++ 0 ++ 862 ++ 683 ++ ++ ++ ++ Form ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 6 ++ ++ ++ ++ ++ ++ ++ ++ What is your name? ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ Your Full Name ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ What name do you want to use to log in? ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ login ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ ++ ++ ++ Qt::AlignmentFlag::AlignVCenter ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ What is the name of this computer? ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ <small>This name will be used if you make the computer visible to others on a network.</small> ++ ++ ++ Computer Name ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ ++ ++ ++ Qt::AlignmentFlag::AlignVCenter ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ Choose a password to keep your account safe. ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ ++ ++ QLineEdit::EchoMode::Password ++ ++ ++ Password ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> ++ ++ ++ QLineEdit::EchoMode::Password ++ ++ ++ Repeat Password ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ 100 ++ 0 ++ ++ ++ ++ ++ ++ ++ Qt::AlignmentFlag::AlignVCenter ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ When this box is checked, password-strength checking is done and you will not be able to use a weak password. ++ ++ ++ Require strong passwords. ++ ++ ++ ++ ++ ++ ++ Log in automatically without asking for the password. ++ ++ ++ ++ ++ ++ ++ Use the same password for the administrator account. ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ Choose a password for the administrator account. ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ ++ ++ QLineEdit::EchoMode::Password ++ ++ ++ Password ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 200 ++ 0 ++ ++ ++ ++ <small>Enter the same password twice, so that it can be checked for typing errors.</small> ++ ++ ++ QLineEdit::EchoMode::Password ++ ++ ++ Repeat Password ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ ++ 24 ++ 24 ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ 100 ++ 0 ++ ++ ++ ++ ++ ++ ++ Qt::AlignmentFlag::AlignVCenter ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ QSizePolicy::Policy::Fixed ++ ++ ++ ++ 20 ++ 6 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Use Active Directory ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Domain: ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Domain Administrator: ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Password: ++ ++ ++ ++ ++ ++ ++ QLineEdit::EchoMode::Password ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IP Address (optional): ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Qt::Orientation::Vertical ++ ++ ++ ++ 20 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui +index 6e6e542..2a5ccd2 100644 +--- a/src/modules/users/page_usersetup.ui ++++ b/src/modules/users/page_usersetup.ui +@@ -21,10 +21,10 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +@@ -34,15 +34,27 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- +- +- +- What is your name? +- +- +- + + ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 150 ++ 24 ++ ++ ++ ++ your name ++ ++ ++ + + + +@@ -105,31 +117,43 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +- 20 +- 6 ++ 5 ++ 5 + + + + +- +- +- +- What name do you want to use to log in? +- +- +- false +- +- +- + + ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 150 ++ 24 ++ ++ ++ ++ user name ++ ++ ++ false ++ ++ ++ + + + +@@ -192,7 +216,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::AlignVCenter ++ Qt::AlignmentFlag::AlignVCenter + + + true +@@ -204,31 +228,43 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +- 20 +- 6 ++ 5 ++ 5 + + + + +- +- +- +- What is the name of this computer? +- +- +- false +- +- +- + + ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 150 ++ 24 ++ ++ ++ ++ computer name ++ ++ ++ false ++ ++ ++ + + + +@@ -294,7 +330,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::AlignVCenter ++ Qt::AlignmentFlag::AlignVCenter + + + true +@@ -306,15 +342,15 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + + 20 +- 6 ++ 20 + + + +@@ -349,7 +385,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + +- QLineEdit::Password ++ QLineEdit::EchoMode::Password + + + Password +@@ -374,7 +410,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + +- QLineEdit::Password ++ QLineEdit::EchoMode::Password + + + Repeat Password +@@ -424,7 +460,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::AlignVCenter ++ Qt::AlignmentFlag::AlignVCenter + + + true +@@ -436,15 +472,15 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +- 20 +- 6 ++ 5 ++ 5 + + + +@@ -469,22 +505,22 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Use the same password for the administrator account. ++ Use the same password for the root account. + + + + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +- 20 +- 6 ++ 5 ++ 5 + + + +@@ -519,7 +555,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + +- QLineEdit::Password ++ QLineEdit::EchoMode::Password + + + Password +@@ -544,7 +580,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + +- QLineEdit::Password ++ QLineEdit::EchoMode::Password + + + Repeat Password +@@ -594,7 +630,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::AlignVCenter ++ Qt::AlignmentFlag::AlignVCenter + + + true +@@ -606,10 +642,10 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Policy::Fixed + + + +@@ -666,7 +702,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- QLineEdit::Password ++ QLineEdit::EchoMode::Password + + + +@@ -693,7 +729,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- Qt::Vertical ++ Qt::Orientation::Vertical + + + +diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf +index e6910bc..57a82dd 100644 +--- a/src/modules/users/users.conf ++++ b/src/modules/users/users.conf +@@ -88,7 +88,7 @@ setRootPassword: true + # When checked, the user password is used for the root account too. + # + # NOTE: *doReusePassword* requires *setRootPassword* to be enabled. +-doReusePassword: true ++doReusePassword: false + + + ### PASSWORDS AND LOGIN +diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp +index 2bce564..7e50dc6 100644 +--- a/src/modules/welcome/Config.cpp ++++ b/src/modules/welcome/Config.cpp +@@ -77,8 +77,7 @@ Config::retranslate() + } + else + { +- m_warningMessage = tr( "This program will ask you some questions and " +- "set up %2 on your computer." ) ++ m_warningMessage = tr( "" ) + .arg( branding ? branding->productName() : QString() ); + } + +diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp +index 30e3d6b..88f38c2 100644 +--- a/src/modules/welcome/WelcomePage.cpp ++++ b/src/modules/welcome/WelcomePage.cpp +@@ -44,10 +44,10 @@ WelcomePage::WelcomePage( Config* config, QWidget* parent ) + , m_conf( config ) + { + using Branding = Calamares::Branding; +- ++ + const int defaultFontHeight = Calamares::defaultFontHeight(); + ui->setupUi( this ); +- ++ + // insert system-check widget below welcome text + const int welcome_text_idx = ui->verticalLayout->indexOf( ui->mainText ); + ui->verticalLayout->insertWidget( welcome_text_idx + 1, m_checkingWidget ); +@@ -72,7 +72,12 @@ WelcomePage::WelcomePage( Config* config, QWidget* parent ) + } + + initLanguages(); +- ++ ui->languageWidget->setStyleSheet( ++ "QLabel {" ++ "background-color: #ffffff;" ++ "color: black;" ++ "}" ++ ); + CALAMARES_RETRANSLATE_SLOT( &WelcomePage::retranslate ); + + connect( Calamares::ModuleManager::instance(), +@@ -89,17 +94,17 @@ void + WelcomePage::init() + { + //setup the url buttons +- setupButton( WelcomePage::Button::Support, m_conf->supportUrl() ); +- setupButton( WelcomePage::Button::KnownIssues, m_conf->knownIssuesUrl() ); +- setupButton( WelcomePage::Button::ReleaseNotes, m_conf->releaseNotesUrl() ); +- setupButton( WelcomePage::Button::Donate, m_conf->donateUrl() ); ++ // setupButton( WelcomePage::Button::Support, m_conf->supportUrl() ); ++ // setupButton( WelcomePage::Button::KnownIssues, m_conf->knownIssuesUrl() ); ++ // setupButton( WelcomePage::Button::ReleaseNotes, m_conf->releaseNotesUrl() ); ++ // setupButton( WelcomePage::Button::Donate, m_conf->donateUrl() ); + + //language icon +- auto icon = Calamares::Branding::instance()->image( m_conf->languageIcon(), QSize( 48, 48 ) ); +- if ( !icon.isNull() ) +- { +- setLanguageIcon( icon ); +- } ++ // auto icon = Calamares::Branding::instance()->image( m_conf->languageIcon(), QSize( 48, 48 ) ); ++ // if ( !icon.isNull() ) ++ // { ++ // setLanguageIcon( icon ); ++ // } + } + + void +@@ -120,56 +125,56 @@ WelcomePage::initLanguages() + &Config::setLocaleIndex ); + } + +-void +-WelcomePage::setupButton( Button role, const QString& url ) +-{ +- QPushButton* button = nullptr; +- Calamares::ImageType icon = Calamares::Information; +- +- switch ( role ) +- { +- case Button::Donate: +- button = ui->donateButton; +- icon = Calamares::Donate; +- break; +- case Button::KnownIssues: +- button = ui->knownIssuesButton; +- icon = Calamares::Bugs; +- break; +- case Button::ReleaseNotes: +- button = ui->releaseNotesButton; +- icon = Calamares::Release; +- break; +- case Button::Support: +- button = ui->supportButton; +- icon = Calamares::Help; +- break; +- } +- if ( !button ) +- { +- cWarning() << "Unknown button role" << smash( role ); +- return; +- } +- +- if ( url.isEmpty() ) +- { +- button->hide(); +- return; +- } +- +- QUrl u( url ); +- if ( u.isValid() ) +- { +- auto size = 2 * QSize( Calamares::defaultFontHeight(), Calamares::defaultFontHeight() ); +- button->setIcon( Calamares::defaultPixmap( icon, Calamares::Original, size ) ); +- connect( button, &QPushButton::clicked, [ u ]() { QDesktopServices::openUrl( u ); } ); +- } +- else +- { +- cWarning() << "Welcome button" << smash( role ) << "URL" << url << "is invalid."; +- button->hide(); +- } +-} ++// void ++// WelcomePage::setupButton( Button role, const QString& url ) ++// { ++// QPushButton* button = nullptr; ++// Calamares::ImageType icon = Calamares::Information; ++ ++// switch ( role ) ++// { ++// case Button::Donate: ++// button = ui->donateButton; ++// icon = Calamares::Donate; ++// break; ++// case Button::KnownIssues: ++// button = ui->knownIssuesButton; ++// icon = Calamares::Bugs; ++// break; ++// case Button::ReleaseNotes: ++// button = ui->releaseNotesButton; ++// icon = Calamares::Release; ++// break; ++// case Button::Support: ++// button = ui->supportButton; ++// icon = Calamares::Help; ++// break; ++// } ++// if ( !button ) ++// { ++// cWarning() << "Unknown button role" << smash( role ); ++// return; ++// } ++ ++// if ( url.isEmpty() ) ++// { ++// button->hide(); ++// return; ++// } ++ ++// QUrl u( url ); ++// if ( u.isValid() ) ++// { ++// auto size = 2 * QSize( Calamares::defaultFontHeight(), Calamares::defaultFontHeight() ); ++// button->setIcon( Calamares::defaultPixmap( icon, Calamares::Original, size ) ); ++// connect( button, &QPushButton::clicked, [ u ]() { QDesktopServices::openUrl( u ); } ); ++// } ++// else ++// { ++// cWarning() << "Welcome button" << smash( role ) << "URL" << url << "is invalid."; ++// button->hide(); ++// } ++// } + + void + WelcomePage::focusInEvent( QFocusEvent* e ) +@@ -196,11 +201,11 @@ WelcomePage::externallySelectedLanguage( int row ) + } + } + +-void +-WelcomePage::setLanguageIcon( QPixmap i ) +-{ +- ui->languageIcon->setPixmap( i ); +-} ++// void ++// WelcomePage::setLanguageIcon( QPixmap i ) ++// { ++// ui->languageIcon->setPixmap( i ); ++// } + + void + WelcomePage::retranslate() +@@ -209,8 +214,8 @@ WelcomePage::retranslate() + + ui->mainText->setText( message.arg( Calamares::Branding::instance()->versionedName() ) ); + ui->retranslateUi( this ); +- ui->supportButton->setText( +- tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) ); ++ // ui->supportButton->setText( ++ // tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) ); + } + + void +diff --git a/src/modules/welcome/WelcomePage.ui b/src/modules/welcome/WelcomePage.ui +index 0e3dcb0..b25b4e0 100644 +--- a/src/modules/welcome/WelcomePage.ui ++++ b/src/modules/welcome/WelcomePage.ui +@@ -17,6 +17,9 @@ SPDX-License-Identifier: GPL-3.0-or-later + + Form + ++ ++ ++ + + + +@@ -56,7 +59,7 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + +- ++ + + + +@@ -78,11 +81,12 @@ SPDX-License-Identifier: GPL-3.0-or-later + + Select application and system language + ++ ++ ++ ++ + +- +- +- +- :/welcome/language-icon-48px.png ++ language + + + +@@ -97,6 +101,9 @@ SPDX-License-Identifier: GPL-3.0-or-later + + Select application and system language + ++ ++ background-color:rbga(248,250,255,1) ++ + + + +@@ -132,62 +139,6 @@ SPDX-License-Identifier: GPL-3.0-or-later +
+
+
+- +- +- +- +- +- Open donations website +- +- +- &Donate +- +- +- true +- +- +- +- +- +- +- Open help and support website +- +- +- &Support +- +- +- true +- +- +- +- +- +- +- Open issues and bug-tracking website +- +- +- &Known issues +- +- +- true +- +- +- +- +- +- +- Open release notes website +- +- +- &Release notes +- +- +- true +- +- +- +- +- + + + +diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp +index 3f70c61..e191b26 100644 +--- a/src/modules/welcome/checker/ResultsListWidget.cpp ++++ b/src/modules/welcome/checker/ResultsListWidget.cpp +@@ -26,7 +26,8 @@ + #include + #include + #include +- ++#include ++#include + ResultsListWidget::ResultsListWidget( Config* config, QWidget* parent ) + : QWidget( parent ) + , m_config( config ) +@@ -91,21 +92,28 @@ ResultsListWidget::requirementsComplete() + + if ( !Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome ).isEmpty() ) + { +- QPixmap theImage +- = QPixmap( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome ) ); +- if ( !theImage.isNull() ) ++ QString imagePath = Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome ); ++ QSvgRenderer renderer(imagePath); ++ renderer.load(imagePath); ++ if ( renderer.isValid() ) + { ++ QPixmap pixmap(renderer.defaultSize()); ++ pixmap.fill(Qt::transparent); ++ ++ QPainter painter(&pixmap); ++ renderer.render(&painter); ++ + QLabel* imageLabel; + if ( Calamares::Branding::instance()->welcomeExpandingLogo() ) + { + FixedAspectRatioLabel* p = new FixedAspectRatioLabel; +- p->setPixmap( theImage ); ++ p->setPixmap( pixmap ); + imageLabel = p; + } + else + { + imageLabel = new QLabel; +- imageLabel->setPixmap( theImage ); ++ imageLabel->setPixmap( pixmap ); + } + + imageLabel->setContentsMargins( 4, Calamares::defaultFontHeight() * 3 / 4, 4, 4 ); +diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf +index b988eb2..15e08ce 100644 +--- a/src/modules/welcome/welcome.conf ++++ b/src/modules/welcome/welcome.conf +@@ -81,9 +81,9 @@ requirements: + # boolean values, so should be quoted. + check: + - storage +- - ram ++ #- ram + - power +- - internet ++ #- internet + - root + - screen + - "false" +@@ -95,7 +95,7 @@ requirements: + # continue past the welcome page. + required: + # - storage +- - ram ++ #- ram + # - root + + # GeoIP checking +diff --git a/src/modules/welcome/welcome.qrc b/src/modules/welcome/welcome.qrc +index f270ee5..8806101 100644 +--- a/src/modules/welcome/welcome.qrc ++++ b/src/modules/welcome/welcome.qrc +@@ -1,6 +1,8 @@ + +- +- language-icon-128px.png +- language-icon-48px.png +- ++ ++ ++ WelcomePage.cpp ++ language-icon-128px.png ++ language-icon-48px.png ++ + +diff --git a/src/modules/welcomeq/welcomeq.conf b/src/modules/welcomeq/welcomeq.conf +index 2efc514..0ffb4b8 100644 +--- a/src/modules/welcomeq/welcomeq.conf ++++ b/src/modules/welcomeq/welcomeq.conf +@@ -26,7 +26,7 @@ requirements: + - storage + - ram + - power +- - internet ++ #- internet + - root + - screen + required: +-- +2.43.0 + diff --git a/0007-root.patch b/0007-root.patch new file mode 100644 index 0000000000000000000000000000000000000000..3966aae90319c7590dac1e123b49f41438a312c4 --- /dev/null +++ b/0007-root.patch @@ -0,0 +1,175 @@ +From 1c55eb532ed186baf5b0ac4b7b8504c8e84bfc8e Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 02:53:37 +0800 +Subject: [PATCH] =?UTF-8?q?/=E7=9B=AE=E5=BD=95=E4=B8=8B=E7=9A=84=E9=85=8D?= + =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BF=AE=E6=94=B9?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + .editorconfig | 29 +++++++++++++++++++++++++++++ + .gitattributes | 14 ++++++++++++++ + .gitmodules | 0 + CMakeLists.txt | 21 +++++++++------------ + settings.conf | 18 ++++++++++-------- + 8 files changed, 114 insertions(+), 20 deletions(-) + create mode 100644 .editorconfig + create mode 100644 .gitattributes + create mode 100644 .gitmodules + +diff --git a/.editorconfig b/.editorconfig +new file mode 100644 +index 0000000..44e191e +--- /dev/null ++++ b/.editorconfig +@@ -0,0 +1,29 @@ ++# SPDX-FileCopyrightText: no ++# SPDX-License-Identifier: CC0-1.0 ++ ++root = true ++ ++[*] ++charset = utf-8 ++end_of_line = lf ++trim_trailing_whitespace = true ++ ++[CMakeLists.txt] ++indent_style = space ++indent_size = 4 ++insert_final_newline = true ++ ++[*.cmake] ++indent_style = space ++indent_size = 4 ++insert_final_newline = true ++ ++[*.{py,cpp,h}] ++indent_style = space ++indent_size = 4 ++insert_final_newline = true ++ ++[*.sh] ++indent_style = tab ++insert_final_newline = true ++ +diff --git a/.gitattributes b/.gitattributes +new file mode 100644 +index 0000000..6a8126f +--- /dev/null ++++ b/.gitattributes +@@ -0,0 +1,14 @@ ++# SPDX-FileCopyrightText: no ++# SPDX-License-Identifier: CC0-1.0 ++ ++.editorconfig export-ignore ++.gitattributes export-ignore ++.github export-ignore ++.gitignore export-ignore ++.gitmodules export-ignore ++.travis.yml export-ignore ++.tx export-ignore ++ ++src/modules/testmodule.py export-ignore ++src/modules/globalStorage.yaml export-ignore ++ +diff --git a/.gitmodules b/.gitmodules +new file mode 100644 +index 0000000..e69de29 +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9da614e..19395d4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -78,8 +78,8 @@ set(CALAMARES_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + ### OPTIONS + # + option(INSTALL_POLKIT "Install Polkit configuration" ON) +-option(INSTALL_COMPLETION "Install shell completions" OFF) +-option(INSTALL_CONFIG "Install configuration files" OFF) ++option(INSTALL_COMPLETION "Install shell completions" ON) ++option(INSTALL_CONFIG "Install configuration files" ON) + # When adding WITH_* that affects the ABI offered by libcalamares, + # also update libcalamares/CalamaresConfig.h.in + option(WITH_PYBIND11 "Use bundled pybind11 instead of Boost::Python" ON) +@@ -128,9 +128,9 @@ set(USE_services "" CACHE STRING "Select the services module to use") + + ### Calamares application info + # +-set(CALAMARES_ORGANIZATION_NAME "Calamares") +-set(CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares") +-set(CALAMARES_APPLICATION_NAME "Calamares") ++set(CALAMARES_ORGANIZATION_NAME "openEuler") ++set(CALAMARES_ORGANIZATION_DOMAIN "https://gitee.com/organizations/openeuler/") ++set(CALAMARES_APPLICATION_NAME "easysoftware") + set(CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework") + + ### Transifex (languages) info +@@ -155,13 +155,10 @@ set(CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framew + # `txstats.py -e`. See also + # + # Total 80 languages +-set( _tx_complete de en es_AR fi_FI hr hu ja lt tr_TR uk zh_TW ) +-set( _tx_good az az_AZ be bg ca cs_CZ es fr fur he hi is it_IT ko +- pl pt_BR pt_PT ru si sq sv zh_CN ) +-set( _tx_ok ar as ast bn ca@valencia da el en_GB eo es_MX et eu fa +- gl id ka ml mr nb nl oc ro sk sl sr sr@latin tg th vi ) +-set( _tx_incomplete bqi es_PR gu ie ja-Hira kk kn lo lv mk ne_NP +- ro_RO ta_IN te ur uz zh zh_HK ) ++set( _tx_complete zh_TW ) ++set( _tx_good zh_CN ) ++set( _tx_ok en_GB ) ++set( _tx_incomplete ) + # Total 80 languages + + ### Required versions +diff --git a/settings.conf b/settings.conf +index f4cbd05..f2d1106 100644 +--- a/settings.conf ++++ b/settings.conf +@@ -118,9 +118,10 @@ sequence: + # - notesqml + # - packagechooserq@licenseq + - locale +- - keyboard +- - partition ++# - keyboard + - users ++ - packagechooser ++ - partition + # - tracking + - summary + - exec: +@@ -134,23 +135,24 @@ sequence: + - machineid + - fstab + - locale +- - keyboard ++# - keyboard + - localecfg + # - luksbootkeyfile + # - luksopenswaphookcfg +-# - dracutlukscfg ++ - dracutlukscfg + # - plymouthcfg + # - zfshostid +- - initcpiocfg +- - initcpio ++ #- initcpiocfg ++ #- initcpio + - users + - displaymanager + - networkcfg + - hwclock + - services-systemd + # - dracut +- - initramfs +-# - grubcfg ++# - initramfs ++ - packages ++ - grubcfg + - bootloader + - umount + - show: +-- +2.43.0 + diff --git a/0008-progromTree.patch b/0008-progromTree.patch new file mode 100644 index 0000000000000000000000000000000000000000..8063e8f77fe336fdf8c3058c1213c46322cacf9c --- /dev/null +++ b/0008-progromTree.patch @@ -0,0 +1,660 @@ +From dd87845d5196cb45fc409ea0d445ff157cda7d33 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Fri, 8 Nov 2024 00:48:41 +0800 +Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1=E9=83=A8=E5=88=86?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + .../progresstree/ProgressTreeDelegate.cpp | 338 ++++++++++++------ + .../progresstree/ProgressTreeDelegate.h | 62 ++-- + .../progresstree/ProgressTreeView.cpp | 142 ++++---- + src/calamares/progresstree/ProgressTreeView.h | 80 +++-- + 5 files changed, 375 insertions(+), 250 deletions(-) + +diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp +index df513f2..6d5f865 100644 +--- a/src/calamares/progresstree/ProgressTreeDelegate.cpp ++++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp +@@ -1,119 +1,219 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2017 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#include "ProgressTreeDelegate.h" +- +-#include "Branding.h" +-#include "CalamaresApplication.h" +-#include "CalamaresWindow.h" +-#include "ViewManager.h" +-#include "utils/Gui.h" +- +-#include +- +-static constexpr int const item_margin = 8; +-static inline int +-item_fontsize() +-{ +- return Calamares::defaultFontSize() + 4; +-} +- +-static void +-paintViewStep( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) +-{ +- QRect textRect = option.rect.adjusted( item_margin, item_margin, -item_margin, -item_margin ); +- QFont font = qApp->font(); +- font.setPointSize( item_fontsize() ); +- font.setBold( false ); +- painter->setFont( font ); +- +- if ( index.row() == index.data( Calamares::ViewManager::ProgressTreeItemCurrentIndex ).toInt() ) +- { +- painter->setPen( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarTextCurrent ) ); +- QString textHighlight +- = Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackgroundCurrent ); +- if ( textHighlight.isEmpty() ) +- { +- painter->setBrush( CalamaresApplication::instance()->mainWindow()->palette().window() ); +- } +- else +- { +- painter->setBrush( QColor( textHighlight ) ); +- } +- } +- +- // Draw the text at least once. If it doesn't fit, then shrink the font +- // being used by 1 pt on each iteration, up to a maximum of maximumShrink +- // times. On each loop, we'll have to blank out the rectangle again, so this +- // is an expensive (in terms of drawing operations) thing to do. +- // +- // (The loop uses <= because the counter is incremented at the start). +- static constexpr int const maximumShrink = 4; +- int shrinkSteps = 0; +- do +- { +- painter->fillRect( option.rect, painter->brush().color() ); +- shrinkSteps++; +- +- QRectF boundingBox; +- painter->drawText( +- textRect, Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextSingleLine, index.data().toString(), &boundingBox ); +- +- // The extra check here is to avoid the changing-font-size if we're not going to use +- // it in the next iteration of the loop anyway. +- if ( ( shrinkSteps <= maximumShrink ) && ( boundingBox.width() > textRect.width() ) ) +- { +- font.setPointSize( item_fontsize() - shrinkSteps ); +- painter->setFont( font ); +- } +- else +- { +- break; // It fits +- } +- } while ( shrinkSteps <= maximumShrink ); +-} +- +-QSize +-ProgressTreeDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const +-{ +- if ( !index.isValid() ) +- { +- return option.rect.size(); +- } +- +- QFont font = qApp->font(); +- +- font.setPointSize( item_fontsize() ); +- QFontMetrics fm( font ); +- int height = fm.height(); +- +- height += 2 * item_margin; +- +- return QSize( option.rect.width(), height ); +-} +- +-void +-ProgressTreeDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const +-{ +- QStyleOptionViewItem opt = option; +- +- painter->save(); +- +- initStyleOption( &opt, index ); +- opt.text.clear(); +- +- painter->setBrush( +- QColor( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackground ) ) ); +- painter->setPen( QColor( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarText ) ) ); +- +- paintViewStep( painter, opt, index ); +- +- painter->restore(); +-} ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2017 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#include "ProgressTreeDelegate.h" ++ ++#include "Branding.h" ++#include "CalamaresApplication.h" ++#include "CalamaresWindow.h" ++#include "ViewManager.h" ++#include "utils/Gui.h" ++#include "utils/Logger.h" ++ ++#include ++#include ++static constexpr int const item_margin = 8; ++static inline int ++item_fontsize() ++{ ++ return Calamares::defaultFontSize(); ++} ++static bool contains(const std::vector& vec,const QString& value){ ++ for(const QString& v : vec){ ++ if(v==value){ ++ return true; ++ } ++ } ++ return false; ++} ++static QString getTypeOfStep(const QString& stepString){ ++ std::vector baseSetting1 = {"Location","Keyboard"}; ++ std::vector userSetting1 = {"Users","Packages"}; ++ std::vector installSteps1 = {"Partitions","Summary","Install","Finish"}; ++ std::vector baseSetting2 = {"位置","键盘"}; ++ std::vector userSetting2 = {"用户","桌面"}; ++ std::vector installSteps2 = {"分区","摘要","安装","结束"}; ++ std::vector baseSetting3 = {"位置", "鍵盤"}; ++ std::vector userSetting3 = {"使用者", "軟體包"}; ++ std::vector installSteps3 = {"分割區", "總覽", "安裝", "完成"}; ++ // 获取当前系统的语言设置 ++ QLocale locale; ++ QLocale::Language lang = locale.language(); ++ ++ // 将语言枚举值转换为字符串 ++ QString languageString = QLocale::languageToString(lang); ++ QLocale::Country country = locale.country(); ++ ++ // 将地区枚举值转换为字符串 ++ QString countryString = QLocale::countryToString(country); ++ // 输出当前语言 ++ cDebug() << "-------------------------------------------当前系统语言:" << languageString; ++ cDebug() << "-------------------------------------------当前系统地区:" << countryString; ++ if(contains(baseSetting1,stepString)){ ++ return "BaseSetting"; ++ } ++ if(contains(userSetting1,stepString)){ ++ return "UserSetting"; ++ } ++ if(contains(installSteps1,stepString)){ ++ return "InstallSetting"; ++ } ++ if(contains(baseSetting2,stepString) && countryString=="China"){ ++ return "基础设置"; ++ } ++ if(contains(userSetting2,stepString) && countryString=="China"){ ++ return "用户设置"; ++ } ++ if(contains(installSteps2,stepString) && countryString=="China"){ ++ return "安装设置"; ++ } ++ if (contains(baseSetting3, stepString) && countryString=="Taiwan") { ++ return "基礎設定"; ++ } ++ if (contains(userSetting3, stepString) && countryString=="Taiwan"){ ++ return "使用者設定"; ++ } ++ if (contains(installSteps3, stepString) && countryString=="Taiwan") { ++ return "安裝設定"; ++ } ++ return 0; ++} ++static int getTypeOfStep(int val){ ++ if(val<=1){ ++ return 1; ++ } ++ else if(val<=3){ ++ return 2; ++ } ++ else if(val<=8){ ++ return 3; ++ } ++ else{ ++ return 0; ++ } ++} ++static bool isVisable(const QString& stepString){ ++ std::vector installSteps = {"鍵盤", "軟體包", "總覽", "安裝", "完成", ++ "Keyboard","Packages","Summary","Install","Finish", ++ "键盘","桌面","摘要","安装","结束"}; ++ return !contains(installSteps, stepString); ++} ++static void ++paintViewStep( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) ++{ ++ QRect textRect = option.rect.adjusted( item_margin, item_margin, -item_margin, -item_margin ); ++ QFont font = qApp->font(); ++ font.setPointSize( item_fontsize() ); ++ font.setBold( false ); ++ painter->setFont( font ); ++ ++ int CurrentTypeOfStep = getTypeOfStep(index.data( Calamares::ViewManager::ProgressTreeItemCurrentIndex ).toInt()); ++ int TypeOfStep = getTypeOfStep(index.row()); ++ if ( CurrentTypeOfStep == TypeOfStep ) ++ { ++ painter->setPen( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarTextCurrent ) ); ++ QString textHighlight ++ = Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackgroundCurrent ); ++ if ( textHighlight.isEmpty() ) ++ { ++ painter->setBrush( CalamaresApplication::instance()->mainWindow()->palette().window() ); ++ } ++ else ++ { ++ painter->setBrush( QColor( textHighlight ) ); ++ } ++ } ++ ++ // Draw the text at least once. If it doesn't fit, then shrink the font ++ // being used by 1 pt on each iteration, up to a maximum of maximumShrink ++ // times. On each loop, we'll have to blank out the rectangle again, so this ++ // is an expensive (in terms of drawing operations) thing to do. ++ // ++ // (The loop uses <= because the counter is incremented at the start). ++ static constexpr int const maximumShrink = 4; ++ int shrinkSteps = 0; ++ do ++ { ++ ++ shrinkSteps++; ++ ++ QRectF boundingBox; ++ cDebug() << "index.data().toString()" << index.data().toString(); ++ QString text; ++ if(index.data().toString()=="欢迎" || index.data().toString()=="Welcome"||!isVisable(index.data().toString())){ ++ text = ""; ++ }else{ ++ text = getTypeOfStep(index.data().toString()); ++ painter->fillRect( option.rect, painter->brush().color() ); ++ } ++ painter->drawText( ++ textRect, Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextSingleLine, text, &boundingBox ); ++ ++ // The extra check here is to avoid the changing-font-size if we're not going to use ++ // it in the next iteration of the loop anyway. ++ if ( ( shrinkSteps <= maximumShrink ) && ( boundingBox.width() > textRect.width() ) ) ++ { ++ font.setPointSize( item_fontsize() ); ++ painter->setFont( font ); ++ } ++ else ++ { ++ break; // It fits ++ } ++ } while ( shrinkSteps <= maximumShrink ); ++} ++ ++QSize ++ProgressTreeDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const ++{ ++ if ( !index.isValid() ) ++ { ++ return option.rect.size(); ++ } ++ ++ QFont font = qApp->font(); ++ cDebug() << "ProgressTreeDelegate::sizeHint"; ++ ++ font.setPointSize( item_fontsize() ); ++ QFontMetrics fm( font ); ++ int height = fm.height(); ++ height += 2 * item_margin; ++ if(index.data().toString()=="欢迎" || index.data().toString()=="Welcome"||!isVisable(index.data().toString())){ ++ return QSize( 0, 0 ); ++ }else{ ++ return QSize( (Calamares::windowMinimumWidth*0.9)/3, height*2 ); ++ } ++// return QSize( option.rect.width(), height ); ++ ++} ++ ++void ++ProgressTreeDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const ++{ ++ cDebug() << "ProgressTreeDelegate::paint----------"; ++ QStyleOptionViewItem opt = option; ++ ++ painter->save(); ++ ++ initStyleOption( &opt, index ); ++ opt.text.clear(); ++ ++ painter->setBrush( ++ QColor( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackground ) ) ); ++ painter->setPen( QColor( Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarText ) ) ); ++ if(index.data().toString()=="欢迎" || index.data().toString()=="Welcome"){ ++ cDebug() << "ProgressTreeDelegate::欢迎Welcome--------Nopaint----------"; ++ }else{ ++ paintViewStep( painter, opt, index ); ++ } ++ //paintViewStep( painter, opt, index ); ++ ++ painter->restore(); ++} +diff --git a/src/calamares/progresstree/ProgressTreeDelegate.h b/src/calamares/progresstree/ProgressTreeDelegate.h +index d5a5abc..af4fef9 100644 +--- a/src/calamares/progresstree/ProgressTreeDelegate.h ++++ b/src/calamares/progresstree/ProgressTreeDelegate.h +@@ -1,31 +1,31 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2019 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#ifndef PROGRESSTREEDELEGATE_H +-#define PROGRESSTREEDELEGATE_H +- +-#include +- +-/** +- * @brief The ProgressTreeDelegate class customizes the look and feel of the +- * ProgressTreeView elements. +- * @see ProgressTreeView +- */ +-class ProgressTreeDelegate : public QStyledItemDelegate +-{ +-public: +- using QStyledItemDelegate::QStyledItemDelegate; +- +-protected: +- QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const override; +- void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const override; +-}; +- +-#endif // PROGRESSTREEDELEGATE_H ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2019 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#ifndef PROGRESSTREEDELEGATE_H ++#define PROGRESSTREEDELEGATE_H ++ ++#include ++ ++/** ++ * @brief The ProgressTreeDelegate class customizes the look and feel of the ++ * ProgressTreeView elements. ++ * @see ProgressTreeView ++ */ ++class ProgressTreeDelegate : public QStyledItemDelegate ++{ ++public: ++ using QStyledItemDelegate::QStyledItemDelegate; ++ ++protected: ++ QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const override; ++ void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const override; ++}; ++ ++#endif // PROGRESSTREEDELEGATE_H +diff --git a/src/calamares/progresstree/ProgressTreeView.cpp b/src/calamares/progresstree/ProgressTreeView.cpp +index 9d49ea2..29ee7ee 100644 +--- a/src/calamares/progresstree/ProgressTreeView.cpp ++++ b/src/calamares/progresstree/ProgressTreeView.cpp +@@ -1,61 +1,81 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014 Teo Mrnjavac +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#include "ProgressTreeView.h" +- +-#include "ProgressTreeDelegate.h" +- +-#include "Branding.h" +-#include "ViewManager.h" +- +-ProgressTreeView::ProgressTreeView( QWidget* parent ) +- : QListView( parent ) +-{ +- this->setObjectName( "sidebarMenuApp" ); +- setFrameShape( QFrame::NoFrame ); +- setContentsMargins( 0, 0, 0, 0 ); +- +- setSelectionMode( QAbstractItemView::NoSelection ); +- setDragDropMode( QAbstractItemView::NoDragDrop ); +- setAcceptDrops( false ); +- +- setItemDelegate( new ProgressTreeDelegate( this ) ); +- +- QPalette plt = palette(); +- plt.setColor( QPalette::Base, +- Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackground ) ); +- setPalette( plt ); +-} +- +- +-ProgressTreeView::~ProgressTreeView() {} +- +- +-void +-ProgressTreeView::setModel( QAbstractItemModel* model ) +-{ +- if ( ProgressTreeView::model() ) +- { +- return; +- } +- +- QListView::setModel( model ); +- +- connect( Calamares::ViewManager::instance(), +- &Calamares::ViewManager::currentStepChanged, +- this, +- &ProgressTreeView::update, +- Qt::UniqueConnection ); +-} +- +-void +-ProgressTreeView::update() +-{ +- viewport()->update(); +-} ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014 Teo Mrnjavac ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#include "ProgressTreeView.h" ++ ++#include "ProgressTreeDelegate.h" ++ ++#include "Branding.h" ++#include "ViewManager.h" ++#include "utils/Logger.h" ++ ++ProgressTreeView::ProgressTreeView( QWidget* parent ) ++ : QListView( parent ) ++{ ++ this->setObjectName( "sidebarMenuApp" ); ++ setFrameShape( QFrame::NoFrame ); ++ setContentsMargins( 0, 0, 0, 0 ); ++ ++ setFlow(QListView::LeftToRight);// ++ setSelectionMode( QAbstractItemView::NoSelection ); ++ setDragDropMode( QAbstractItemView::NoDragDrop ); ++ setAcceptDrops( false ); ++// setVisible( false); ++ ++ setItemDelegate( new ProgressTreeDelegate( this ) ); ++ ++ QPalette plt = palette(); ++ plt.setColor( QPalette::Base, ++ Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarBackground ) ); ++ setPalette( plt ); ++// connect(parent, SIGNAL(currentStepChanged(int)), this, SLOT(updateVisibility(int))); ++ connect( Calamares::ViewManager::instance(), ++ &Calamares::ViewManager::currentStepChanged, ++ this, ++ &ProgressTreeView::updateVisibility, ++ Qt::UniqueConnection ); ++// connect(viewManager, &ViewManager::currentStepChanged, this, &ProgressTreeView::updateVisibility); ++} ++ ++ ++ProgressTreeView::~ProgressTreeView() {} ++ ++ ++ ++void ++ProgressTreeView::setModel( QAbstractItemModel* model ) ++{ ++ if ( ProgressTreeView::model() ) ++ { ++ return; ++ } ++ ++ QListView::setModel( model ); ++ ++ connect( Calamares::ViewManager::instance(), ++ &Calamares::ViewManager::currentStepChanged, ++ this, ++ &ProgressTreeView::update, ++ Qt::UniqueConnection ); ++} ++ ++void ++ProgressTreeView::update() ++{ ++ cDebug() << "update ---------------------"; ++ viewport()->update(); ++} ++ ++void ++ProgressTreeView::updateVisibility(int currentStep) ++{ ++ cDebug() << "int currentStep ------------------ " << currentStep; ++ // 在第一个步骤隐藏,其他步骤显示 ++ this->setVisible(currentStep > 0); ++} +diff --git a/src/calamares/progresstree/ProgressTreeView.h b/src/calamares/progresstree/ProgressTreeView.h +index d845cc7..b02b9ce 100644 +--- a/src/calamares/progresstree/ProgressTreeView.h ++++ b/src/calamares/progresstree/ProgressTreeView.h +@@ -1,39 +1,41 @@ +-/* === This file is part of Calamares - === +- * +- * SPDX-FileCopyrightText: 2014 Teo Mrnjavac +- * SPDX-FileCopyrightText: 2017 Adriaan de Groot +- * SPDX-License-Identifier: GPL-3.0-or-later +- * +- * Calamares is Free Software: see the License-Identifier above. +- * +- */ +- +-#ifndef PROGRESSTREEVIEW_H +-#define PROGRESSTREEVIEW_H +- +-#include +- +-/** +- * @brief Displays progress through the list of (visible) steps +- * +- * The ProgressTreeView class is a modified QListView which displays the +- * available view steps and the user's progress through them. +- * Since Calamares doesn't support "sub steps", it isn't really a tree. +- */ +-class ProgressTreeView : public QListView +-{ +- Q_OBJECT +-public: +- explicit ProgressTreeView( QWidget* parent = nullptr ); +- ~ProgressTreeView() override; +- +- /** +- * @brief setModel assigns a model to this view. +- */ +- void setModel( QAbstractItemModel* model ) override; +- +-public Q_SLOTS: +- void update(); +-}; +- +-#endif // PROGRESSTREEVIEW_H ++/* === This file is part of Calamares - === ++ * ++ * SPDX-FileCopyrightText: 2014 Teo Mrnjavac ++ * SPDX-FileCopyrightText: 2017 Adriaan de Groot ++ * SPDX-License-Identifier: GPL-3.0-or-later ++ * ++ * Calamares is Free Software: see the License-Identifier above. ++ * ++ */ ++ ++#ifndef PROGRESSTREEVIEW_H ++#define PROGRESSTREEVIEW_H ++ ++#include ++#include "utils/Logger.h" ++ ++/** ++ * @brief Displays progress through the list of (visible) steps ++ * ++ * The ProgressTreeView class is a modified QListView which displays the ++ * available view steps and the user's progress through them. ++ * Since Calamares doesn't support "sub steps", it isn't really a tree. ++ */ ++class ProgressTreeView : public QListView ++{ ++ Q_OBJECT ++public: ++ explicit ProgressTreeView( QWidget* parent = nullptr ); ++ ~ProgressTreeView() override; ++ ++ /** ++ * @brief setModel assigns a model to this view. ++ */ ++ void setModel( QAbstractItemModel* model ) override; ++ ++public Q_SLOTS: ++ void update(); ++ void updateVisibility(int currentStep); ++}; ++ ++#endif // PROGRESSTREEVIEW_H +-- +2.43.0 + diff --git a/0009-qss.patch b/0009-qss.patch new file mode 100644 index 0000000000000000000000000000000000000000..4078c5d2f82bd9daa7059b86bc164f5df147c984 --- /dev/null +++ b/0009-qss.patch @@ -0,0 +1,94 @@ +From 0c7571051e9bf0a051bb44f40cffe85bc44c1791 Mon Sep 17 00:00:00 2001 +From: cui-gaoleng <562344211@qq.com> +Date: Sat, 9 Nov 2024 11:38:16 +0800 +Subject: [PATCH] =?UTF-8?q?qss=E6=96=87=E4=BB=B6=E6=8F=90=E4=BA=A4?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/branding/default/stylesheet.qss | 67 +++++++++++++++++++++++++++-- + 1 file changed, 64 insertions(+), 3 deletions(-) + +diff --git a/src/branding/default/stylesheet.qss b/src/branding/default/stylesheet.qss +index 5c36738..85498f6 100644 +--- a/src/branding/default/stylesheet.qss ++++ b/src/branding/default/stylesheet.qss +@@ -34,10 +34,71 @@ The examples are not exhaustive. + * the class name. Some widgets have specialized sub-selectors. + */ + +-/* +-QPushButton { background-color: green; } +-*/ + ++QPushButton { ++ background-color: rgb(10, 10, 204); ++ font-size: 12px; ++ color: rgb(17, 17, 17); ++ height: 18px; ++} ++QPushButton:focus { ++ background-color: rgb(10, 10, 204); ++ color: rgb(17, 17, 17); ++ font-size: 12px; ++} ++QPushButton:checked { ++ background-color: rgb(233, 233, 243); ++ color: rgb(17, 17, 17); ++ font-size: 12px; ++ ++} ++QPushButton:disabled { ++ background-color: rgb(151, 150, 253); ++ color: rgb(201, 195, 195); ++ font-size: 12px; ++} ++QToolButton { ++ background-color: rgb(10, 10, 204); ++ font-size: 12px; ++ color: rgb(255, 255, 255); ++ height: 18px; ++} ++QToolButton:focus { ++ background-color: rgb(10, 10, 204); ++ color: rgb(250, 249, 249); ++ font-size: 12px; ++} ++QToolButton:checked { ++ background-color: rgb(233, 233, 243); ++ color: rgb(17, 17, 17); ++ font-size: 12px; ++ ++} ++QToolButton:disabled { ++ background-color: rgb(151, 150, 253); ++ color: rgb(245, 233, 233); ++ font-size: 12px; ++} ++#mainApp{ ++ background-color: #FFFFFF; ++} ++ ++QComboBox{ background-color: rgb(254, 254, 255); color: black; } QComboBox ++QAbstractItemView{ background-color: rgb(254, 254, 255); } ++ ++QDialog{ ++ background-color: #fdfdfd; ++ border-radius: 5px; ++ border: 1px solid #aaa; ++} ++ ++QToolTip { ++ background-color: rgba(17,17,17,200); ++ color: #f1f0f0; ++ border: 1px solid #766d6d; ++ border-radius: 5px; ++ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); ++} + /*** Main application window. + * + * The main application window has the sidebar, which in turn +-- +2.43.0 + diff --git a/Biglogo.png b/Biglogo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7ac244e8d16f4d0252014c3e4e8556d246b6d5 Binary files /dev/null and b/Biglogo.png differ diff --git a/Biglogo.svg b/Biglogo.svg new file mode 100644 index 0000000000000000000000000000000000000000..1432eb13bde861d0733d2c3f0cc41aa926fcfe87 --- /dev/null +++ b/Biglogo.svg @@ -0,0 +1,44 @@ + + + Created with Pixso. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Biglogo.svgz b/Biglogo.svgz new file mode 100644 index 0000000000000000000000000000000000000000..c84dcfa7f001723fd274d18548fe90985401df49 Binary files /dev/null and b/Biglogo.svgz differ diff --git a/Minimal-Install.png b/Minimal-Install.png new file mode 100644 index 0000000000000000000000000000000000000000..dd12890a4a1a14be35db5eb57d27cafe6cc99527 Binary files /dev/null and b/Minimal-Install.png differ diff --git a/Slide1.png b/Slide1.png new file mode 100644 index 0000000000000000000000000000000000000000..8de9c27a4b6fb83a2109dd7695f5424190f83d85 Binary files /dev/null and b/Slide1.png differ diff --git a/Slide2.png b/Slide2.png new file mode 100644 index 0000000000000000000000000000000000000000..c3cc480647d2af3041fd3d65e1f2aa4ef4e6b854 Binary files /dev/null and b/Slide2.png differ diff --git a/Slide3.png b/Slide3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef4b8e6901ae7cdc284ef8dcad660003f8b5541e Binary files /dev/null and b/Slide3.png differ diff --git a/calamares-3.3.7.tar.gz b/calamares-3.3.7.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ab6cc2c6ed11a086663c6f3b87e233cd93ec0001 Binary files /dev/null and b/calamares-3.3.7.tar.gz differ diff --git a/calamares-auto_de.ts b/calamares-auto_de.ts new file mode 100644 index 0000000000000000000000000000000000000000..671ec2913ca059e993535ba81dc8e87544e2a4b5 --- /dev/null +++ b/calamares-auto_de.ts @@ -0,0 +1,12 @@ + + + + + show + + + This installer is powered by Calamares, the cross-distribution installer framework. + Dieses Installationsprogramm beruht auf Calamares, dem distributionsunabhängigen Baukasten für Installationsprogramme. + + + diff --git a/calamares-auto_fr.ts b/calamares-auto_fr.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5aa5916cca83e41a07917f8f7640076b1e75125 --- /dev/null +++ b/calamares-auto_fr.ts @@ -0,0 +1,11 @@ + + + + + show + + This installer is powered by Calamares, the cross-distribution installer framework. + Cet installeur tourne avec Calamares, la boîte d'outils pour installeurs toutes distributions. + + + diff --git a/calamares-auto_it.ts b/calamares-auto_it.ts new file mode 100644 index 0000000000000000000000000000000000000000..e08addf3c2b27ffd218baf01e672d7301a6599e6 --- /dev/null +++ b/calamares-auto_it.ts @@ -0,0 +1,12 @@ + + + + + show + + + This installer is powered by Calamares, the cross-distribution installer framework. + Questo programma d'installazione si basa su Calamares, il framework per programmi d'installazione indipendente dalla distribuzione. + + + diff --git a/calamares.service b/calamares.service new file mode 100644 index 0000000000000000000000000000000000000000..774f3f1bbadcc00b22c7cbb2d42fb1cd8a6747fe --- /dev/null +++ b/calamares.service @@ -0,0 +1,13 @@ +[Unit] +Description=Calamares System Installer +Wants=basic.target +After=basic.target + +[Service] +Type=simple +ExecStartPre=/sbin/multipath -F +ExecStart=/usr/bin/calamares -style Adwaita +Restart=on-abort + +[Install] +WantedBy=multi-user.target diff --git a/calamares.spec b/calamares.spec new file mode 100644 index 0000000000000000000000000000000000000000..6c3665908cacebcd7e3fb62acc7ea3beba080243 --- /dev/null +++ b/calamares.spec @@ -0,0 +1,339 @@ +%global __cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.} + +Name: calamares +Version: 3.3.7 +Release: 1 +Summary: Installer from a live CD/DVD/USB to disk + +License: GPL-3.0-or-later +URL: https://calamares.io/ +Source0: calamares-3.3.7.tar.gz +Source2: show.qml +# Run: +# lupdate-qt6 show.qml -ts calamares-auto_fr.ts +# then translate the template in linguist-qt6. +Source3: calamares-auto_fr.ts +# Run: +# lupdate-qt6 show.qml -ts calamares-auto_de.ts +# then translate the template in linguist-qt6. +Source4: calamares-auto_de.ts +# Run: +# lupdate-qt6 show.qml -ts calamares-auto_it.ts +# then translate the template in linguist-qt6. +Source5: calamares-auto_it.ts +Source6: calamares.service +# Backports from upstream + +#image:binary file:svg,png,svgz +Source7: squid.png +Source8: Biglogo.svgz +Source9: Biglogo.svg +Source10: Biglogo.png +Source11: Minimal-Install.png +Source12: gnome.png +Source13: Slide1.png +Source14: Slide2.png +Source15: Slide3.png +Source16: information.svgz +Source17: openEuler.png +Source18: openEulerWord-blus.png +Source19: openEulerWord.png + +# patch +Patch0: 0001-branding-patch.patch +Patch1: 0002-lang.patch +Patch2: 0003-calamares.patch +Patch3: 0004-libcalamares.patch +Patch4: 0005-libcalamaresui.patch +Patch5: 0006-modules-file.patch +Patch6: 0007-root.patch +Patch7: 0008-progromTree.patch +Patch8: 0009-qss.patch +# Calamares is only supported where live images (and GRUB) are. (#1171380) +# This list matches the arches where grub2-efi is used to boot the system +ExclusiveArch: %{ix86} x86_64 aarch64 riscv64 + +# Macros +BuildRequires: git-core +BuildRequires: kf5-rpm-macros + +# Compilation tools +BuildRequires: cmake >= 3.16 +BuildRequires: extra-cmake-modules +BuildRequires: extra-cmake-modules +BuildRequires: gcc-c++ >= 9.0.0 +BuildRequires: pkgconfig +BuildRequires: make +## +### Other build-time tools +BuildRequires: desktop-file-utils +BuildRequires: gettext +## +### Qt 5 +BuildRequires: cmake(Qt5Concurrent) +BuildRequires: cmake(Qt5Core) +BuildRequires: cmake(Qt5DBus) +BuildRequires: cmake(Qt5Gui) +BuildRequires: cmake(Qt5LinguistTools) +BuildRequires: cmake(Qt5Network) +BuildRequires: cmake(Qt5Svg) +BuildRequires: cmake(Qt5Widgets) +BuildRequires: cmake(Qt5Quick) +BuildRequires: cmake(Qt5QuickWidgets) +BuildRequires: polkit-qt5-1-devel +## +### KF5 +BuildRequires: cmake(KF5CoreAddons) +BuildRequires: cmake(KF5Config) +BuildRequires: cmake(KF5Crash) +BuildRequires: cmake(KF5DBusAddons) +BuildRequires: cmake(KF5I18n) +BuildRequires: cmake(KF5Package) +BuildRequires: cmake(KF5Parts) +BuildRequires: cmake(KF5Service) +BuildRequires: cmake(KF5WidgetsAddons) +## +### Plasma +#BuildRequires: cmake(Plasma) +## +### KPMcore +BuildRequires: cmake(KPMcore) >= 4.2.0 +## +### Python 3 +BuildRequires: python3-devel >= 3.3 +BuildRequires: python3-jsonschema +BuildRequires: python3-pyyaml +BuildRequires: boost-devel >= 1.55.0 +##%global __python %{__python3} +## +### Other libraries +BuildRequires: cmake(AppStreamQt) +BuildRequires: libpwquality-devel +BuildRequires: libxcrypt-devel +BuildRequires: parted-devel +BuildRequires: yaml-cpp-devel >= 0.5.1 + +# for automatic branding setup +Requires(post): system-release +Requires(post): system-logos +Requires: system-logos + +Requires: python3-devel +Requires: boost-devel +Requires: coreutils +Requires: util-linux +Requires: upower +Requires: NetworkManager +Requires: dracut +Requires: grub2 +%ifarch x86_64 aarch64 riscv64 +%ifarch x86_64 +# For x86 systems +Requires: grub2-efi-x64 +Recommends: grub2-efi-ia32 +%else +# For all non-x86 arches +Requires: grub2-efi +%endif +Requires: efibootmgr +%endif +Requires: console-setup +Requires: setxkbmap +Requires: os-prober +Requires: e2fsprogs +Requires: dosfstools +Requires: ntfsprogs +Requires: gawk +Requires: systemd +Requires: rsync +Requires: shadow-utils +Requires: dnf +Requires: kdesu +Requires: hicolor-icon-theme + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +# webview module is no longer available +Obsoletes: %{name}-webview < 3.0.0~ + + +%description +Calamares is a distribution-independent installer framework, designed to install +from a live CD/DVD/USB environment to a hard disk. It includes a graphical +installation program based on Qt 6. This package includes the Calamares +framework and the required configuration files to produce a working replacement +for Anaconda's liveinst. + + +%package libs +Summary: Calamares runtime libraries +Requires: %{name} = %{version}-%{release} + +%description libs +%{summary}. + + +%package interactiveterminal +Summary: Calamares interactiveterminal module +Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description interactiveterminal +Optional interactiveterminal module for the Calamares installer, based on the +KonsolePart (from Konsole 6) + + +%package plasmalnf +Summary: Calamares plasmalnf module +Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description plasmalnf +Optional plasmalnf module for the Calamares installer, based on the KDE Plasma +Desktop Workspace and its KDE Frameworks (KConfig, KPackage, Plasma) + + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: cmake + +%description devel +The %{name}-devel package contains libraries and header files for +developing custom modules for Calamares. + + +%prep +%autosetup -p1 + +# 配置文件与资源文件的准备 +mkdir -p %{_builddir}/calamares-3.3.7/data/config-appimage/branding/default +install -Dm 0644 %{SOURCE7} %{_builddir}/calamares-3.3.7/data/config-appimage/branding/default/squid.png + +mkdir -p %{_builddir}/calamares-3.3.7/data/images +install -Dm 0644 %{SOURCE8} %{_builddir}/calamares-3.3.7/data/images/Biglogo.svgz +install -Dm 0644 %{SOURCE9} %{_builddir}/calamares-3.3.7/data/images/Biglogo.svg +install -Dm 0644 %{SOURCE16} %{_builddir}/calamares-3.3.7/data/images/information.svgz +mkdir -p %{_builddir}/calamares-3.3.7/src/modules/packagechooser/images +install -Dm 0644 %{SOURCE10} %{_builddir}/calamares-3.3.7/src/branding/default/Biglogo.png +install -Dm 0644 %{SOURCE11} %{_builddir}/calamares-3.3.7/src/modules/packagechooser/images/Minimal-Install.png +install -Dm 0644 %{SOURCE9} %{_builddir}/calamares-3.3.7/src/branding/default/Biglogo.svg +install -Dm 0644 %{SOURCE8} %{_builddir}/calamares-3.3.7/src/branding/default/Biglogo.svgz +install -Dm 0644 %{SOURCE7} %{_builddir}/calamares-3.3.7/src/branding/default/squid.png +install -Dm 0644 %{SOURCE12} %{_builddir}/calamares-3.3.7/src/modules/packagechooser/images/gnome.png +install -Dm 0644 %{SOURCE13} %{_builddir}/calamares-3.3.7/src/branding/default/Slide1.png +install -Dm 0644 %{SOURCE14} %{_builddir}/calamares-3.3.7/src/branding/default/Slide2.png +install -Dm 0644 %{SOURCE15} %{_builddir}/calamares-3.3.7/src/branding/default/Slide3.png +install -Dm 0644 %{SOURCE17} %{_builddir}/calamares-3.3.7/src/branding/default/openEuler.png +install -Dm 0644 %{SOURCE18} %{_builddir}/calamares-3.3.7/src/branding/default/openEulerWord-blus.png +install -Dm 0644 %{SOURCE19} %{_builddir}/calamares-3.3.7/src/branding/default/openEulerWord.png +%build +mkdir build +cd build +cmake .. -DINSTALL_CONFIG=ON +make -j 2 + +%install +cd build +%make_install + +# 创建auto branding目录并安装相关文件 +mkdir -p %{buildroot}%{_datadir}/calamares/branding/auto +touch %{buildroot}%{_datadir}/calamares/branding/auto/branding.desc +install -p -m 644 %{SOURCE2} %{buildroot}%{_datadir}/calamares/branding/auto/show.qml + +# 翻译文件 +mkdir -p %{buildroot}%{_datadir}/calamares/branding/auto/lang +lrelease-qt5 %{SOURCE3} -qm %{buildroot}%{_datadir}/calamares/branding/auto/lang/calamares-auto_fr.qm +lrelease-qt5 %{SOURCE4} -qm %{buildroot}%{_datadir}/calamares/branding/auto/lang/calamares-auto_de.qm +lrelease-qt5 %{SOURCE5} -qm %{buildroot}%{_datadir}/calamares/branding/auto/lang/calamares-auto_it.qm + +# 系统配置目录 +mkdir -p %{buildroot}%{_sysconfdir}/calamares/modules +mkdir -p %{buildroot}%{_sysconfdir}/calamares/branding +mkdir -p %{buildroot}%{_sysconfdir}/systemd/system +install -p -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/systemd/system/calamares.service + +# 额外资源文件/data/ +mkdir -p %{buildroot}/data/config-appimage/branding/default +install -Dm 0644 %{SOURCE7} %{buildroot}/data/config-appimage/branding/default/squid.png + +mkdir -p %{buildroot}/data/images +install -Dm 0644 %{SOURCE8} %{buildroot}/data/images/Biglogo.svgz +install -Dm 0644 %{SOURCE9} %{buildroot}/data/images/Biglogo.svg +install -Dm 0644 %{SOURCE16} %{buildroot}/data/images/information.svgz + +# calamares模块图片目录 +mkdir -p %{buildroot}%{_datadir}/calamares/modules/packagechooser/images +install -Dm 0644 %{SOURCE10} %{buildroot}%{_datadir}/calamares/branding/default/Biglogo.png +install -Dm 0644 %{SOURCE11} %{buildroot}%{_datadir}/calamares/modules/packagechooser/images/Minimal-Install.png +install -Dm 0644 %{SOURCE9} %{buildroot}%{_datadir}/calamares/branding/default/Biglogo.svg +install -Dm 0644 %{SOURCE8} %{buildroot}%{_datadir}/calamares/branding/default/Biglogo.svgz +install -Dm 0644 %{SOURCE7} %{buildroot}%{_datadir}/calamares/branding/default/squid.png +install -Dm 0644 %{SOURCE12} %{buildroot}%{_datadir}/calamares/modules/packagechooser/images/gnome.png +install -Dm 0644 %{SOURCE13} %{buildroot}%{_datadir}/calamares/branding/default/Slide1.png +install -Dm 0644 %{SOURCE14} %{buildroot}%{_datadir}/calamares/branding/default/Slide2.png +install -Dm 0644 %{SOURCE15} %{buildroot}%{_datadir}/calamares/branding/default/Slide3.png +install -Dm 0644 %{SOURCE17} %{buildroot}%{_datadir}/calamares/branding/default/openEuler.png +install -Dm 0644 %{SOURCE18} %{buildroot}%{_datadir}/calamares/branding/default/openEulerWord-blus.png +install -Dm 0644 %{SOURCE19} %{buildroot}%{_datadir}/calamares/branding/default/openEulerWord.png + +%files +%doc AUTHORS +%license LICENSES/* +%{_bindir}/calamares +%{_datadir}/calamares/ +%{_datadir}/calamares/settings.conf +%{_datadir}/calamares/branding/default/ +%{_datadir}/calamares/branding/auto/ +%ghost %{_datadir}/calamares/branding/auto/branding.desc +%{_datadir}/calamares/branding/auto/show.qml +%{_datadir}/calamares/branding/auto/lang/ +%{_datadir}/calamares/modules/ +%{_datadir}/calamares/qml/ +%{_datadir}/applications/calamares.desktop +%{_datadir}/icons/hicolor/scalable/apps/calamares.svg +%{_mandir}/man8/calamares.8* +%{_sysconfdir}/calamares/ +%{_datadir}/locale/ +%{_datadir}/polkit-1/ +%{_sysconfdir}/systemd/system/calamares.service +%{_datadir}/bash-completion/completions/calamares +%dir /data/ +%dir /data/images/ +/data/images/Biglogo.svgz +/data/images/Biglogo.svg +/data/images/information.svgz +%dir /data/config-appimage/ +%dir /data/config-appimage/branding/ +%dir /data/config-appimage/branding/default/ +/data/config-appimage/branding/default/squid.png +%{_datadir}/calamares/branding/default/squid.png +%{_datadir}/calamares/branding/default/Biglogo.svg +%{_datadir}/calamares/branding/default/Biglogo.svgz +%{_datadir}/calamares/branding/default/openEulerWord-blus.png +%{_datadir}/calamares/branding/default/openEulerWord.png +%{_datadir}/calamares/branding/default/openEuler.png + +%files libs +%{_libdir}/libcalamares.so.* +%{_libdir}/libcalamaresui.so.* +%{_libdir}/calamares/ +%exclude %{_libdir}/calamares/modules/interactiveterminal/ + +%files interactiveterminal +%{_datadir}/calamares/modules/interactiveterminal.conf +%{_libdir}/calamares/modules/interactiveterminal/ + +%files devel +%{_includedir}/libcalamares/ +%{_libdir}/libcalamares.so +%{_libdir}/libcalamaresui.so +%{_libdir}/cmake/Calamares/ + +%clean +cd %{_builddir} || exit 0 +rm -rf %{buildroot} + +%changelog +* Wed Oct 9 2024 Li Ping - 3.3.7-1 +- Initial package diff --git a/gnome.png b/gnome.png new file mode 100644 index 0000000000000000000000000000000000000000..ed57060770957f304a3fb7ca993241d56e90f541 Binary files /dev/null and b/gnome.png differ diff --git a/information.svgz b/information.svgz new file mode 100644 index 0000000000000000000000000000000000000000..940363e1b52d57f98efff8abae012e75840bcc49 Binary files /dev/null and b/information.svgz differ diff --git a/openEuler.png b/openEuler.png new file mode 100644 index 0000000000000000000000000000000000000000..21b7820a00dde943d7088a4300adf7039db415fc Binary files /dev/null and b/openEuler.png differ diff --git a/openEulerWord-blus.png b/openEulerWord-blus.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb0e1690a72141367ff21e89e26a7f49888c355 Binary files /dev/null and b/openEulerWord-blus.png differ diff --git a/openEulerWord.png b/openEulerWord.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ec25f6fe0c7c74ac0dda5f8d1c8d0740bff7d6 Binary files /dev/null and b/openEulerWord.png differ diff --git a/show.qml b/show.qml new file mode 100644 index 0000000000000000000000000000000000000000..d71dfafefaf0fa5a80dcf621c437a60936f18830 --- /dev/null +++ b/show.qml @@ -0,0 +1,45 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * Copyright 2015, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +import QtQuick 2.0; +import calamares.slideshow 1.0; + +Presentation +{ + Slide { + Image { + id: background + source: "/usr/share/calamares/branding/default/squid.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + } + + Text { + anchors.horizontalCenter: background.horizontalCenter + anchors.top: background.bottom + text: qsTr("This installer is powered by Calamares, the cross-distribution installer framework.") + + "
https://calamares.io/" + wrapMode: Text.WordWrap + width: root.width + horizontalAlignment: Text.Center + onLinkActivated: Qt.openUrlExternally(link) + } + } +} diff --git a/squid.png b/squid.png new file mode 100644 index 0000000000000000000000000000000000000000..21b7820a00dde943d7088a4300adf7039db415fc Binary files /dev/null and b/squid.png differ