[release] 3.2.14

This commit is contained in:
Philip Müller 2019-10-01 12:14:31 +02:00
commit 02b775a9ce
34 changed files with 446 additions and 227 deletions

19
CHANGES
View File

@ -3,13 +3,23 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.2.0. The release notes on the
website will have to do for older versions.
# 3.2.14 (unreleased) #
# 3.2.15 (unreleased) #
This release contains contributions from (alphabetically by first name):
## Core ##
## Modules ##
# 3.2.14 (2019-09-30) #
This release contains contributions from (alphabetically by first name):
- Andrius Štikonas
- Harald Sitter
## Core ##
- No changes to core functionality
## Modules ##
@ -18,6 +28,11 @@ This release contains contributions from (alphabetically by first name):
- *packagechooser* module can now be custom-labeled in the overall
progress (left-hand column). #1228
- *displaymanager* module now recognizes KDE Plasma 5.17.
- *displaymanager* module now can handle Wayland sessions and can detect
sessions from their .desktop files. #1247 #1248
- *unpackfs* now has special handling for *sourcefs* setting "file"
(so you can copy single files or directories that are on the source
system, directly to the target). #1188 #1181
# 3.2.13 (2019-08-30) #

View File

@ -40,7 +40,7 @@
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
project( CALAMARES
VERSION 3.2.13.1
VERSION 3.2.14
LANGUAGES C CXX )
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development

View File

@ -1,5 +1,7 @@
#! /bin/sh
#
### USAGE
#
# Release script for Calamares
#
# This attempts to perform the different steps of the RELEASE.md
@ -11,15 +13,21 @@
#
# None of the "update stuff" is done by this script; in preparation
# for the release, you should have already done:
# - updating the version
# - pulling translations
# - updating the language list
# - switching to the right branch
# * updating the version
# * pulling translations
# * updating the language list
# * switching to the right branch
#
# You can influence the script a little with environment variables:
# - BUILD_DEFAULT set to false to avoid first build with gcc
# - BUILD_CLANG set to false to avoid second build with clang
# - BUILD_ONLY set to true to break after building
# You can influence the script a little with these options:
# * `-B` do not build (before tagging)
# * `-P` do not package (tag, sign, tarball)
#
# The build / package settings can be influenced via environment variables:
# * BUILD_DEFAULT set to `false` to avoid first build with gcc
# * BUILD_CLANG set to `false` to avoid second build with clang
# * BUILD_ONLY set to `true` to break after building
#
### END USAGE
test -d .git || { echo "Not at top-level." ; exit 1 ; }
test -d src/modules || { echo "No src/modules." ; exit 1 ; }
@ -30,6 +38,23 @@ test -z "$BUILD_DEFAULT" && BUILD_DEFAULT=true
test -z "$BUILD_CLANG" && BUILD_CLANG=true
test -z "$BUILD_ONLY" && BUILD_ONLY=false
while getopts "hBP" opt ; do
case "$opt" in
h|\?)
sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
return 0
;;
B)
BUILD_DEFAULT=false
BUILD_CLANG=false
;;
P)
BUILD_ONLY=true
;;
esac
done
### Setup
#
#
@ -63,11 +88,21 @@ if test "x$BUILD_ONLY" = "xtrue" ; then
exit 1
fi
if test -f "$BUILDDIR/CMakeCache.txt" ; then
# Some build has created it, so that's good
:
else
# Presumably -B was given; just do the cmake part
rm -rf "$BUILDDIR"
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; }
fi
### Get version number for this release
#
#
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
test -n "$V" || { echo "Could not obtain version." ; exit 1 ; }
test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; }
### Create signed tag
#

View File

@ -99,12 +99,12 @@
<message>
<location filename="../src/calamares/DebugWindow.ui" line="106"/>
<source>Reload Stylesheet</source>
<translation type="unfinished"/>
<translation>Endurhlaða stílblað</translation>
</message>
<message>
<location filename="../src/calamares/DebugWindow.ui" line="113"/>
<source>Widget Tree</source>
<translation type="unfinished"/>
<translation>Greinar viðmótshluta</translation>
</message>
<message>
<location filename="../src/calamares/DebugWindow.cpp" line="225"/>
@ -117,7 +117,7 @@
<message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="120"/>
<source>Set up</source>
<translation type="unfinished"/>
<translation>Setja upp</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="120"/>
@ -130,7 +130,7 @@
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="39"/>
<source>Job failed (%1)</source>
<translation type="unfinished"/>
<translation>Verk mistókst (%1)</translation>
</message>
<message>
<location filename="../src/libcalamares/JobExample.cpp" line="40"/>
@ -253,7 +253,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="211"/>
<source>Setup Failed</source>
<translation type="unfinished"/>
<translation>Uppsetning mistókst</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="212"/>
@ -288,7 +288,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="337"/>
<source>Continue with installation?</source>
<translation type="unfinished"/>
<translation>Halda áfram með uppsetningu?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="339"/>
@ -298,12 +298,12 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="345"/>
<source>&amp;Set up now</source>
<translation type="unfinished"/>
<translation>&amp;Setja upp núna</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="401"/>
<source>&amp;Set up</source>
<translation type="unfinished"/>
<translation>&amp;Setja upp</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="401"/>
@ -318,7 +318,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="502"/>
<source>Cancel setup?</source>
<translation type="unfinished"/>
<translation>Hætta við uppsetningu?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="502"/>
@ -1181,7 +1181,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="132"/>
<source>Setup Complete</source>
<translation type="unfinished"/>
<translation>Uppsetningu lokið</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="133"/>
@ -1191,12 +1191,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="135"/>
<source>The setup of %1 is complete.</source>
<translation type="unfinished"/>
<translation>Uppsetningu á %1 er lokið.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="136"/>
<source>The installation of %1 is complete.</source>
<translation>Uppsetningu af %1 er lokið.</translation>
<translation>Uppsetningu á %1 er lokið.</translation>
</message>
</context>
<context>
@ -1916,7 +1916,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/packagechooser/PackageChooserPage.cpp" line="34"/>
<source>Package Selection</source>
<translation type="unfinished"/>
<translation>Valdir pakkar</translation>
</message>
<message>
<location filename="../src/modules/packagechooser/PackageChooserPage.cpp" line="35"/>
@ -1929,7 +1929,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/packagechooser/PackageChooserViewStep.cpp" line="70"/>
<source>Packages</source>
<translation type="unfinished"/>
<translation>Pakkar</translation>
</message>
</context>
<context>
@ -2112,7 +2112,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="107"/>
<source>Cre&amp;ate</source>
<translation type="unfinished"/>
<translation>Útbú&amp;a</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="114"/>
@ -2310,7 +2310,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfViewStep.cpp" line="68"/>
<source>Look-and-Feel</source>
<translation type="unfinished"/>
<translation>Útlit og hegðun</translation>
</message>
</context>
<context>
@ -2438,7 +2438,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/>
<source>(no mount point)</source>
<translation type="unfinished"/>
<translation>(enginn tengipunktur)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="65"/>
@ -3052,7 +3052,7 @@ Output:
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/>
<source>Placeholder</source>
<translation type="unfinished"/>
<translation>Frátökueining</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>
@ -3222,7 +3222,7 @@ Output:
<location filename="../src/modules/welcome/WelcomePage.ui" line="69"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="82"/>
<source>Select application and system language</source>
<translation type="unfinished"/>
<translation>Veldu tungumál forrits og kerfis</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
@ -3232,7 +3232,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="143"/>
<source>&amp;Donate</source>
<translation type="unfinished"/>
<translation>Styr&amp;kja</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="153"/>
@ -3247,7 +3247,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="179"/>
<source>Open release notes website</source>
<translation type="unfinished"/>
<translation>Opna vefsvæði með upplýsingum um útgáfuna</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="182"/>
@ -3282,17 +3282,17 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="247"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Velkomin til Calamares uppsetningarforritið fyrir %1&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="248"/>
<source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Velkomin í %1 uppsetninguna.&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="266"/>
<source>About %1 setup</source>
<translation type="unfinished"/>
<translation>Um %1 uppsetninguna</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="266"/>
@ -3302,7 +3302,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="269"/>
<source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017-2019 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to &lt;a href=&quot;https://calamares.io/team/&quot;&gt;the Calamares team&lt;/a&gt; and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;fyrir %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Höfundarréttur 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Höfundarréttur 2017-2019 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Þakkir til &lt;a href=&quot;https://calamares.io/team/&quot;&gt;Calamares teymisinsm&lt;/a&gt; og &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;allra þýðenda Calamares&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Þróun &lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; er studd af &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="259"/>

View File

@ -9,7 +9,7 @@
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="81"/>
<source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
<translation> ി &lt;strong&gt;..&lt;/strong&gt; ി ി.&lt;br&gt;&lt;br&gt; .. ി ി ിി , .. ി ി &lt;strong&gt;&lt;/strong&gt; ി &lt;strong&gt;ിി-&lt;/strong&gt; ി ിി.ി ി ിിിി ിി , ി ി ി ി ി ി.</translation>
<translation> ി &lt;strong&gt;..&lt;/strong&gt; ി ി.&lt;br&gt; .. ി ി ിി, .. ി ി &lt;strong&gt;&lt;/strong&gt; ി &lt;strong&gt;systemd-boot&lt;/strong&gt; ി ിി.ി ി ിിിി ിി , ി ി ി ി ി ി.&lt;br&gt;</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="93"/>
@ -63,12 +63,12 @@
<message>
<location filename="../src/calamares/DebugWindow.ui" line="24"/>
<source>GlobalStorage</source>
<translation> </translation>
<translation>GlobalStorage</translation>
</message>
<message>
<location filename="../src/calamares/DebugWindow.ui" line="34"/>
<source>JobQueue</source>
<translation> </translation>
<translation>JobQueue</translation>
</message>
<message>
<location filename="../src/calamares/DebugWindow.ui" line="44"/>
@ -238,7 +238,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="442"/>
<source>&amp;Cancel</source>
<translation> (%C)</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="406"/>
@ -402,7 +402,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="303"/>
<source>Unknown exception type</source>
<translation type="unfinished"/>
<translation> ി</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="321"/>
@ -719,7 +719,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="72"/>
<source>En&amp;crypt</source>
<translation type="unfinished"/>
<translation>ി (&amp;c)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="151"/>
@ -803,7 +803,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="54"/>
<source>Create new &lt;strong&gt;%1&lt;/strong&gt; partition table on &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation type="unfinished"/>
<translation>&lt;strong&gt;%2&lt;/strong&gt; (%3) - ി &lt;strong&gt;%1&lt;/strong&gt; ി .</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="64"/>
@ -813,7 +813,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="82"/>
<source>The installer failed to create a partition table on %1.</source>
<translation type="unfinished"/>
<translation>%1 ി ിി .</translation>
</message>
</context>
<context>
@ -1069,7 +1069,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/>
<source>En&amp;crypt system</source>
<translation type="unfinished"/>
<translation>ി ി (&amp;c)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="42"/>
@ -1170,7 +1170,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="139"/>
<source>&lt;h1&gt;Installation Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been installed on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt; &lt;/h1&gt;&lt;br/&gt; ി ി %1 ിിി.&lt;br/&gt;ി ി: %2.</translation>
</message>
</context>
<context>
@ -1229,22 +1229,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="106"/>
<source>has at least %1 GiB available drive space</source>
<translation type="unfinished"/>
<translation>%1 GiB ി ി ിി.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="107"/>
<source>There is not enough drive space. At least %1 GiB is required.</source>
<translation type="unfinished"/>
<translation>ി ി . %1 GiB ി .</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="114"/>
<source>has at least %1 GiB working memory</source>
<translation type="unfinished"/>
<translation>%1 GiB RAM ി ിി.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="115"/>
<source>The system does not have enough working memory. At least %1 GiB is required.</source>
<translation type="unfinished"/>
<translation>ിി ി RAM . %1 GiB ി .</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="122"/>
@ -1391,7 +1391,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="63"/>
<source>&amp;Cancel</source>
<translation> (%C)</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="64"/>
@ -1515,7 +1515,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="285"/>
<source>The numbers and dates locale will be set to %1.</source>
<translation type="unfinished"/>
<translation> &amp; ി ി %1 ി ി.</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="118"/>
@ -1531,12 +1531,12 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/locale/LocalePage.cpp" line="120"/>
<location filename="../src/modules/locale/LocalePage.cpp" line="121"/>
<source>&amp;Change...</source>
<translation type="unfinished"/>
<translation> (&amp;C)...</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="292"/>
<source>Set timezone to %1/%2.&lt;br/&gt;</source>
<translation type="unfinished"/>
<translation>ി %1/%2 ി ി.&lt;br/&gt;</translation>
</message>
</context>
<context>
@ -1598,17 +1598,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="109"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation type="unfinished"/>
<translation> . (ി: ി ി, ി ിി)</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="119"/>
<source>Network Installation. (Disabled: Received invalid groups data)</source>
<translation type="unfinished"/>
<translation> . (ി: ി)</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="158"/>
<source>Network Installation. (Disabled: Incorrect configuration)</source>
<translation type="unfinished"/>
<translation> . (ിി: )</translation>
</message>
</context>
<context>
@ -1629,7 +1629,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/oemid/OEMPage.ui" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enter a batch-identifier here. This will be stored in the target system.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt; ി ി . ിി ി&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/oemid/OEMPage.ui" line="48"/>
@ -1690,7 +1690,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="186"/>
<source>The password differs with case changes only</source>
<translation type="unfinished"/>
<translation> ി ിി</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="188"/>
@ -1775,7 +1775,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="220"/>
<source>The password does not contain enough character classes</source>
<translation type="unfinished"/>
<translation>ി ി </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="223"/>
@ -1790,12 +1790,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="227"/>
<source>The password contains more than %1 characters of the same class consecutively</source>
<translation type="unfinished"/>
<translation>ി %1 ി</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="228"/>
<source>The password contains too many characters of the same class consecutively</source>
<translation type="unfinished"/>
<translation>ി ി</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="231"/>
@ -1815,12 +1815,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="236"/>
<source>Cannot obtain random numbers from the RNG device</source>
<translation type="unfinished"/>
<translation>RNG ി ി ി ി.</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="238"/>
<source>Password generation failed - required entropy too low for settings</source>
<translation type="unfinished"/>
<translation> ിി - ി entropy .</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="243"/>
@ -1850,42 +1850,42 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="261"/>
<source>Bad integer value</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="265"/>
<source>Setting %1 is not of integer type</source>
<translation type="unfinished"/>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="269"/>
<source>Setting is not of integer type</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="273"/>
<source>Setting %1 is not of string type</source>
<translation type="unfinished"/>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="277"/>
<source>Setting is not of string type</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="279"/>
<source>Opening the configuration file failed</source>
<translation type="unfinished"/>
<translation> ി </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="281"/>
<source>The configuration file is malformed</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="283"/>
<source>Fatal failure</source>
<translation type="unfinished"/>
<translation> ി</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="285"/>
@ -1918,12 +1918,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/packagechooser/PackageChooserPage.cpp" line="34"/>
<source>Package Selection</source>
<translation type="unfinished"/>
<translation> ി</translation>
</message>
<message>
<location filename="../src/modules/packagechooser/PackageChooserPage.cpp" line="35"/>
<source>Please pick a product from the list. The selected product will be installed.</source>
<translation type="unfinished"/>
<translation>ിി ി ി. ി .</translation>
</message>
</context>
<context>
@ -1931,7 +1931,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/packagechooser/PackageChooserViewStep.cpp" line="70"/>
<source>Packages</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -1977,7 +1977,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="440"/>
<source>&lt;small&gt;Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt; , ി ി ി ിി ി. ി , , ി ി ിി ിിി, ി ിി, ി .&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="226"/>
@ -2020,7 +2020,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="200"/>
<source>Home</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="202"/>
@ -2060,7 +2060,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="144"/>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="176"/>
<source>Free Space</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="148"/>
@ -2099,7 +2099,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="22"/>
<source>Storage de&amp;vice:</source>
<translation type="unfinished"/>
<translation> (&amp;v):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="51"/>
@ -2134,32 +2134,32 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="139"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation> ി </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="146"/>
<source>Deactivate Volume Group</source>
<translation type="unfinished"/>
<translation> ിി</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="153"/>
<source>Remove Volume Group</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="180"/>
<source>I&amp;nstall boot loader on:</source>
<translation type="unfinished"/>
<translation> ി (&amp;n):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="209"/>
<source>Are you sure you want to create a new partition table on %1?</source>
<translation type="unfinished"/>
<translation>%1 ി ി ിി ?</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="238"/>
<source>Can not create new partition</source>
<translation type="unfinished"/>
<translation>ി ിിി</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="239"/>
@ -2187,12 +2187,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="171"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source>
<translation type="unfinished"/>
<translation>ി &lt;strong&gt;&lt;/strong&gt;ി %1 .</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="175"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</source>
<translation type="unfinished"/>
<translation> %1 ി &lt;strong&gt;ി.&lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="180"/>
@ -2207,22 +2207,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="199"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source>
<translation type="unfinished"/>
<translation>ി &lt;strong&gt;%2&lt;/strong&gt; (%3) &lt;strong&gt; &lt;/strong&gt; %1 .</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="205"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</source>
<translation type="unfinished"/>
<translation>&lt;strong&gt;%2&lt;/strong&gt; (%3) ിി %1 ി &lt;strong&gt;ിി&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="212"/>
<source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</source>
<translation type="unfinished"/>
<translation>&lt;strong&gt;%1 &lt;/strong&gt;(%2) ിി &lt;strong&gt;&lt;/strong&gt; ി.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="220"/>
<source>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</source>
<translation type="unfinished"/>
<translation>ി &lt;strong&gt;%1&lt;/strong&gt; (%2)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="248"/>
@ -2237,12 +2237,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="415"/>
<source>No EFI system partition configured</source>
<translation type="unfinished"/>
<translation> ി ിിി</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="416"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</source>
<translation type="unfinished"/>
<translation>%1 ി ി .&lt;br/&gt;&lt;br/&gt; ി ിി,ിി ി &lt;strong&gt; ി&lt;/strong&gt; ി &lt;strong&gt;%2&lt;/strong&gt; ി FAT32 ി ി ി ി.&lt;br/&gt;&lt;br/&gt; ി ി ി , ി ി ിി .</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="429"/>
@ -2257,7 +2257,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="465"/>
<source>Boot partition not encrypted</source>
<translation type="unfinished"/>
<translation> ി ിി</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="466"/>
@ -2320,17 +2320,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="84"/>
<source>Saving files for later ...</source>
<translation type="unfinished"/>
<translation> ിിി ി ...</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="122"/>
<source>No files configured to save for later.</source>
<translation type="unfinished"/>
<translation>ിിി ിി ിിി.</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="176"/>
<source>Not all of the configured files could be preserved.</source>
<translation type="unfinished"/>
<translation>ി ിി.</translation>
</message>
</context>
<context>
@ -2404,18 +2404,18 @@ Output:
<message>
<location filename="../src/modules/keyboard/keyboardwidget/keyboardglobal.cpp" line="91"/>
<source>Default Keyboard Model</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/keyboard/keyboardwidget/keyboardglobal.cpp" line="133"/>
<location filename="../src/modules/keyboard/keyboardwidget/keyboardglobal.cpp" line="168"/>
<source>Default</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="207"/>
<source>unknown</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/partition/core/KPMHelpers.cpp" line="209"/>
@ -2470,17 +2470,17 @@ Output:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source>
<translation type="unfinished"/>
<translation>%1 .</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>&lt;strong&gt;%1&lt;/strong&gt; .</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to remove a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>&apos;%1&apos; ി .</translation>
</message>
</context>
<context>
@ -2568,7 +2568,7 @@ Output:
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="172"/>
<source>Invalid configuration</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="173"/>
@ -2657,7 +2657,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/ResizeVolumeGroupDialog.cpp" line="39"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation> ി </translation>
</message>
</context>
<context>
@ -2684,27 +2684,27 @@ Output:
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="96"/>
<source>This computer does not satisfy the minimum requirements for setting up %1.&lt;br/&gt;Setup cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source>
<translation type="unfinished"/>
<translation>%1 ിി ിി.&lt;br/&gt; ി. &lt;a href=&quot;#details&quot;&gt;ി...&lt;/a&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="100"/>
<source>This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;Installation cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source>
<translation type="unfinished"/>
<translation>%1 ി ിി.&lt;br/&gt; ി. &lt;a href=&quot;#details&quot;&gt;ി...&lt;/a&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="118"/>
<source>This computer does not satisfy some of the recommended requirements for setting up %1.&lt;br/&gt;Setup can continue, but some features might be disabled.</source>
<translation type="unfinished"/>
<translation>%1 ിി ി ിി.&lt;br/&gt; , ി ി ിിിി.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="122"/>
<source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source>
<translation type="unfinished"/>
<translation>%1 ി ിി.&lt;br/&gt; , ി ി ിിിി.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/>
<source>This program will ask you some questions and set up %2 on your computer.</source>
<translation type="unfinished"/>
<translation> ി ി ി %2 ി ി .</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="181"/>
@ -2898,7 +2898,7 @@ Output:
<message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="123"/>
<source>Cannot disable root account.</source>
<translation type="unfinished"/>
<translation> ിിി.</translation>
</message>
<message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="124"/>
@ -2936,7 +2936,7 @@ Output:
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="80"/>
<source>Cannot set timezone.</source>
<translation type="unfinished"/>
<translation>ി ി.</translation>
</message>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="81"/>
@ -2946,12 +2946,12 @@ Output:
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="86"/>
<source>Cannot set timezone,</source>
<translation type="unfinished"/>
<translation>ി ി,</translation>
</message>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="87"/>
<source>Cannot open /etc/timezone for writing</source>
<translation type="unfinished"/>
<translation>ിി /etc/timezone ി</translation>
</message>
</context>
<context>
@ -2976,7 +2976,7 @@ Output:
<message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="57"/>
<source>This is an overview of what will happen once you start the setup procedure.</source>
<translation type="unfinished"/>
<translation> ി ിി ി ി ി.</translation>
</message>
<message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="60"/>
@ -2989,7 +2989,7 @@ Output:
<message>
<location filename="../src/modules/summary/SummaryViewStep.cpp" line="43"/>
<source>Summary</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -2997,12 +2997,12 @@ Output:
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="42"/>
<source>Installation feedback</source>
<translation type="unfinished"/>
<translation> ി ി</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="54"/>
<source>Sending installation feedback.</source>
<translation type="unfinished"/>
<translation> ി ി .</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="71"/>
@ -3074,7 +3074,7 @@ Output:
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="49"/>
<source>By selecting this you will send information about your installation and hardware. This information will &lt;b&gt;only be sent once&lt;/b&gt; after the installation finishes.</source>
<translation type="unfinished"/>
<translation> ിി ി ി ിി ി . ിി &lt;b&gt; ി &lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="51"/>
@ -3084,7 +3084,7 @@ Output:
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="54"/>
<source>By selecting this you will &lt;b&gt;regularly&lt;/b&gt; send information about your installation, hardware, applications and usage patterns, to %1.</source>
<translation type="unfinished"/>
<translation> ിി ി , , ി, ി ിി ി &lt;b&gt;ിി&lt;/b&gt; %1 .</translation>
</message>
</context>
<context>
@ -3092,7 +3092,7 @@ Output:
<message>
<location filename="../src/modules/tracking/TrackingViewStep.cpp" line="64"/>
<source>Feedback</source>
<translation type="unfinished"/>
<translation>ി</translation>
</message>
</context>
<context>
@ -3100,12 +3100,12 @@ Output:
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="120"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after setup.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;ിി ിി, ി ിി ി.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="126"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after installation.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;ിി ിി, ിി ി.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="317"/>
@ -3152,12 +3152,12 @@ Output:
<message>
<location filename="../src/calamares/VariantModel.cpp" line="241"/>
<source>Key</source>
<translation type="unfinished"/>
<translation>ി</translation>
</message>
<message>
<location filename="../src/calamares/VariantModel.cpp" line="245"/>
<source>Value</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -3175,12 +3175,12 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="30"/>
<source>Volume Group Name:</source>
<translation type="unfinished"/>
<translation> ി :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="43"/>
<source>Volume Group Type:</source>
<translation type="unfinished"/>
<translation> :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/>
@ -3195,17 +3195,17 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="82"/>
<source>Total Size:</source>
<translation type="unfinished"/>
<translation> :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="102"/>
<source>Used Size:</source>
<translation type="unfinished"/>
<translation>ി :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>
<source>Total Sectors:</source>
<translation type="unfinished"/>
<translation> :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
@ -3249,17 +3249,17 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="179"/>
<source>Open release notes website</source>
<translation>ി ി </translation>
<translation> ി </translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="182"/>
<source>&amp;Release notes</source>
<translation> ി </translation>
<translation> ി (&amp;R)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="169"/>
<source>&amp;Known issues</source>
<translation>&amp; ി </translation>
<translation>ി ി (&amp;K)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="156"/>
@ -3269,27 +3269,27 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="130"/>
<source>&amp;About</source>
<translation>&amp;ി (&amp;A)</translation>
<translation>ി (&amp;A)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="254"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 ി &lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="253"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 - ി .&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="247"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 - ിി .&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="248"/>
<source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 ി .&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="266"/>

View File

@ -1903,7 +1903,7 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message>
<location filename="../src/modules/packagechooser/page_package.ui" line="40"/>
<source>Product Name</source>
<translation type="unfinished"/>
<translation>Nome do produto</translation>
</message>
<message>
<location filename="../src/modules/packagechooser/page_package.ui" line="53"/>
@ -1913,7 +1913,7 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message>
<location filename="../src/modules/packagechooser/page_package.ui" line="69"/>
<source>Long Product Description</source>
<translation type="unfinished"/>
<translation>Descrição longa do produto</translation>
</message>
<message>
<location filename="../src/modules/packagechooser/PackageChooserPage.cpp" line="34"/>
@ -1931,7 +1931,7 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message>
<location filename="../src/modules/packagechooser/PackageChooserViewStep.cpp" line="70"/>
<source>Packages</source>
<translation type="unfinished"/>
<translation>Pacotes</translation>
</message>
</context>
<context>
@ -2459,12 +2459,12 @@ Saída de Dados:
<message>
<location filename="../src/modules/packagechooser/PackageModel.cpp" line="79"/>
<source>No product</source>
<translation type="unfinished"/>
<translation>Nenhum produto</translation>
</message>
<message>
<location filename="../src/modules/packagechooser/PackageModel.cpp" line="87"/>
<source>No description provided.</source>
<translation type="unfinished"/>
<translation>Nenhuma descrição fornecida.</translation>
</message>
</context>
<context>
@ -3103,12 +3103,12 @@ Saída de Dados:
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="120"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after setup.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;Se mais de uma pessoa usar este computador, você pode criar várias contas após a configuração.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="126"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after installation.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;Se mais de uma pessoa usar este computador, você pode criar várias contas após a instalação.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="317"/>
@ -3155,7 +3155,7 @@ Saída de Dados:
<message>
<location filename="../src/calamares/VariantModel.cpp" line="241"/>
<source>Key</source>
<translation type="unfinished"/>
<translation>Chave</translation>
</message>
<message>
<location filename="../src/calamares/VariantModel.cpp" line="245"/>
@ -3227,7 +3227,7 @@ Saída de Dados:
<location filename="../src/modules/welcome/WelcomePage.ui" line="69"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="82"/>
<source>Select application and system language</source>
<translation type="unfinished"/>
<translation>Selecione o idioma da aplicação e do sistema</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
@ -3252,7 +3252,7 @@ Saída de Dados:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="179"/>
<source>Open release notes website</source>
<translation type="unfinished"/>
<translation>Abrir o site com as notas de lançamento</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="182"/>

View File

@ -4,17 +4,17 @@
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="71"/>
<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>&lt;strong&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt; x86 &lt;strong&gt;BIOS&lt;/strong&gt;&lt;br&gt;使 &lt;strong&gt;EFI&lt;/strong&gt; BIOS</translation>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt; x86 &lt;strong&gt;BIOS&lt;/strong&gt;&lt;br&gt;使 &lt;strong&gt;EFI&lt;/strong&gt;使 (CSM) BIOS</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="81"/>
<source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
<translation> &lt;strong&gt;EFI&lt;/strong&gt; &lt;br&gt;&lt;br&gt; EFI &lt;strong&gt;GRUB&lt;/strong&gt; &lt;strong&gt;systemd-boot&lt;/strong&gt; &lt;strong&gt;EFI &lt;/strong&gt;</translation>
<translation> &lt;strong&gt;EFI&lt;/strong&gt; &lt;br&gt;&lt;br&gt; EFI &lt;strong&gt;GRUB&lt;/strong&gt; &lt;strong&gt;systemd-boot&lt;/strong&gt; &lt;strong&gt;EFI &lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="93"/>
<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> &lt;strong&gt;BIOS&lt;/strong&gt; &lt;br&gt;&lt;br&gt; BIOS &lt;strong&gt;GRUB&lt;/strong&gt; &lt;strong&gt;&lt;/strong&gt;</translation>
<translation> &lt;strong&gt;BIOS&lt;/strong&gt; &lt;br&gt;&lt;br&gt; BIOS &lt;strong&gt;GRUB&lt;/strong&gt; &lt;strong&gt; (MBR)&lt;/strong&gt;</translation>
</message>
</context>
<context>
@ -258,7 +258,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="212"/>
<source>Would you like to paste the install log to the web?</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="250"/>
@ -298,7 +298,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="345"/>
<source>&amp;Set up now</source>
<translation> (&amp;S)</translation>
<translation> (&amp;S)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="401"/>
@ -329,7 +329,7 @@
<location filename="../src/libcalamaresui/ViewManager.cpp" line="503"/>
<source>Do you really want to cancel the current setup process?
The setup program will quit and all changes will be lost.</source>
<translation>
<translation>
</translation>
</message>
<message>
@ -471,7 +471,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="330"/>
<source>&lt;strong&gt;Manual partitioning&lt;/strong&gt;&lt;br/&gt;You can create or resize partitions yourself.</source>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br/&gt;調</translation>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br/&gt;調</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1024"/>
@ -537,7 +537,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1330"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1356"/>
<source>&lt;strong&gt;Erase disk&lt;/strong&gt;&lt;br/&gt;This will &lt;font color=&quot;red&quot;&gt;delete&lt;/font&gt; all data currently present on the selected storage device.</source>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;&lt;/font&gt;</translation>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;&lt;/font&gt;</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1297"/>
@ -932,12 +932,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="151"/>
<source>The type of &lt;strong&gt;partition table&lt;/strong&gt; on the selected storage device.&lt;br&gt;&lt;br&gt;The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.&lt;br&gt;This installer will keep the current partition table unless you explicitly choose otherwise.&lt;br&gt;If unsure, on modern systems GPT is preferred.</source>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;使 GPT</translation>
<translation>&lt;strong&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;使 GPT</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="108"/>
<source>This device has a &lt;strong&gt;%1&lt;/strong&gt; partition table.</source>
<translation> &lt;strong&gt;%1&lt;/strong&gt; </translation>
<translation> &lt;strong&gt;%1&lt;/strong&gt; </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="115"/>
@ -957,7 +957,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="138"/>
<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; &lt;strong&gt;BIOS&lt;/strong&gt; 使使 GPT&lt;br&gt;&lt;strong&gt;&lt;/strong&gt;MBR MS-DOS &lt;br&gt; 4 &lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;</translation>
<translation>&lt;br&gt;&lt;br&gt; &lt;strong&gt;BIOS&lt;/strong&gt; 使使 GPT&lt;br&gt;&lt;strong&gt;&lt;/strong&gt;MBR MS-DOS &lt;br&gt; 4 &lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;</translation>
</message>
</context>
<context>
@ -1016,7 +1016,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="60"/>
<source>&amp;Keep</source>
<translation>(&amp;K)</translation>
<translation>(&amp;K)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
@ -1510,12 +1510,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="284"/>
<source>The system language will be set to %1.</source>
<translation> %1</translation>
<translation>%1</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="285"/>
<source>The numbers and dates locale will be set to %1.</source>
<translation> %1</translation>
<translation>%1</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="118"/>
@ -2443,7 +2443,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/>
<source>(no mount point)</source>
<translation></translation>
<translation>()</translation>
</message>
<message>
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="65"/>
@ -2707,7 +2707,7 @@ Output:
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/>
<source>This program will ask you some questions and set up %2 on your computer.</source>
<translation> %2 </translation>
<translation> %2</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="181"/>
@ -2979,7 +2979,7 @@ Output:
<message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="57"/>
<source>This is an overview of what will happen once you start the setup procedure.</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="60"/>
@ -3252,7 +3252,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="179"/>
<source>Open release notes website</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="182"/>

Binary file not shown.

View File

@ -308,7 +308,7 @@ msgstr[2] "Uklanjam %(num)d pakete."
#: src/modules/bootloader/main.py:51
msgid "Install bootloader."
msgstr "Instalirajte bootloader."
msgstr "Instaliram bootloader."
#: src/modules/removeuser/main.py:34
msgid "Remove live user from target system"

View File

@ -5,7 +5,7 @@
#
# Translators:
# Saverio <saverio.brancaccio@gmail.com>, 2018
# Pietro Francesco Fontana, 2018
# Pietro F. Fontana, 2018
# Pierfrancesco Passerini <p.passerini@gmail.com>, 2019
#
#, fuzzy

View File

@ -5,7 +5,7 @@
#
# Translators:
# André Marcelo Alvarenga <alvarenga@kde.org>, 2019
# Guilherme <guimarcalsilva@gmail.com>, 2019
# Guilherme Marçal Silva <guimarcalsilva@gmail.com>, 2019
#
#, fuzzy
msgid ""
@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-15 21:54+0200\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Guilherme <guimarcalsilva@gmail.com>, 2019\n"
"Last-Translator: Guilherme Marçal Silva <guimarcalsilva@gmail.com>, 2019\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"

View File

@ -67,7 +67,7 @@ public:
* en_US and en (American English) is defined as English. The Queen's
* English -- proper English -- is relegated to non-English status.
*/
bool isEnglish() const { return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" ); }
bool isEnglish() const { return m_localeId == QLatin1String( "en_US" ) || m_localeId == QLatin1String( "en" ); }
/** @brief Get the human-readable name for this locale. */
QString label() const { return m_label; }

View File

@ -90,7 +90,11 @@ public:
QString toString() const
{
return first + '@' + second;
if ( isValid() )
{
return first + '@' + second;
}
return QString();
}
private:

View File

@ -52,7 +52,14 @@ assert_is_invalid( const InstanceKey& k )
QVERIFY( !k.isCustom() );
QVERIFY( k.module().isEmpty() );
QVERIFY( k.id().isEmpty() );
QVERIFY( k.toString().isEmpty() );
if ( k.toString().isEmpty() )
{
QVERIFY( k.toString().isEmpty() );
}
else
{
QCOMPARE( k.toString(), QString() );
}
}
void

View File

@ -131,8 +131,8 @@ findInCommands( const CommandList& l, const QString& needle )
Calamares::JobResult
CommandList::run()
{
QLatin1Literal rootMagic( "@@ROOT@@" );
QLatin1Literal userMagic( "@@USER@@" );
QLatin1String rootMagic( "@@ROOT@@" );
QLatin1String userMagic( "@@USER@@" );
System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost;

View File

@ -275,12 +275,12 @@ ViewManager::onInitFailed( const QStringList& modules )
{
description.append( tr( "<br/>The following modules could not be loaded:" ) );
QStringList details;
details << QLatin1Literal( "<ul>" );
details << QLatin1String( "<ul>" );
for ( const auto& m : modules )
{
details << QLatin1Literal( "<li>" ) << m << QLatin1Literal( "</li>" );
details << QLatin1String( "<li>" ) << m << QLatin1String( "</li>" );
}
details << QLatin1Literal( "</ul>" );
details << QLatin1String( "</ul>" );
detailString = details.join( QString() );
}

View File

@ -91,7 +91,7 @@ ModuleManager::doInit()
bool success = currentDir.cd( subdir );
if ( success )
{
QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc" ) ) );
QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1String( "module.desc" ) ) );
if ( !descriptorFileInfo.exists() )
{
cDebug() << "ModuleManager expected descriptor is missing:"

View File

@ -137,7 +137,7 @@ PythonQtViewModule::loadSelf()
return;
}
static const QLatin1Literal calamares_module_annotation(
static const QLatin1String calamares_module_annotation(
"_calamares_module_typename = ''\n"
"def calamares_module(viewmodule_type):\n"
" global _calamares_module_typename\n"

View File

@ -13,7 +13,25 @@ displaymanagers:
- lxdm
- kdm
#Enable the following settings to force a desktop environment in your displaymanager configuration file:
# Enable the following settings to force a desktop environment
# in your displaymanager configuration file. This will attempt
# to configure the given DE (without checking if it is installed).
# The DM configuration for each potential DM may **or may not**
# support configuring a default DE, so the keys are mandatory
# but their interpretation is up to the DM configuration.
#
# Subkeys of *defaultDesktopEnvironment* are (all mandatory):
# - *executable* a full path to an executable
# - *desktopFile* a .desktop filename
#
# If this is **not** set, then Calamares will look for installed
# DE's and pick the first one it finds that is actually installed.
#
# If this **is** set, and the *executable* key doesn't point to
# an installed file, then the .desktop file's TryExec key is
# used instead.
#
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"

View File

@ -51,31 +51,59 @@ class DesktopEnvironment:
self.executable = exec
self.desktop_file = desktop
def find_executable(self, root_mount_point, command):
if command.startswith("/"):
def _search_executable(self, root_mount_point, pathname):
"""
Search for @p pathname within @p root_mount_point .
If the pathname is absolute, just check there inside
the target, otherwise earch in a sort-of-sensible $PATH.
Returns the full (including @p root_mount_point) path
to that executable, or None.
"""
if pathname.startswith("/"):
path = [""]
else:
path = ["/bin/", "/usr/bin/", "/sbin/", "/usr/local/bin/"]
for p in path:
absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, command)
absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, pathname)
if os.path.exists(absolute_path):
return absolute_path
return None
def find_tryexec(self, root_mount_point, absolute_desktop_file):
def _search_tryexec(self, root_mount_point, absolute_desktop_file):
"""
Check @p absolute_desktop_file for a TryExec line and, if that is
found, search for the command (executable pathname) within
@p root_mount_point. The .desktop file must live within the
target root.
Returns the full (including @p root_mount_point) for the executable
from TryExec, or None.
"""
assert absolute_desktop_file.startswith(root_mount_point)
with open(absolute_desktop_file, "r") as f:
for tryexec_line in [x for x in f.readlines() if x.startswith("TryExec")]:
try:
key, value = tryexec_line.split("=")
if key.strip() == "TryExec":
return self.find_executable(root_mount_point, value.strip())
return self._search_executable(root_mount_point, value.strip())
except:
pass
return None
def find_executable(self, root_mount_point):
"""
Returns the full path of the configured executable within @p root_mount_point,
or None if it isn't found. May search in a semi-sensible $PATH.
"""
return self._search_executable(root_mount_point, self.executable)
def find_desktop_file(self, root_mount_point):
"""
Returns the full path of the .desktop file within @p root_mount_point,
or None if it isn't found. Searches both X11 and Wayland sessions.
"""
x11_sessions = "{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, self.desktop_file)
wayland_sessions = "{!s}/usr/share/wayland-sessions/{!s}.desktop".format(root_mount_point, self.desktop_file)
for candidate in (x11_sessions, wayland_sessions):
@ -83,7 +111,7 @@ class DesktopEnvironment:
return candidate
return None
def find_desktop_environment(self, root_mount_point):
def is_installed(self, root_mount_point):
"""
Check if this environment is installed in the
target system at @p root_mount_point.
@ -92,10 +120,59 @@ class DesktopEnvironment:
if desktop_file is None:
return False
return (self.find_executable(root_mount_point, self.executable) is not None or
self.find_tryexec(root_mount_point, desktop_file) is not None)
return (self.find_executable(root_mount_point) is not None or
self._search_tryexec(root_mount_point, desktop_file) is not None)
def update_from_desktop_file(self, root_mount_point):
"""
Find thie DE in the target system at @p root_mount_point.
This can update the *executable* configuration value if
the configured executable isn't found but the TryExec line
from the .desktop file is.
The .desktop file is mandatory for a DE.
Returns True if the DE is installed.
"""
desktop_file = self.find_desktop_file(root_mount_point)
if desktop_file is None:
return False
executable_file = self.find_executable(root_mount_point)
if executable_file is not None:
# .desktop found and executable as well.
return True
executable_file = self._search_tryexec(root_mount_point, desktop_file)
if executable_file is not None:
# Found from the .desktop file, so update own executable config
if root_mount_point and executable_file.startswith(root_mount_point):
executable_file = executable_file[len(root_mount_point):]
if not executable_file:
# Somehow chopped down to nothing
return False
if executable_file[0] != "/":
executable_file = "/" + executable_file
self.executable = executable_file
return True
# This is to double-check
return self.is_installed(root_mount_point)
# This is the list of desktop environments that Calamares looks
# for; if no default environment is **explicitly** configured
# in the `displaymanager.conf` then the first one from this list
# that is found, is used.
#
# Each DE has a sample executable to look for, and a .desktop filename.
# If the executable exists, the DE is assumed to be installed
# and to use the given .desktop filename.
#
# If the .desktop file exists and contains a TryExec line and that
# TryExec executable exists (searched in /bin, /usr/bin, /sbin and
# /usr/local/bin) then the DE is assumed to be installed
# and to use that .desktop filename.
desktop_environments = [
DesktopEnvironment('/usr/bin/startplasma-x11', 'plasma'), # KDE Plasma 5.17+
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
@ -131,7 +208,7 @@ def find_desktop_environment(root_mount_point):
"""
libcalamares.utils.debug("Using rootMountPoint {!r}".format(root_mount_point))
for desktop_environment in desktop_environments:
if desktop_environment.find_desktop_environment(root_mount_point):
if desktop_environment.is_installed(root_mount_point):
libcalamares.utils.debug(".. selected DE {!s}".format(desktop_environment.desktop_file))
return desktop_environment
return None
@ -847,6 +924,11 @@ def run():
default_desktop_environment = DesktopEnvironment(
entry["executable"], entry["desktopFile"]
)
# Adjust if executable is bad, but desktopFile isn't.
if not default_desktop_environment.update_from_desktop_file(root_mount_point):
libcalamares.utils.warning(
"The configured default desktop environment, {!s}, "
"can not be found.".format(default_desktop_environment.desktop_file))
else:
default_desktop_environment = find_desktop_environment(
root_mount_point

View File

@ -30,7 +30,7 @@
#include "utils/Logger.h"
// static
const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" );
const QLatin1String DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" );
// static
const char *DracutLuksCfgJob::CONFIG_FILE_HEADER =
@ -50,7 +50,7 @@ const char *DracutLuksCfgJob::CONFIG_FILE_CRYPTTAB_LINE =
"install_items+=\" /etc/crypttab \"\n";
// static
const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" );
const QLatin1String DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" );
// static
QString

View File

@ -42,11 +42,11 @@ public:
Calamares::JobResult exec() override;
private:
static const QLatin1Literal CONFIG_FILE;
static const QLatin1String CONFIG_FILE;
static const char *CONFIG_FILE_HEADER;
static const char *CONFIG_FILE_CRYPTTAB_KEYFILE_LINE;
static const char *CONFIG_FILE_CRYPTTAB_LINE;
static const QLatin1Literal CONFIG_FILE_SWAPLINE;
static const QLatin1String CONFIG_FILE_SWAPLINE;
static QString rootMountPoint();
static QVariantList partitions();

View File

@ -5,16 +5,16 @@
#
# Translators:
# Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017
# Guilherme <guimarcalsilva@gmail.com>, 2018
# Guilherme Marçal Silva <guimarcalsilva@gmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-02-22 07:09-0500\n"
"POT-Creation-Date: 2019-09-15 21:54+0200\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Last-Translator: Guilherme <guimarcalsilva@gmail.com>, 2018\n"
"Last-Translator: Guilherme Marçal Silva <guimarcalsilva@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"

View File

@ -241,7 +241,7 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone, cons
<< "\n\t "
<< "* a well-formed" << supported.fileName() << "\n\tOR"
<< "* a well-formed"
<< ( localeGenPath.isEmpty() ? QLatin1Literal( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR"
<< ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR"
<< "* a complete pre-compiled locale-gen database which allows complete locale -a output.";
return; // something went wrong and there's nothing we can do about it.
}

View File

@ -34,7 +34,7 @@ constexpr static double MATH_PI = 3.14159265;
#ifdef DEBUG_TIMEZONES
// Adds a label to the timezone with this name
constexpr static QLatin1Literal ZONE_NAME( "zone" );
constexpr static QLatin1String ZONE_NAME( "zone" );
#endif
TimeZoneWidget::TimeZoneWidget( QWidget* parent ) :

View File

@ -45,7 +45,7 @@ PackageTreeItem::PackageTreeItem::PackageTreeItem() :
PackageTreeItem( QString(), nullptr )
{
m_data.selected = Qt::Checked;
m_data.name = QLatin1Literal( "<root>" );
m_data.name = QLatin1String( "<root>" );
}
PackageTreeItem::~PackageTreeItem()

View File

@ -450,7 +450,7 @@ isEfiBootable( const Partition* candidate )
QString
findFS( QString fsName, FileSystem::Type* fsType )
{
QStringList fsLanguage { QLatin1Literal( "C" ) }; // Required language list to turn off localization
QStringList fsLanguage { QLatin1String( "C" ) }; // Required language list to turn off localization
if ( fsName.isEmpty() )
fsName = QStringLiteral( "ext4" );

View File

@ -646,7 +646,7 @@ PartitionViewStep::checkRequirements()
Calamares::RequirementsList l;
l.append(
{
QLatin1Literal( "partitions" ),
QLatin1String( "partitions" ),
[]{ return tr( "has at least one disk device available." ); },
[]{ return tr( "There are no partitons to install on." ); },
m_core->deviceModel()->rowCount() > 0, // satisfied

View File

@ -52,7 +52,7 @@ QString targetPrefix()
}
}
return QLatin1Literal( "/" );
return QLatin1String( "/" );
}
QString atReplacements( QString s )

View File

@ -58,6 +58,9 @@ class UnpackEntry:
self.copied = 0
self.total = 0
def is_file(self):
return self.sourcefs == "file"
ON_POSIX = 'posix' in sys.builtin_module_names
@ -100,7 +103,7 @@ def file_copy(source, dest, progress_cb):
# `source` *must* end with '/' otherwise a directory named after the source
# will be created in `dest`: ie if `source` is "/foo/bar" and `dest` is
# "/dest", then files will be copied in "/dest/bar".
if not source.endswith("/"):
if not source.endswith("/") and not os.path.isfile(source):
source += "/"
num_files_total_local = 0
@ -225,11 +228,16 @@ class UnpackOperation:
["unsquashfs", "-l", entry.source]
)
if entry.sourcefs == "ext4":
elif entry.sourcefs == "ext4":
fslist = subprocess.check_output(
["find", imgmountdir, "-type", "f"]
)
elif entry.is_file():
# Hasn't been mounted, copy directly; find handles both
# files and directories.
fslist = subprocess.check_output(["find", entry.source, "-type", "f"])
entry.total = len(fslist.splitlines())
self.report_progress()
@ -247,9 +255,15 @@ class UnpackOperation:
"""
Mount given image as loop device.
A *file* entry (e.g. one with *sourcefs* set to *file*)
is not mounted and just ignored.
:param entry:
:param imgmountdir:
"""
if entry.is_file():
return
if os.path.isdir(entry.source):
subprocess.check_call(["mount",
"--bind", entry.source,
@ -287,12 +301,18 @@ class UnpackOperation:
self.report_progress()
try:
return file_copy(imgmountdir, entry.destination, progress_cb)
if entry.is_file():
source = entry.source
else:
source = imgmountdir
return file_copy(source, entry.destination, progress_cb)
finally:
subprocess.check_call(["umount", "-l", imgmountdir])
if not entry.is_file():
subprocess.check_call(["umount", "-l", imgmountdir])
def get_supported_filesystems():
def get_supported_filesystems_kernel():
"""
Reads /proc/filesystems (the list of supported filesystems
for the current kernel) and returns a list of (names of)
@ -310,6 +330,14 @@ def get_supported_filesystems():
return []
def get_supported_filesystems():
"""
Returns a list of all the supported filesystems
(valid values for the *sourcefs* key in an item.
"""
return ["file"] + get_supported_filesystems_kernel()
def run():
"""
Unsquash filesystem.
@ -330,8 +358,7 @@ def run():
supported_filesystems = get_supported_filesystems()
unpack = list()
# Bail out before we start when there are obvious problems
for entry in job.configuration["unpack"]:
source = os.path.abspath(entry["source"])
sourcefs = entry["sourcefs"]
@ -340,14 +367,18 @@ def run():
utils.warning("The filesystem for \"{}\" ({}) is not supported".format(source, sourcefs))
return (_("Bad unsquash configuration"),
_("The filesystem for \"{}\" ({}) is not supported").format(source, sourcefs))
destination = os.path.abspath(root_mount_point + entry["destination"])
if not os.path.exists(source):
utils.warning("The source filesystem \"{}\" does not exist".format(source))
return (_("Bad unsquash configuration"),
_("The source filesystem \"{}\" does not exist").format(source))
unpack = list()
for entry in job.configuration["unpack"]:
source = os.path.abspath(entry["source"])
sourcefs = entry["sourcefs"]
destination = os.path.abspath(root_mount_point + entry["destination"])
if not os.path.isdir(destination):
utils.warning(("The destination \"{}\" in the target system is not a directory").format(destination))
return (_("Bad unsquash configuration"),

View File

@ -9,32 +9,59 @@
# target dir relative to rootMountPoint.
---
unpack:
# Each list item is unpacked, in order, to the target system.
#
# Each list item has the following attributes:
# source: path relative to the live / intstalling system to the image
# sourcefs: ext4 or squashfs (may be others if mount supports it)
# sourcefs: the type of the source files; valid entries are
# - *ext4* (copies the filesystem contents)
# - *squashfs* (unsquashes)
# - *file* (copies a file or directory)
# - (may be others if mount supports it)
# destination: path relative to rootMountPoint (so in the target
# system) where this filesystem is unpacked.
# system) where this filesystem is unpacked. It may be an
# empty string, which effectively is / (the root) of the target
# system.
#
# EXAMPLES
#
# Usually you list a filesystem image to unpack; you can use
# squashfs or an ext4 image.
#
# - source: "/path/to/filesystem.sqfs"
# sourcefs: "squashfs"
# destination: ""
# You can list more than one filesystem.
#
# Multiple entries are unpacked in-order
#
# - source: "/path/to/another/filesystem.img"
# sourcefs: "ext4"
# destination: ""
# - source: "/path/to/another/filesystem2.img"
# sourcefs: "ext4"
# destination: "/usr/lib/extra"
#
# You can list filesystem source paths relative to the Calamares run
# directory, if you use -d (this is only useful for testing, though).
- source: "_root-image_"
sourcefs: "squashfs"
destination: ""
- source: "_desktop-image_"
sourcefs: "squashfs"
#
# - source: ./example.sqfs
# sourcefs: squashfs
# destination: ""
#
# You can list individual files (copied one-by-one), or directories
# (the files inside this directory are copied directly to the destination,
# so no "dummycpp/" subdirectory is created in this example).
# Do note that the target directory must exist already (e.g. from
# extracting some other filesystem).
#
# - source: ../CHANGES
# sourcefs: file
# destination: "/tmp/derp"
# - source: ../src/modules/dummycpp
# sourcefs: file
# destination: "/tmp/derp"
unpack:
- source: ../CHANGES
sourcefs: file
destination: "/tmp"

View File

@ -173,7 +173,7 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap )
}
}
QString shell( QLatin1Literal( "/bin/bash" ) ); // as if it's not set at all
QString shell( QLatin1String( "/bin/bash" ) ); // as if it's not set at all
if ( configurationMap.contains( "userShell" ) )
shell = CalamaresUtils::getString( configurationMap, "userShell" );
// Now it might be explicitly set to empty, which is ok