Merge branch 'calamares' of https://github.com/calamares/calamares into development

This commit is contained in:
Manjaro Build Server 2024-06-24 15:11:14 +07:00
commit 72320bf754
83 changed files with 1322 additions and 816 deletions

View File

@ -7,14 +7,51 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for
the history of the 3.2 series (2018-05 - 2022-08). the history of the 3.2 series (2018-05 - 2022-08).
# 3.3.7 (unreleased) # 3.3.8 (unreleased)
This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name):
- Nobody, yet - nobody yet!
## Core ## ## Core ##
- nothing yet!
## Modules ## ## Modules ##
- nothing yet!
# 3.3.7 (2024-06-20)
This release contains contributions from (alphabetically by first name):
- Adriaan de Groot
- Eugene San
- Evan James
- Ivan Borzenkov
- Sohrab Behdani
- Vincent Penvern
- Vladislav Nepogodin
## Core ##
- Updated clang-formatting
- Some C++20 future-proofing (thanks Vladislav)
- CommandList (used by *contextualprocess* and *shellprocess*) now supports
globalstorage keys as substitutable variables.
## Modules ##
- *contextualprocess* see *shellprocess*.
- *fstab* module does not add an encryption keyfile if it does
not exist. (thanks Eugene)
- *initcpiocfg* has some new configuration settings to more carefully
adjust hooks for initcpio.
- *keyboard* module handles Persian (fa) layout better. (thanks Sohrab)
- *keyboard* module handles other non-ascii layout better. (thanks Ivan)
- *partition* module did not filter out invalid fstab entries;
they were not written, either, so no net change.
- *partition* module now has a configurable default check-state
for the encryption checkbox. (thanks Vincent)
- *shellprocess* commands now support globalstorage variables, which
are written as `${gs[key]}`, where `key` is a dotted string that
selects the globalstorage key to use (like in *contextualprocess*
variable-selectors) and `${gs[` and `]}` are literal characters.
# 3.3.6 (2024-04-16) # 3.3.6 (2024-04-16)
@ -22,7 +59,7 @@ This release contains contributions from (alphabetically by first name):
This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name):
- Adriaan de Groot - Adriaan de Groot
- Anke Boersma - Anke Boersma
- Eugene Sam - Eugene San
- Evan James - Evan James
- Harald Sitter - Harald Sitter
- Mike Stemle - Mike Stemle

View File

@ -47,7 +47,7 @@
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
set(CALAMARES_VERSION 3.3.7) set(CALAMARES_VERSION 3.3.8)
set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release
if(CMAKE_SCRIPT_MODE_FILE) if(CMAKE_SCRIPT_MODE_FILE)

View File

@ -9,6 +9,9 @@
# You can pass in directory names, in which case the files # You can pass in directory names, in which case the files
# in that directory (NOT below it) are processed. # in that directory (NOT below it) are processed.
# #
# If the environment variable CLANG_FORMAT is set to a (full path) and
# that path is executable, it will be used if possible.
#
LANG=C LANG=C
LC_ALL=C LC_ALL=C
LC_NUMERIC=C LC_NUMERIC=C
@ -20,8 +23,17 @@ test -d "$BASEDIR" || { echo "! Could not determine base for $0" ; exit 1 ; }
test -d "$TOPDIR" || { echo "! Cound not determine top-level source dir" ; exit 1 ; } test -d "$TOPDIR" || { echo "! Cound not determine top-level source dir" ; exit 1 ; }
test -f "$TOPDIR/.clang-format" || { echo "! No .clang-format support files in $TOPDIR" ; exit 1 ; } test -f "$TOPDIR/.clang-format" || { echo "! No .clang-format support files in $TOPDIR" ; exit 1 ; }
# Allow specifying CF_VERSIONS outside already # Start with CLANG_FORMAT, if it is specified
CF_VERSIONS="$CF_VERSIONS clang-format15 clang-format-15 clang-format-16 clang-format-16.0.6 clang-format" CF_VERSIONS=""
if test -n "$CLANG_FORMAT" && test -x "$CLANG_FORMAT" ; then
CF_VERSIONS="$CLANG_FORMAT"
fi
# And a bunch of other potential known versions of clang-format, newest first
CF_VERSIONS="$CF_VERSIONS clang-format-17"
CF_VERSIONS="$CF_VERSIONS clang-format-16 clang-format-16.0.6 "
CF_VERSIONS="$CF_VERSIONS clang-format15 clang-format-15 "
# Generic name of clang-format
CF_VERSIONS="$CF_VERSIONS clang-format"
for _cf in $CF_VERSIONS for _cf in $CF_VERSIONS
do do
# Not an error if this particular clang-format isn't found # Not an error if this particular clang-format isn't found

View File

@ -31,7 +31,7 @@
<location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/> <location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/>
<source>Managing auto-mount settings</source> <source>Managing auto-mount settings</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>- ি ...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -158,13 +158,13 @@
<message> <message>
<location filename="../src/calamares/DebugWindow.ui" line="144"/> <location filename="../src/calamares/DebugWindow.ui" line="144"/>
<source>Send Session Log</source> <source>Send Session Log</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/calamares/DebugWindow.cpp" line="164"/> <location filename="../src/calamares/DebugWindow.cpp" line="164"/>
<source>Debug Information</source> <source>Debug Information</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation>ি </translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

View File

@ -1166,7 +1166,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</tra
<location filename="../src/modules/contextualprocess/ContextualProcessJob.cpp" line="115"/> <location filename="../src/modules/contextualprocess/ContextualProcessJob.cpp" line="115"/>
<source>Performing contextual processes' job</source> <source>Performing contextual processes' job</source>
<comment>@status</comment> <comment>@status</comment>
<translation>Suoritetaan kontekstuaaliset prosessit</translation> <translation>Suoritetaan prosessit</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3627,7 +3627,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="46"/> <location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="46"/>
<source>The installer failed to remove a volume group named '%1'.</source> <source>The installer failed to remove a volume group named '%1'.</source>
<translation>Asennusoihjelma ei onnistunut poistamaan taltioryhmää '%1'.</translation> <translation>Asennusoihjelma ei voinut poistaa taltioryhmää "%1".</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3665,7 +3665,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="163"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="163"/>
<source>The file-system resize job has an invalid configuration and will not run.</source> <source>The file-system resize job has an invalid configuration and will not run.</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Tiedostojärjestelmän koon muutto ei kelpaa eikä sitä suoriteta.</translation> <translation>Tiedostojärjestelmän koonmuutostyön määritys on virheellinen, eikä sitä suoriteta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="169"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="169"/>
@ -3677,25 +3677,25 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="170"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="170"/>
<source>Calamares cannot start KPMCore for the file system resize job.</source> <source>Calamares cannot start KPMCore for the file system resize job.</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Calamares ei voi käynnistää KPMCorea tiedostojärjestelmän koon muuttamiseksi.</translation> <translation>Calamares ei voi käynnistää KPMCorea tiedostojärjestelmän koonmuutostyölle.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="179"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="179"/>
<source>Resize failed.</source> <source>Resize failed.</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Koon muuttaminen epäonnistui.</translation> <translation>Kokoa ei voitu muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="181"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="181"/>
<source>The filesystem %1 could not be found in this system, and cannot be resized.</source> <source>The filesystem %1 could not be found in this system, and cannot be resized.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>Tiedostojärjestelmää %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa.</translation> <translation>Tiedostojärjestelmää %1 ei löydy, eikä sen kokoa voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="182"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="182"/>
<source>The device %1 could not be found in this system, and cannot be resized.</source> <source>The device %1 could not be found in this system, and cannot be resized.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>Laitetta %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa.</translation> <translation>Laitetta %1 ei löydy, eikä sen kokoa voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="189"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="189"/>
@ -3704,7 +3704,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="231"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="231"/>
<source>Resize Failed</source> <source>Resize Failed</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Kokomuutos epäonnistui</translation> <translation>Kokoa ei voitu muuttaa</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="191"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="191"/>
@ -3774,7 +3774,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="28"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="28"/>
<source>Resize volume group named %1 from %2 to %3</source> <source>Resize volume group named %1 from %2 to %3</source>
<comment>@title</comment> <comment>@title</comment>
<translation>Muuta tilavuusryhmän %1 kokoa %2:sta %3:ksi</translation> <translation>Muuta taltioryhmän %1 kokoa %2:sta %3:ksi</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
@ -3791,7 +3791,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="58"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="58"/>
<source>The installer failed to resize a volume group named '%1'.</source> <source>The installer failed to resize a volume group named '%1'.</source>
<translation>Asennusohjelma ei onnistunut muuttamaan taltioryhmän "%1" kokoa.</translation> <translation>Asennusohjelma ei voinut muuttaa taltioryhmän "%1" kokoa.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4116,7 +4116,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="38"/> <location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="38"/>
<source>Running shell processes</source> <source>Running shell processes</source>
<comment>@status</comment> <comment>@status</comment>
<translation>Suoritetaan shell prosesseja</translation> <translation>Suoritetaan shell prosessit</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4410,12 +4410,12 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/modules/welcome/WelcomePage.ui" line="79"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="79"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="98"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="98"/>
<source>Select application and system language</source> <source>Select application and system language</source>
<translation>Valitse sovelluksen ja järjestelmän kieli</translation> <translation>Valitse sovellusten ja järjestelmän kieli</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
<source>Open donations website</source> <source>Open donations website</source>
<translation>Avaa lahjoitussivusto</translation> <translation>Avaa lahjoitukset verkkosivu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="143"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="143"/>
@ -4425,7 +4425,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="153"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="153"/>
<source>Open help and support website</source> <source>Open help and support website</source>
<translation>Avaa ohje- ja tukisivusto</translation> <translation>Avaa ohje- ja tukisivu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="156"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="156"/>
@ -4435,7 +4435,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="166"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="166"/>
<source>Open issues and bug-tracking website</source> <source>Open issues and bug-tracking website</source>
<translation>Avaa ongelmia käsittelevä verkkosivusto</translation> <translation>Avoimet ongelmat ja virheenseuranta verkkosivu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="169"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="169"/>
@ -4445,7 +4445,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="179"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="179"/>
<source>Open release notes website</source> <source>Open release notes website</source>
<translation>Avaa julkaisutietojen verkkosivusto</translation> <translation>Avaa julkaisutiedot verkkosivu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="182"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="182"/>
@ -4526,7 +4526,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="336"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="336"/>
<source>Failed to create dataset</source> <source>Failed to create dataset</source>
<translation>Tietojoukon luominen epäonnistui</translation> <translation>Epäonnistui dataset luominen</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="337"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="337"/>
@ -4556,7 +4556,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&lt;/
<location filename="../src/calamares/CalamaresWindow.cpp" line="159"/> <location filename="../src/calamares/CalamaresWindow.cpp" line="159"/>
<source>Show information about Calamares</source> <source>Show information about Calamares</source>
<comment>@tooltip</comment> <comment>@tooltip</comment>
<translation>Näytä tietoa Calamaresista</translation> <translation>Calamares tietoja</translation>
</message> </message>
<message> <message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="173"/> <location filename="../src/calamares/CalamaresWindow.cpp" line="173"/>

View File

@ -876,7 +876,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="372"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="372"/>
<source>Clearing mounts for partitioning operations on %1</source> <source>Clearing mounts for partitioning operations on %1</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>מתבצעת מחיקה של נקודות עיגון לטובת פעולות חלוקה למחיצות על %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="391"/> <location filename="../src/modules/partition/jobs/ClearMountsJob.cpp" line="391"/>
@ -1273,7 +1273,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="181"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="181"/>
<source>Create new %1MiB partition on %3 (%2) with entries %4</source> <source>Create new %1MiB partition on %3 (%2) with entries %4</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation>יצירת מחיצת %1MiB על גבי %3 (%2) עם הרשומות %4</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="189"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="189"/>
@ -1708,7 +1708,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/>
<source>Set up &lt;strong&gt;new&lt;/strong&gt; %2 partition with mount point &lt;strong&gt;%1&lt;/strong&gt;%3</source> <source>Set up &lt;strong&gt;new&lt;/strong&gt; %2 partition with mount point &lt;strong&gt;%1&lt;/strong&gt;%3</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>הגדרת מחיצת %2 &lt;strong&gt;חדשה&lt;/strong&gt; עם נקודת העיגון &lt;strong&gt;%1&lt;/strong&gt; %3</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="250"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="250"/>
@ -1726,13 +1726,13 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="270"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="270"/>
<source>Set up %3 partition &lt;strong&gt;%1&lt;/strong&gt; with mount point &lt;strong&gt;%2&lt;/strong&gt; and features &lt;em&gt;%4&lt;/em&gt;</source> <source>Set up %3 partition &lt;strong&gt;%1&lt;/strong&gt; with mount point &lt;strong&gt;%2&lt;/strong&gt; and features &lt;em&gt;%4&lt;/em&gt;</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>הקמת מחיצת %3 בשם &lt;strong&gt;%1&lt;/strong&gt; עם נקודת העגינה &lt;strong&gt;%2&lt;/strong&gt; והיכולות &lt;em&gt;%4&lt;/em&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="280"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="280"/>
<source>Set up %3 partition &lt;strong&gt;%1&lt;/strong&gt; with mount point &lt;strong&gt;%2&lt;/strong&gt;%4</source> <source>Set up %3 partition &lt;strong&gt;%1&lt;/strong&gt; with mount point &lt;strong&gt;%2&lt;/strong&gt;%4</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>הקמת מחיצת %3 בשם &lt;strong&gt;%1&lt;/strong&gt; עם נקודת העגינה &lt;strong&gt;%2&lt;/strong&gt;%4</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="296"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="296"/>
@ -1815,13 +1815,13 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="39"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="39"/>
<source>Format partition %1 (file system: %2, size: %3 MiB) on %4</source> <source>Format partition %1 (file system: %2, size: %3 MiB) on %4</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation>לאתחל את המחיצה %1 (מערכת קבצים: %2, גודל: %3 MiB) על גבי %4</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="49"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="49"/>
<source>Format &lt;strong&gt;%3MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; with file system &lt;strong&gt;%2&lt;/strong&gt;</source> <source>Format &lt;strong&gt;%3MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; with file system &lt;strong&gt;%2&lt;/strong&gt;</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>אתחול מחיצה בגודל &lt;strong&gt;%3MiB&lt;/strong&gt; בנתיב &lt;strong&gt;%1&lt;/strong&gt; עם מערכת הקבצים &lt;strong&gt;%2&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="62"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="62"/>
@ -1833,7 +1833,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="64"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="64"/>
<source>Formatting partition %1 with file system %2</source> <source>Formatting partition %1 with file system %2</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>המחיצה %1 מפורמטת עם מערכת הקבצים %2</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="73"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="73"/>
@ -3259,13 +3259,13 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="178"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="178"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3)</source> <source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3)</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>להתקין את %1 &lt;strong&gt;לצד&lt;/strong&gt; מערכת הפעלה אחרת בכונן &lt;strong&gt;%2&lt;/strong&gt; (%3)</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="187"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="187"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>&lt;strong&gt;למחוק&lt;/strong&gt; את הכונן &lt;strong&gt;%2&lt;/strong&gt; (%3) ולהתקין %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="194"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="194"/>
@ -3753,13 +3753,13 @@ Output:
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="45"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="45"/>
<source>Resize &lt;strong&gt;%2MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; to &lt;strong&gt;%3MiB&lt;/strong&gt;</source> <source>Resize &lt;strong&gt;%2MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; to &lt;strong&gt;%3MiB&lt;/strong&gt;</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>שינוי גודל של מחיצה בגודל &lt;strong&gt;%2MiB&lt;/strong&gt; בנתיב &lt;strong&gt;%1&lt;/strong&gt; לכדי &lt;strong&gt;%3MiB&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="54"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="54"/>
<source>Resizing %2MiB partition %1 to %3MiB</source> <source>Resizing %2MiB partition %1 to %3MiB</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>משתנה הגודל של מחיצה %1 בגודל %2MiB לכדי %3MiB</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="70"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="70"/>
@ -3782,7 +3782,7 @@ Output:
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="28"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="28"/>
<source>Resize volume group named %1 from %2 to %3</source> <source>Resize volume group named %1 from %2 to %3</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation>שינוי גודל קבוצת כרכים בשם %1 מ־%2 ל־%3</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
@ -3913,7 +3913,7 @@ Output:
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="50"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="50"/>
<source>Set flags on %1MiB %2 partition</source> <source>Set flags on %1MiB %2 partition</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation>הגדרת דגלונים על מחיצה מסוג %2 בגודל %1MiB</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="54"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="54"/>
@ -3931,7 +3931,7 @@ Output:
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="71"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="71"/>
<source>Clear flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source> <source>Clear flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>להסיר דגלונים ממחיצת &lt;strong&gt;%2&lt;/strong&gt; בגודל %1MiB</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="75"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="75"/>
@ -3949,49 +3949,49 @@ Output:
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="88"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="88"/>
<source>Set flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition to &lt;strong&gt;%3&lt;/strong&gt;</source> <source>Set flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition to &lt;strong&gt;%3&lt;/strong&gt;</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>הגדרת דגלונים על מחיצת &lt;strong&gt;%2&lt;/strong&gt; בגודל %1MiB לכדי &lt;strong&gt;%3&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="94"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="94"/>
<source>Set flags on new partition to &lt;strong&gt;%1&lt;/strong&gt;</source> <source>Set flags on new partition to &lt;strong&gt;%1&lt;/strong&gt;</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>הגדרת הדגלונים &lt;strong&gt;%1&lt;/strong&gt; על המחיצה החדשה</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="105"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="105"/>
<source>Clearing flags on partition &lt;strong&gt;%1&lt;/strong&gt;</source> <source>Clearing flags on partition &lt;strong&gt;%1&lt;/strong&gt;</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>הדגלונים נמחקים מהמחיצה &lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="112"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="112"/>
<source>Clearing flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source> <source>Clearing flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>דגלונים מוסרים ממחיצת &lt;strong&gt;%2&lt;/strong&gt; בגודל %1MiB</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="117"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="117"/>
<source>Clearing flags on new partition</source> <source>Clearing flags on new partition</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>הדגלונים נמחקים מהמחיצה החדשה</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="122"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="122"/>
<source>Setting flags &lt;strong&gt;%2&lt;/strong&gt; on partition &lt;strong&gt;%1&lt;/strong&gt;</source> <source>Setting flags &lt;strong&gt;%2&lt;/strong&gt; on partition &lt;strong&gt;%1&lt;/strong&gt;</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>הדגלונים &lt;strong&gt;%2&lt;/strong&gt; מוגדרים על המחיצה &lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="130"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="130"/>
<source>Setting flags &lt;strong&gt;%3&lt;/strong&gt; on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source> <source>Setting flags &lt;strong&gt;%3&lt;/strong&gt; on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>הדגלונים &lt;strong&gt;%3&lt;/strong&gt; על מחיצת &lt;strong&gt;%2&lt;/strong&gt; בגודל %1MiB</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="136"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="136"/>
<source>Setting flags &lt;strong&gt;%1&lt;/strong&gt; on new partition</source> <source>Setting flags &lt;strong&gt;%1&lt;/strong&gt; on new partition</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation>הדגלונים &lt;strong&gt;%1&lt;/strong&gt; מוגדרים על המחיצה החדשה</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="149"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="149"/>

View File

@ -39,7 +39,7 @@
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="60"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="60"/>
<source>The &lt;strong&gt;boot environment&lt;/strong&gt; of this system.&lt;br&gt;&lt;br&gt;Older x86 systems only support &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Modern systems usually use &lt;strong&gt;EFI&lt;/strong&gt;, but may also show up as BIOS if started in compatibility mode.</source> <source>The &lt;strong&gt;boot environment&lt;/strong&gt; of this system.&lt;br&gt;&lt;br&gt;Older x86 systems only support &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Modern systems usually use &lt;strong&gt;EFI&lt;/strong&gt;, but may also show up as BIOS if started in compatibility mode.</source>
<translation>Le &lt;strong&gt;ambiente de initio&lt;/strong&gt; de iste systema.&lt;br&gt;&lt;br&gt;Systemas x86 plus vetere supporta solmente &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Systemas moderne usualmente usa &lt;strong&gt;EFI&lt;/strong&gt;, ma pote etiam apparer como BIOS si il initia in modo de compatibilitate.</translation> <translation>Le &lt;strong&gt;ambiente de initio&lt;/strong&gt; de iste systema.&lt;br&gt;&lt;br&gt;Systemas x86 plus vetere supporta solmente &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Systemas moderne usualmente usa &lt;strong&gt;EFI&lt;/strong&gt;, ma pote anque apparer como BIOS si il initia in modo de compatibilitate.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="70"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="70"/>
@ -49,7 +49,7 @@
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="82"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="82"/>
<source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; 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.</source> <source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; 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.</source>
<translation>Iste systema esseva initiate con un ambiente de initio &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Pro configurar le initio ab un ambiente BIOS, iste installator debe installar un cargator de initio, como &lt;strong&gt;GRUB&lt;/strong&gt;, o al comenciamento de un partition o sur le &lt;strong&gt;registro de initio principal&lt;/strong&gt; presso le comenciamento del tabula de partitiones (preferite). Isto es automatic, a minus que tu selige partitionamento manual, in le qual caso tu debe configurar lo tu mesme.</translation> <translation>Iste systema era initiate con un ambiente de initio &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Pro configurar le initio ab un ambiente BIOS, iste installator debe installar un cargator de initio, como &lt;strong&gt;GRUB&lt;/strong&gt;, o al comenciamento de un partition o sur le &lt;strong&gt;registro de initio principal&lt;/strong&gt; presso le comenciamento del tabula de partitiones (preferite). Isto es automatic, a minus que tu selige partitionamento manual, in le qual caso tu debe configurar lo tu mesme.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -118,7 +118,7 @@
<location filename="../src/calamares/DebugWindow.ui" line="68"/> <location filename="../src/calamares/DebugWindow.ui" line="68"/>
<location filename="../src/calamares/DebugWindow.ui" line="82"/> <location filename="../src/calamares/DebugWindow.ui" line="82"/>
<source>none</source> <source>none</source>
<translation>nulle</translation> <translation>necuno</translation>
</message> </message>
<message> <message>
<location filename="../src/calamares/DebugWindow.ui" line="75"/> <location filename="../src/calamares/DebugWindow.ui" line="75"/>
@ -193,7 +193,7 @@
<message> <message>
<location filename="../src/libcalamares/JobExample.cpp" line="29"/> <location filename="../src/libcalamares/JobExample.cpp" line="29"/>
<source>Job failed (%1)</source> <source>Job failed (%1)</source>
<translation>Carga fallite (%1)</translation> <translation>Labor fallite (%1)</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/JobExample.cpp" line="30"/> <location filename="../src/libcalamares/JobExample.cpp" line="30"/>
@ -214,7 +214,7 @@
<message> <message>
<location filename="../src/libcalamares/JobExample.cpp" line="17"/> <location filename="../src/libcalamares/JobExample.cpp" line="17"/>
<source>Example job (%1)</source> <source>Example job (%1)</source>
<translation>Carga de exemplo (%1)</translation> <translation>Labor de exemplo (%1)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -495,7 +495,7 @@ Link copied to clipboard</source>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="344"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="344"/>
<source>&amp;Install Now</source> <source>&amp;Install Now</source>
<comment>@button</comment> <comment>@button</comment>
<translation>&amp;Installar nunc</translation> <translation>&amp;Installar ora</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="351"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="351"/>
@ -580,14 +580,14 @@ Link copied to clipboard</source>
<source>Do you really want to cancel the current setup process? <source>Do you really want to cancel the current setup process?
The setup program will quit and all changes will be lost.</source> The setup program will quit and all changes will be lost.</source>
<translation>Vole tu vermente cancellar le processo de configuration actual? <translation>Vole tu vermente cancellar le processo de configuration actual?
Le programma de configuration claudera e tote le cambios essera perdite.</translation> Le programma de configuration claudera e tote le cambiamentos sera perdite.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/>
<source>Do you really want to cancel the current install process? <source>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</source> The installer will quit and all changes will be lost.</source>
<translation>Vole tu vermente cancellar le processo de installation actual? <translation>Vole tu vermente cancellar le processo de installation actual?
Le installator claudera e tote le cambios essera perdite.</translation> Le installator claudera e tote le cambiamentos sera perdite.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -795,7 +795,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1628"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1628"/>
<source>No swap</source> <source>No swap</source>
<comment>@label</comment> <comment>@label</comment>
<translation>Nulle intercambio</translation> <translation>Necun intercambio</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1637"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1637"/>
@ -807,7 +807,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1640"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1640"/>
<source>Swap (no Hibernate)</source> <source>Swap (no Hibernate)</source>
<comment>@label</comment> <comment>@label</comment>
<translation>Intercambio (nulle hibernation)</translation> <translation>Intercambio (necun hibernation)</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1643"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1643"/>
@ -978,13 +978,13 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/locale/Config.cpp" line="410"/> <location filename="../src/modules/locale/Config.cpp" line="410"/>
<source>The system language will be set to %1.</source> <source>The system language will be set to %1.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>Le lingua del systema essera definite a %1.</translation> <translation>Le lingua del systema sera definite a %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/Config.cpp" line="416"/> <location filename="../src/modules/locale/Config.cpp" line="416"/>
<source>The numbers and dates locale will be set to %1.</source> <source>The numbers and dates locale will be set to %1.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>Le numeros e datas regional essera definite a %1.</translation> <translation>Le numeros e datas regional sera definite a %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/Config.cpp" line="53"/> <location filename="../src/modules/netinstall/Config.cpp" line="53"/>
@ -1039,7 +1039,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/packagechooser/Config.cpp" line="247"/> <location filename="../src/modules/packagechooser/Config.cpp" line="247"/>
<source>None</source> <source>None</source>
<translation>Nulle</translation> <translation>Necuno</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/summary/Config.cpp" line="35"/> <location filename="../src/modules/summary/Config.cpp" line="35"/>
@ -1080,7 +1080,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/users/Config.cpp" line="300"/> <location filename="../src/modules/users/Config.cpp" line="300"/>
<source>Your hostname is too short.</source> <source>Your hostname is too short.</source>
<translation>Tu nomine de hospite es troppo breve.</translation> <translation>Tu nomine de hospite es troppo curte.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/Config.cpp" line="304"/> <location filename="../src/modules/users/Config.cpp" line="304"/>
@ -1130,7 +1130,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/welcome/Config.cpp" line="80"/> <location filename="../src/modules/welcome/Config.cpp" line="80"/>
<source>This program will ask you some questions and set up %2 on your computer.</source> <source>This program will ask you some questions and set up %2 on your computer.</source>
<translation>Iste programma te demandara alicun questiones e configurara %2 sur tu computator.</translation> <translation>Iste programma te demandara alcun questiones e configurara %2 sur tu computator.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/Config.cpp" line="264"/> <location filename="../src/modules/welcome/Config.cpp" line="264"/>
@ -1477,7 +1477,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="78"/> <location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="78"/>
<source>&lt;br&gt;&lt;br&gt;This partition table type is only advisable on older systems which start from a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment. GPT is recommended in most other cases.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Warning:&lt;/strong&gt; the MBR partition table is an obsolete MS-DOS era standard.&lt;br&gt;Only 4 &lt;em&gt;primary&lt;/em&gt; partitions may be created, and of those 4, one can be an &lt;em&gt;extended&lt;/em&gt; partition, which may in turn contain many &lt;em&gt;logical&lt;/em&gt; partitions.</source> <source>&lt;br&gt;&lt;br&gt;This partition table type is only advisable on older systems which start from a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment. GPT is recommended in most other cases.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Warning:&lt;/strong&gt; the MBR partition table is an obsolete MS-DOS era standard.&lt;br&gt;Only 4 &lt;em&gt;primary&lt;/em&gt; partitions may be created, and of those 4, one can be an &lt;em&gt;extended&lt;/em&gt; partition, which may in turn contain many &lt;em&gt;logical&lt;/em&gt; partitions.</source>
<translation>&lt;br&gt;&lt;br&gt;Iste typo de tabula de partitiones es solmente consiliabile pro systemas plus vetere que initia ab un ambiente de initio &lt;strong&gt;BIOS&lt;/strong&gt;. GPT es recommendate in le major parte de altere casos.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Advertimento:&lt;/strong&gt; le tabula de partitiones MBR es un standard obsolete del era MS-DOS. &lt;br&gt;Solmente 4 partitiones &lt;em&gt;primari&lt;/em&gt; pote esser create, e de cellos 4, un pote esser un partition &lt;em&gt;extendite&lt;/em&gt;, que a su vice pote continer multe partitiones &lt;em&gt;logic&lt;/em&gt;.</translation> <translation>&lt;br&gt;&lt;br&gt;Iste typo de tabula de partitiones es solmente consiliabile pro systemas plus vetere que initia ab un ambiente de initio &lt;strong&gt;BIOS&lt;/strong&gt;. GPT es recommendate in le major parte de altere casos.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; le tabula de partitiones MBR es un standard obsolete del era MS-DOS. &lt;br&gt;Solmente 4 partitiones &lt;em&gt;primari&lt;/em&gt; pote esser create, e de issos 4, un pote esser un partition &lt;em&gt;extendite&lt;/em&gt;, que a su vice pote continer multe partitiones &lt;em&gt;logic&lt;/em&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="89"/> <location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="89"/>
@ -1538,7 +1538,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="138"/> <location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="138"/>
<source>Failed to open %1</source> <source>Failed to open %1</source>
<comment>@error</comment> <comment>@error</comment>
<translation type="unfinished"/> <translation>Impossibile aperir %1</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1575,7 +1575,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="93"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="93"/>
<source>Warning: Formatting the partition will erase all existing data.</source> <source>Warning: Formatting the partition will erase all existing data.</source>
<translation>Advertimento: Formatar le partition radera tote le datos existente.</translation> <translation>Aviso: Formatar le partition radera tote le datos existente.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="103"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="103"/>
@ -1746,13 +1746,13 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.ui" line="102"/> <location filename="../src/modules/finished/FinishedPage.ui" line="102"/>
<source>&amp;Restart now</source> <source>&amp;Restart now</source>
<translation>&amp;Reinitiar nunc</translation> <translation>&amp;Reinitiar ora</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="75"/> <location filename="../src/modules/finished/FinishedPage.cpp" line="75"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been set up on your computer.&lt;br/&gt;You may now start using your new system.</source> <source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been set up on your computer.&lt;br/&gt;You may now start using your new system.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>&lt;h1&gt;Tote facite.&lt;/h1&gt;&lt;br/&gt;%1 ha essite configurate in tu computator.&lt;br/&gt;Tu pote nunc initiar usante tu nove systema.</translation> <translation>&lt;h1&gt;Tote facite.&lt;/h1&gt;&lt;br/&gt;%1 ha essite configurate in tu computator.&lt;br/&gt;Tu pote ora initiar usante tu nove systema.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="79"/> <location filename="../src/modules/finished/FinishedPage.cpp" line="79"/>
@ -1764,7 +1764,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/finished/FinishedPage.cpp" line="87"/> <location filename="../src/modules/finished/FinishedPage.cpp" line="87"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been installed on your computer.&lt;br/&gt;You may now restart into your new system, or continue using the %2 Live environment.</source> <source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been installed on your computer.&lt;br/&gt;You may now restart into your new system, or continue using the %2 Live environment.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>&lt;h1&gt;Tote facite.&lt;/h1&gt;&lt;br/&gt;%1 ha essite installate in tu computator.&lt;br/&gt;Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo de %2.</translation> <translation>&lt;h1&gt;Tote facite.&lt;/h1&gt;&lt;br/&gt;%1 ha essite installate in tu computator.&lt;br/&gt;Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo de %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="92"/> <location filename="../src/modules/finished/FinishedPage.cpp" line="92"/>
@ -2077,7 +2077,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="30"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="30"/>
<source>The system locale setting affects the language and character set for some command line user interface elements.&lt;br/&gt;The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>The system locale setting affects the language and character set for some command line user interface elements.&lt;br/&gt;The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>Le parametros regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando.&lt;br/&gt;Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation> <translation>Le parametros regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando.&lt;br/&gt;Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="54"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="54"/>
@ -2107,7 +2107,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/luksopenswaphookcfg/LOSHJob.cpp" line="95"/> <location filename="../src/modules/luksopenswaphookcfg/LOSHJob.cpp" line="95"/>
<source>No rootMountPoint is set.</source> <source>No rootMountPoint is set.</source>
<translation>Nulle puncto de montage es definite.</translation> <translation>Necun puncto de montage es definite.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksopenswaphookcfg/LOSHJob.cpp" line="100"/> <location filename="../src/modules/luksopenswaphookcfg/LOSHJob.cpp" line="100"/>
@ -2298,7 +2298,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="254"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="254"/>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="262"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="262"/>
<source>No partitions are defined.</source> <source>No partitions are defined.</source>
<translation>Nulle partitiones es definite.</translation> <translation>Necun partitiones es definite.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="297"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="297"/>
@ -2309,7 +2309,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="298"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="298"/>
<source>Root partition %1 is LUKS but no passphrase has been set.</source> <source>Root partition %1 is LUKS but no passphrase has been set.</source>
<translation>Le partition radice %1 es LUKS ma nulle phrase de contrasigno esseva definite.</translation> <translation>Le partition radice %1 es LUKS ma necun phrase de contrasigno era definite.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="305"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="305"/>
@ -2423,7 +2423,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="56"/> <location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="56"/>
<source>Kernel</source> <source>Kernel</source>
<comment>label for netinstall module, Linux kernel</comment> <comment>label for netinstall module, Linux kernel</comment>
<translation type="unfinished"/> <translation>Nucleo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="57"/> <location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="57"/>
@ -3135,7 +3135,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="55"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="55"/>
<source>&amp;Revert All Changes</source> <source>&amp;Revert All Changes</source>
<translation>&amp;Reverter tote le cambiamentos</translation> <translation>&amp;Reverter tote le modificationes</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="91"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="91"/>
@ -3195,7 +3195,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="260"/> <location filename="../src/modules/partition/gui/PartitionPage.cpp" line="260"/>
<source>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.</source> <source>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.</source>
<translation>Le tabula de partitiones sur %1 jam ha %2 partitiones primari, e non pote esser addite alteres. Remove un partition primari e adde un partition extendite, in vice.</translation> <translation>Le tabula de partitiones sur %1 ja ha %2 partitiones primari, e non pote esser addite alteres. Remove un partition primari e adde un partition extendite, in vice.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3279,7 +3279,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="263"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="263"/>
<source>No partitions will be changed.</source> <source>No partitions will be changed.</source>
<translation>Nulle partitiones essera cambiate.</translation> <translation>Necun partitiones sera modificate.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="303"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="303"/>
@ -3372,7 +3372,7 @@ Le installator claudera e tote le cambios essera perdite.</translation>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="658"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="658"/>
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source> <source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source>
<translation>Un partition de initio separate esseva configurate insimul con un partition de radice cryptate, ma le partition de initio non es cryptate.&lt;br/&gt;&lt;br/&gt;Il ha problemas de securitate con iste typo de configuration, perque le files importante del systema es mantenite sur un partition non cryptate.&lt;br/&gt;Tu pote continuar si tu vole, ma le disblocar del systema de files occurrera plus tarde durante le initio del systema.&lt;br/&gt;Pro cryptar le partition de initio, retorna e recrea lo, seligente &lt;strong&gt;Cryptar&lt;/strong&gt; in le fenestra de creation de partitiones.</translation> <translation>Un partition de initio separate era configurate insimul con un partition de radice cryptate, ma le partition de initio non es cryptate.&lt;br/&gt;&lt;br/&gt;Il ha problemas de securitate con iste typo de configuration, perque le files importante del systema es mantenite sur un partition non cryptate.&lt;br/&gt;Tu pote continuar si tu vole, ma le disblocar del systema de files occurrera plus tarde durante le initio del systema.&lt;br/&gt;Pro cryptar le partition de initio, retorna e recrea lo, seligente &lt;strong&gt;Cryptar&lt;/strong&gt; in le fenestra de creation de partitiones.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="750"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="750"/>
@ -3567,7 +3567,7 @@ Output:
<message> <message>
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="44"/> <location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="44"/>
<source>(no mount point)</source> <source>(no mount point)</source>
<translation>(nulle puncto de montage)</translation> <translation>(necun puncto de montage)</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="39"/> <location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="39"/>
@ -3661,7 +3661,7 @@ Output:
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="170"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="170"/>
<source>Calamares cannot start KPMCore for the file system resize job.</source> <source>Calamares cannot start KPMCore for the file system resize job.</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Calamares non pote initiar KPMCore pro le carga de redimensionamento del systema de files.</translation> <translation>Calamares non pote initiar KPMCore pro le labor de redimensionamento del systema de files.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="179"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="179"/>
@ -3844,37 +3844,37 @@ Output:
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="368"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="368"/>
<source>Failed to write keyboard configuration for the virtual console.</source> <source>Failed to write keyboard configuration for the virtual console.</source>
<comment>@error</comment> <comment>@error</comment>
<translation type="unfinished"/> <translation>Impossibile scriber le configuration del claviero pro le consola virtual.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="369"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="369"/>
<source>Failed to write to %1</source> <source>Failed to write to %1</source>
<comment>@error, %1 is virtual console configuration path</comment> <comment>@error, %1 is virtual console configuration path</comment>
<translation type="unfinished"/> <translation>Impossibile scriber a %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="394"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="394"/>
<source>Failed to write keyboard configuration for X11.</source> <source>Failed to write keyboard configuration for X11.</source>
<comment>@error</comment> <comment>@error</comment>
<translation type="unfinished"/> <translation>Impossibile scriber le configuration del claviero pro X11.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="395"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="395"/>
<source>Failed to write to %1</source> <source>Failed to write to %1</source>
<comment>@error, %1 is keyboard configuration path</comment> <comment>@error, %1 is keyboard configuration path</comment>
<translation type="unfinished"/> <translation>Impossibile scriber a %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="411"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="411"/>
<source>Failed to write keyboard configuration to existing /etc/default directory.</source> <source>Failed to write keyboard configuration to existing /etc/default directory.</source>
<comment>@error</comment> <comment>@error</comment>
<translation>Non poteva scriber le configuration del claviero al directorio /etc/default existente.</translation> <translation>Impossibile scriber le configuration del claviero al directorio /etc/default existente.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="412"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="412"/>
<source>Failed to write to %1</source> <source>Failed to write to %1</source>
<comment>@error, %1 is default keyboard path</comment> <comment>@error, %1 is default keyboard path</comment>
<translation type="unfinished"/> <translation>Impossibile scriber a %1</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4288,7 +4288,7 @@ Output:
<message> <message>
<location filename="../src/modules/umount/UmountJob.cpp" line="131"/> <location filename="../src/modules/umount/UmountJob.cpp" line="131"/>
<source>No rootMountPoint is set.</source> <source>No rootMountPoint is set.</source>
<translation>Nulle puncto de montage es definite.</translation> <translation>Necun puncto de montage es definite.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4484,7 +4484,7 @@ Output:
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="162"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="162"/>
<source>Failed to create zpool on </source> <source>Failed to create zpool on </source>
<translation type="unfinished"/> <translation>Impossibile crear zpool sur</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="180"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="180"/>
@ -4494,7 +4494,7 @@ Output:
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="181"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="181"/>
<source>No partitions are available for ZFS.</source> <source>No partitions are available for ZFS.</source>
<translation>Nulle partitiones es disponibile pro ZFS.</translation> <translation>Necun partitiones es disponibile pro ZFS.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="192"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="192"/>
@ -4505,12 +4505,12 @@ Output:
<location filename="../src/modules/zfs/ZfsJob.cpp" line="192"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="192"/>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="264"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="264"/>
<source>Failed to create zpool</source> <source>Failed to create zpool</source>
<translation type="unfinished"/> <translation>Impossibile crear zpool</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="336"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="336"/>
<source>Failed to create dataset</source> <source>Failed to create dataset</source>
<translation type="unfinished"/> <translation>Impossibile crear dataset</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="337"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="337"/>
@ -4567,7 +4567,7 @@ Output:
<source>%1 has been installed on your computer.&lt;br/&gt; <source>%1 has been installed on your computer.&lt;br/&gt;
You may now restart into your new system, or continue using the Live environment.</source> You may now restart into your new system, or continue using the Live environment.</source>
<translation>%1 ha essite installate in tu computator.&lt;br/&gt; <translation>%1 ha essite installate in tu computator.&lt;br/&gt;
Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo.</translation> Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finishedq/finishedq.qml" line="65"/> <location filename="../src/modules/finishedq/finishedq.qml" line="65"/>
@ -4600,7 +4600,7 @@ Output:
You may now restart into your new system, or continue using the Live environment.</source> You may now restart into your new system, or continue using the Live environment.</source>
<comment>@info, %1 is the product name</comment> <comment>@info, %1 is the product name</comment>
<translation>%1 ha essite installate in tu computator.&lt;br/&gt; <translation>%1 ha essite installate in tu computator.&lt;br/&gt;
Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo.</translation> Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finishedq/finishedq-qt6.qml" line="65"/> <location filename="../src/modules/finishedq/finishedq-qt6.qml" line="65"/>
@ -4636,7 +4636,7 @@ Output:
You may now restart your device.</source> You may now restart your device.</source>
<comment>@info, %1 is the product name</comment> <comment>@info, %1 is the product name</comment>
<translation>%1 ha essite installate in tu computator.&lt;br/&gt; <translation>%1 ha essite installate in tu computator.&lt;br/&gt;
Tu pote nunc reinitiar tu dispositivo.</translation> Tu pote ora reinitiar tu dispositivo.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finishedq/finishedq@mobile.qml" line="66"/> <location filename="../src/modules/finishedq/finishedq@mobile.qml" line="66"/>
@ -4732,7 +4732,7 @@ Output:
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>&lt;h3&gt;Linguas&lt;/h3&gt; &lt;/br&gt; <translation>&lt;h3&gt;Linguas&lt;/h3&gt; &lt;/br&gt;
Le parametro regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando. Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation> Le parametro regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando. Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/localeq/localeq.qml" line="213"/> <location filename="../src/modules/localeq/localeq.qml" line="213"/>
@ -4757,7 +4757,7 @@ Output:
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation>&lt;h3&gt;Linguas&lt;/h3&gt; &lt;/br&gt; <translation>&lt;h3&gt;Linguas&lt;/h3&gt; &lt;/br&gt;
Le parametro regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando. Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation> Le parametro regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando. Le parametro actual es &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/localeq/localeq-qt6.qml" line="213"/> <location filename="../src/modules/localeq/localeq-qt6.qml" line="213"/>
@ -5160,7 +5160,7 @@ Output:
<source>&lt;h3&gt;Welcome to the %1 &lt;quote&gt;%2&lt;/quote&gt; installer&lt;/h3&gt; <source>&lt;h3&gt;Welcome to the %1 &lt;quote&gt;%2&lt;/quote&gt; installer&lt;/h3&gt;
&lt;p&gt;This program will ask you some questions and set up %1 on your computer.&lt;/p&gt;</source> &lt;p&gt;This program will ask you some questions and set up %1 on your computer.&lt;/p&gt;</source>
<translation>&lt;h3&gt;Benvenite al installator de &lt;quote&gt;%2&lt;/quote&gt; pro %1&lt;/h3&gt; <translation>&lt;h3&gt;Benvenite al installator de &lt;quote&gt;%2&lt;/quote&gt; pro %1&lt;/h3&gt;
&lt;p&gt;Iste programma te demandara alicun questiones e configurara %1 sur tu computator.&lt;/p&gt;</translation> &lt;p&gt;Iste programma te demandara alcun questiones e configurara %1 sur tu computator.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcomeq/welcomeq.qml" line="69"/> <location filename="../src/modules/welcomeq/welcomeq.qml" line="69"/>
@ -5190,7 +5190,7 @@ Output:
<source>&lt;h3&gt;Welcome to the %1 &lt;quote&gt;%2&lt;/quote&gt; installer&lt;/h3&gt; <source>&lt;h3&gt;Welcome to the %1 &lt;quote&gt;%2&lt;/quote&gt; installer&lt;/h3&gt;
&lt;p&gt;This program will ask you some questions and set up %1 on your computer.&lt;/p&gt;</source> &lt;p&gt;This program will ask you some questions and set up %1 on your computer.&lt;/p&gt;</source>
<translation>&lt;h3&gt;Benvenite al installator de &lt;quote&gt;%2&lt;/quote&gt; pro %1&lt;/h3&gt; <translation>&lt;h3&gt;Benvenite al installator de &lt;quote&gt;%2&lt;/quote&gt; pro %1&lt;/h3&gt;
&lt;p&gt;Iste programma te demandara alicun questiones e configurara %1 sur tu computator.&lt;/p&gt;</translation> &lt;p&gt;Iste programma te demandara alcun questiones e configurara %1 sur tu computator.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcomeq/welcomeq-qt6.qml" line="69"/> <location filename="../src/modules/welcomeq/welcomeq-qt6.qml" line="69"/>

View File

@ -963,19 +963,19 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/keyboard/Config.cpp" line="505"/> <location filename="../src/modules/keyboard/Config.cpp" line="505"/>
<source>Keyboard model has been set to %1&lt;br/&gt;.</source> <source>Keyboard model has been set to %1&lt;br/&gt;.</source>
<comment>@label, %1 is keyboard model, as in Apple Magic Keyboard</comment> <comment>@label, %1 is keyboard model, as in Apple Magic Keyboard</comment>
<translation>%1&lt;br/&gt; </translation> <translation>%1 &lt;br/&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/Config.cpp" line="512"/> <location filename="../src/modules/keyboard/Config.cpp" line="512"/>
<source>Keyboard layout has been set to %1/%2.</source> <source>Keyboard layout has been set to %1/%2.</source>
<comment>@label, %1 is layout, %2 is layout variant</comment> <comment>@label, %1 is layout, %2 is layout variant</comment>
<translation>%1/%2 </translation> <translation>%1/%2 </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/Config.cpp" line="373"/> <location filename="../src/modules/locale/Config.cpp" line="373"/>
<source>Set timezone to %1/%2</source> <source>Set timezone to %1/%2</source>
<comment>@action</comment> <comment>@action</comment>
<translation> %1/%2 </translation> <translation> %1/%2 </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/Config.cpp" line="410"/> <location filename="../src/modules/locale/Config.cpp" line="410"/>
@ -3014,7 +3014,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="472"/> <location filename="../src/modules/users/page_usersetup.ui" line="472"/>
<source>Use the same password for the administrator account.</source> <source>Use the same password for the administrator account.</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="495"/> <location filename="../src/modules/users/page_usersetup.ui" line="495"/>
@ -5014,7 +5014,7 @@ Output:
<message> <message>
<location filename="../src/modules/usersq/usersq.qml" line="305"/> <location filename="../src/modules/usersq/usersq.qml" line="305"/>
<source>Use the same password for the administrator account.</source> <source>Use the same password for the administrator account.</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/usersq/usersq.qml" line="318"/> <location filename="../src/modules/usersq/usersq.qml" line="318"/>
@ -5147,7 +5147,7 @@ Output:
<message> <message>
<location filename="../src/modules/usersq/usersq-qt6.qml" line="304"/> <location filename="../src/modules/usersq/usersq-qt6.qml" line="304"/>
<source>Use the same password for the administrator account.</source> <source>Use the same password for the administrator account.</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/usersq/usersq-qt6.qml" line="317"/> <location filename="../src/modules/usersq/usersq-qt6.qml" line="317"/>

File diff suppressed because it is too large Load Diff

View File

@ -1959,13 +1959,13 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="262"/> <location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="262"/>
<source>is checked three times.</source> <source>is checked three times.</source>
<translation type="unfinished"/> <translation> 3 </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="265"/> <location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="265"/>
<source>The snark has not been checked three times.</source> <source>The snark has not been checked three times.</source>
<comment>The (some mythological beast) has not been checked three times.</comment> <comment>The (some mythological beast) has not been checked three times.</comment>
<translation type="unfinished"/> <translation>snark </translation>
</message> </message>
</context> </context>
<context> <context>
@ -4065,7 +4065,7 @@ Output:
<location filename="../src/modules/users/MiscJobs.cpp" line="181"/> <location filename="../src/modules/users/MiscJobs.cpp" line="181"/>
<source>Preparing groups</source> <source>Preparing groups</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/MiscJobs.cpp" line="193"/> <location filename="../src/modules/users/MiscJobs.cpp" line="193"/>
@ -4085,7 +4085,7 @@ Output:
<location filename="../src/modules/users/MiscJobs.cpp" line="34"/> <location filename="../src/modules/users/MiscJobs.cpp" line="34"/>
<source>Configuring &lt;pre&gt;sudo&lt;/pre&gt; users</source> <source>Configuring &lt;pre&gt;sudo&lt;/pre&gt; users</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation> &lt;pre&gt;sudo&lt;/pre&gt; </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/MiscJobs.cpp" line="70"/> <location filename="../src/modules/users/MiscJobs.cpp" line="70"/>
@ -4104,7 +4104,7 @@ Output:
<location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="38"/> <location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="38"/>
<source>Running shell processes</source> <source>Running shell processes</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation> shell </translation>
</message> </message>
</context> </context>
<context> <context>
@ -4156,7 +4156,7 @@ Output:
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="106"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="106"/>
<source>Sending installation feedback</source> <source>Sending installation feedback</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="124"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="124"/>
@ -4180,7 +4180,7 @@ Output:
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="198"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="198"/>
<source>Configuring KDE user feedback</source> <source>Configuring KDE user feedback</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation> KDE </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="220"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="220"/>
@ -4210,7 +4210,7 @@ Output:
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="141"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="141"/>
<source>Configuring machine feedback</source> <source>Configuring machine feedback</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="164"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="164"/>
@ -4282,7 +4282,7 @@ Output:
<location filename="../src/modules/umount/UmountJob.cpp" line="39"/> <location filename="../src/modules/umount/UmountJob.cpp" line="39"/>
<source>Unmounting file systems</source> <source>Unmounting file systems</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/umount/UmountJob.cpp" line="123"/> <location filename="../src/modules/umount/UmountJob.cpp" line="123"/>
@ -4444,19 +4444,19 @@ Output:
<location filename="../src/calamares/DebugWindow.cpp" line="235"/> <location filename="../src/calamares/DebugWindow.cpp" line="235"/>
<source>About %1 Setup</source> <source>About %1 Setup</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation> %1 </translation>
</message> </message>
<message> <message>
<location filename="../src/calamares/DebugWindow.cpp" line="236"/> <location filename="../src/calamares/DebugWindow.cpp" line="236"/>
<source>About %1 Installer</source> <source>About %1 Installer</source>
<comment>@title</comment> <comment>@title</comment>
<translation type="unfinished"/> <translation> %1 </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="212"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="212"/>
<source>%1 Support</source> <source>%1 Support</source>
<comment>@action</comment> <comment>@action</comment>
<translation type="unfinished"/> <translation>%1 </translation>
</message> </message>
</context> </context>
<context> <context>
@ -4483,7 +4483,7 @@ Output:
<location filename="../src/modules/zfs/ZfsJob.cpp" line="102"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="102"/>
<source>Creating ZFS pools and datasets</source> <source>Creating ZFS pools and datasets</source>
<comment>@status</comment> <comment>@status</comment>
<translation type="unfinished"/> <translation> ZFS </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/zfs/ZfsJob.cpp" line="162"/> <location filename="../src/modules/zfs/ZfsJob.cpp" line="162"/>
@ -4737,14 +4737,16 @@ Output:
<source>&lt;h3&gt;Languages&lt;/h3&gt; &lt;/br&gt; <source>&lt;h3&gt;Languages&lt;/h3&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>&lt;h3&gt;&lt;/h3&gt;&lt;/br&gt;
&lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/localeq/localeq.qml" line="213"/> <location filename="../src/modules/localeq/localeq.qml" line="213"/>
<source>&lt;h3&gt;Locales&lt;/h3&gt; &lt;/br&gt; <source>&lt;h3&gt;Locales&lt;/h3&gt; &lt;/br&gt;
The system locale setting affects the numbers and dates format. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the numbers and dates format. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>&lt;h3&gt;&lt;/h3&gt;&lt;/br&gt;
&lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4761,14 +4763,16 @@ Output:
<source>&lt;h3&gt;Languages&lt;/h3&gt; &lt;/br&gt; <source>&lt;h3&gt;Languages&lt;/h3&gt; &lt;/br&gt;
The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the language and character set for some command line user interface elements. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>&lt;h3&gt;&lt;/h3&gt;&lt;/br&gt;
&lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/localeq/localeq-qt6.qml" line="213"/> <location filename="../src/modules/localeq/localeq-qt6.qml" line="213"/>
<source>&lt;h3&gt;Locales&lt;/h3&gt; &lt;/br&gt; <source>&lt;h3&gt;Locales&lt;/h3&gt; &lt;/br&gt;
The system locale setting affects the numbers and dates format. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source> The system locale setting affects the numbers and dates format. The current setting is &lt;strong&gt;%1&lt;/strong&gt;.</source>
<comment>@info</comment> <comment>@info</comment>
<translation type="unfinished"/> <translation>&lt;h3&gt;&lt;/h3&gt;&lt;/br&gt;
&lt;strong&gt;%1&lt;/strong&gt;</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-12 21:37+0100\n" "POT-Creation-Date: 2024-05-01 00:08+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -22,15 +22,15 @@ msgstr ""
msgid "Install bootloader." msgid "Install bootloader."
msgstr "" msgstr ""
#: src/modules/bootloader/main.py:666 #: src/modules/bootloader/main.py:671
msgid "Failed to install grub, no partitions defined in global storage" msgid "Failed to install grub, no partitions defined in global storage"
msgstr "" msgstr ""
#: src/modules/bootloader/main.py:926 #: src/modules/bootloader/main.py:931
msgid "Bootloader installation error" msgid "Bootloader installation error"
msgstr "" msgstr ""
#: src/modules/bootloader/main.py:927 #: src/modules/bootloader/main.py:932
msgid "" msgid ""
"The bootloader could not be installed. The installation command <pre>{!s}</" "The bootloader could not be installed. The installation command <pre>{!s}</"
"pre> returned error code {!s}." "pre> returned error code {!s}."
@ -68,17 +68,17 @@ msgstr ""
msgid "SLIM config file {!s} does not exist" msgid "SLIM config file {!s} does not exist"
msgstr "" msgstr ""
#: src/modules/displaymanager/main.py:938 #: src/modules/displaymanager/main.py:940
msgid "No display managers selected for the displaymanager module." msgid "No display managers selected for the displaymanager module."
msgstr "" msgstr ""
#: src/modules/displaymanager/main.py:939 #: src/modules/displaymanager/main.py:941
msgid "" msgid ""
"The displaymanagers list is empty or undefined in both globalstorage and " "The displaymanagers list is empty or undefined in both globalstorage and "
"displaymanager.conf." "displaymanager.conf."
msgstr "" msgstr ""
#: src/modules/displaymanager/main.py:1026 #: src/modules/displaymanager/main.py:1028
msgid "Display manager configuration was incomplete" msgid "Display manager configuration was incomplete"
msgstr "" msgstr ""
@ -108,29 +108,29 @@ msgstr ""
msgid "Writing fstab." msgid "Writing fstab."
msgstr "" msgstr ""
#: src/modules/fstab/main.py:378 src/modules/fstab/main.py:384 #: src/modules/fstab/main.py:382 src/modules/fstab/main.py:388
#: src/modules/fstab/main.py:412 src/modules/initcpiocfg/main.py:256 #: src/modules/fstab/main.py:416 src/modules/initcpiocfg/main.py:257
#: src/modules/initcpiocfg/main.py:260 src/modules/initramfscfg/main.py:85 #: src/modules/initcpiocfg/main.py:261 src/modules/initramfscfg/main.py:85
#: src/modules/initramfscfg/main.py:89 src/modules/localecfg/main.py:140 #: 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/mount/main.py:344 src/modules/networkcfg/main.py:106
#: src/modules/openrcdmcryptcfg/main.py:72 #: src/modules/openrcdmcryptcfg/main.py:72
#: src/modules/openrcdmcryptcfg/main.py:76 src/modules/rawfs/main.py:164 #: src/modules/openrcdmcryptcfg/main.py:76 src/modules/rawfs/main.py:164
msgid "Configuration Error" msgid "Configuration Error"
msgstr "" msgstr ""
#: src/modules/fstab/main.py:379 src/modules/initramfscfg/main.py:86 #: src/modules/fstab/main.py:383 src/modules/initramfscfg/main.py:86
#: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73 #: src/modules/mount/main.py:345 src/modules/openrcdmcryptcfg/main.py:73
#: src/modules/rawfs/main.py:165 #: src/modules/rawfs/main.py:165
msgid "No partitions are defined for <pre>{!s}</pre> to use." msgid "No partitions are defined for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
#: src/modules/fstab/main.py:385 src/modules/initramfscfg/main.py:90 #: src/modules/fstab/main.py:389 src/modules/initramfscfg/main.py:90
#: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:107 #: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:107
#: src/modules/openrcdmcryptcfg/main.py:77 #: src/modules/openrcdmcryptcfg/main.py:77
msgid "No root mount point is given for <pre>{!s}</pre> to use." msgid "No root mount point is given for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
#: src/modules/fstab/main.py:413 #: src/modules/fstab/main.py:417
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use." msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
@ -146,11 +146,11 @@ msgstr ""
msgid "Configuring mkinitcpio." msgid "Configuring mkinitcpio."
msgstr "" msgstr ""
#: src/modules/initcpiocfg/main.py:257 #: src/modules/initcpiocfg/main.py:258
msgid "No partitions are defined for <pre>initcpiocfg</pre>." msgid "No partitions are defined for <pre>initcpiocfg</pre>."
msgstr "" msgstr ""
#: src/modules/initcpiocfg/main.py:261 #: src/modules/initcpiocfg/main.py:262
msgid "No root mount point for <pre>initcpiocfg</pre>." msgid "No root mount point for <pre>initcpiocfg</pre>."
msgstr "" msgstr ""
@ -178,23 +178,23 @@ msgstr ""
msgid "Mounting partitions." msgid "Mounting partitions."
msgstr "" msgstr ""
#: src/modules/mount/main.py:164 src/modules/mount/main.py:200 #: src/modules/mount/main.py:171 src/modules/mount/main.py:207
msgid "Internal error mounting zfs datasets" msgid "Internal error mounting zfs datasets"
msgstr "" msgstr ""
#: src/modules/mount/main.py:176 #: src/modules/mount/main.py:183
msgid "Failed to import zpool" msgid "Failed to import zpool"
msgstr "" msgstr ""
#: src/modules/mount/main.py:192 #: src/modules/mount/main.py:199
msgid "Failed to unlock zpool" msgid "Failed to unlock zpool"
msgstr "" msgstr ""
#: src/modules/mount/main.py:209 src/modules/mount/main.py:214 #: src/modules/mount/main.py:216 src/modules/mount/main.py:221
msgid "Failed to set zfs mountpoint" msgid "Failed to set zfs mountpoint"
msgstr "" msgstr ""
#: src/modules/mount/main.py:370 #: src/modules/mount/main.py:383
msgid "zfs mounting error" msgid "zfs mounting error"
msgstr "" msgstr ""
@ -230,24 +230,24 @@ msgid_plural "Removing %(num)d packages."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/modules/packages/main.py:740 src/modules/packages/main.py:752 #: src/modules/packages/main.py:769 src/modules/packages/main.py:781
#: src/modules/packages/main.py:780 #: src/modules/packages/main.py:809
msgid "Package Manager error" msgid "Package Manager error"
msgstr "" msgstr ""
#: src/modules/packages/main.py:741 #: src/modules/packages/main.py:770
msgid "" msgid ""
"The package manager could not prepare updates. The command <pre>{!s}</pre> " "The package manager could not prepare updates. The command <pre>{!s}</pre> "
"returned error code {!s}." "returned error code {!s}."
msgstr "" msgstr ""
#: src/modules/packages/main.py:753 #: src/modules/packages/main.py:782
msgid "" msgid ""
"The package manager could not update the system. The command <pre>{!s}</pre> " "The package manager could not update the system. The command <pre>{!s}</pre> "
"returned error code {!s}." "returned error code {!s}."
msgstr "" msgstr ""
#: src/modules/packages/main.py:781 #: src/modules/packages/main.py:810
msgid "" msgid ""
"The package manager could not make changes to the installed system. The " "The package manager could not make changes to the installed system. The "
"command <pre>{!s}</pre> returned error code {!s}." "command <pre>{!s}</pre> returned error code {!s}."

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
# Translators: # Translators:
# xxmn77 <xxmn77@gmail.com>, 2023 # Xəyyam Qocayev <xxmn77@gmail.com>, 2023
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-12 21:37+0100\n" "POT-Creation-Date: 2024-02-12 21:37+0100\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: xxmn77 <xxmn77@gmail.com>, 2023\n" "Last-Translator: Xəyyam Qocayev <xxmn77@gmail.com>, 2023\n"
"Language-Team: Azerbaijani (https://app.transifex.com/calamares/teams/20061/az/)\n" "Language-Team: Azerbaijani (https://app.transifex.com/calamares/teams/20061/az/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
# Translators: # Translators:
# xxmn77 <xxmn77@gmail.com>, 2023 # Xəyyam Qocayev <xxmn77@gmail.com>, 2023
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-12 21:37+0100\n" "POT-Creation-Date: 2024-02-12 21:37+0100\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: xxmn77 <xxmn77@gmail.com>, 2023\n" "Last-Translator: Xəyyam Qocayev <xxmn77@gmail.com>, 2023\n"
"Language-Team: Azerbaijani (Azerbaijan) (https://app.transifex.com/calamares/teams/20061/az_AZ/)\n" "Language-Team: Azerbaijani (Azerbaijan) (https://app.transifex.com/calamares/teams/20061/az_AZ/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -6,7 +6,7 @@
# Translators: # Translators:
# strel, 2017 # strel, 2017
# Guido Grasso <cuquiman97@gmail.com>, 2018 # Guido Grasso <cuquiman97@gmail.com>, 2018
# Adolfo Jayme-Barrientos, 2019 # Adolfo Jayme Barrientos, 2019
# Miguel Mayol <mitcoes@gmail.com>, 2020 # Miguel Mayol <mitcoes@gmail.com>, 2020
# Pier Jose Gotta Perez <piegope@protonmail.com>, 2020 # Pier Jose Gotta Perez <piegope@protonmail.com>, 2020
# Casper, 2023 # Casper, 2023

View File

@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: he\n" "Language: he\n"
"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
#: src/modules/bootloader/main.py:46 #: src/modules/bootloader/main.py:46
msgid "Install bootloader." msgid "Install bootloader."

View File

@ -28,7 +28,7 @@ msgstr "Installar cargator de initio."
#: src/modules/bootloader/main.py:666 #: src/modules/bootloader/main.py:666
msgid "Failed to install grub, no partitions defined in global storage" msgid "Failed to install grub, no partitions defined in global storage"
msgstr "" msgstr ""
"Non poteva installar le “grub”, nulle partitiones definite in le " "Impossibile installar le “grub”, necun partitiones definite in le "
"immagazinage global." "immagazinage global."
#: src/modules/bootloader/main.py:926 #: src/modules/bootloader/main.py:926
@ -65,7 +65,7 @@ msgstr "Non pote configurar LightDM"
#: src/modules/displaymanager/main.py:685 #: src/modules/displaymanager/main.py:685
msgid "No LightDM greeter installed." msgid "No LightDM greeter installed."
msgstr "Nulle systema de benvenita de LightDM installate." msgstr "Necun systema de benvenita de LightDM installate."
#: src/modules/displaymanager/main.py:716 #: src/modules/displaymanager/main.py:716
msgid "Cannot write SLIM configuration file" msgid "Cannot write SLIM configuration file"
@ -78,7 +78,7 @@ msgstr "Le file de configuration de SLIM {!s} non existe"
#: src/modules/displaymanager/main.py:938 #: src/modules/displaymanager/main.py:938
msgid "No display managers selected for the displaymanager module." msgid "No display managers selected for the displaymanager module."
msgstr "" msgstr ""
"Nulle gestor de visualisation seligite pro le modulo de «displaymanager»." "Necun gestor de visualisation seligite pro le modulo de «displaymanager»."
#: src/modules/displaymanager/main.py:939 #: src/modules/displaymanager/main.py:939
msgid "" msgid ""
@ -98,7 +98,7 @@ msgstr "Creation de initramfs con dracut."
#: src/modules/dracut/main.py:63 #: src/modules/dracut/main.py:63
msgid "Failed to run dracut" msgid "Failed to run dracut"
msgstr "Non poteva executar dracut" msgstr "Impossibile executar dracut"
#: src/modules/dracut/main.py:64 #: src/modules/dracut/main.py:64
#, python-brace-format #, python-brace-format
@ -109,7 +109,7 @@ msgstr ""
#: src/modules/dummypython/main.py:35 #: src/modules/dummypython/main.py:35
msgid "Dummy python job." msgid "Dummy python job."
msgstr "Carga ficticie de python." msgstr "Labor ficticie de python."
#: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:104 #: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:104
#: src/modules/dummypython/main.py:105 #: src/modules/dummypython/main.py:105
@ -134,20 +134,20 @@ msgstr "Error de configuration"
#: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73 #: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73
#: src/modules/rawfs/main.py:165 #: src/modules/rawfs/main.py:165
msgid "No partitions are defined for <pre>{!s}</pre> to use." msgid "No partitions are defined for <pre>{!s}</pre> to use."
msgstr "Nulle partitiones es definite pro esser usate per <pre>{!s}</pre>." msgstr "Necun partitiones es definite pro esser usate per <pre>{!s}</pre>."
#: src/modules/fstab/main.py:385 src/modules/initramfscfg/main.py:90 #: 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/localecfg/main.py:141 src/modules/networkcfg/main.py:107
#: src/modules/openrcdmcryptcfg/main.py:77 #: src/modules/openrcdmcryptcfg/main.py:77
msgid "No root mount point is given for <pre>{!s}</pre> to use." msgid "No root mount point is given for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
"Nulle puncto de montage de radice es date pro esser usate per " "Necun puncto de montage de radice es date pro esser usate per "
"<pre>{!s}</pre>." "<pre>{!s}</pre>."
#: src/modules/fstab/main.py:413 #: src/modules/fstab/main.py:413
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use." msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
"Nulle configuration <pre>{!s}</pre> es date pro esser usate per " "Necun configuration <pre>{!s}</pre> es date pro esser usate per "
"<pre>{!s}</pre>." "<pre>{!s}</pre>."
#: src/modules/grubcfg/main.py:30 #: src/modules/grubcfg/main.py:30
@ -164,11 +164,11 @@ msgstr " Configurante “mkinitcpio”."
#: src/modules/initcpiocfg/main.py:257 #: src/modules/initcpiocfg/main.py:257
msgid "No partitions are defined for <pre>initcpiocfg</pre>." msgid "No partitions are defined for <pre>initcpiocfg</pre>."
msgstr "Nulle partitiones es definite pro <pre>initcpiocfg</pre>." msgstr "Necun partitiones es definite pro <pre>initcpiocfg</pre>."
#: src/modules/initcpiocfg/main.py:261 #: src/modules/initcpiocfg/main.py:261
msgid "No root mount point for <pre>initcpiocfg</pre>." msgid "No root mount point for <pre>initcpiocfg</pre>."
msgstr "Nulle partitiones es definite pro <pre>initcpiocfg</pre>." msgstr "Necun partitiones es definite pro <pre>initcpiocfg</pre>."
#: src/modules/initramfscfg/main.py:32 #: src/modules/initramfscfg/main.py:32
msgid "Configuring initramfs." msgid "Configuring initramfs."
@ -184,7 +184,7 @@ msgstr "Creante “initramfs” con “mkinitfs”."
#: src/modules/mkinitfs/main.py:49 #: src/modules/mkinitfs/main.py:49
msgid "Failed to run mkinitfs on the target" msgid "Failed to run mkinitfs on the target"
msgstr "Non poteva executar “mkinitfs” sur le scopo" msgstr "Impossibile executar “mkinitfs” sur le scopo"
#: src/modules/mkinitfs/main.py:50 #: src/modules/mkinitfs/main.py:50
msgid "The exit code was {}" msgid "The exit code was {}"
@ -200,15 +200,15 @@ msgstr "Error interne durante le montage de collection de datos de zfs"
#: src/modules/mount/main.py:176 #: src/modules/mount/main.py:176
msgid "Failed to import zpool" msgid "Failed to import zpool"
msgstr "Non poteva importar “zpool”" msgstr "Impossibile importar “zpool”"
#: src/modules/mount/main.py:192 #: src/modules/mount/main.py:192
msgid "Failed to unlock zpool" msgid "Failed to unlock zpool"
msgstr "Non poteva disblocar “zpool”" msgstr "Impossibile disblocar “zpool”"
#: src/modules/mount/main.py:209 src/modules/mount/main.py:214 #: src/modules/mount/main.py:209 src/modules/mount/main.py:214
msgid "Failed to set zfs mountpoint" msgid "Failed to set zfs mountpoint"
msgstr "Non poteva definir le puncto de montage de zfs" msgstr "Impossibile definir le puncto de montage de zfs"
#: src/modules/mount/main.py:370 #: src/modules/mount/main.py:370
msgid "zfs mounting error" msgid "zfs mounting error"
@ -272,7 +272,7 @@ msgid ""
"The package manager could not make changes to the installed system. The " "The package manager could not make changes to the installed system. The "
"command <pre>{!s}</pre> returned error code {!s}." "command <pre>{!s}</pre> returned error code {!s}."
msgstr "" msgstr ""
"Le gestor de pacchettos non poteva facer le cambiamentos al systema " "Le gestor de pacchettos non poteva facer le modificationes al systema "
"installate. Le commando <pre>{!s}</pre> retornava le codice de error {!s}." "installate. Le commando <pre>{!s}</pre> retornava le codice de error {!s}."
#: src/modules/plymouthcfg/main.py:27 #: src/modules/plymouthcfg/main.py:27
@ -378,11 +378,11 @@ msgstr "Initiante a dispacchettar {}"
#: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467 #: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467
msgid "Failed to unpack image \"{}\"" msgid "Failed to unpack image \"{}\""
msgstr "Non poteva dispacchettar le imagina “{}”" msgstr "Impossibile dispacchettar le imagina “{}”"
#: src/modules/unpackfs/main.py:430 #: src/modules/unpackfs/main.py:430
msgid "No mount point for root partition" msgid "No mount point for root partition"
msgstr "Nulle puncto de montage pro le partition radice" msgstr "Necun puncto de montage pro le partition radice"
#: src/modules/unpackfs/main.py:431 #: src/modules/unpackfs/main.py:431
msgid "globalstorage does not contain a \"rootMountPoint\" key." msgid "globalstorage does not contain a \"rootMountPoint\" key."
@ -409,7 +409,7 @@ msgstr "Il non ha information de configuration."
#: src/modules/unpackfs/main.py:456 #: src/modules/unpackfs/main.py:456
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
msgstr "" msgstr ""
"Le systema de files para “{}” ({}) non es supportate per tu kernel actual" "Le systema de files para “{}” ({}) non es supportate per tu nucleo actual"
#: src/modules/unpackfs/main.py:460 #: src/modules/unpackfs/main.py:460
msgid "The source filesystem \"{}\" does not exist" msgid "The source filesystem \"{}\" does not exist"
@ -420,7 +420,7 @@ msgid ""
"Failed to find unsquashfs, make sure you have the squashfs-tools package " "Failed to find unsquashfs, make sure you have the squashfs-tools package "
"installed." "installed."
msgstr "" msgstr ""
"Non poteva trovar “unsquashfs”, assecura te que tu ha le pacchetto " "Impossibile trovar “unsquashfs”, assecura te que tu ha le pacchetto "
"“squashfs-tools” installate." "“squashfs-tools” installate."
#: src/modules/unpackfs/main.py:481 #: src/modules/unpackfs/main.py:481

View File

@ -5,7 +5,7 @@
# #
# Translators: # Translators:
# André Marcelo Alvarenga <alvarenga@kde.org>, 2020 # André Marcelo Alvarenga <alvarenga@kde.org>, 2020
# Guilherme MS, 2023 # Guilherme, 2023
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-12 21:37+0100\n" "POT-Creation-Date: 2024-02-12 21:37+0100\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Guilherme MS, 2023\n" "Last-Translator: Guilherme, 2023\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/calamares/teams/20061/pt_BR/)\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/calamares/teams/20061/pt_BR/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
# Translators: # Translators:
# Besnik Bleta <besnik@programeshqip.org>, 2023 # Besnik Bleta <besnik@programeshqip.org>, 2024
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-12 21:37+0100\n" "POT-Creation-Date: 2024-02-12 21:37+0100\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>, 2023\n" "Last-Translator: Besnik Bleta <besnik@programeshqip.org>, 2024\n"
"Language-Team: Albanian (https://app.transifex.com/calamares/teams/20061/sq/)\n" "Language-Team: Albanian (https://app.transifex.com/calamares/teams/20061/sq/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -371,7 +371,7 @@ msgstr "Po fillohet të shpaketohet {}"
#: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467 #: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467
msgid "Failed to unpack image \"{}\"" msgid "Failed to unpack image \"{}\""
msgstr "Dështoi shpaketimi i figurës \"{}\"" msgstr "Dështoi shpaketimi i figurës “{}”"
#: src/modules/unpackfs/main.py:430 #: src/modules/unpackfs/main.py:430
msgid "No mount point for root partition" msgid "No mount point for root partition"
@ -406,7 +406,7 @@ msgstr ""
#: src/modules/unpackfs/main.py:460 #: src/modules/unpackfs/main.py:460
msgid "The source filesystem \"{}\" does not exist" msgid "The source filesystem \"{}\" does not exist"
msgstr "Sistemi i kartelave \"{}\" ({}) sekziston" msgstr "Sistemi i kartelave “{}” ({}) sekziston"
#: src/modules/unpackfs/main.py:466 #: src/modules/unpackfs/main.py:466
msgid "" msgid ""
@ -418,7 +418,7 @@ msgstr ""
#: src/modules/unpackfs/main.py:481 #: src/modules/unpackfs/main.py:481
msgid "The destination \"{}\" in the target system is not a directory" msgid "The destination \"{}\" in the target system is not a directory"
msgstr "Destinacioni \"{}\" te sistemi i synuar sështë drejtori" msgstr "Vendmbërritja “{}” te sistemi i synuar sështë drejtori"
#: src/modules/zfshostid/main.py:27 #: src/modules/zfshostid/main.py:27
msgid "Copying zfs generated hostid." msgid "Copying zfs generated hostid."

View File

@ -42,7 +42,7 @@
static void static void
crash() crash()
{ {
kill(getpid(), SIGTRAP); kill( getpid(), SIGTRAP );
} }
/// @brief Print out the widget tree (names) in indented form. /// @brief Print out the widget tree (names) in indented form.

View File

@ -560,10 +560,13 @@ main( int argc, char* argv[] )
cDebug() << Logger::SubEntry << "Module metadata" << TR( "name", m->name() ) << TR( "type", m->typeString() ) cDebug() << Logger::SubEntry << "Module metadata" << TR( "name", m->name() ) << TR( "type", m->typeString() )
<< TR( "interface", m->interfaceString() ); << TR( "interface", m->interfaceString() );
Calamares::JobQueue::instance()->enqueue(100, m->jobs()); Calamares::JobQueue::instance()->enqueue( 100, m->jobs() );
QObject::connect(Calamares::JobQueue::instance(), &Calamares::JobQueue::finished, [application]() { QTimer::singleShot(std::chrono::seconds(3), application, &QApplication::quit); }); QObject::connect( Calamares::JobQueue::instance(),
QTimer::singleShot(0, []() { Calamares::JobQueue::instance()->start(); }); &Calamares::JobQueue::finished,
[ application ]()
{ QTimer::singleShot( std::chrono::seconds( 3 ), application, &QApplication::quit ); } );
QTimer::singleShot( 0, []() { Calamares::JobQueue::instance()->start(); } );
return application->exec(); return application->exec();
} }

View File

@ -22,15 +22,6 @@ static const char s_footer[]
"and the <a href=\"https://app.transifex.com/calamares/calamares/\">Calamares " "and the <a href=\"https://app.transifex.com/calamares/calamares/\">Calamares "
"translators team</a>." ); "translators team</a>." );
#if 0
// Blue Systems sponsored until June 2022
static const char s_sponsor[] = QT_TRANSLATE_NOOP( "AboutData",
"<a href=\"https://calamares.io/\">Calamares</a> "
"development is sponsored by <br/>"
"<a href=\"http://www.blue-systems.com/\">Blue Systems</a> - "
"Liberating Software." );
#endif
struct Maintainer struct Maintainer
{ {
unsigned int start; unsigned int start;
@ -57,14 +48,12 @@ static constexpr const Maintainer maintainers[] = {
static QString static QString
aboutMaintainers() aboutMaintainers()
{ {
return std::accumulate( std::cbegin( maintainers ), QStringList s;
std::cend( maintainers ), for ( const auto& m : maintainers )
QString(), {
[]( QString& s, const Maintainer& m ) s.append( m.text() );
{ }
s += m.text(); return s.join( QString() );
return s;
} );
} }
static QString static QString

View File

@ -12,7 +12,7 @@
#define DLLMACRO_H #define DLLMACRO_H
#ifndef CALAMARES_EXPORT #ifndef CALAMARES_EXPORT
#define CALAMARES_EXPORT __attribute__((visibility("default"))) #define CALAMARES_EXPORT __attribute__( ( visibility( "default" ) ) )
#endif #endif
/* /*

View File

@ -16,7 +16,6 @@
#include "compat/Mutex.h" #include "compat/Mutex.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include <QApplication>
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusMessage> #include <QDBusMessage>
#include <QDBusPendingCall> #include <QDBusPendingCall>
@ -136,8 +135,7 @@ PowerManagementInterface::inhibitSleep()
QStringLiteral( "/org/freedesktop/PowerManagement/Inhibit" ), QStringLiteral( "/org/freedesktop/PowerManagement/Inhibit" ),
QStringLiteral( "org.freedesktop.PowerManagement.Inhibit" ), QStringLiteral( "org.freedesktop.PowerManagement.Inhibit" ),
QStringLiteral( "Inhibit" ) ); QStringLiteral( "Inhibit" ) );
inhibitCall.setArguments( inhibitCall.setArguments( { { tr( "Calamares" ) }, { tr( "Installation in progress", "@status" ) } } );
{ { tr( "Calamares" ) }, { tr( "Installation in progress", "@status" ) } } );
auto asyncReply = sessionBus.asyncCall( inhibitCall ); auto asyncReply = sessionBus.asyncCall( inhibitCall );
auto* replyWatcher = new QDBusPendingCallWatcher( asyncReply, this ); auto* replyWatcher = new QDBusPendingCallWatcher( asyncReply, this );

View File

@ -0,0 +1,23 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2024 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*
*/
#ifndef CALAMARES_COMPAT_SIZE_H
#define CALAMARES_COMPAT_SIZE_H
#include <QVariant>
namespace Calamares
{
/* Compatibility of size types (e.g. qsizetype, STL sizes, int) between Qt5 and Qt6 */
using NumberForTr = int;
}
#endif

View File

@ -74,7 +74,7 @@ public:
Interface interface() const { return m_interface; } Interface interface() const { return m_interface; }
bool isEmergency() const { return m_isEmergeny; } bool isEmergency() const { return m_isEmergeny; }
bool hasConfig() const { return m_hasConfig; } // TODO: 3.5 rename to noConfig() to match descriptor key bool hasConfig() const { return m_hasConfig; } // TODO: 3.5 rename to noConfig() to match descriptor key
int weight() const { return m_weight < 1 ? 1 : m_weight; } int weight() const { return m_weight < 1 ? 1 : m_weight; }
bool explicitWeight() const { return m_weight > 0; } bool explicitWeight() const { return m_weight > 0; }

View File

@ -11,6 +11,7 @@
#include "RequirementsChecker.h" #include "RequirementsChecker.h"
#include "compat/Mutex.h" #include "compat/Mutex.h"
#include "compat/Size.h"
#include "modulesystem/Module.h" #include "modulesystem/Module.h"
#include "modulesystem/Requirement.h" #include "modulesystem/Requirement.h"
#include "modulesystem/RequirementsModel.h" #include "modulesystem/RequirementsModel.h"
@ -120,7 +121,7 @@ RequirementsChecker::reportProgress()
{ {
cDebug() << "Remaining modules:" << remaining << Logger::DebugList( remainingNames ); cDebug() << "Remaining modules:" << remaining << Logger::DebugList( remainingNames );
unsigned int posInterval = ( m_progressTimer->interval() < 0 ) ? 1000 : uint( m_progressTimer->interval() ); unsigned int posInterval = ( m_progressTimer->interval() < 0 ) ? 1000 : uint( m_progressTimer->interval() );
QString waiting = tr( "Waiting for %n module(s)…", "@status", remaining ); QString waiting = tr( "Waiting for %n module(s)…", "@status", static_cast<Calamares::NumberForTr>(remaining) );
QString elapsed = tr( "(%n second(s))", "@status", m_progressTimeouts * posInterval / 999 ); QString elapsed = tr( "(%n second(s))", "@status", m_progressTimeouts * posInterval / 999 );
Q_EMIT requirementsProgress( waiting + QString( " " ) + elapsed ); Q_EMIT requirementsProgress( waiting + QString( " " ) + elapsed );
} }

View File

@ -66,7 +66,7 @@ RequirementsModel::reCheckList()
int int
RequirementsModel::rowCount( const QModelIndex& ) const RequirementsModel::rowCount( const QModelIndex& ) const
{ {
return m_requirements.count(); return static_cast< int >( m_requirements.count() ); // TODO 3.4 use qsizetype
} }
QVariant QVariant

View File

@ -61,8 +61,8 @@ public:
QVariant data( const QModelIndex& index, int role ) const override; QVariant data( const QModelIndex& index, int role ) const override;
int rowCount( const QModelIndex& ) const override; int rowCount( const QModelIndex& ) const override; // TODO 3.4 use qsizetype
int count() const { return m_requirements.count(); } int count() const { return static_cast< int >( m_requirements.count() ); } // TODO 3.4 use qsizetype
///@brief Debugging tool, describe the checking-state ///@brief Debugging tool, describe the checking-state
void describe() const; void describe() const;

View File

@ -26,17 +26,17 @@ namespace Packages
* Returns @c true if anything was changed, @c false otherwise. * Returns @c true if anything was changed, @c false otherwise.
*/ */
DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs, DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs,
const Calamares::ModuleSystem::InstanceKey& module, const Calamares::ModuleSystem::InstanceKey& module,
const QVariantList& installPackages, const QVariantList& installPackages,
const QVariantList& tryInstallPackages ); const QVariantList& tryInstallPackages );
/** @brief Sets the install-packages GS keys for the given module /** @brief Sets the install-packages GS keys for the given module
* *
* This replaces previously-set install-packages lists. Use this with * This replaces previously-set install-packages lists. Use this with
* plain lists of package names. It does not support try-install. * plain lists of package names. It does not support try-install.
*/ */
DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs, DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs,
const Calamares::ModuleSystem::InstanceKey& module, const Calamares::ModuleSystem::InstanceKey& module,
const QStringList& installPackages ); const QStringList& installPackages );
// void setGSPackageRemovals( const Calamares::ModuleSystem::InstanceKey& key, const QVariantList& removePackages ); // void setGSPackageRemovals( const Calamares::ModuleSystem::InstanceKey& key, const QVariantList& removePackages );
} // namespace Packages } // namespace Packages
} // namespace Calamares } // namespace Calamares

View File

@ -110,7 +110,8 @@ PartitionServiceTests::testUnitComparison()
} }
/* Operator to make the table in testUnitNormalisation_data easier to write */ /* Operator to make the table in testUnitNormalisation_data easier to write */
constexpr qint64 operator""_qi( unsigned long long m ) constexpr qint64
operator""_qi( unsigned long long m )
{ {
return qint64( m ); return qint64( m );
} }

View File

@ -55,6 +55,41 @@ get_variant_stringlist( const QVariantList& l )
return retl; return retl;
} }
/** @brief Inserts the keys from @p map into @p expander as "gs"-keys
*
* For each key k in @p map, a key with literal `gs[` + prefix + '.' + key +
* literal `]` is inserted into the exapander.
*/
static void
expand_tree( Calamares::String::DictionaryExpander& expander, const QString& prefix, const QVariantMap& map )
{
// With the current prefix, turn a key into gs[prefix.key]
auto gs_key = [ &prefix ]( const QString& k ) -> QString
{ return QStringLiteral( "gs[" ) + ( prefix.isEmpty() ? QString() : prefix + '.' ) + k + ']'; };
for ( QVariantMap::const_iterator valueiter = map.cbegin(); valueiter != map.cend(); ++valueiter )
{
const QString key = valueiter.key();
const QVariant value = valueiter.value();
switch ( Calamares::typeOf( value ) )
{
case Calamares::MapVariantType:
expand_tree( expander, prefix.isEmpty() ? key : ( prefix + '.' + key ), value.toMap() );
break;
case Calamares::StringVariantType:
expander.add( gs_key( key ), value.toString() );
break;
case Calamares::IntVariantType:
expander.add( gs_key( key ), QString::number( value.toInt() ) );
break;
default:
// Silently ignore
break;
}
}
}
static Calamares::String::DictionaryExpander static Calamares::String::DictionaryExpander
get_gs_expander( System::RunLocation location ) get_gs_expander( System::RunLocation location )
{ {
@ -88,6 +123,11 @@ get_gs_expander( System::RunLocation location )
} }
} }
if ( gs )
{
expand_tree( expander, QString(), gs->data() );
}
return expander; return expander;
} }

View File

@ -104,6 +104,8 @@ public:
/** @brief empty command-list with timeout to apply to entries. */ /** @brief empty command-list with timeout to apply to entries. */
CommandList( bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); CommandList( bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) );
CommandList( const QVariant& v, bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); CommandList( const QVariant& v, bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) );
CommandList( int ) = delete;
CommandList( const QVariant&, int ) = delete;
bool doChroot() const { return m_doChroot; } bool doChroot() const { return m_doChroot; }
std::chrono::seconds defaultTimeout() const { return m_timeout; } std::chrono::seconds defaultTimeout() const { return m_timeout; }

View File

@ -282,9 +282,17 @@ LibCalamaresTests::testCommandExpansion_data()
QTest::addColumn< QString >( "command" ); QTest::addColumn< QString >( "command" );
QTest::addColumn< QString >( "expected" ); QTest::addColumn< QString >( "expected" );
QTest::newRow( "empty" ) << QString() << QString(); QTest::newRow( "empty " ) << QString() << QString();
QTest::newRow( "ls " ) << QStringLiteral( "ls" ) << QStringLiteral( "ls" ); QTest::newRow( "ls " ) << QStringLiteral( "ls" ) << QStringLiteral( "ls" );
QTest::newRow( "user " ) << QStringLiteral( "chmod $USER" ) << QStringLiteral( "chmod alice" ); QTest::newRow( "$USER " ) << QStringLiteral( "chmod $USER" ) << QStringLiteral( "chmod alice" );
QTest::newRow( "${USER}" ) << QStringLiteral( "chmod ${USER}" ) << QStringLiteral( "chmod alice" );
QTest::newRow( "gs-user" ) << QStringLiteral( "chmod ${gs[username]}" ) << QStringLiteral( "chmod alice" );
QTest::newRow( "gs-* " ) << QStringLiteral(
"${gs[username]} has ${gs[branding.bootloader]} ${gs[branding.ducks]} ducks" )
<< QStringLiteral( "alice has found 3 ducks" );
// QStringList does not expand
QTest::newRow( "gs-list" ) << QStringLiteral( "colors ${gs[branding.color]}" )
<< QStringLiteral( "colors ${gs[branding.color]}" );
} }
void void
@ -295,6 +303,12 @@ LibCalamaresTests::testCommandExpansion()
QVERIFY( gs ); QVERIFY( gs );
gs->insert( QStringLiteral( "username" ), QStringLiteral( "alice" ) ); gs->insert( QStringLiteral( "username" ), QStringLiteral( "alice" ) );
QVariantMap m;
m.insert( QStringLiteral( "bootloader" ), QStringLiteral( "found" ) );
m.insert( QStringLiteral( "ducks" ), 3 );
m.insert( QStringLiteral( "color" ), QStringList { "green", "red" } );
gs->insert( QStringLiteral( "branding" ), m );
QFETCH( QString, command ); QFETCH( QString, command );
QFETCH( QString, expected ); QFETCH( QString, expected );
Calamares::CommandLine c( command, std::chrono::seconds( 0 ) ); Calamares::CommandLine c( command, std::chrono::seconds( 0 ) );
@ -350,8 +364,14 @@ commands:
QCOMPARE( m[ "commands" ].toList().count(), 4 ); QCOMPARE( m[ "commands" ].toList().count(), 4 );
{ {
// Take care! The second parameter is a bool, so "3" here means "true" #ifdef THIS_DOES_NOT_COMPILE_AND_THATS_THE_POINT
// Take care! The second parameter is a bool, so "3" here would
// mean "true", except the int overload is deleted to prevent just that.
Calamares::CommandList cmds( m[ "commands" ], 3 ); Calamares::CommandList cmds( m[ "commands" ], 3 );
// .. and there's no conversion from std::chrono::duration to bool either.
Calamares::CommandList cmds( m[ "commands" ], std::chrono::seconds( 3 ) );
#endif
Calamares::CommandList cmds( m[ "commands" ], true );
QCOMPARE( cmds.defaultTimeout(), std::chrono::seconds( 10 ) ); QCOMPARE( cmds.defaultTimeout(), std::chrono::seconds( 10 ) );
// But the 4 commands are there anyway // But the 4 commands are there anyway
QCOMPARE( cmds.count(), 4 ); QCOMPARE( cmds.count(), 4 );

View File

@ -24,39 +24,45 @@ namespace Units
{ {
/** User defined literals, 1_KB is 1 KiloByte (= 10^3 bytes) */ /** User defined literals, 1_KB is 1 KiloByte (= 10^3 bytes) */
constexpr qint64 operator""_KB( unsigned long long m ) constexpr qint64
operator""_KB( unsigned long long m )
{ {
return qint64( m ) * 1000; return qint64( m ) * 1000;
} }
/** User defined literals, 1_KiB is 1 KibiByte (= 2^10 bytes) */ /** User defined literals, 1_KiB is 1 KibiByte (= 2^10 bytes) */
constexpr qint64 operator""_KiB( unsigned long long m ) constexpr qint64
operator""_KiB( unsigned long long m )
{ {
return qint64( m ) * 1024; return qint64( m ) * 1024;
} }
/** User defined literals, 1_MB is 1 MegaByte (= 10^6 bytes) */ /** User defined literals, 1_MB is 1 MegaByte (= 10^6 bytes) */
constexpr qint64 operator""_MB( unsigned long long m ) constexpr qint64
operator""_MB( unsigned long long m )
{ {
return operator""_KB(m)*1000; return operator""_KB( m ) * 1000;
} }
/** User defined literals, 1_MiB is 1 MibiByte (= 2^20 bytes) */ /** User defined literals, 1_MiB is 1 MibiByte (= 2^20 bytes) */
constexpr qint64 operator""_MiB( unsigned long long m ) constexpr qint64
operator""_MiB( unsigned long long m )
{ {
return operator""_KiB(m)*1024; return operator""_KiB( m ) * 1024;
} }
/** User defined literals, 1_GB is 1 GigaByte (= 10^9 bytes) */ /** User defined literals, 1_GB is 1 GigaByte (= 10^9 bytes) */
constexpr qint64 operator""_GB( unsigned long long m ) constexpr qint64
operator""_GB( unsigned long long m )
{ {
return operator""_MB(m)*1000; return operator""_MB( m ) * 1000;
} }
/** User defined literals, 1_GiB is 1 GibiByte (= 2^30 bytes) */ /** User defined literals, 1_GiB is 1 GibiByte (= 2^30 bytes) */
constexpr qint64 operator""_GiB( unsigned long long m ) constexpr qint64
operator""_GiB( unsigned long long m )
{ {
return operator""_MiB(m)*1024; return operator""_MiB( m ) * 1024;
} }
} // namespace Units } // namespace Units

View File

@ -14,7 +14,7 @@
#ifdef WITH_PYBIND11 #ifdef WITH_PYBIND11
#include "python/PythonJob.h" #include "python/PythonJob.h"
using JobType = Calamares::Python::Job; using JobType = Calamares::Python::Job;
#elif defined(WITH_BOOST_PYTHON) #elif defined( WITH_BOOST_PYTHON )
// Old Boost::Python version // Old Boost::Python version
#include "PythonJob.h" #include "PythonJob.h"
using JobType = Calamares::PythonJob; using JobType = Calamares::PythonJob;

View File

@ -73,9 +73,8 @@ ExecutionViewStep::ExecutionViewStep( QObject* parent )
{ {
m_widget->setObjectName( "slideshow" ); m_widget->setObjectName( "slideshow" );
m_progressBar->setObjectName( "exec-progress" ); m_progressBar->setObjectName( "exec-progress" );
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE( m_progressBar->setFormat(
m_progressBar->setFormat( tr( "%p%", "Progress percentage indicator: %p is where the number 0..100 is placed" ) ); tr( "%p%", "Progress percentage indicator: %p is where the number 0..100 is placed" ) ); );
);
m_label->setObjectName( "exec-message" ); m_label->setObjectName( "exec-message" );
QVBoxLayout* layout = new QVBoxLayout( m_widget ); QVBoxLayout* layout = new QVBoxLayout( m_widget );

View File

@ -46,7 +46,8 @@
# #
# The values after a value sub-keys are the same kinds of values # The values after a value sub-keys are the same kinds of values
# as can be given to the *script* key in the shellprocess module. # as can be given to the *script* key in the shellprocess module.
# See shellprocess.conf for documentation on valid values. # See shellprocess.conf for documentation on valid values and how
# variables are expanded in those commands.
--- ---
dontChroot: false dontChroot: false
firmwareType: firmwareType:

View File

@ -378,14 +378,30 @@ class DMgdm(DisplayManager):
GDM exists with different executable names, so search GDM exists with different executable names, so search
for one of them and use it. for one of them and use it.
""" """
for executable, config in ( candidates = (
( "gdm", "etc/gdm/custom.conf" ), ( "gdm", "etc/gdm/custom.conf" ),
( "gdm3", "etc/gdm3/daemon.conf" ) ( "gdm3", "etc/gdm3/daemon.conf" ),
): ( "gdm3", "etc/gdm3/custom.conf" ),
)
def have_executable(executable : str):
bin_path = "{!s}/usr/bin/{!s}".format(self.root_mount_point, executable) bin_path = "{!s}/usr/bin/{!s}".format(self.root_mount_point, executable)
sbin_path = "{!s}/usr/sbin/{!s}".format(self.root_mount_point, executable) sbin_path = "{!s}/usr/sbin/{!s}".format(self.root_mount_point, executable)
if os.path.exists(bin_path) or os.path.exists(sbin_path): return os.path.exists(bin_path) or os.path.exists(sbin_path)
# Keep the found-executable name around for later
def have_config(config : str):
config_path = "{!s}/{!s}".format(self.root_mount_point, config)
return os.path.exists(config_path)
# Look for an existing configuration file as a hint, then
# keep the found-executable name and config around for later.
for executable, config in candidates:
if have_config(config) and have_executable(executable):
self.executable = executable
self.config = config
return True
for executable, config in candidates:
if have_executable(executable):
self.executable = executable self.executable = executable
self.config = config self.config = config
return True return True

View File

@ -4,7 +4,7 @@
# We have tests to load (some) of the DMs specifically, to test their # We have tests to load (some) of the DMs specifically, to test their
# configuration code. Those tests conventionally live in Python # configuration code. Those tests conventionally live in Python
# files here in the tests/ directory. Add them. # files here in the tests/ directory. Add them.
foreach(_dmname greetd sddm) foreach(_dmname greetd sddm gdm)
add_test( add_test(
NAME configure-displaymanager-${_dmname} NAME configure-displaymanager-${_dmname}
COMMAND env PYTHONPATH=.: python3 ${CMAKE_CURRENT_LIST_DIR}/test-dm-${_dmname}.py COMMAND env PYTHONPATH=.: python3 ${CMAKE_CURRENT_LIST_DIR}/test-dm-${_dmname}.py

View File

@ -0,0 +1,26 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Calamares Boilerplate
import libcalamares
libcalamares.globalstorage = libcalamares.GlobalStorage(None)
libcalamares.globalstorage.insert("testing", True)
# Module prep-work
from src.modules.displaymanager import main
default_desktop_environment = main.DesktopEnvironment("startplasma-x11", "kde-plasma.desktop")
import os
import tempfile
with tempfile.TemporaryDirectory(prefix="calamares-gdm") as tempdir:
os.makedirs(tempdir + "/usr/bin")
os.makedirs(tempdir + "/etc/gdm3")
with open(tempdir + "/usr/bin/gdm3", "w") as f:
f.write("#! /bin/sh\n:\n")
# Specific DM test
d = main.DMgdm(tempdir)
assert(d.have_dm())
d.set_autologin("d", True, default_desktop_environment)
# .. and again (this time checks load/save)
d.set_autologin("d", True, default_desktop_environment)
d.set_autologin("d", True, default_desktop_environment)

View File

@ -139,7 +139,8 @@ Config::doNotify( bool hasFailed, bool sendAnyway )
QString message; QString message;
if ( hasFailed ) if ( hasFailed )
{ {
title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Failed", "@title" ) : tr( "Installation Failed", "@title" ); title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Failed", "@title" )
: tr( "Installation Failed", "@title" );
message = Calamares::Settings::instance()->isSetupMode() message = Calamares::Settings::instance()->isSetupMode()
? tr( "The setup of %1 did not complete successfully.", "@info" ) ? tr( "The setup of %1 did not complete successfully.", "@info" )
: tr( "The installation of %1 did not complete successfully.", "@info" ); : tr( "The installation of %1 did not complete successfully.", "@info" );
@ -148,8 +149,9 @@ Config::doNotify( bool hasFailed, bool sendAnyway )
{ {
title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Complete", "@title" ) title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Complete", "@title" )
: tr( "Installation Complete", "@title" ); : tr( "Installation Complete", "@title" );
message = Calamares::Settings::instance()->isSetupMode() ? tr( "The setup of %1 is complete.", "@info" ) message = Calamares::Settings::instance()->isSetupMode()
: tr( "The installation of %1 is complete.", "@info" ); ? tr( "The setup of %1 is complete.", "@info" )
: tr( "The installation of %1 is complete.", "@info" );
} }
const auto* branding = Calamares::Branding::instance(); const auto* branding = Calamares::Branding::instance();

View File

@ -74,26 +74,30 @@ FinishedPage::retranslate()
{ {
ui->mainText->setText( tr( "<h1>All done.</h1><br/>" ui->mainText->setText( tr( "<h1>All done.</h1><br/>"
"%1 has been set up on your computer.<br/>" "%1 has been set up on your computer.<br/>"
"You may now start using your new system.", "@info" ) "You may now start using your new system.",
"@info" )
.arg( branding->versionedName() ) ); .arg( branding->versionedName() ) );
ui->restartCheckBox->setToolTip( tr( "<html><head/><body>" ui->restartCheckBox->setToolTip( tr( "<html><head/><body>"
"<p>When this box is checked, your system will " "<p>When this box is checked, your system will "
"restart immediately when you click on " "restart immediately when you click on "
"<span style=\"font-style:italic;\">Done</span> " "<span style=\"font-style:italic;\">Done</span> "
"or close the setup program.</p></body></html>", "@tooltip" ) ); "or close the setup program.</p></body></html>",
"@tooltip" ) );
} }
else else
{ {
ui->mainText->setText( tr( "<h1>All done.</h1><br/>" ui->mainText->setText( tr( "<h1>All done.</h1><br/>"
"%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 " "You may now restart into your new system, or continue "
"using the %2 Live environment.", "@info" ) "using the %2 Live environment.",
"@info" )
.arg( branding->versionedName(), branding->productName() ) ); .arg( branding->versionedName(), branding->productName() ) );
ui->restartCheckBox->setToolTip( tr( "<html><head/><body>" ui->restartCheckBox->setToolTip( tr( "<html><head/><body>"
"<p>When this box is checked, your system will " "<p>When this box is checked, your system will "
"restart immediately when you click on " "restart immediately when you click on "
"<span style=\"font-style:italic;\">Done</span> " "<span style=\"font-style:italic;\">Done</span> "
"or close the installer.</p></body></html>", "@tooltip" ) ); "or close the installer.</p></body></html>",
"@tooltip" ) );
} }
} }
else else
@ -104,7 +108,8 @@ FinishedPage::retranslate()
{ {
ui->mainText->setText( tr( "<h1>Setup Failed</h1><br/>" ui->mainText->setText( tr( "<h1>Setup Failed</h1><br/>"
"%1 has not been set up on your computer.<br/>" "%1 has not been set up on your computer.<br/>"
"The error message was: %2.", "@info, %1 is product name with version" ) "The error message was: %2.",
"@info, %1 is product name with version" )
.arg( branding->versionedName() ) .arg( branding->versionedName() )
.arg( message ) ); .arg( message ) );
} }
@ -112,7 +117,8 @@ FinishedPage::retranslate()
{ {
ui->mainText->setText( tr( "<h1>Installation Failed</h1><br/>" ui->mainText->setText( tr( "<h1>Installation Failed</h1><br/>"
"%1 has not been installed on your computer.<br/>" "%1 has not been installed on your computer.<br/>"
"The error message was: %2.", "@info, %1 is product name with version" ) "The error message was: %2.",
"@info, %1 is product name with version" )
.arg( branding->versionedName() ) .arg( branding->versionedName() )
.arg( message ) ); .arg( message ) );
} }

View File

@ -166,8 +166,9 @@ ResizeFSJob::exec()
if ( !m_kpmcore ) if ( !m_kpmcore )
{ {
cWarning() << "Could not load KPMCore backend (2)."; cWarning() << "Could not load KPMCore backend (2).";
return Calamares::JobResult::error( tr( "KPMCore not available", "@error" ), return Calamares::JobResult::error(
tr( "Calamares cannot start KPMCore for the file system resize job.", "@error" ) ); tr( "KPMCore not available", "@error" ),
tr( "Calamares cannot start KPMCore for the file system resize job.", "@error" ) );
} }
m_kpmcore.backend()->initFSSupport(); // Might not be enough, see below m_kpmcore.backend()->initFSSupport(); // Might not be enough, see below
@ -178,18 +179,20 @@ ResizeFSJob::exec()
return Calamares::JobResult::error( return Calamares::JobResult::error(
tr( "Resize failed.", "@error" ), tr( "Resize failed.", "@error" ),
!m_fsname.isEmpty() !m_fsname.isEmpty()
? tr( "The filesystem %1 could not be found in this system, and cannot be resized.", "@info" ).arg( m_fsname ) ? tr( "The filesystem %1 could not be found in this system, and cannot be resized.", "@info" )
: tr( "The device %1 could not be found in this system, and cannot be resized.", "@info" ).arg( m_devicename ) ); .arg( m_fsname )
: tr( "The device %1 could not be found in this system, and cannot be resized.", "@info" )
.arg( m_devicename ) );
} }
m.second->fileSystem().init(); // Initialize support for specific FS m.second->fileSystem().init(); // Initialize support for specific FS
if ( !ResizeOperation::canGrow( m.second ) ) if ( !ResizeOperation::canGrow( m.second ) )
{ {
cDebug() << "canGrow() returned false."; cDebug() << "canGrow() returned false.";
return Calamares::JobResult::error( tr( "Resize Failed", "@error" ), return Calamares::JobResult::error(
!m_fsname.isEmpty() tr( "Resize Failed", "@error" ),
? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname )
: tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) );
} }
qint64 new_end = findGrownEnd( m ); qint64 new_end = findGrownEnd( m );
@ -198,10 +201,10 @@ ResizeFSJob::exec()
if ( new_end < 0 ) if ( new_end < 0 )
{ {
return Calamares::JobResult::error( tr( "Resize Failed", "@error" ), return Calamares::JobResult::error(
!m_fsname.isEmpty() tr( "Resize Failed", "@error" ),
? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname )
: tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) );
} }
if ( new_end == 0 ) if ( new_end == 0 )
{ {

View File

@ -151,8 +151,12 @@ class FstabGenerator(object):
if not mapper_name or not luks_uuid: if not mapper_name or not luks_uuid:
return None return None
password = "/crypto_keyfile.bin"
crypttab_options = self.crypttab_options crypttab_options = self.crypttab_options
# Make sure to not use missing keyfile
if os.path.isfile(os.path.join(self.root_mount_point, "crypto_keyfile.bin")):
password = "/crypto_keyfile.bin"
else:
password = "none"
# Set crypttab password for partition to none and remove crypttab options # Set crypttab password for partition to none and remove crypttab options
# if root partition was not encrypted # if root partition was not encrypted

View File

@ -9,3 +9,30 @@
# #
# Please note that using the systemd hooks result in no access to the emergency recovery shell # Please note that using the systemd hooks result in no access to the emergency recovery shell
useSystemdHook: false useSystemdHook: false
#
# Modifications to the standard list of hooks.
#
# There are three subkeys:
# - prepend, which puts hooks at the beginning of the
# list of hooks, in the order specified here,
# - append, which adds hooks at the end of the list of
# hooks, in the order specified here,
# - remove, which removes hooks from the list of hooks,
# wherever they may be.
#
# The example configuration here yields bogus, <stuff>, bogus
# initially, and then removes that hook again.
#
hooks:
prepend: [ bogus ]
append: [ bogus ]
remove: [ bogus ]
#
# In some cases, you may want to use a different source
# file than /etc/mkinitcpio.conf , e.g. because the live system
# does not match the target in a useful way. If unset or
# empty, defaults to /etc/mkinitcpio.conf
#
source: "/etc/mkinitcpio.conf"

View File

@ -7,5 +7,11 @@ additionalProperties: false
type: object type: object
properties: properties:
useSystemdHook: { type: boolean } useSystemdHook: { type: boolean }
hooks:
type: object
additionalProperties: false
properties:
prepend: { type: array, items: string }
append: { type: array, items: string }
remove: { type: array, items: string }
source: { type: string }

View File

@ -97,7 +97,7 @@ def get_host_initcpio():
the lines from that file, or an empty list if it does the lines from that file, or an empty list if it does
not exist. not exist.
""" """
hostfile = "/etc/mkinitcpio.conf" hostfile = libcalamares.job.configuration.get("source", None) or "/etc/mkinitcpio.conf"
try: try:
with open(hostfile, "r") as mkinitcpio_file: with open(hostfile, "r") as mkinitcpio_file:
mklins = [x.strip() for x in mkinitcpio_file.readlines()] mklins = [x.strip() for x in mkinitcpio_file.readlines()]
@ -168,6 +168,13 @@ def find_initcpio_features(partitions, root_mount_point):
hooks.append("keymap") hooks.append("keymap")
hooks.append("consolefont") hooks.append("consolefont")
hooks_map = libcalamares.job.configuration.get("hooks", None)
if not hooks_map:
hooks_map = dict()
hooks_prepend = hooks_map.get("prepend", None) or []
hooks_append = hooks_map.get("append", None) or []
hooks_remove = hooks_map.get("remove", None) or []
modules = [] modules = []
files = [] files = []
binaries = [] binaries = []
@ -247,6 +254,9 @@ def find_initcpio_features(partitions, root_mount_point):
else: else:
hooks.append("fsck") hooks.append("fsck")
# Modify according to the keys in the configuration
hooks = [h for h in (hooks_prepend + hooks + hooks_append) if h not in hooks_remove]
return hooks, modules, files, binaries return hooks, modules, files, binaries

View File

@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
rootMountPoint: /tmp/mount
partitions:
- fs: ext4
mountPoint: "/"

View File

@ -502,14 +502,16 @@ QString
Config::prettyStatus() const Config::prettyStatus() const
{ {
QString status; QString status;
status += tr( "Keyboard model has been set to %1<br/>.", "@label, %1 is keyboard model, as in Apple Magic Keyboard" ) status
.arg( m_keyboardModelsModel->label( m_keyboardModelsModel->currentIndex() ) ); += tr( "Keyboard model has been set to %1<br/>.", "@label, %1 is keyboard model, as in Apple Magic Keyboard" )
.arg( m_keyboardModelsModel->label( m_keyboardModelsModel->currentIndex() ) );
QString layout = m_keyboardLayoutsModel->item( m_keyboardLayoutsModel->currentIndex() ).second.description; QString layout = m_keyboardLayoutsModel->item( m_keyboardLayoutsModel->currentIndex() ).second.description;
QString variant = m_keyboardVariantsModel->currentIndex() >= 0 QString variant = m_keyboardVariantsModel->currentIndex() >= 0
? m_keyboardVariantsModel->label( m_keyboardVariantsModel->currentIndex() ) ? m_keyboardVariantsModel->label( m_keyboardVariantsModel->currentIndex() )
: QString( "<default>" ); : QString( "<default>" );
status += tr( "Keyboard layout has been set to %1/%2.", "@label, %1 is layout, %2 is layout variant" ).arg( layout, variant ); status += tr( "Keyboard layout has been set to %1/%2.", "@label, %1 is layout, %2 is layout variant" )
.arg( layout, variant );
return status; return status;
} }

View File

@ -64,7 +64,9 @@ QString
SetKeyboardLayoutJob::prettyName() const SetKeyboardLayoutJob::prettyName() const
{ {
return tr( "Setting keyboard model to %1, layout as %2-%3…", "@status, %1 model, %2 layout, %3 variant" ) return tr( "Setting keyboard model to %1, layout as %2-%3…", "@status, %1 model, %2 layout, %3 variant" )
.arg( m_model ).arg( m_layout ).arg( m_variant ); .arg( m_model )
.arg( m_layout )
.arg( m_variant );
} }
@ -365,8 +367,10 @@ SetKeyboardLayoutJob::exec()
if ( !writeVConsoleData( vconsoleConfPath, convertedKeymapPath ) ) if ( !writeVConsoleData( vconsoleConfPath, convertedKeymapPath ) )
{ {
return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for the virtual console.", "@error" ), return Calamares::JobResult::error(
tr( "Failed to write to %1", "@error, %1 is virtual console configuration path" ).arg( vconsoleConfPath ) ); tr( "Failed to write keyboard configuration for the virtual console.", "@error" ),
tr( "Failed to write to %1", "@error, %1 is virtual console configuration path" )
.arg( vconsoleConfPath ) );
} }
// Get the path to the destination's /etc/X11/xorg.conf.d/00-keyboard.conf // Get the path to the destination's /etc/X11/xorg.conf.d/00-keyboard.conf
@ -391,8 +395,9 @@ SetKeyboardLayoutJob::exec()
if ( !writeX11Data( keyboardConfPath ) ) if ( !writeX11Data( keyboardConfPath ) )
{ {
return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for X11.", "@error" ), return Calamares::JobResult::error(
tr( "Failed to write to %1", "@error, %1 is keyboard configuration path" ).arg( keyboardConfPath ) ); tr( "Failed to write keyboard configuration for X11.", "@error" ),
tr( "Failed to write to %1", "@error, %1 is keyboard configuration path" ).arg( keyboardConfPath ) );
} }
} }

View File

@ -45,6 +45,7 @@ KeyboardLayoutTests::testSimpleLayoutLookup_data()
QTest::newRow( "turkish default" ) << QString( "tr" ) << QString() << QString() << QString( "trq" ); QTest::newRow( "turkish default" ) << QString( "tr" ) << QString() << QString() << QString( "trq" );
QTest::newRow( "turkish alt-q" ) << QString( "tr" ) << QString() << QString( "alt" ) << QString( "trq" ); QTest::newRow( "turkish alt-q" ) << QString( "tr" ) << QString() << QString( "alt" ) << QString( "trq" );
QTest::newRow( "turkish f" ) << QString( "tr" ) << QString() << QString( "f" ) << QString( "trf" ); QTest::newRow( "turkish f" ) << QString( "tr" ) << QString() << QString( "f" ) << QString( "trf" );
QTest::newRow( "italian" ) << QString( "it" ) << QString( "pc105" ) << QString() << QString( "it" );
} }

View File

@ -40,6 +40,7 @@ slovene si pc105 - terminate:ctrl_alt_bksp
hu101 hu pc105 qwerty terminate:ctrl_alt_bksp hu101 hu pc105 qwerty terminate:ctrl_alt_bksp
jp106 jp jp106 - terminate:ctrl_alt_bksp jp106 jp jp106 - terminate:ctrl_alt_bksp
croat hr pc105 - terminate:ctrl_alt_bksp croat hr pc105 - terminate:ctrl_alt_bksp
it it pc105 - terminate:ctrl_alt_bksp
it2 it pc105 - terminate:ctrl_alt_bksp it2 it pc105 - terminate:ctrl_alt_bksp
hu hu pc105 - terminate:ctrl_alt_bksp hu hu pc105 - terminate:ctrl_alt_bksp
sr-latin rs pc105 latin terminate:ctrl_alt_bksp sr-latin rs pc105 latin terminate:ctrl_alt_bksp
@ -47,7 +48,6 @@ fi fi pc105 - terminate:ctrl_alt_bksp
fr_CH ch pc105 fr terminate:ctrl_alt_bksp fr_CH ch pc105 fr terminate:ctrl_alt_bksp
dk-latin1 dk pc105 - terminate:ctrl_alt_bksp dk-latin1 dk pc105 - terminate:ctrl_alt_bksp
fr fr pc105 - terminate:ctrl_alt_bksp fr fr pc105 - terminate:ctrl_alt_bksp
it it pc105 - terminate:ctrl_alt_bksp
ua-utf ua,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll ua-utf ua,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
fr-latin1 fr pc105 - terminate:ctrl_alt_bksp fr-latin1 fr pc105 - terminate:ctrl_alt_bksp
sg-latin1 ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp sg-latin1 ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp

View File

@ -9,3 +9,43 @@ ua us - ua-utf
gr us - gr gr us - gr
he us - he he us - he
ar us - ar ar us - ar
ir us - fa
# This list is from /usr/share/X11/xkb/rules/base, all the non-latin
# layouts are collected in $nonlatin . Add us (English) to all of them.
af us - af
am us - am
ara us - ara
bd us - bd
bg us - bg
bt us - bt
by us - by
eg us - eg
et us - et
ge us - ge
gn us - gn
id us - id
il us - il
in us - in
jp us - jp
jv us - jv
kg us - kg
kh us - kh
kr us - kr
kz us - kz
la us - la
lk us - lk
ma us - ma
me us - me
mk us - mk
mm us - mm
mn us - mn
mv us - mv
my us - my
pk us - pk
rs us - rs
sy us - sy
th us - th
tj us - tj
tz us - tz
uz us - uz

View File

@ -147,9 +147,11 @@ LicensePage::retranslate()
if ( !m_allLicensesOptional ) if ( !m_allLicensesOptional )
{ {
ui->mainText->setText( tr( "This setup procedure will install proprietary " ui->mainText->setText( tr( "This setup procedure will install proprietary "
"software that is subject to licensing terms.", "@info" ) "software that is subject to licensing terms.",
"@info" )
+ br + review ); + br + review );
QString mustAcceptText( tr( "If you do not agree with the terms, the setup procedure cannot continue.", "@info" ) ); QString mustAcceptText(
tr( "If you do not agree with the terms, the setup procedure cannot continue.", "@info" ) );
ui->acceptCheckBox->setToolTip( mustAcceptText ); ui->acceptCheckBox->setToolTip( mustAcceptText );
} }
else else
@ -157,10 +159,12 @@ LicensePage::retranslate()
ui->mainText->setText( tr( "This setup procedure can install proprietary " ui->mainText->setText( tr( "This setup procedure can install proprietary "
"software that is subject to licensing terms " "software that is subject to licensing terms "
"in order to provide additional features and enhance the user " "in order to provide additional features and enhance the user "
"experience.", "@info" ) "experience.",
"@info" )
+ br + review ); + br + review );
QString okAcceptText( tr( "If you do not agree with the terms, proprietary software will not " QString okAcceptText( tr( "If you do not agree with the terms, proprietary software will not "
"be installed, and open source alternatives will be used instead.", "@info" ) ); "be installed, and open source alternatives will be used instead.",
"@info" ) );
ui->acceptCheckBox->setToolTip( okAcceptText ); ui->acceptCheckBox->setToolTip( okAcceptText );
} }
ui->retranslateUi( this ); ui->retranslateUi( this );

View File

@ -107,38 +107,44 @@ LicenseWidget::retranslateUi()
case LicenseEntry::Type::Driver: case LicenseEntry::Type::Driver:
//: %1 is an untranslatable product name, example: Creative Audigy driver //: %1 is an untranslatable product name, example: Creative Audigy driver
productDescription = tr( "<strong>%1 driver</strong><br/>" productDescription = tr( "<strong>%1 driver</strong><br/>"
"by %2", "@label, %1 is product name, %2 is product vendor" ) "by %2",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
break; break;
case LicenseEntry::Type::GpuDriver: case LicenseEntry::Type::GpuDriver:
//: %1 is usually a vendor name, example: Nvidia graphics driver //: %1 is usually a vendor name, example: Nvidia graphics driver
productDescription = tr( "<strong>%1 graphics driver</strong><br/>" productDescription = tr( "<strong>%1 graphics driver</strong><br/>"
"<font color=\"Grey\">by %2</font>", "@label, %1 is product name, %2 is product vendor" ) "<font color=\"Grey\">by %2</font>",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
break; break;
case LicenseEntry::Type::BrowserPlugin: case LicenseEntry::Type::BrowserPlugin:
productDescription = tr( "<strong>%1 browser plugin</strong><br/>" productDescription = tr( "<strong>%1 browser plugin</strong><br/>"
"<font color=\"Grey\">by %2</font>", "@label, %1 is product name, %2 is product vendor" ) "<font color=\"Grey\">by %2</font>",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
break; break;
case LicenseEntry::Type::Codec: case LicenseEntry::Type::Codec:
productDescription = tr( "<strong>%1 codec</strong><br/>" productDescription = tr( "<strong>%1 codec</strong><br/>"
"<font color=\"Grey\">by %2</font>", "@label, %1 is product name, %2 is product vendor" ) "<font color=\"Grey\">by %2</font>",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
break; break;
case LicenseEntry::Type::Package: case LicenseEntry::Type::Package:
productDescription = tr( "<strong>%1 package</strong><br/>" productDescription = tr( "<strong>%1 package</strong><br/>"
"<font color=\"Grey\">by %2</font>", "@label, %1 is product name, %2 is product vendor" ) "<font color=\"Grey\">by %2</font>",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
break; break;
case LicenseEntry::Type::Software: case LicenseEntry::Type::Software:
productDescription = tr( "<strong>%1</strong><br/>" productDescription = tr( "<strong>%1</strong><br/>"
"<font color=\"Grey\">by %2</font>", "@label, %1 is product name, %2 is product vendor" ) "<font color=\"Grey\">by %2</font>",
"@label, %1 is product name, %2 is product vendor" )
.arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyName )
.arg( m_entry.m_prettyVendor ); .arg( m_entry.m_prettyVendor );
} }
@ -183,7 +189,8 @@ LicenseWidget::updateExpandToolTip()
{ {
if ( m_entry.isLocal() ) if ( m_entry.isLocal() )
{ {
m_viewLicenseButton->setText( m_isExpanded ? tr( "Hide the license text", "@tooltip" ) : tr( "Show the license text", "@tooltip" ) ); m_viewLicenseButton->setText( m_isExpanded ? tr( "Hide the license text", "@tooltip" )
: tr( "Show the license text", "@tooltip" ) );
} }
else else
{ {

View File

@ -29,7 +29,8 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, const QStringLis
upperText->setWordWrap( true ); upperText->setWordWrap( true );
upperText->setText( tr( "The system locale setting affects the language and character " upperText->setText( tr( "The system locale setting affects the language and character "
"set for some command line user interface elements.<br/>" "set for some command line user interface elements.<br/>"
"The current setting is <strong>%1</strong>.", "@info" ) "The current setting is <strong>%1</strong>.",
"@info" )
.arg( guessedLCLocale ) ); .arg( guessedLCLocale ) );
mainLayout->addWidget( upperText ); mainLayout->addWidget( upperText );
setMinimumWidth( upperText->fontMetrics().height() * 24 ); setMinimumWidth( upperText->fontMetrics().height() * 24 );
@ -85,5 +86,5 @@ QString
LCLocaleDialog::selectedLCLocale() LCLocaleDialog::selectedLCLocale()
{ {
const auto items = m_localesWidget->selectedItems(); const auto items = m_localesWidget->selectedItems();
return items.isEmpty() ? QString{} : items.first()->text(); return items.isEmpty() ? QString {} : items.first()->text();
} }

View File

@ -67,9 +67,10 @@ SetTimezoneJob::exec()
int ec = Calamares::System::instance()->targetEnvCall( { "ln", "-s", zoneinfoPath, localtimeSlink } ); int ec = Calamares::System::instance()->targetEnvCall( { "ln", "-s", zoneinfoPath, localtimeSlink } );
if ( ec ) if ( ec )
{ {
return Calamares::JobResult::error( return Calamares::JobResult::error( tr( "Cannot set timezone.", "@error" ),
tr( "Cannot set timezone.", "@error" ), tr( "Link creation failed, target: %1; link name: %2", "@info" )
tr( "Link creation failed, target: %1; link name: %2", "@info" ).arg( zoneinfoPath ).arg( "/etc/localtime" ) ); .arg( zoneinfoPath )
.arg( "/etc/localtime" ) );
} }
QFile timezoneFile( gs->value( "rootMountPoint" ).toString() + "/etc/timezone" ); QFile timezoneFile( gs->value( "rootMountPoint" ).toString() + "/etc/timezone" );

View File

@ -101,10 +101,8 @@ MachineIdJob::exec()
QObject::tr( "Directory not found" ), QObject::tr( "Directory not found" ),
QObject::tr( "Could not create new random file <pre>%1</pre>." ).arg( entropy_file ) ); QObject::tr( "Could not create new random file <pre>%1</pre>." ).arg( entropy_file ) );
} }
auto r = createEntropy( m_entropy_copy ? EntropyGeneration::CopyFromHost auto r = createEntropy(
: EntropyGeneration::New, m_entropy_copy ? EntropyGeneration::CopyFromHost : EntropyGeneration::New, root, entropy_file );
root,
entropy_file );
if ( !r ) if ( !r )
{ {
return r; return r;

View File

@ -21,7 +21,7 @@
static inline quint64 static inline quint64
sizeOrder( const QSize& size ) sizeOrder( const QSize& size )
{ {
return static_cast<quint64>(size.width()) * static_cast<quint64>(size.height()); return static_cast< quint64 >( size.width() ) * static_cast< quint64 >( size.height() );
} }
/// @brief Sets a screenshot in @p map from @p screenshot, if a usable one is found /// @brief Sets a screenshot in @p map from @p screenshot, if a usable one is found
@ -55,15 +55,9 @@ static PackageItem
fromComponent( AppStream::Pool& pool, AppStream::Component& component ) fromComponent( AppStream::Pool& pool, AppStream::Component& component )
{ {
#if HAVE_APPSTREAM_VERSION == 0 #if HAVE_APPSTREAM_VERSION == 0
auto setActiveLocale = [&component](const QString & locale) auto setActiveLocale = [ &component ]( const QString& locale ) { component.setActiveLocale( locale ); };
{
component.setActiveLocale( locale );
};
#else #else
auto setActiveLocale = [&pool](const QString & locale) auto setActiveLocale = [ &pool ]( const QString& locale ) { pool.setLocale( locale ); };
{
pool.setLocale( locale );
};
#endif #endif
QVariantMap map; QVariantMap map;

View File

@ -28,9 +28,11 @@
#define HAVE_APPSTREAM_HEADERS AppStreamQt #define HAVE_APPSTREAM_HEADERS AppStreamQt
#endif #endif
// clang-format off
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/pool.h CALAMARES_GT #include CALAMARES_LT HAVE_APPSTREAM_HEADERS/pool.h CALAMARES_GT
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/image.h CALAMARES_GT #include CALAMARES_LT HAVE_APPSTREAM_HEADERS/image.h CALAMARES_GT
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/screenshot.h CALAMARES_GT #include CALAMARES_LT HAVE_APPSTREAM_HEADERS/screenshot.h CALAMARES_GT
// clang-format on
#undef CALAMARES_LT #undef CALAMARES_LT
#undef CALAMARES_GT #undef CALAMARES_GT

View File

@ -60,6 +60,7 @@ if(KPMcore_FOUND)
core/DeviceList.cpp core/DeviceList.cpp
core/DeviceModel.cpp core/DeviceModel.cpp
core/KPMHelpers.cpp core/KPMHelpers.cpp
core/OsproberEntry.cpp
core/PartitionActions.cpp core/PartitionActions.cpp
core/PartitionCoreModule.cpp core/PartitionCoreModule.cpp
core/PartitionInfo.cpp core/PartitionInfo.cpp

View File

@ -444,6 +444,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
m_allowZfsEncryption = Calamares::getBool( configurationMap, "allowZfsEncryption", true ); m_allowZfsEncryption = Calamares::getBool( configurationMap, "allowZfsEncryption", true );
m_allowManualPartitioning = Calamares::getBool( configurationMap, "allowManualPartitioning", true ); m_allowManualPartitioning = Calamares::getBool( configurationMap, "allowManualPartitioning", true );
m_preCheckEncryption = Calamares::getBool( configurationMap, "preCheckEncryption", false );
m_showNotEncryptedBootMessage = Calamares::getBool( configurationMap, "showNotEncryptedBootMessage", true ); m_showNotEncryptedBootMessage = Calamares::getBool( configurationMap, "showNotEncryptedBootMessage", true );
m_requiredPartitionTableType = Calamares::getStringList( configurationMap, "requiredPartitionTableType" ); m_requiredPartitionTableType = Calamares::getStringList( configurationMap, "requiredPartitionTableType" );

View File

@ -35,7 +35,7 @@ class Config : public QObject
replaceModeFilesystemChanged ) replaceModeFilesystemChanged )
Q_PROPERTY( bool allowManualPartitioning READ allowManualPartitioning CONSTANT FINAL ) Q_PROPERTY( bool allowManualPartitioning READ allowManualPartitioning CONSTANT FINAL )
Q_PROPERTY( bool preCheckEncryption READ preCheckEncryption CONSTANT FINAL )
Q_PROPERTY( bool showNotEncryptedBootMessage READ showNotEncryptedBootMessage CONSTANT FINAL ) Q_PROPERTY( bool showNotEncryptedBootMessage READ showNotEncryptedBootMessage CONSTANT FINAL )
public: public:
@ -148,6 +148,13 @@ public:
/// @brief Is manual partitioning allowed (not explicitly disabled in the config file)? /// @brief Is manual partitioning allowed (not explicitly disabled in the config file)?
bool allowManualPartitioning() const { return m_allowManualPartitioning; } bool allowManualPartitioning() const { return m_allowManualPartitioning; }
/** @brief Pre-check encryption checkbox.
*
* This is meaningful only if enableLuksAutomatedPartitioning is @c true.
* Default value is @c false
*/
bool preCheckEncryption() const { return m_preCheckEncryption; }
/// @brief Show "Boot partition not encrypted" warning (not explicitly disabled in the config file)? /// @brief Show "Boot partition not encrypted" warning (not explicitly disabled in the config file)?
bool showNotEncryptedBootMessage() const { return m_showNotEncryptedBootMessage; } bool showNotEncryptedBootMessage() const { return m_showNotEncryptedBootMessage; }
@ -199,6 +206,7 @@ private:
QStringList m_requiredPartitionTableType; QStringList m_requiredPartitionTableType;
bool m_allowZfsEncryption = true; bool m_allowZfsEncryption = true;
bool m_allowManualPartitioning = true; bool m_allowManualPartitioning = true;
bool m_preCheckEncryption = false;
bool m_showNotEncryptedBootMessage = true; bool m_showNotEncryptedBootMessage = true;
}; };

View File

@ -223,9 +223,15 @@ PartitionViewStep::prettyStatus() const
const QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo(); const QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo();
cDebug() << "Summary for Partition" << list.length() << choice; cDebug() << "Summary for Partition" << list.length() << choice;
auto joinDiskInfo = [ choice ]( QString& s, const PartitionCoreModule::SummaryInfo& i ) const QString diskInfoLabel = [ &choice, &list ]()
{ return s + diskDescription( 1, i, choice ); }; {
const QString diskInfoLabel = std::accumulate( list.begin(), list.end(), QString(), joinDiskInfo ); QStringList s;
for ( const auto& i : list )
{
s.append( diskDescription( 1, i, choice ) );
}
return s.join( QString() );
}();
const QString jobsLabel = jobDescriptions( jobs() ).join( QStringLiteral( "<br/>" ) ); const QString jobsLabel = jobDescriptions( jobs() ).join( QStringLiteral( "<br/>" ) );
return diskInfoLabel + "<br/>" + jobsLabel; return diskInfoLabel + "<br/>" + jobsLabel;
} }

View File

@ -0,0 +1,63 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2018-2019, 2024 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2019 Collabora Ltd <arnaud.ferraris@collabora.com>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
#include "OsproberEntry.h"
bool
FstabEntry::isValid() const
{
return !partitionNode.isEmpty() && !mountPoint.isEmpty() && !fsType.isEmpty();
}
FstabEntry
FstabEntry::fromEtcFstab( const QString& rawLine )
{
QString line = rawLine.simplified();
if ( line.startsWith( '#' ) )
{
return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 };
}
QStringList splitLine = line.split( ' ' );
if ( splitLine.length() != 6 )
{
return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 };
}
return FstabEntry {
splitLine.at( 0 ), // path, or UUID, or LABEL, etc.
splitLine.at( 1 ), // mount point
splitLine.at( 2 ), // fs type
splitLine.at( 3 ), // options
splitLine.at( 4 ).toInt(), //dump
splitLine.at( 5 ).toInt() //pass
};
}
namespace Calamares
{
FstabEntryList
fromEtcFstabContents( const QStringList& fstabLines )
{
FstabEntryList fstabEntries;
for ( const QString& rawLine : fstabLines )
{
fstabEntries.append( FstabEntry::fromEtcFstab( rawLine ) );
}
const auto invalidEntries = std::remove_if(
fstabEntries.begin(), fstabEntries.end(), []( const FstabEntry& x ) { return !x.isValid(); } );
fstabEntries.erase( invalidEntries, fstabEntries.end() );
return fstabEntries;
}
} // namespace Calamares

View File

@ -32,11 +32,24 @@ struct FstabEntry
* If the string isn't valid (e.g. comment-line, or broken * If the string isn't valid (e.g. comment-line, or broken
* fstab entry) then the entry that is returned is invalid. * fstab entry) then the entry that is returned is invalid.
*/ */
static FstabEntry fromEtcFstab( const QString& ); // implemented in Partutils.cpp static FstabEntry fromEtcFstab( const QString& );
}; };
typedef QList< FstabEntry > FstabEntryList; typedef QList< FstabEntry > FstabEntryList;
namespace Calamares
{
/** @brief Returns valid entries from the lines of a fstab file */
FstabEntryList fromEtcFstabContents( const QStringList& fstabLines );
/** @brief Returns valid entries from the byte-contents of a fstab file */
inline FstabEntryList
fromEtcFstabContents( const QByteArray& contents )
{
return fromEtcFstabContents( QString::fromLocal8Bit( contents ).split( '\n' ) );
}
} // namespace Calamares
struct OsproberEntry struct OsproberEntry
{ {
QString prettyName; QString prettyName;

View File

@ -254,30 +254,25 @@ lookForFstabEntries( const QString& partitionPath )
if ( fstabFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) if ( fstabFile.open( QIODevice::ReadOnly | QIODevice::Text ) )
{ {
const QStringList fstabLines = QString::fromLocal8Bit( fstabFile.readAll() ).split( '\n' ); const auto fstabLines = QString::fromLocal8Bit( fstabFile.readAll() ).split( '\n' );
for ( const QString& rawLine : fstabLines )
{
fstabEntries.append( FstabEntry::fromEtcFstab( rawLine ) );
}
fstabFile.close(); fstabFile.close();
const int lineCount = fstabEntries.count();
std::remove_if( const auto fstabEntries = Calamares::fromEtcFstabContents( fstabLines );
fstabEntries.begin(), fstabEntries.end(), []( const FstabEntry& x ) { return !x.isValid(); } ); cDebug() << Logger::SubEntry << "got" << fstabEntries.count() << "fstab entries from" << fstabLines.count()
cDebug() << Logger::SubEntry << "got" << fstabEntries.count() << "fstab entries from" << lineCount
<< "lines in" << fstabFile.fileName(); << "lines in" << fstabFile.fileName();
return fstabEntries;
} }
else else
{ {
cWarning() << "Could not read fstab from mounted fs"; cWarning() << "Could not read fstab from mounted fs";
return {};
} }
} }
else else
{ {
cWarning() << "Could not mount existing fs"; cWarning() << "Could not mount existing fs";
return {};
} }
return fstabEntries;
} }
static QString static QString
@ -641,36 +636,3 @@ canonicalFilesystemName( const QString& fsName, FileSystem::Type* fsType )
} }
} // namespace PartUtils } // namespace PartUtils
/* Implementation of methods for FstabEntry, from OsproberEntry.h */
bool
FstabEntry::isValid() const
{
return !partitionNode.isEmpty() && !mountPoint.isEmpty() && !fsType.isEmpty();
}
FstabEntry
FstabEntry::fromEtcFstab( const QString& rawLine )
{
QString line = rawLine.simplified();
if ( line.startsWith( '#' ) )
{
return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 };
}
QStringList splitLine = line.split( ' ' );
if ( splitLine.length() != 6 )
{
return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 };
}
return FstabEntry {
splitLine.at( 0 ), // path, or UUID, or LABEL, etc.
splitLine.at( 1 ), // mount point
splitLine.at( 2 ), // fs type
splitLine.at( 3 ), // options
splitLine.at( 4 ).toInt(), //dump
splitLine.at( 5 ).toInt() //pass
};
}

View File

@ -185,7 +185,6 @@ ChoicePage::init( PartitionCoreModule* core )
setModelToComboBox( m_drivesCombo, core->deviceModel() ); setModelToComboBox( m_drivesCombo, core->deviceModel() );
connect( m_drivesCombo, qOverload< int >( &QComboBox::currentIndexChanged ), this, &ChoicePage::applyDeviceChoice ); connect( m_drivesCombo, qOverload< int >( &QComboBox::currentIndexChanged ), this, &ChoicePage::applyDeviceChoice );
connect( m_encryptWidget, &EncryptWidget::stateChanged, this, &ChoicePage::onEncryptWidgetStateChanged ); connect( m_encryptWidget, &EncryptWidget::stateChanged, this, &ChoicePage::onEncryptWidgetStateChanged );
connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, this, &ChoicePage::onHomeCheckBoxStateChanged ); connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, this, &ChoicePage::onHomeCheckBoxStateChanged );
@ -468,6 +467,8 @@ ChoicePage::onActionChanged()
{ {
m_encryptWidget->setFilesystem( FileSystem::typeForName( m_replaceFsTypesChoiceComboBox->currentText() ) ); m_encryptWidget->setFilesystem( FileSystem::typeForName( m_replaceFsTypesChoiceComboBox->currentText() ) );
} }
m_encryptWidget->setEncryptionCheckbox( m_config->preCheckEncryption() );
} }
Device* currd = selectedDevice(); Device* currd = selectedDevice();
@ -679,7 +680,11 @@ ChoicePage::onLeave()
{ {
if ( m_config->installChoice() == InstallChoice::Alongside ) if ( m_config->installChoice() == InstallChoice::Alongside )
{ {
doAlongsideApply(); if ( m_afterPartitionSplitterWidget->splitPartitionSize() >= 0
&& m_afterPartitionSplitterWidget->newPartitionSize() >= 0 )
{
doAlongsideApply();
}
} }
if ( m_isEfi if ( m_isEfi
@ -1057,7 +1062,8 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice )
Q_UNUSED( path ) Q_UNUSED( path )
sizeLabel->setText( sizeLabel->setText(
tr( "%1 will be shrunk to %2MiB and a new " tr( "%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" ) "%3MiB partition will be created for %4.",
"@info, %1 is partition name, %4 is product name" )
.arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() ) .arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() )
.arg( Calamares::BytesToMiB( size ) ) .arg( Calamares::BytesToMiB( size ) )
.arg( Calamares::BytesToMiB( sizeNext ) ) .arg( Calamares::BytesToMiB( sizeNext ) )
@ -1188,14 +1194,16 @@ ChoicePage::setupEfiSystemPartitionSelector()
{ {
m_efiLabel->setText( tr( "An EFI system partition cannot be found anywhere " m_efiLabel->setText( tr( "An EFI system partition cannot be found anywhere "
"on this system. Please go back and use manual " "on this system. Please go back and use manual "
"partitioning to set up %1.", "@info, %1 is product name" ) "partitioning to set up %1.",
"@info, %1 is product name" )
.arg( Calamares::Branding::instance()->shortProductName() ) ); .arg( Calamares::Branding::instance()->shortProductName() ) );
updateNextEnabled(); updateNextEnabled();
} }
else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation
{ {
m_efiLabel->setText( tr( "The EFI system partition at %1 will be used for " m_efiLabel->setText( tr( "The EFI system partition at %1 will be used for "
"starting %2.", "@info, %1 is partition path, %2 is product name" ) "starting %2.",
"@info, %1 is partition path, %2 is product name" )
.arg( efiSystemPartitions.first()->partitionPath() ) .arg( efiSystemPartitions.first()->partitionPath() )
.arg( Calamares::Branding::instance()->shortProductName() ) ); .arg( Calamares::Branding::instance()->shortProductName() ) );
} }
@ -1505,7 +1513,8 @@ ChoicePage::setupActions()
{ {
if ( atLeastOneIsMounted ) if ( atLeastOneIsMounted )
{ {
m_messageLabel->setText( tr( "This storage device has one of its partitions <strong>mounted</strong>.", "@info" ) ); m_messageLabel->setText(
tr( "This storage device has one of its partitions <strong>mounted</strong>.", "@info" ) );
} }
else else
{ {
@ -1575,7 +1584,10 @@ ChoicePage::calculateNextEnabled() const
} }
} }
if ( m_config->installChoice() != InstallChoice::Manual && m_encryptWidget->isVisible() ) // You can have an invisible encryption checkbox, which is
// still checked -- then do the encryption.
if ( m_config->installChoice() != InstallChoice::Manual
&& ( m_encryptWidget->isVisible() || m_encryptWidget->isEncryptionCheckboxChecked() ) )
{ {
switch ( m_encryptWidget->state() ) switch ( m_encryptWidget->state() )
{ {

View File

@ -70,6 +70,18 @@ EncryptWidget::EncryptWidget( QWidget* parent )
CALAMARES_RETRANSLATE_SLOT( &EncryptWidget::retranslate ); CALAMARES_RETRANSLATE_SLOT( &EncryptWidget::retranslate );
} }
bool
EncryptWidget::isEncryptionCheckboxChecked()
{
return m_ui->m_encryptCheckBox->isChecked();
}
void
EncryptWidget::setEncryptionCheckbox( bool preCheckEncrypt )
{
m_ui->m_encryptCheckBox->setChecked( preCheckEncrypt );
}
void void
EncryptWidget::reset( bool checkVisible ) EncryptWidget::reset( bool checkVisible )
{ {
@ -155,7 +167,8 @@ EncryptWidget::updateState( const bool notify )
else if ( m_filesystem == FileSystem::Zfs && p1.length() < ZFS_MIN_LENGTH ) else if ( m_filesystem == FileSystem::Zfs && p1.length() < ZFS_MIN_LENGTH )
{ {
applyPixmap( m_ui->m_iconLabel, Calamares::StatusError ); applyPixmap( m_ui->m_iconLabel, Calamares::StatusError );
m_ui->m_iconLabel->setToolTip( tr( "Password must be a minimum of %1 characters.", "@tooltip" ).arg( ZFS_MIN_LENGTH ) ); m_ui->m_iconLabel->setToolTip(
tr( "Password must be a minimum of %1 characters.", "@tooltip" ).arg( ZFS_MIN_LENGTH ) );
} }
else if ( p1 == p2 ) else if ( p1 == p2 )
{ {
@ -169,15 +182,10 @@ EncryptWidget::updateState( const bool notify )
} }
} }
Encryption newState = state(); m_state = state();
if ( notify )
if ( newState != m_state )
{ {
m_state = newState; Q_EMIT stateChanged( m_state );
if ( notify )
{
Q_EMIT stateChanged( m_state );
}
} }
} }

View File

@ -36,8 +36,10 @@ public:
explicit EncryptWidget( QWidget* parent = nullptr ); explicit EncryptWidget( QWidget* parent = nullptr );
void setEncryptionCheckbox( bool preCheckEncrypt = false);
void reset( bool checkVisible = true ); void reset( bool checkVisible = true );
bool isEncryptionCheckboxChecked();
Encryption state() const; Encryption state() const;
void setText( const QString& text ); void setText( const QString& text );

View File

@ -65,7 +65,8 @@ ScanningDialog::run( const QFuture< void >& future,
void void
ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent ) ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent )
{ {
ScanningDialog::run( future, tr( "Scanning storage devices…", "@status" ), tr( "Partitioning…", "@status" ), callback, parent ); ScanningDialog::run(
future, tr( "Scanning storage devices…", "@status" ), tr( "Partitioning…", "@status" ), callback, parent );
} }
void void

View File

@ -170,11 +170,12 @@ initialSwapChoice: none
# manual partitioning, this partition table exists already on disk # manual partitioning, this partition table exists already on disk
# and it is left unmodified. # and it is left unmodified.
# #
# Suggested values: gpt, msdos # Possible values: gpt, msdos (or other names defined by KPMcore).
# If nothing is specified, Calamares defaults to "gpt" if system is # Names are case-sensitive.
# efi or "msdos". #
# If nothing is specified, Calamares defaults to "gpt" if system is
# efi or "msdos" otherwise.
# #
# Names are case-sensitive and defined by KPMCore.
# defaultPartitionTableType: msdos # defaultPartitionTableType: msdos
# Requirement for partition table type # Requirement for partition table type
@ -182,7 +183,8 @@ initialSwapChoice: none
# Restrict the installation on disks that match the type of partition # Restrict the installation on disks that match the type of partition
# tables that are specified. # tables that are specified.
# #
# Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore. # Possible values: msdos, gpt (or other names defined by KPMcore).
# Names are case-sensitive.
# #
# If nothing is specified, Calamares defaults to both "msdos" and "gpt". # If nothing is specified, Calamares defaults to both "msdos" and "gpt".
# #
@ -240,6 +242,11 @@ defaultFileSystemType: "ext4"
# If nothing is specified, LUKS is enabled in automated modes. # If nothing is specified, LUKS is enabled in automated modes.
#enableLuksAutomatedPartitioning: true #enableLuksAutomatedPartitioning: true
# When enableLuksAutomatedPartitioning is true, this option will pre-check
# encryption checkbox. This option is only usefull to help people to not forget
# to cypher their disk when installing in enterprise (for exemple).
#preCheckEncryption: false
# Partition layout. # Partition layout.
# #
# This optional setting specifies a custom partition layout. # This optional setting specifies a custom partition layout.

View File

@ -34,6 +34,7 @@ properties:
luksGeneration: { type: string, enum: [luks1, luks2] } # Also allows "luks" as alias of "luks1" luksGeneration: { type: string, enum: [luks1, luks2] } # Also allows "luks" as alias of "luks1"
enableLuksAutomatedPartitioning: { type: boolean, default: false } enableLuksAutomatedPartitioning: { type: boolean, default: false }
preCheckEncryption: { type: boolean, default: false }
allowManualPartitioning: { type: boolean, default: true } allowManualPartitioning: { type: boolean, default: true }
showNotEncryptedBootMessage: { type: boolean, default: true } showNotEncryptedBootMessage: { type: boolean, default: true }

View File

@ -14,6 +14,12 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
) )
set(PartitionModule_basic_SRC
${PartitionModule_SOURCE_DIR}/core/OsproberEntry.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp
)
calamares_add_test( calamares_add_test(
partitionjobtest partitionjobtest
SOURCES SOURCES
@ -40,10 +46,9 @@ calamares_add_test(
partitioncreatelayoutstest partitioncreatelayoutstest
SOURCES SOURCES
CreateLayoutsTests.cpp CreateLayoutsTests.cpp
${PartitionModule_basic_SRC}
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp ${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp ${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp
${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp
${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp ${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp
LIBRARIES calamares::kpmcore Calamares::calamaresui LIBRARIES calamares::kpmcore Calamares::calamaresui
DEFINITIONS ${_partition_defs} DEFINITIONS ${_partition_defs}
@ -66,9 +71,8 @@ calamares_add_test(
partitionconfigtest partitionconfigtest
SOURCES SOURCES
ConfigTests.cpp ConfigTests.cpp
${PartitionModule_basic_SRC}
${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp ${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp
${PartitionModule_SOURCE_DIR}/Config.cpp ${PartitionModule_SOURCE_DIR}/Config.cpp
LIBRARIES calamares::kpmcore Calamares::calamaresui LIBRARIES calamares::kpmcore Calamares::calamaresui
DEFINITIONS DEFINITIONS

View File

@ -9,6 +9,7 @@
#include "Config.h" #include "Config.h"
#include "core/OsproberEntry.h"
#include "core/PartUtils.h" #include "core/PartUtils.h"
#include "GlobalStorage.h" #include "GlobalStorage.h"
@ -17,6 +18,7 @@
#include "utils/System.h" #include "utils/System.h"
#include "utils/Yaml.h" #include "utils/Yaml.h"
#include <QByteArray>
#include <QObject> #include <QObject>
#include <QtTest/QtTest> #include <QtTest/QtTest>
@ -35,6 +37,9 @@ private Q_SLOTS:
void testLegacySize(); void testLegacySize();
void testAll(); void testAll();
void testWeirdConfig(); void testWeirdConfig();
void testNormalFstab();
void testWeirdFstab();
}; };
ConfigTests::ConfigTests() = default; ConfigTests::ConfigTests() = default;
@ -222,6 +227,48 @@ ConfigTests::testWeirdConfig()
} }
} }
void
ConfigTests::testNormalFstab()
{
const auto contents
= QByteArrayLiteral( "# A FreeBSD fstab\n"
"/dev/nvd0p3 none swap sw 0 0\n" );
const auto entries = Calamares::fromEtcFstabContents( contents );
for ( const auto& e : entries )
{
QVERIFY( e.isValid() );
}
QCOMPARE( entries.count(), 1 );
}
void
ConfigTests::testWeirdFstab()
{
const auto contents
= QByteArrayLiteral( "# <file system> <mount point> <type> <options> <dump> <pass>\n"
"UUID=dae80d0a-f6c7-46f4-a04a-6761f2cfd9b6 / ext4 defaults,noatime 0 1\n"
"UUID=423892d5-a929-41a9-a846-f410cf3fe25b swap swap defaults,noatime 0 2\n"
"# another comment\n"
"borked 2\n"
"ok /dev1 ext4 none 0 0\n"
"bogus /dev2 ext4 none no later\n"
"# comment\n" );
const auto entries = Calamares::fromEtcFstabContents( contents );
QCOMPARE( entries.count(), 4 );
QStringList mountPoints;
for ( const auto& e : entries )
{
mountPoints.append( e.mountPoint );
}
mountPoints.sort();
QCOMPARE( mountPoints,
QStringList() << "/"
<< "/dev1"
<< "/dev2"
<< "swap" );
}
QTEST_GUILESS_MAIN( ConfigTests ) QTEST_GUILESS_MAIN( ConfigTests )

View File

@ -51,6 +51,11 @@ DevicesTests::testKPMScanDevices()
cDebug() << "Getting devices via KPMCore"; cDebug() << "Getting devices via KPMCore";
CoreBackend* backend = CoreBackendManager::self()->backend(); CoreBackend* backend = CoreBackendManager::self()->backend();
#ifdef Q_OS_FREEBSD
QEXPECT_FAIL( "", "Test backend not expected on FreeBSD", Continue );
QVERIFY( backend );
return;
#endif
QVERIFY( backend ); QVERIFY( backend );
auto devices = backend->scanDevices( ScanFlag( ~0 ) ); // These flags try to get "all" auto devices = backend->scanDevices( ScanFlag( ~0 ) ); // These flags try to get "all"
cDebug() << Logger::SubEntry << "Done getting devices."; cDebug() << Logger::SubEntry << "Done getting devices.";

View File

@ -126,7 +126,7 @@ class RawFSItem:
config["source"], device)) config["source"], device))
self.source = os.path.realpath(config["source"]) self.source = os.path.realpath(config["source"])
# If source is a mount point, look for the actual device mounted on it # If source is a mount point, look for the actual device mounted on it
if os.path.ismount(self.source): if os.path.ismount(self.source) and not libcalamares.job.configuration.get("bogus", False):
procmounts = open("/proc/mounts", "r") procmounts = open("/proc/mounts", "r")
for line in procmounts: for line in procmounts:
if self.source in line.split(): if self.source in line.split():
@ -146,9 +146,10 @@ def update_global_storage(item, gs):
ret = subprocess.run(["blkid", "-s", "UUID", "-o", "value", item.destination], ret = subprocess.run(["blkid", "-s", "UUID", "-o", "value", item.destination],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
if ret.returncode == 0: if ret.returncode == 0:
uuid = ret.stdout.rstrip()
libcalamares.utils.debug("Setting {} UUID to {}".format(item.destination, libcalamares.utils.debug("Setting {} UUID to {}".format(item.destination,
ret.stdout.rstrip())) uuid or "<empty>"))
gs[gs.index(partition)]["uuid"] = ret.stdout.rstrip() gs[gs.index(partition)]["uuid"] = uuid
gs[gs.index(partition)]["source"] = item.source gs[gs.index(partition)]["source"] = item.source
libcalamares.globalstorage.remove("partitions") libcalamares.globalstorage.remove("partitions")

View File

@ -5,8 +5,10 @@
# Special cases for rawfs tests # Special cases for rawfs tests
# #
# - On FreeBSD, /proc/mounts doesn't exist (/proc is only about processes, # - On FreeBSD, /proc/mounts doesn't exist (/proc is only about processes,
# and is rarely used). Expect the test to fail. # and is rarely used). The test would fail, except it catches that
# kind of error and ends up doing nothing.
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set_tests_properties(load-rawfs-1 PROPERTIES WILL_FAIL TRUE) # set_tests_properties(load-rawfs-1 PROPERTIES WILL_FAIL TRUE)
message(STATUS "rawfs tests are useless on FreeBSD")
endif() endif()

View File

@ -16,6 +16,17 @@
# of Calamares, set on the welcome page. This may not reflect the # of Calamares, set on the welcome page. This may not reflect the
# chosen system language from the locale page. # chosen system language from the locale page.
# #
# As a special case, variables of the form `gs[key]` where `key` is
# a dotted-keys string and `gs` is literally the letters `g` and `s`,
# use **any** value from Global Storage. For example,
#
# gs[branding.bootloader]
#
# This variable refers to the GS value stored in `bootloader` in the
# `branding` map. Examine the Debug window for information about the
# keys stored in GS. Only strings and integers are exposed this way,
# lists and other data types do not set any variable this way.
#
# Variables are written as `${var}`, e.g. `${ROOT}`. # Variables are written as `${var}`, e.g. `${ROOT}`.
# Write `$$` to get a shell-escaped `\$` in the shell command. # Write `$$` to get a shell-escaped `\$` in the shell command.
# It is not possible to get an un-escaped `$` in the shell command # It is not possible to get an un-escaped `$` in the shell command

View File

@ -51,7 +51,6 @@ ActiveDirectoryJob::exec()
if ( !m_ip.isEmpty() ) if ( !m_ip.isEmpty() )
{ {
const QString hostsFilePath = Calamares::System::instance()->targetPath( QStringLiteral( "/etc/hosts" ) ); const QString hostsFilePath = Calamares::System::instance()->targetPath( QStringLiteral( "/etc/hosts" ) );
;
QFile hostsFile( hostsFilePath ); QFile hostsFile( hostsFilePath );
if ( hostsFile.open( QIODevice::Append | QIODevice::Text ) ) if ( hostsFile.open( QIODevice::Append | QIODevice::Text ) )
{ {

View File

@ -209,7 +209,8 @@ WelcomePage::retranslate()
ui->mainText->setText( message.arg( Calamares::Branding::instance()->versionedName() ) ); ui->mainText->setText( message.arg( Calamares::Branding::instance()->versionedName() ) );
ui->retranslateUi( this ); 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 void

View File

@ -35,7 +35,7 @@ paintRequirement( QPainter* painter, const QStyleOptionViewItem& option, const Q
Calamares::ImageType statusImage = Calamares::StatusOk; Calamares::ImageType statusImage = Calamares::StatusOk;
painter->setPen( QColorConstants::Black ); painter->setPen( Qt::black );
if ( index.data( Calamares::RequirementsModel::Satisfied ).toBool() ) if ( index.data( Calamares::RequirementsModel::Satisfied ).toBool() )
{ {
painter->fillRect( textRect, option.palette.window().color() ); painter->fillRect( textRect, option.palette.window().color() );