From 75fd1dd114fdac40ed3528a7791a9acbdd9f7f1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin.noel@collabora.com>
Date: Wed, 16 Sep 2020 12:46:28 +0200
Subject: [PATCH 01/22] [partition] Correctly handle percentage-define
 partitions

 * Use the minSize when the target storage is smaller than the sum of sizes
 * Percentage-defined partitions should be computed after setting hard-defined ones

This fixes issues when 0 byte partitions were created when the disk is too small.
Also fixes an issue with percent-defined partitions being forced to be defined at the end of the disk.
---
 .../partition/core/PartitionLayout.cpp        | 118 +++++++++++++-----
 1 file changed, 88 insertions(+), 30 deletions(-)

diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp
index aceda2d72..eaed27af6 100644
--- a/src/modules/partition/core/PartitionLayout.cpp
+++ b/src/modules/partition/core/PartitionLayout.cpp
@@ -164,22 +164,36 @@ PartitionLayout::execute( Device* dev,
                           const PartitionRole& role )
 {
     QList< Partition* > partList;
+    // Map each partition entry to its requested size (0 when calculated later)
+    QMap< const PartitionLayout::PartitionEntry *, qint64 > partSizeMap;
     qint64 minSize, maxSize, end;
     qint64 totalSize = lastSector - firstSector + 1;
     qint64 availableSize = totalSize;
 
-    // TODO: Refine partition sizes to make sure there is room for every partition
-    // Use a default (200-500M ?) minimum size for partition without minSize
-
-    foreach ( const PartitionLayout::PartitionEntry& part, m_partLayout )
+    // Let's check if we have enough space for each partSize
+    for( const PartitionLayout::PartitionEntry& part : m_partLayout )
     {
-        Partition* currentPartition = nullptr;
-
         qint64 size = -1;
         // Calculate partition size
+
         if ( part.partSize.isValid() )
         {
-            size = part.partSize.toSectors( totalSize, dev->logicalSize() );
+            // We need to ignore the percent-defined
+            if ( part.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent)
+            {
+                size = part.partSize.toSectors( totalSize, dev->logicalSize() );
+            }
+            else
+            {
+                if ( part.partMinSize.isValid() )
+                {
+                    size = part.partMinSize.toSectors( totalSize, dev->logicalSize() );
+                }
+                else
+                {
+                    size = 0;
+                }
+            }
         }
         else
         {
@@ -187,37 +201,81 @@ PartitionLayout::execute( Device* dev,
             continue;
         }
 
-        if ( part.partMinSize.isValid() )
-        {
-            minSize = part.partMinSize.toSectors( totalSize, dev->logicalSize() );
-        }
-        else
-        {
-            minSize = 0;
-        }
+        partSizeMap.insert (&part, size);
+        availableSize -= size;
+    }
 
-        if ( part.partMaxSize.isValid() )
-        {
-            maxSize = part.partMaxSize.toSectors( totalSize, dev->logicalSize() );
-        }
-        else
+    // Use partMinSize and see if we can do better afterward.
+    if (availableSize < 0)
+    {
+        availableSize = totalSize;
+        for( const PartitionLayout::PartitionEntry& part : m_partLayout )
         {
-            maxSize = availableSize;
+            qint64 size;
+
+            if ( part.partMinSize.isValid() )
+            {
+                size = part.partMinSize.toSectors( totalSize, dev->logicalSize() );
+            }
+            else if ( part.partSize.isValid() )
+            {
+                if ( part.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent)
+                {
+                    size = part.partSize.toSectors( totalSize, dev->logicalSize() );
+                }
+                else
+                {
+                    size = 0;
+                }
+            }
+            else
+            {
+                size = 0;
+            }
+
+            partSizeMap.insert (&part, size);
+            availableSize -= size;
         }
+    }
 
-        // Make sure we never go under minSize once converted to sectors
-        if ( maxSize < minSize )
+    // Assign size for percentage-defined partitions
+    for( const PartitionLayout::PartitionEntry& part : m_partLayout )
+    {
+        if ( part.partSize.unit() == CalamaresUtils::Partition::SizeUnit::Percent)
         {
-            cWarning() << "Partition" << part.partMountPoint << "max size (" << maxSize << "sectors) is < min size ("
-                       << minSize << "sectors), using min size";
-            maxSize = minSize;
+            qint64 size = partSizeMap.value (&part);
+            size = part.partSize.toSectors( availableSize + size, dev->logicalSize() );
+            partSizeMap.insert (&part, size);
+            if ( part.partMinSize.isValid() )
+            {
+                qint64 minSize = part.partMinSize.toSectors( totalSize, dev->logicalSize() );
+                if (minSize > size)
+                {
+                    size = minSize;
+                }
+            }
+            if ( part.partMaxSize.isValid() )
+            {
+                qint64 maxSize = part.partMaxSize.toSectors( totalSize, dev->logicalSize() );
+                if (maxSize < size)
+                {
+                    size = maxSize;
+                }
+            }
         }
+    }
+
+    availableSize = totalSize;
+
+    // TODO: Refine partition sizes to make sure there is room for every partition
+    // Use a default (200-500M ?) minimum size for partition without minSize
+
+    for( const PartitionLayout::PartitionEntry& part : m_partLayout )
+    {
+        qint64 size = partSizeMap.value (&part);
+        Partition* currentPartition = nullptr;
 
         // Adjust partition size based on user-defined boundaries and available space
-        if ( size < minSize )
-        {
-            size = minSize;
-        }
         if ( size > maxSize )
         {
             size = maxSize;

From 4778687f145b9c7743e4c6aa2e7c7785e15791c0 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Mon, 21 Sep 2020 16:56:59 +0200
Subject: [PATCH 02/22] Changes: credit for partition-size bugfixing

---
 CHANGES | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index 13dd3d779..ec6ad4b61 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,7 +10,7 @@ website will have to do for older versions.
 # 3.2.31 (unreleased) #
 
 This release contains contributions from (alphabetically by first name):
- - No external contributors yet
+ - Corentin Noël
 
 ## Core ##
  - No core changes yet

From cadd9765dbf8a3dda2bb2b3ecb43db528e5119d1 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Mon, 21 Sep 2020 17:01:50 +0200
Subject: [PATCH 03/22] [usersq] Remove trailing .

---
 src/modules/usersq/usersq.qml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/usersq/usersq.qml b/src/modules/usersq/usersq.qml
index dcc4aa76a..6f1aaa137 100644
--- a/src/modules/usersq/usersq.qml
+++ b/src/modules/usersq/usersq.qml
@@ -223,7 +223,7 @@ Kirigami.ScrollablePage {
             visible: config.allowWeakPasswords
             //visible: false
             width: parent.width
-            text: qsTr("When this box is checked, password-strength checking is done and you will not be able to use a weak password..")
+            text: qsTr("When this box is checked, password-strength checking is done and you will not be able to use a weak password.")
             font.weight: Font.Thin
             font.pointSize: 8
             color: "#6D6D6D"

From 16b99940cea1506efc53aebb13b9a071fb2f813a Mon Sep 17 00:00:00 2001
From: Calamares CI <groot@kde.org>
Date: Mon, 21 Sep 2020 17:06:55 +0200
Subject: [PATCH 04/22] i18n: [calamares] Automatic merge of Transifex
 translations

---
 lang/calamares_az.ts    |  49 +++++++++++--------
 lang/calamares_az_AZ.ts |  55 ++++++++++++---------
 lang/calamares_ca.ts    |  16 +++---
 lang/calamares_da.ts    |  66 ++++++++++++++-----------
 lang/calamares_hi.ts    |  41 ++++++++++------
 lang/calamares_pt_BR.ts |  59 +++++++++++++---------
 lang/calamares_tg.ts    |  50 +++++++++++--------
 lang/calamares_zh_CN.ts | 106 +++++++++++++++++++++++-----------------
 8 files changed, 260 insertions(+), 182 deletions(-)

diff --git a/lang/calamares_az.ts b/lang/calamares_az.ts
index 85a3f82e7..3c315c924 100644
--- a/lang/calamares_az.ts
+++ b/lang/calamares_az.ts
@@ -1955,7 +1955,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>Üstünlük verdiyiniz bölgəni və ya cari mövqeyinizə əsaslanan standart bir bölgəni seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
@@ -1967,17 +1967,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>Bölgənizlə birlikdə üstünlük verdiyiniz zonanı seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>Zonalar</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>Dil və Yer ayarlarını aşağıda dəqiq tənzimləyə bilərsiniz.</translation>
     </message>
   </context>
   <context>
@@ -3799,7 +3799,16 @@ Output:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                      %3 üçün&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
+                      Müəliff hüquqları 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;
+                      Müəliff hüquqları 2017-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;8&lt;br/&gt;
+                      &lt;a href='https://calamares.io/team/'&gt;Calamares komandasına&lt;/a&gt; və
+                      &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;Calamares tərcümə komandasına&lt;/a&gt; təşəkkürlər.&lt;br/&gt;&lt;br/&gt;
+                      &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt; tərtibatı &lt;br/&gt;
+                      &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; - Liberating Software
+                      tərəfindən dəstəklənir.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3849,7 +3858,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>Yazı dili və variantını seçmək üçün üstünlük verdiyiniz klaviatura modelini seçin və ya avadanlıq tərəfindən aşkar edilən klaviaturaya əsaslanan standart birini seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3864,7 +3873,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>Klaviatura variantı</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3948,7 +3957,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>İnzibatçı tapşırıqlarını yerinə yetirmək və sistemə giriş üçün istifadəçi adını və istifadəçi hesabı məlumatlarını daxil edin</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3968,12 +3977,12 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>Giriş Adı</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>Əgər bu komputeri bir neçə şəxs istifadə ediləcəksə o zaman quraşdırmadan sonra birdən çox hesab yarada bilərsiniz.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3988,7 +3997,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>Əgər gizlədilməzsə komputer şəbəkədə bu adla görünəcək.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4008,27 +4017,27 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>Düzgün yazılmasını yoxlamaq üçün eyni şifrəni iki dəfə daxil edin. Güclü şifrə üçün rəqəm, hərf və durğu işarələrinin qarışıöğından istifadə edin. Şifrə ən azı səkkiz simvoldan uzun olmalı və müntəzəm olaraq dəyişdirilməlidir.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>Şifrənin keyfiyyətini yoxlamaq</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>Bu xana işarələnərsə şifrələrin etibatlılıq səviyyəsi yoxlanılacaq və siz zəif şifrədən istifadə edə bilməyəcəksiniz..</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>Şifrə soruşmadan sistemə daxil olmaq</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>İstifadəçi şifrəsini kök şifrəsi kimi istifadə etmək</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4038,22 +4047,22 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>Hesabınızı qorumaq üçün kök şifrəsini seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Kök Şifrəsi</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Kök Şifrəsini təkrar yazın</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>Düzgün yazılmasını yoxlamaq üçün eyni şifrəni iki dəfə daxil edin.</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_az_AZ.ts b/lang/calamares_az_AZ.ts
index 815ebc84b..1c0234ed5 100644
--- a/lang/calamares_az_AZ.ts
+++ b/lang/calamares_az_AZ.ts
@@ -6,7 +6,7 @@
     <message>
       <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="61"/>
       <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>Bu sistemin &lt;strong&gt;açılış mühiti&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Köhnə x86 sistemlər yalnız &lt;strong&gt;BIOS&lt;/strong&gt; dəstəkləyir.&lt;br&gt;Müasir sistemlər isə adətən &lt;strong&gt;EFI&lt;/strong&gt; istifadə edir, lakin açılış mühiti əgər uyğun rejimdə başladılmışsa, həmçinin BİOS istiafadə edə bilər.</translation>
+      <translation>Sistemin &lt;strong&gt;açılış mühiti&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Köhnə x86 sistemlər yalnız &lt;strong&gt;BIOS&lt;/strong&gt; dəstəkləyir.&lt;br&gt;Müasir sistemlər isə adətən &lt;strong&gt;EFI&lt;/strong&gt; istifadə edir, lakin açılış mühiti əgər uyğun rejimdə başladılmışsa, həmçinin BİOS istiafadə edə bilər.</translation>
     </message>
     <message>
       <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="71"/>
@@ -65,12 +65,12 @@
     <message>
       <location filename="../src/calamares/DebugWindow.ui" line="28"/>
       <source>GlobalStorage</source>
-      <translation>Ümumi yaddaş</translation>
+      <translation>ÜmumiYaddaş</translation>
     </message>
     <message>
       <location filename="../src/calamares/DebugWindow.ui" line="38"/>
       <source>JobQueue</source>
-      <translation>Tapşırıq sırası</translation>
+      <translation>TapşırıqSırası</translation>
     </message>
     <message>
       <location filename="../src/calamares/DebugWindow.ui" line="48"/>
@@ -1955,7 +1955,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>Üstünlük verdiyiniz bölgəni və ya cari mövqeyinizə əsaslanan standart bir bölgəni seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
@@ -1967,17 +1967,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.</transl
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>Bölgənizlə birlikdə üstünlük verdiyiniz zonanı seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>Zonalar</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>Dil və Yer ayarlarını aşağıda dəqiq tənzimləyə bilərsiniz.</translation>
     </message>
   </context>
   <context>
@@ -3799,7 +3799,16 @@ Output:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                      %3 üçün&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
+                      Müəliff hüquqları 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;
+                      Müəliff hüquqları 2017-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;8&lt;br/&gt;
+                      &lt;a href='https://calamares.io/team/'&gt;Calamares komandasına&lt;/a&gt; və
+                      &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;Calamares tərcümə komandasına&lt;/a&gt; təşəkkürlər.&lt;br/&gt;&lt;br/&gt;
+                      &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt; tərtibatı &lt;br/&gt;
+                      &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; - Liberating Software
+                      tərəfindən dəstəklənir.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3849,7 +3858,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>Yazı dili və variantını seçmək üçün üstünlük verdiyiniz klaviatura modelini seçin və ya avadanlıq tərəfindən aşkar edilən klaviaturaya əsaslanan standart birini seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3864,7 +3873,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>Klaviatura variantı</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3948,7 +3957,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>İnzibatçı tapşırıqlarını yerinə yetirmək və sistemə giriş üçün istifadəçi adını və istifadəçi hesabı məlumatlarını daxil edin</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3968,12 +3977,12 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>Giriş Adı</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>Əgər bu komputeri bir neçə şəxs istifadə ediləcəksə o zaman quraşdırmadan sonra birdən çox hesab yarada bilərsiniz.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3988,7 +3997,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>Əgər gizlədilməzsə komputer şəbəkədə bu adla görünəcək.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4008,27 +4017,27 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>Düzgün yazılmasını yoxlamaq üçün eyni şifrəni iki dəfə daxil edin. Güclü şifrə üçün rəqəm, hərf və durğu işarələrinin qarışıöğından istifadə edin. Şifrə ən azı səkkiz simvoldan uzun olmalı və müntəzəm olaraq dəyişdirilməlidir.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>Şifrənin keyfiyyətini yoxlamaq</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>Bu xana işarələnərsə şifrələrin etibatlılıq səviyyəsi yoxlanılacaq və siz zəif şifrədən istifadə edə bilməyəcəksiniz..</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>Şifrə soruşmadan sistemə daxil olmaq</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>İstifadəçi şifrəsini kök şifrəsi kimi istifadə etmək</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4038,22 +4047,22 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>Hesabınızı qorumaq üçün kök şifrəsini seçin.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Kök Şifrəsi</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Kök Şifrəsini təkrar yazın</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>Düzgün yazılmasını yoxlamaq üçün eyni şifrəni iki dəfə daxil edin.</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts
index 333d8e4f8..051279b28 100644
--- a/lang/calamares_ca.ts
+++ b/lang/calamares_ca.ts
@@ -2320,7 +2320,7 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="124"/>
       <source>What name do you want to use to log in?</source>
-      <translation>Quin nom voleu usar per iniciar la sessió d'usuari?</translation>
+      <translation>Quin nom voleu usar per iniciar la sessió?</translation>
     </message>
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="148"/>
@@ -2345,13 +2345,13 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="325"/>
       <source>Choose a password to keep your account safe.</source>
-      <translation>Trieu una contrasenya per tal de mantenir el compte d'usuari segur.</translation>
+      <translation>Trieu una contrasenya per tal de mantenir el compte segur.</translation>
     </message>
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="349"/>
       <location filename="../src/modules/users/page_usersetup.ui" line="374"/>
       <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>&lt;small&gt;Escriviu la mateixa contrasenya dues vegades, de manera que se'n puguin comprovar els errors de mecanografia. Una bona contrasenya contindrà una barreja de lletres, números i signes de puntuació, hauria de tenir un mínim de 8 caràcters i s'hauria de modificar a intervals regulars de temps.&lt;/small&gt;</translation>
+      <translation>&lt;small&gt;Escriviu la mateixa contrasenya dos cops per poder-ne comprovar els errors de mecanografia. Una bona contrasenya contindrà una barreja de lletres, números i signes de puntuació, hauria de tenir un mínim de 8 caràcters i s'hauria de modificar a intervals regulars.&lt;/small&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="355"/>
@@ -2394,7 +2394,7 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé
       <location filename="../src/modules/users/page_usersetup.ui" line="519"/>
       <location filename="../src/modules/users/page_usersetup.ui" line="544"/>
       <source>&lt;small&gt;Enter the same password twice, so that it can be checked for typing errors.&lt;/small&gt;</source>
-      <translation>&lt;small&gt;Escriviu la mateixa contrasenya dues vegades, per tal de poder-ne comprovar els errors de mecanografia.&lt;/small&gt;</translation>
+      <translation>&lt;small&gt;Escriviu la mateixa contrasenya dos cops per poder-ne comprovar els errors de mecanografia.&lt;/small&gt;</translation>
     </message>
   </context>
   <context>
@@ -3973,7 +3973,7 @@ La configuració pot continuar, però algunes característiques podrien estar in
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="80"/>
       <source>What name do you want to use to log in?</source>
-      <translation>Quin nom voleu usar per iniciar la sessió d'usuari?</translation>
+      <translation>Quin nom voleu usar per iniciar la sessió?</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
@@ -4003,7 +4003,7 @@ La configuració pot continuar, però algunes característiques podrien estar in
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
       <source>Choose a password to keep your account safe.</source>
-      <translation>Trieu una contrasenya per tal de mantenir el compte d'usuari segur.</translation>
+      <translation>Trieu una contrasenya per tal de mantenir el compte segur.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="166"/>
@@ -4018,7 +4018,7 @@ La configuració pot continuar, però algunes característiques podrien estar in
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation>Escriviu la mateixa contrasenya dues vegades, de manera que se'n puguin comprovar els errors de mecanografia. Una bona contrasenya ha de contenir una barreja de lletres, números i signes de puntuació, hauria de tenir un mínim de 8 caràcters i s'hauria de modificar a intervals regulars de temps.</translation>
+      <translation>Escriviu la mateixa contrasenya dos cops per poder-ne comprovar els errors de mecanografia. Una bona contrasenya ha de contenir una barreja de lletres, números i signes de puntuació, hauria de tenir un mínim de 8 caràcters i s'hauria de modificar a intervals regulars.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
@@ -4028,7 +4028,7 @@ La configuració pot continuar, però algunes característiques podrien estar in
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation>Quan aquesta casella està marcada, es comprova la fortalesa de la contrasenya i no en podreu fer una de dèbil.</translation>
+      <translation>Quan aquesta casella està marcada, es comprova la fortalesa de la contrasenya i no en podreu usar una de dèbil.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts
index 8920f7c85..d689dcefb 100644
--- a/lang/calamares_da.ts
+++ b/lang/calamares_da.ts
@@ -722,12 +722,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
     <message>
       <location filename="../src/modules/locale/Config.cpp" line="372"/>
       <source>The system language will be set to %1.</source>
-      <translation>Systemsproget vil blive sat til %1.</translation>
+      <translation>Systemets sprog indstilles til %1.</translation>
     </message>
     <message>
       <location filename="../src/modules/locale/Config.cpp" line="379"/>
       <source>The numbers and dates locale will be set to %1.</source>
-      <translation>Lokalitet for tal og datoer vil blive sat til %1.</translation>
+      <translation>Lokalitet for tal og datoer indstilles til %1.</translation>
     </message>
     <message>
       <location filename="../src/modules/netinstall/Config.cpp" line="38"/>
@@ -1548,12 +1548,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
     <message>
       <location filename="../src/modules/keyboard/KeyboardPage.cpp" line="206"/>
       <source>Set keyboard model to %1.&lt;br/&gt;</source>
-      <translation>Sæt tastaturmodel til %1.&lt;br/&gt;</translation>
+      <translation>Indstil tastaturmodel til %1.&lt;br/&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboard/KeyboardPage.cpp" line="210"/>
       <source>Set keyboard layout to %1/%2.</source>
-      <translation>Sæt tastaturlayout til %1/%2.</translation>
+      <translation>Indstil tastaturlayout til %1/%2.</translation>
     </message>
   </context>
   <context>
@@ -1711,7 +1711,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
     <message>
       <location filename="../src/modules/locale/LocalePage.cpp" line="124"/>
       <source>Region:</source>
-      <translation>Region:</translation>
+      <translation>Område:</translation>
     </message>
     <message>
       <location filename="../src/modules/locale/LocalePage.cpp" line="125"/>
@@ -1955,7 +1955,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>Vælg dit foretrukne område eller bruge den som er standard for din nuværende placering.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
@@ -1967,17 +1967,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>Vælg din foretrukne zone i dit område.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>Zoner</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>Du kan finjustere sprog- og lokalitetsindstillinger nedenfor.</translation>
     </message>
   </context>
   <context>
@@ -3215,7 +3215,7 @@ setting
     <message>
       <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="53"/>
       <source>Set keyboard model to %1, layout to %2-%3</source>
-      <translation>Sæt tastaturmodel til %1, layout til %2-%3</translation>
+      <translation>Indstil tastaturmodel til %1, layout til %2-%3</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="345"/>
@@ -3371,7 +3371,7 @@ setting
     <message>
       <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="34"/>
       <source>Set timezone to %1/%2</source>
-      <translation>Sæt tidszone til %1/%2</translation>
+      <translation>Indstil tidszone til %1/%2</translation>
     </message>
     <message>
       <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="62"/>
@@ -3680,7 +3680,7 @@ setting
       <location filename="../src/modules/welcome/WelcomePage.ui" line="79"/>
       <location filename="../src/modules/welcome/WelcomePage.ui" line="98"/>
       <source>Select application and system language</source>
-      <translation>Vælg program- og systemsprog</translation>
+      <translation>Vælg sprog for programmet og systemet</translation>
     </message>
     <message>
       <location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
@@ -3800,7 +3800,17 @@ setting
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                        for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
+                        Ophavsret 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;
+                        Ophavsret 2017-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;
+                        Tak til &lt;a href='https://calamares.io/team/'&gt;Calamares-teamet&lt;/a&gt;
+                        og &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;Calamares-oversætterteamet&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;
+                        Udviklingen af &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt;
+                        er sponsoreret af &lt;br/&gt;
+                        &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; -
+                        Liberating Software.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3850,7 +3860,7 @@ setting
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>Klik på din foretrukne tastaturmodel for at vælge layout og variant, eller brug den som er standard i det registrerede hardware</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3865,7 +3875,7 @@ setting
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>Tastaturvariant</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3949,7 +3959,7 @@ setting
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>Vælg dit brugernavn og loginoplysninger som bruges til at logge ind med og udføre administrative opgaver.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3969,12 +3979,12 @@ setting
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>Loginnavn</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>Hvis mere end én person bruger computeren, kan du oprette flere konti efter installationen.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3989,7 +3999,7 @@ setting
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>Navnet bruges, hvis du gør computeren synlig for andre på et netværk.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4009,27 +4019,27 @@ setting
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl. En god adgangskode indeholder en blanding af bogstaver, tal og specialtegn, og bør være mindst 8 tegn langt og bør skiftes jævnligt.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>Validér kvaliteten af adgangskoderne</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>Når boksen er tilvalgt, så foretages der tjek af adgangskodens styrke og du vil ikke være i stand til at bruge en svag adgangskode..</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>Log ind automatisk uden at spørge efter adgangskoden</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>Genbrug brugeradgangskode som root-adgangskode</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4039,22 +4049,22 @@ setting
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>Vælg en root-adgangskode til at holde din konto sikker</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Root-adgangskode</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Gentag root-adgangskode</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl.</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts
index 7e12a5c75..2546a5122 100644
--- a/lang/calamares_hi.ts
+++ b/lang/calamares_hi.ts
@@ -1977,7 +1977,7 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>भाषा व स्थानिकी हेतु निम्नलिखित सेटिंग्स उपयोग करें।</translation>
     </message>
   </context>
   <context>
@@ -3798,7 +3798,18 @@ Output:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                        के लिए %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
+                        प्रतिलिप्याधिकार 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;
+                        प्रतिलिप्याधिकार 2017-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;
+                        &lt;a href='https://calamares.io/team/'&gt;Calamares  टीम&lt;/a&gt; 
+                         व &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;Calamares 
+                        अनुवादक टीम&lt;/a&gt;को धन्यवाद।&lt;br/&gt;&lt;br/&gt;
+                        &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt; 
+                         का विकास &lt;br/&gt;
+                        &lt;a href='http://www.blue-systems.com/'&gt;ब्लू सिस्टम्स&lt;/a&gt; - 
+                        लिब्रेटिंग सॉफ्टवेयर द्वारा प्रायोजित है।</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3848,7 +3859,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>इच्छित अभिन्यास व प्रकार हेतु कुंजीपटल मॉडल पर क्लिक चुनें या फिर हार्डवेयर आधारित डिफ़ॉल्ट मॉडल उपयोग करें।</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3947,7 +3958,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>लॉगिन एवं प्रशासक कार्यों हेतु उपयोक्ता नाम इत्यादि चुनें।</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3972,7 +3983,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>यदि एक से अधिक व्यक्ति इस कंप्यूटर का उपयोग करेंगे, तो आप इंस्टॉल के उपरांत एकाधिक अकाउंट बना सकते हैं।</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3987,7 +3998,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>यदि आपका कंप्यूटर किसी नेटवर्क पर दृश्यमान होता है, तो यह नाम उपयोग किया जाएगा।</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4007,27 +4018,27 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>एक ही कूटशब्द दो बार दर्ज़ करें, ताकि उसे टाइप त्रुटि हेतु जाँचा जा सके। एक अच्छे कूटशब्द में अक्षर, अंक व विराम चिन्हों का मेल होता है, उसमें कम-से-कम आठ अक्षर होने चाहिए, और उसे नियमित अंतराल पर बदलते रहना चाहिए।</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>कूटशब्द गुणवत्ता प्रमाणीकरण</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>यह बॉक्स टिक करने के परिणाम स्वरुप कूटशब्द-क्षमता की जाँच होगी व आप कमज़ोर कूटशब्द उपयोग नहीं कर पाएंगे..</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>कूटशब्द बिना पूछे ही स्वतः लॉग इन करें</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>रुट कूटशब्द हेतु भी उपयोक्ता कूटशब्द उपयोग करें</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4037,22 +4048,22 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>अकाउंट सुरक्षा हेतु रुट कूटशब्द चुनें।</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>रुट कूटशब्द</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>रुट कूटशब्द पुनः दर्ज करें</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>समान कूटशब्द दो बार दर्ज करें, ताकि टाइपिंग त्रुटि हेतु जाँच की जा सकें।</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts
index 39a2549d2..401e380f8 100644
--- a/lang/calamares_pt_BR.ts
+++ b/lang/calamares_pt_BR.ts
@@ -694,7 +694,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
     <message>
       <location filename="../src/libcalamares/utils/CommandList.cpp" line="143"/>
       <source>The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined.</source>
-      <translation>O comando é executado no ambiente do hospedeiro e precisa saber o caminho root, mas nenhum rootMountPoint foi definido.</translation>
+      <translation>O comando é executado no ambiente do hospedeiro e precisa saber o caminho raiz, mas nenhum rootMountPoint foi definido.</translation>
     </message>
     <message>
       <location filename="../src/libcalamares/utils/CommandList.cpp" line="156"/>
@@ -1955,7 +1955,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>Selecione sua Região preferida, ou use a padrão baseada no seu local atual.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
@@ -1967,17 +1967,17 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>Selecione a sua Zona preferida dentro da sua Região.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>Zonas</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>Você pode ajustar as configurações de Idioma e Localidade abaixo.</translation>
     </message>
   </context>
   <context>
@@ -2351,7 +2351,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
       <location filename="../src/modules/users/page_usersetup.ui" line="349"/>
       <location filename="../src/modules/users/page_usersetup.ui" line="374"/>
       <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>&lt;small&gt;Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação. Uma boa senha contém uma mistura de letras, números e sinais de pontuação, deve ter pelo menos oito caracteres e deve ser alterada em intervalos regulares.&lt;/small&gt;</translation>
+      <translation>&lt;small&gt;Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação. Uma boa senha contém uma mistura de letras, números e sinais de pontuação, deve ter pelo menos oito caracteres, e deve ser alterada em intervalos regulares.&lt;/small&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="355"/>
@@ -2368,7 +2368,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="455"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</source>
-      <translation>Quando esta caixa estiver marcada, será feita a verificação do tamanho da senha e você não poderá usar uma senha fraca.</translation>
+      <translation>Quando esta caixa estiver marcada, será feita a verificação da força da senha e você não poderá usar uma senha fraca.</translation>
     </message>
     <message>
       <location filename="../src/modules/users/page_usersetup.ui" line="458"/>
@@ -2394,7 +2394,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
       <location filename="../src/modules/users/page_usersetup.ui" line="519"/>
       <location filename="../src/modules/users/page_usersetup.ui" line="544"/>
       <source>&lt;small&gt;Enter the same password twice, so that it can be checked for typing errors.&lt;/small&gt;</source>
-      <translation>&lt;small&gt;Digite a mesma senha duas vezes para que possa ser verificada contra erros de digitação.&lt;/small&gt;</translation>
+      <translation>&lt;small&gt;Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação.&lt;/small&gt;</translation>
     </message>
   </context>
   <context>
@@ -3798,7 +3798,18 @@ Saída:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                        para %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-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;
+                        Obrigado ao &lt;a href='https://calamares.io/team/'&gt;time Calamares&lt;/a&gt;
+                        e ao &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;time de
+                        tradutores do Calamares&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;
+                        O desenvolvimento do &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt;
+                        é patrocinado pela &lt;br/&gt;
+                        &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; -
+                        Liberating Software.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3848,7 +3859,7 @@ Saída:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>Clique no seu modelo de teclado preferido para selecionar o layout e a variante, ou use o padrão baseado no hardware detectado.</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3863,7 +3874,7 @@ Saída:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>Variante do Teclado</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3947,7 +3958,7 @@ Saída:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>Escolha seu nome de usuário e credenciais para fazer login e executar tarefas de administrador</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3967,12 +3978,12 @@ Saída:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>Nome do Login</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>Se mais de uma pessoa for usar este computador, você poderá criar múltiplas contas após a instalação.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3987,7 +3998,7 @@ Saída:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>Este nome será usado se você fizer o computador ficar visível para outros numa rede.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4007,27 +4018,27 @@ Saída:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação. Uma boa senha contém uma mistura de letras, números e sinais de pontuação, deve ter pelo menos oito caracteres, e deve ser alterada em intervalos regulares.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>Validar qualidade das senhas</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>Quando esta caixa estiver marcada, será feita a verificação da força da senha e você não poderá usar uma senha fraca.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>Entrar automaticamente sem perguntar pela senha</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>Reutilizar a senha de usuário como senha de root</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4037,22 +4048,22 @@ Saída:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>Escolha uma senha de root para manter sua conta segura.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Senha de Root</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Repita a Senha de Root</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação.</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_tg.ts b/lang/calamares_tg.ts
index 251eb26e0..c493e99eb 100644
--- a/lang/calamares_tg.ts
+++ b/lang/calamares_tg.ts
@@ -1956,7 +1956,7 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>Минтақаи пазируфтаи худро интихоб намоед ё минтақаи стандартиро дар асоси ҷойгиршавии ҷории худ истифода баред.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
@@ -1968,17 +1968,17 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>Шаҳри пазируфтаи худро дар ҳудуди минтақаи худ интихоб намоед.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>Шаҳрҳо</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>Шумо метавонед танзимоти забон ва маҳаллисозиро дар зер дуруст кунед.</translation>
     </message>
   </context>
   <context>
@@ -3799,7 +3799,17 @@ Output:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                        барои %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;
+                        Ҳуқуқи муаллиф 2014-2017 Тео Марҷавак &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;
+                        Ҳуқуқи муаллиф 2017-2020 Адриан де Грут &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;
+                        Ташаккури зиёд ба &lt;a href='https://calamares.io/team/'&gt;дастаи Calamares&lt;/a&gt; 
+                        ва &lt;a href='https://www.transifex.com/calamares/calamares/'&gt;гурӯҳи тарҷумонони Calamares&lt;/a&gt; (тарҷумаи тоҷикӣ аз ҷониби Виктор Ибрагимов &amp;lt;victor.ibragimov@gmail.com&amp;gt;).&lt;br/&gt;&lt;br/&gt;
+                        Барномарезии насбкунандаи &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt; 
+                        аз тарафи &lt;br/&gt;
+                        &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; - 
+                        Liberating Software дастгирӣ карда мешавад.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3849,7 +3859,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>Намунаи клавиатураи пазируфтаи худро барои танзими тарҳбандӣ ва варианти он интихоб кунед ё клавиатураи муқаррареро дар асоси сахтафзори муайяншуда истифода баред.</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3864,7 +3874,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>Вариантҳои клавиатура</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3948,7 +3958,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>Барои ворид шудан ба низом ва иҷро кардани вазифаҳои маъмурӣ, номи корбар ва маълумоти корбариро муайян кунед.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3968,12 +3978,12 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>Номи корбар</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>Агар зиёда аз як корбар ин компютерро истифода барад, шумо метавонед баъд аз насбкунӣ якчанд ҳисобро эҷод намоед.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3988,7 +3998,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>Ин ном истифода мешавад, агар шумо компютери худро барои дигарон дар шабака намоён кунед.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4008,27 +4018,27 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>Ниҳонвожаи ягонаро ду маротиба ворид намоед, то ки он барои хатоҳои имлоӣ тафтиш карда шавад. Ниҳонвожаи хуб бояд дар омезиш калимаҳо, рақамҳо ва аломатҳои китобатиро дар бар гирад, ақаллан аз ҳашт аломат иборат шавад ва мунтазам иваз карда шавад.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>Санҷиши сифати ниҳонвожаҳо</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>Агар шумо ин имконро интихоб кунед, қувваи ниҳонвожа тафтиш карда мешавад ва шумо ниҳонвожаи заифро истифода карда наметавонед.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>Ба таври худкор бе дархости ниҳонвожа ворид карда шавад</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>Ниҳонвожаи корбар ҳам барои ниҳонвожаи root истифода карда шавад</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4038,22 +4048,22 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>Барои эмин нигоҳ доштани ҳисоби худ ниҳонвожаи root-ро интихоб намоед.</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Ниҳонвожаи root</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Ниҳонвожаи root-ро тасдиқ намоед</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>Ниҳонвожаи ягонаро ду маротиба ворид намоед, то ки он барои хатоҳои имлоӣ тафтиш карда шавад.</translation>
     </message>
   </context>
   <context>
diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts
index 4a0b3a108..2f743efcd 100644
--- a/lang/calamares_zh_CN.ts
+++ b/lang/calamares_zh_CN.ts
@@ -716,7 +716,7 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/locale/Config.cpp" line="334"/>
       <source>Set timezone to %1/%2.</source>
-      <translation type="unfinished"/>
+      <translation>将时区设置为 %1/%2 。</translation>
     </message>
     <message>
       <location filename="../src/modules/locale/Config.cpp" line="372"/>
@@ -778,22 +778,22 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/welcome/Config.cpp" line="244"/>
       <source>&lt;h1&gt;Welcome to the Calamares setup program for %1&lt;/h1&gt;</source>
-      <translation type="unfinished"/>
+      <translation>&lt;h1&gt;欢迎使用 %1 的 Calamares 安装程序&lt;/h1&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/welcome/Config.cpp" line="245"/>
       <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/Config.cpp" line="250"/>
       <source>&lt;h1&gt;Welcome to the Calamares installer for %1&lt;/h1&gt;</source>
-      <translation type="unfinished"/>
+      <translation>&lt;h1&gt;欢迎使用 %1 的 Calamares 安装程序&lt;/h1&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/welcome/Config.cpp" line="251"/>
       <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/users/Config.cpp" line="164"/>
@@ -803,7 +803,7 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/users/Config.cpp" line="170"/>
       <source>'%1' is not allowed as username.</source>
-      <translation type="unfinished"/>
+      <translation>'%1' 不允许作为用户名。</translation>
     </message>
     <message>
       <location filename="../src/modules/users/Config.cpp" line="177"/>
@@ -828,7 +828,7 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/users/Config.cpp" line="237"/>
       <source>'%1' is not allowed as hostname.</source>
-      <translation type="unfinished"/>
+      <translation>'%1' 不允许作为主机名。</translation>
     </message>
     <message>
       <location filename="../src/modules/users/Config.cpp" line="243"/>
@@ -1802,14 +1802,16 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/localeq/Map.qml" line="243"/>
       <source>Timezone: %1</source>
-      <translation type="unfinished"/>
+      <translation>时区: %1</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Map.qml" line="264"/>
       <source>Please select your preferred location on the map so the installer can suggest the locale
             and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
             to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.</source>
-      <translation type="unfinished"/>
+      <translation>请在地图上选择您的首选位置,安装程序可以为您提供可参考的区域
+设置和时区设置。 您可以在下面微调推荐的设置。 拖动以搜索地图,然后
+用 +/- 按钮进行放大/缩小,或使用鼠标滚动进行缩放。</translation>
     </message>
   </context>
   <context>
@@ -1955,29 +1957,29 @@ The installer will quit and all changes will be lost.</source>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="37"/>
       <source>Select your preferred Region, or use the default one based on your current location.</source>
-      <translation type="unfinished"/>
+      <translation>请选择一个地区或者使用基于您当前位置的默认值。</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="94"/>
       <location filename="../src/modules/localeq/Offline.qml" line="169"/>
       <location filename="../src/modules/localeq/Offline.qml" line="213"/>
       <source>Timezone: %1</source>
-      <translation type="unfinished"/>
+      <translation>时区: %1</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="111"/>
       <source>Select your preferred Zone within your Region.</source>
-      <translation type="unfinished"/>
+      <translation>在您的区域中选择您的首选区域。</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="182"/>
       <source>Zones</source>
-      <translation type="unfinished"/>
+      <translation>区域</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/Offline.qml" line="229"/>
       <source>You can fine-tune Language and Locale settings below.</source>
-      <translation type="unfinished"/>
+      <translation>您可以在下面微调“语言”和“区域设置”。</translation>
     </message>
   </context>
   <context>
@@ -2882,7 +2884,8 @@ Output:
       <location filename="../src/modules/welcomeq/Recommended.qml" line="40"/>
       <source>&lt;p&gt;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.&lt;/p&gt;</source>
-      <translation type="unfinished"/>
+      <translation>&lt;p&gt;此计算机不满足安装 %1 的某些推荐配置。&lt;br/&gt;
+        安装可以继续,但是一些特性可能被禁用。&lt;/p&gt;</translation>
     </message>
   </context>
   <context>
@@ -2993,13 +2996,15 @@ Output:
       <location filename="../src/modules/welcomeq/Requirements.qml" line="38"/>
       <source>&lt;p&gt;This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;
         Installation cannot continue.&lt;/p&gt;</source>
-      <translation type="unfinished"/>
+      <translation>&lt;p&gt;此计算机不满足安装 %1 的最低配置。&lt;br/&gt;
+        安装无法继续。&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/Requirements.qml" line="40"/>
       <source>&lt;p&gt;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.&lt;/p&gt;</source>
-      <translation type="unfinished"/>
+      <translation>&lt;p&gt;此计算机不满足安装 %1 的某些推荐配置。&lt;br/&gt;
+        安装可以继续,但是一些特性可能被禁用。&lt;/p&gt;</translation>
     </message>
   </context>
   <context>
@@ -3467,28 +3472,28 @@ Output:
     <message>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="122"/>
       <source>KDE user feedback</source>
-      <translation type="unfinished"/>
+      <translation>KDE 用户反馈</translation>
     </message>
     <message>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="128"/>
       <source>Configuring KDE user feedback.</source>
-      <translation type="unfinished"/>
+      <translation>配置 KDE 用户反馈。</translation>
     </message>
     <message>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="150"/>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="156"/>
       <source>Error in KDE user feedback configuration.</source>
-      <translation type="unfinished"/>
+      <translation>KDE 用户反馈配置中存在错误。</translation>
     </message>
     <message>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="151"/>
       <source>Could not configure KDE user feedback correctly, script error %1.</source>
-      <translation type="unfinished"/>
+      <translation>无法正确 KDE 用户反馈,脚本错误代码 %1。</translation>
     </message>
     <message>
       <location filename="../src/modules/tracking/TrackingJobs.cpp" line="157"/>
       <source>Could not configure KDE user feedback correctly, Calamares error %1.</source>
-      <translation type="unfinished"/>
+      <translation>无法正确 KDE 用户反馈,Calamares 错误代码 %1。</translation>
     </message>
   </context>
   <context>
@@ -3550,17 +3555,17 @@ Output:
     <message>
       <location filename="../src/modules/tracking/TrackingPage.cpp" line="91"/>
       <source>By selecting this you will send information about your installation and hardware. This information will only be sent &lt;b&gt;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="94"/>
       <source>By selecting this you will periodically send information about your &lt;b&gt;machine&lt;/b&gt; installation, hardware and applications, to %1.</source>
-      <translation type="unfinished"/>
+      <translation>通过选择此选项,您将定期将有关您 &lt;b&gt;计算机&lt;/b&gt;的安装,硬件和应用程序的信息发送到 %1。</translation>
     </message>
     <message>
       <location filename="../src/modules/tracking/TrackingPage.cpp" line="98"/>
       <source>By selecting this you will regularly send information about your &lt;b&gt;user&lt;/b&gt; installation, hardware, applications and application usage patterns, to %1.</source>
-      <translation type="unfinished"/>
+      <translation>通过选择此选项,您将定期将有关&lt;b&gt;用户&lt;/b&gt; 安装,硬件,应用程序和应用程序使用方式的信息发送到 %1。</translation>
     </message>
   </context>
   <context>
@@ -3797,7 +3802,18 @@ Output:
                         development is sponsored by &lt;br/&gt;
                         &lt;a href='http://www.blue-systems.com/'&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;
+                        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-2020 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;
+                        致谢 &lt;a href='https://calamares.io/team/'&gt; Calamares 开发团队&lt;/a&gt; 
+                        和&lt;a href='https://www.transifex.com/calamares/calamares/'&gt;Calamares 
+                        翻译团队&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;
+                        &lt;a href='https://calamares.io/'&gt;Calamares&lt;/a&gt; 
+                        开发赞助来自&lt;br/&gt;
+                        &lt;a href='http://www.blue-systems.com/'&gt;Blue Systems&lt;/a&gt; -
+                        Liberating Software.</translation>
     </message>
     <message>
       <location filename="../src/modules/welcomeq/about.qml" line="96"/>
@@ -3811,13 +3827,15 @@ Output:
       <location filename="../src/modules/localeq/i18n.qml" line="46"/>
       <source>&lt;h1&gt;Languages&lt;/h1&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>
-      <translation type="unfinished"/>
+      <translation>&lt;h1&gt;语言&lt;/h1&gt; &lt;/br&gt;
+                   系统语言区域设置会影响部份命令行用户界面的语言及字符集。 当前设置是 &lt;strong&gt;%1&lt;/strong&gt;.</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/i18n.qml" line="106"/>
       <source>&lt;h1&gt;Locales&lt;/h1&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>
-      <translation type="unfinished"/>
+      <translation>&lt;h1&gt;区域&lt;/h1&gt; &lt;/br&gt;
+                    系统区域设置会影响数字和日期格式。 当前设置是 &lt;strong&gt;%1&lt;/strong&gt;。</translation>
     </message>
     <message>
       <location filename="../src/modules/localeq/i18n.qml" line="158"/>
@@ -3845,7 +3863,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
       <source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
-      <translation type="unfinished"/>
+      <translation>单击您的首选键盘型号以选择布局和变体,或根据检测到的硬件使用默认键盘。</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
@@ -3860,7 +3878,7 @@ Output:
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="276"/>
       <source>Keyboard Variant</source>
-      <translation type="unfinished"/>
+      <translation>键盘变体</translation>
     </message>
     <message>
       <location filename="../src/modules/keyboardq/keyboardq.qml" line="386"/>
@@ -3873,7 +3891,7 @@ Output:
     <message>
       <location filename="../src/modules/localeq/localeq.qml" line="81"/>
       <source>Change</source>
-      <translation type="unfinished"/>
+      <translation>更改</translation>
     </message>
   </context>
   <context>
@@ -3945,7 +3963,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="36"/>
       <source>Pick your user name and credentials to login and perform admin tasks</source>
-      <translation type="unfinished"/>
+      <translation>选择您的用户名和凭据登录并执行管理任务</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="52"/>
@@ -3965,12 +3983,12 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="87"/>
       <source>Login Name</source>
-      <translation type="unfinished"/>
+      <translation>登录名</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="103"/>
       <source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
-      <translation type="unfinished"/>
+      <translation>如果有多人要使用此计算机,您可以在安装后创建多个账户。</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="118"/>
@@ -3985,7 +4003,7 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="140"/>
       <source>This name will be used if you make the computer visible to others on a network.</source>
-      <translation type="unfinished"/>
+      <translation>将计算机设置为对其他网络上计算机可见时将使用此名称。</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="155"/>
@@ -4005,27 +4023,27 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="204"/>
       <source>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.</source>
-      <translation type="unfinished"/>
+      <translation>输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="216"/>
       <source>Validate passwords quality</source>
-      <translation type="unfinished"/>
+      <translation>验证密码质量</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="226"/>
       <source>When this box is checked, password-strength checking is done and you will not be able to use a weak password..</source>
-      <translation type="unfinished"/>
+      <translation>若选中此项,密码强度检测会开启,你将不被允许使用弱密码..</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="234"/>
       <source>Log in automatically without asking for the password</source>
-      <translation type="unfinished"/>
+      <translation>不询问密码自动登录</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="243"/>
       <source>Reuse user password as root password</source>
-      <translation type="unfinished"/>
+      <translation>重用用户密码作为 root 密码</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="253"/>
@@ -4035,22 +4053,22 @@ Output:
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="268"/>
       <source>Choose a root password to keep your account safe.</source>
-      <translation type="unfinished"/>
+      <translation>选择一个 root 密码来保证您的账户安全。</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="279"/>
       <source>Root Password</source>
-      <translation type="unfinished"/>
+      <translation>Root 密码</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="298"/>
       <source>Repeat Root Password</source>
-      <translation type="unfinished"/>
+      <translation>重复 Root 密码</translation>
     </message>
     <message>
       <location filename="../src/modules/usersq/usersq.qml" line="318"/>
       <source>Enter the same password twice, so that it can be checked for typing errors.</source>
-      <translation type="unfinished"/>
+      <translation>输入相同密码两次,以检查输入错误。</translation>
     </message>
   </context>
   <context>

From 73d0afca433f0e7beddfd559a1122b1a05cc9b6a Mon Sep 17 00:00:00 2001
From: Calamares CI <groot@kde.org>
Date: Mon, 21 Sep 2020 17:06:56 +0200
Subject: [PATCH 05/22] i18n: [python] Automatic merge of Transifex
 translations

---
 lang/python/az/LC_MESSAGES/python.po    | 4 ++--
 lang/python/az_AZ/LC_MESSAGES/python.po | 4 ++--
 lang/python/bg/LC_MESSAGES/python.po    | 4 ++--
 lang/python/da/LC_MESSAGES/python.po    | 4 ++--
 lang/python/id/LC_MESSAGES/python.po    | 2 +-
 lang/python/tg/LC_MESSAGES/python.po    | 4 ++--
 6 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/lang/python/az/LC_MESSAGES/python.po b/lang/python/az/LC_MESSAGES/python.po
index e531eea04..935c14178 100644
--- a/lang/python/az/LC_MESSAGES/python.po
+++ b/lang/python/az/LC_MESSAGES/python.po
@@ -320,11 +320,11 @@ msgstr "Aparat saatını ayarlamaq."
 
 #: src/modules/mkinitfs/main.py:27
 msgid "Creating initramfs with mkinitfs."
-msgstr ""
+msgstr "mkinitfs ilə initramfs yaradılır"
 
 #: src/modules/mkinitfs/main.py:49
 msgid "Failed to run mkinitfs on the target"
-msgstr ""
+msgstr "Hədəfdə mkinitfs başlatmaq baş tutmadı"
 
 #: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
 msgid "The exit code was {}"
diff --git a/lang/python/az_AZ/LC_MESSAGES/python.po b/lang/python/az_AZ/LC_MESSAGES/python.po
index 5b8ed5c5d..f0643f785 100644
--- a/lang/python/az_AZ/LC_MESSAGES/python.po
+++ b/lang/python/az_AZ/LC_MESSAGES/python.po
@@ -320,11 +320,11 @@ msgstr "Aparat saatını ayarlamaq."
 
 #: src/modules/mkinitfs/main.py:27
 msgid "Creating initramfs with mkinitfs."
-msgstr ""
+msgstr "mkinitfs ilə initramfs yaradılır."
 
 #: src/modules/mkinitfs/main.py:49
 msgid "Failed to run mkinitfs on the target"
-msgstr ""
+msgstr "Hədəfdə dracut başladılmadı"
 
 #: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
 msgid "The exit code was {}"
diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po
index a1d4b1e0f..bed50471b 100644
--- a/lang/python/bg/LC_MESSAGES/python.po
+++ b/lang/python/bg/LC_MESSAGES/python.po
@@ -4,7 +4,7 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Georgi Georgiev <georgiev_1994@abv.bg>, 2020
+# Georgi Georgiev, 2020
 # 
 #, fuzzy
 msgid ""
@@ -13,7 +13,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-09-03 21:19+0200\n"
 "PO-Revision-Date: 2017-08-09 10:34+0000\n"
-"Last-Translator: Georgi Georgiev <georgiev_1994@abv.bg>, 2020\n"
+"Last-Translator: Georgi Georgiev, 2020\n"
 "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po
index 469f12604..92b1fcab9 100644
--- a/lang/python/da/LC_MESSAGES/python.po
+++ b/lang/python/da/LC_MESSAGES/python.po
@@ -319,11 +319,11 @@ msgstr "Indstiller hardwareur."
 
 #: src/modules/mkinitfs/main.py:27
 msgid "Creating initramfs with mkinitfs."
-msgstr ""
+msgstr "Opretter initramfs med mkinitfs."
 
 #: src/modules/mkinitfs/main.py:49
 msgid "Failed to run mkinitfs on the target"
-msgstr ""
+msgstr "Kunne ikke køre mkinitfs på målet"
 
 #: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
 msgid "The exit code was {}"
diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po
index 8f492f1a7..00fa1341d 100644
--- a/lang/python/id/LC_MESSAGES/python.po
+++ b/lang/python/id/LC_MESSAGES/python.po
@@ -5,7 +5,7 @@
 # 
 # Translators:
 # Choiril Abdul, 2018
-# Harry Suryapambagya <harsxv@gmail.com>, 2018
+# harsxv <harsxv@gmail.com>, 2018
 # Wantoyèk <wantoyek@gmail.com>, 2018
 # 
 #, fuzzy
diff --git a/lang/python/tg/LC_MESSAGES/python.po b/lang/python/tg/LC_MESSAGES/python.po
index 5e5e74b5f..ca8d8d45a 100644
--- a/lang/python/tg/LC_MESSAGES/python.po
+++ b/lang/python/tg/LC_MESSAGES/python.po
@@ -321,11 +321,11 @@ msgstr "Танзимкунии соати сахтафзор."
 
 #: src/modules/mkinitfs/main.py:27
 msgid "Creating initramfs with mkinitfs."
-msgstr ""
+msgstr "Эҷодкунии initramfs бо mkinitfs."
 
 #: src/modules/mkinitfs/main.py:49
 msgid "Failed to run mkinitfs on the target"
-msgstr ""
+msgstr "mkinitfs дар низоми интихобшуда иҷро нашуд"
 
 #: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
 msgid "The exit code was {}"

From ac0b2092f2bd453f13c914e53a886ecb196397e6 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Mon, 21 Sep 2020 17:47:25 +0200
Subject: [PATCH 06/22] [partition] Remove superfluous logging

---
 src/modules/partition/core/BootLoaderModel.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/modules/partition/core/BootLoaderModel.cpp b/src/modules/partition/core/BootLoaderModel.cpp
index f9743291f..08b0283b3 100644
--- a/src/modules/partition/core/BootLoaderModel.cpp
+++ b/src/modules/partition/core/BootLoaderModel.cpp
@@ -40,7 +40,6 @@ BootLoaderModel::~BootLoaderModel() {}
 void
 BootLoaderModel::init( const QList< Device* >& devices )
 {
-    cDebug() << "BLM::init with" << devices.count() << "devices" << rowCount() << "rows";
     beginResetModel();
     blockSignals( true );
 
@@ -64,7 +63,6 @@ BootLoaderModel::createMbrItems()
 void
 BootLoaderModel::update()
 {
-    cDebug() << "BLM::update holds" << m_devices.count() << "devices" << rowCount() << "rows";
     beginResetModel();
     blockSignals( true );
     updateInternal();

From 7c6783948aca1f97d957962d7656eff795af0943 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Mon, 21 Sep 2020 17:49:18 +0200
Subject: [PATCH 07/22] i18n: update Tajik translation

---
 lang/tz_tg.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/tz_tg.ts b/lang/tz_tg.ts
index 07c3bc368..a5888fb94 100644
--- a/lang/tz_tg.ts
+++ b/lang/tz_tg.ts
@@ -1762,7 +1762,7 @@
         <location filename="../src/libcalamares/locale/ZoneData_p.cxxtr" line="332"/>
         <source>New York</source>
         <comment>tz_names</comment>
-        <translation>Штати Ню-Йорк</translation>
+        <translation>Ню-Йорк</translation>
     </message>
     <message>
         <location filename="../src/libcalamares/locale/ZoneData_p.cxxtr" line="333"/>

From 53cb27ebc8957f19faae827e04c25484ca249482 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Mon, 21 Sep 2020 22:32:04 +0200
Subject: [PATCH 08/22] [calamares] Provide i18n context for "Key"

---
 src/calamares/VariantModel.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp
index 8b0378f03..c29c27fcf 100644
--- a/src/calamares/VariantModel.cpp
+++ b/src/calamares/VariantModel.cpp
@@ -229,11 +229,11 @@ VariantModel::headerData( int section, Qt::Orientation orientation, int role ) c
     {
         if ( section == 0 )
         {
-            return tr( "Key" );
+            return tr( "Key", "Column header for key/value" );
         }
         else if ( section == 1 )
         {
-            return tr( "Value" );
+            return tr( "Value", "Column header for key/value" );
         }
         else
         {

From 705756b9bb46e56074f2478eb139af15d43eca82 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 14:41:12 +0200
Subject: [PATCH 09/22] [libcalamaresui] Give UI chance to catch up before
 modules are done

---
 src/libcalamaresui/modulesystem/ModuleManager.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp
index 8c0f21f58..102ca9308 100644
--- a/src/libcalamaresui/modulesystem/ModuleManager.cpp
+++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp
@@ -124,7 +124,7 @@ ModuleManager::doInit()
     // At this point m_availableDescriptorsByModuleName is filled with
     // the modules that were found in the search paths.
     cDebug() << "Found" << m_availableDescriptorsByModuleName.count() << "modules";
-    emit initDone();
+    QTimer::singleShot( 10, this, &ModuleManager::initDone );
 }
 
 

From 8e9bf1c2a9c22279fee205028350215d7d56944c Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 16:24:45 +0200
Subject: [PATCH 10/22] [libcalamaresui] Another
 allow-to-fall-back-to-eventloop

With 1 CPU, Calamares still spawns 9 threads or so: eventloop,
dbus loop, QML loop, ... many of those are invisible to the
application. Contention occurs on startup when the UI is constructed,
and we end up with the module manager creating widgets alongside,
or ahead of, the main window UI. This can result in deadlock:

 - in CalamaresApplication::initViewSteps
 - in QML imports

This is partly because the signal-slots connections get "deep":
from loadModules() we emit *modulesLoaded* which ends up showing
the main window in initViewSteps(). Avoid this with a QTimer:
drop back to the event loop and release whatever locks are held,
so the QML thread can get on with it already. Then the timer
goes off and the view steps are created.
---
 src/libcalamaresui/modulesystem/ModuleManager.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp
index 102ca9308..d630e67f2 100644
--- a/src/libcalamaresui/modulesystem/ModuleManager.cpp
+++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp
@@ -281,11 +281,13 @@ ModuleManager::loadModules()
     if ( !failedModules.isEmpty() )
     {
         ViewManager::instance()->onInitFailed( failedModules );
-        emit modulesFailed( failedModules );
+        QTimer::singleShot( 10, [=]() {
+            emit modulesFailed( failedModules );
+        } );
     }
     else
     {
-        emit modulesLoaded();
+        QTimer::singleShot( 10, this, &ModuleManager::modulesLoaded );
     }
 }
 

From fbab554dfa4e5295e7783f98c4e1f9ee23cd2b22 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 21:54:10 +0200
Subject: [PATCH 11/22] [libcalamares] Remove unused parameter for PythonJob

- parameter instanceKey was left over from previous work that
  special-cased the weight of Python modules.
- while here, consistently do `~T() override`
---
 src/libcalamares/PythonJob.cpp                      | 3 +--
 src/libcalamares/PythonJob.h                        | 5 ++---
 src/libcalamaresui/modulesystem/PythonJobModule.cpp | 2 +-
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp
index 1f4680017..cd066b8bd 100644
--- a/src/libcalamares/PythonJob.cpp
+++ b/src/libcalamares/PythonJob.cpp
@@ -160,8 +160,7 @@ struct PythonJob::Private
     bp::object m_prettyStatusMessage;
 };
 
-PythonJob::PythonJob( const ModuleSystem::InstanceKey& instance,
-                      const QString& scriptFile,
+PythonJob::PythonJob( const QString& scriptFile,
                       const QString& workingPath,
                       const QVariantMap& moduleConfiguration,
                       QObject* parent )
diff --git a/src/libcalamares/PythonJob.h b/src/libcalamares/PythonJob.h
index 5b5cfb7cc..04a0645ea 100644
--- a/src/libcalamares/PythonJob.h
+++ b/src/libcalamares/PythonJob.h
@@ -31,12 +31,11 @@ class PythonJob : public Job
 {
     Q_OBJECT
 public:
-    explicit PythonJob( const ModuleSystem::InstanceKey& instance,
-                        const QString& scriptFile,
+    explicit PythonJob( const QString& scriptFile,
                         const QString& workingPath,
                         const QVariantMap& moduleConfiguration = QVariantMap(),
                         QObject* parent = nullptr );
-    virtual ~PythonJob() override;
+    ~PythonJob() override;
 
     QString prettyName() const override;
     QString prettyStatusMessage() const override;
diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp
index 20f8215d2..42acc0c69 100644
--- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp
+++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp
@@ -40,7 +40,7 @@ PythonJobModule::loadSelf()
         return;
     }
 
-    m_job = Calamares::job_ptr( new PythonJob( instanceKey(), m_scriptFileName, m_workingPath, m_configurationMap ) );
+    m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) );
     m_loaded = true;
 }
 

From fc2a5d145abf76798bc44dadacd851542fa3b5d4 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:00:30 +0200
Subject: [PATCH 12/22] [3rdparty] Warnings-- (override) in
 waitingspinnerwidget

---
 3rdparty/waitingspinnerwidget.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/3rdparty/waitingspinnerwidget.h b/3rdparty/waitingspinnerwidget.h
index c8c6b9687..d171e9beb 100644
--- a/3rdparty/waitingspinnerwidget.h
+++ b/3rdparty/waitingspinnerwidget.h
@@ -85,7 +85,7 @@ private slots:
     void rotate();
 
 protected:
-    void paintEvent(QPaintEvent *paintEvent);
+    void paintEvent(QPaintEvent *paintEvent) override;
 
 private:
     static int lineCountDistanceFromPrimary(int current, int primary,

From 5a75d685340d4e3944476897e2d45fa53d0e2230 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:08:40 +0200
Subject: [PATCH 13/22] [3rdparty] Warnings-- (override) in KDSAG

---
 3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h
index 8e7c7b498..f75825cef 100644
--- a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h
+++ b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h
@@ -41,7 +41,7 @@ public:
     explicit KDSingleApplicationGuard( Policy policy, QObject * parent=nullptr );
     explicit KDSingleApplicationGuard( const QStringList & arguments, QObject * parent=nullptr );
     explicit KDSingleApplicationGuard( const QStringList & arguments, Policy policy, QObject * parent=nullptr );
-    ~KDSingleApplicationGuard();
+    ~KDSingleApplicationGuard() override;
 
     bool isOperational() const;
 
@@ -70,7 +70,7 @@ public Q_SLOTS:
     void killOtherInstances();
 
 protected:
-    /*! \reimp */ bool event( QEvent * event );
+    /*! \reimp */ bool event( QEvent * event ) override;
 
 private:
 #ifndef Q_WS_WIN

From 0cffac10c6bf65794f9b2c3bb8e2410095c89d24 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:03:21 +0200
Subject: [PATCH 14/22] [libcalamares] Ignore more warnings for system header
 YAML

---
 src/libcalamares/utils/Yaml.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/libcalamares/utils/Yaml.h b/src/libcalamares/utils/Yaml.h
index 3922484ce..fa2121b75 100644
--- a/src/libcalamares/utils/Yaml.h
+++ b/src/libcalamares/utils/Yaml.h
@@ -38,6 +38,7 @@ class QFileInfo;
 #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
 #pragma clang diagnostic ignored "-Wshadow"
 #pragma clang diagnostic ignored "-Wfloat-equal"
+#pragma clang diagnostic ignored "-Wsuggest-destructor-override"
 #endif
 
 #include <yaml-cpp/yaml.h>

From 8b66009d5920917c6d79e6f8f8a136ca024c4c89 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:04:55 +0200
Subject: [PATCH 15/22] [libcalamares] Warnings-- in tests (~T() override)

---
 src/libcalamares/Tests.cpp              | 2 +-
 src/libcalamares/modulesystem/Tests.cpp | 2 +-
 src/libcalamares/utils/TestPaths.cpp    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp
index c7f1d6028..b5183bf8c 100644
--- a/src/libcalamares/Tests.cpp
+++ b/src/libcalamares/Tests.cpp
@@ -24,7 +24,7 @@ class TestLibCalamares : public QObject
     Q_OBJECT
 public:
     TestLibCalamares() {}
-    virtual ~TestLibCalamares() {}
+    ~TestLibCalamares() override {}
 
 private Q_SLOTS:
     void testGSModify();
diff --git a/src/libcalamares/modulesystem/Tests.cpp b/src/libcalamares/modulesystem/Tests.cpp
index 78d3b5077..48da558e2 100644
--- a/src/libcalamares/modulesystem/Tests.cpp
+++ b/src/libcalamares/modulesystem/Tests.cpp
@@ -20,7 +20,7 @@ class ModuleSystemTests : public QObject
     Q_OBJECT
 public:
     ModuleSystemTests() {}
-    virtual ~ModuleSystemTests() {}
+    ~ModuleSystemTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/libcalamares/utils/TestPaths.cpp b/src/libcalamares/utils/TestPaths.cpp
index f00349c8f..54c5fa859 100644
--- a/src/libcalamares/utils/TestPaths.cpp
+++ b/src/libcalamares/utils/TestPaths.cpp
@@ -26,7 +26,7 @@ class TestPaths : public QObject
     Q_OBJECT
 public:
     TestPaths() {}
-    virtual ~TestPaths() {}
+    ~TestPaths() override {}
 
 private Q_SLOTS:
     void initTestCase();

From 7d5a209dd0ba553f95c2f2e0f78ae96165d28ff7 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:14:41 +0200
Subject: [PATCH 16/22] [modules] Warnings-- in tests (~Test() override)

---
 src/modules/hostinfo/Tests.cpp           | 2 +-
 src/modules/keyboard/Tests.cpp           | 2 +-
 src/modules/machineid/Tests.cpp          | 2 +-
 src/modules/netinstall/Tests.cpp         | 2 +-
 src/modules/users/TestCreateUserJob.cpp  | 2 +-
 src/modules/users/TestSetHostNameJob.cpp | 2 +-
 src/modules/users/Tests.cpp              | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp
index 724340269..f3863d98b 100644
--- a/src/modules/hostinfo/Tests.cpp
+++ b/src/modules/hostinfo/Tests.cpp
@@ -22,7 +22,7 @@ class HostInfoTests : public QObject
     Q_OBJECT
 public:
     HostInfoTests() {}
-    virtual ~HostInfoTests() {}
+    ~HostInfoTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/modules/keyboard/Tests.cpp b/src/modules/keyboard/Tests.cpp
index 16983685a..4c6d0cebb 100644
--- a/src/modules/keyboard/Tests.cpp
+++ b/src/modules/keyboard/Tests.cpp
@@ -18,7 +18,7 @@ class KeyboardLayoutTests : public QObject
     Q_OBJECT
 public:
     KeyboardLayoutTests() {}
-    virtual ~KeyboardLayoutTests() {}
+    ~KeyboardLayoutTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/modules/machineid/Tests.cpp b/src/modules/machineid/Tests.cpp
index 13cce3de7..0ad3e9e8b 100644
--- a/src/modules/machineid/Tests.cpp
+++ b/src/modules/machineid/Tests.cpp
@@ -27,7 +27,7 @@ class MachineIdTests : public QObject
     Q_OBJECT
 public:
     MachineIdTests() {}
-    virtual ~MachineIdTests() {}
+    ~MachineIdTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/modules/netinstall/Tests.cpp b/src/modules/netinstall/Tests.cpp
index 569d47d15..0b59658c1 100644
--- a/src/modules/netinstall/Tests.cpp
+++ b/src/modules/netinstall/Tests.cpp
@@ -21,7 +21,7 @@ class ItemTests : public QObject
     Q_OBJECT
 public:
     ItemTests();
-    virtual ~ItemTests() {}
+    ~ItemTests() override {}
 
 private:
     void checkAllSelected( PackageTreeItem* p );
diff --git a/src/modules/users/TestCreateUserJob.cpp b/src/modules/users/TestCreateUserJob.cpp
index a801baf45..fc2d74dcd 100644
--- a/src/modules/users/TestCreateUserJob.cpp
+++ b/src/modules/users/TestCreateUserJob.cpp
@@ -22,7 +22,7 @@ class CreateUserTests : public QObject
     Q_OBJECT
 public:
     CreateUserTests();
-    virtual ~CreateUserTests() {}
+    ~CreateUserTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/modules/users/TestSetHostNameJob.cpp b/src/modules/users/TestSetHostNameJob.cpp
index 17061037f..03bfaa6e7 100644
--- a/src/modules/users/TestSetHostNameJob.cpp
+++ b/src/modules/users/TestSetHostNameJob.cpp
@@ -28,7 +28,7 @@ class UsersTests : public QObject
     Q_OBJECT
 public:
     UsersTests();
-    virtual ~UsersTests() {}
+    ~UsersTests() override {}
 
 private Q_SLOTS:
     void initTestCase();
diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp
index 78fa74780..9ed7718c7 100644
--- a/src/modules/users/Tests.cpp
+++ b/src/modules/users/Tests.cpp
@@ -28,7 +28,7 @@ class UserTests : public QObject
     Q_OBJECT
 public:
     UserTests();
-    virtual ~UserTests() {}
+    ~UserTests() override {}
 
 private Q_SLOTS:
     void initTestCase();

From 2126be6d6d401b79c9ca3c65cccd100a772b7d9f Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:34:38 +0200
Subject: [PATCH 17/22] Warnings-- (~T() override)

Consistently use
	~T() override;
in class declarations (so no virtual in front, and avoid
warnings due to the missing override in back).
---
 src/calamares/CalamaresApplication.h                  | 2 +-
 src/libcalamares/CppJob.h                             | 2 +-
 src/libcalamares/Job.h                                | 2 +-
 src/libcalamares/JobQueue.cpp                         | 2 +-
 src/libcalamares/JobQueue.h                           | 2 +-
 src/libcalamares/PythonHelper.h                       | 2 +-
 src/libcalamares/locale/LabelModel.h                  | 2 +-
 src/libcalamares/locale/TimeZone.h                    | 4 ++--
 src/libcalamares/network/Manager.h                    | 2 +-
 src/libcalamares/utils/CalamaresUtilsSystem.h         | 2 +-
 src/libcalamares/utils/PluginFactory.h                | 2 +-
 src/libcalamaresui/viewpages/Slideshow.h              | 2 +-
 src/libcalamaresui/widgets/PrettyRadioButton.h        | 2 +-
 src/modules/keyboard/KeyboardPage.cpp                 | 2 +-
 src/modules/keyboard/KeyboardPage.h                   | 2 +-
 src/modules/keyboard/keyboardwidget/keyboardpreview.h | 4 ++--
 src/modules/locale/Config.h                           | 2 +-
 src/modules/locale/LocalePage.h                       | 2 +-
 src/modules/locale/timezonewidget/timezonewidget.h    | 4 ++--
 src/modules/netinstall/Config.h                       | 2 +-
 src/modules/netinstall/NetInstallPage.h               | 2 +-
 src/modules/tracking/Config.h                         | 2 +-
 src/modules/users/Config.h                            | 2 +-
 src/modules/users/UsersPage.h                         | 2 +-
 src/modules/welcome/checker/CheckerContainer.h        | 2 +-
 src/modules/welcome/checker/ResultsListWidget.cpp     | 2 +-
 26 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h
index e7dea4c61..5f0037971 100644
--- a/src/calamares/CalamaresApplication.h
+++ b/src/calamares/CalamaresApplication.h
@@ -30,7 +30,7 @@ class CalamaresApplication : public QApplication
     Q_OBJECT
 public:
     CalamaresApplication( int& argc, char* argv[] );
-    virtual ~CalamaresApplication();
+    ~CalamaresApplication() override;
 
     /**
      * @brief init handles the first part of Calamares application startup.
diff --git a/src/libcalamares/CppJob.h b/src/libcalamares/CppJob.h
index 7569debe9..f906a0dca 100644
--- a/src/libcalamares/CppJob.h
+++ b/src/libcalamares/CppJob.h
@@ -28,7 +28,7 @@ class DLLEXPORT CppJob : public Job
     Q_OBJECT
 public:
     explicit CppJob( QObject* parent = nullptr );
-    virtual ~CppJob();
+    ~CppJob() override;
 
     void setModuleInstanceKey( const Calamares::ModuleSystem::InstanceKey& instanceKey );
     Calamares::ModuleSystem::InstanceKey moduleInstanceKey() const { return m_instanceKey; }
diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h
index ed349ab30..c7578272d 100644
--- a/src/libcalamares/Job.h
+++ b/src/libcalamares/Job.h
@@ -86,7 +86,7 @@ class DLLEXPORT Job : public QObject
     Q_OBJECT
 public:
     explicit Job( QObject* parent = nullptr );
-    virtual ~Job();
+    ~Job() override;
 
     /** @brief The job's (relative) weight.
      *
diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp
index 17ea6a141..2b17b64bd 100644
--- a/src/libcalamares/JobQueue.cpp
+++ b/src/libcalamares/JobQueue.cpp
@@ -53,7 +53,7 @@ public:
     {
     }
 
-    virtual ~JobThread() override;
+    ~JobThread() override;
 
     void finalize()
     {
diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h
index 5c4c6c35f..92468d535 100644
--- a/src/libcalamares/JobQueue.h
+++ b/src/libcalamares/JobQueue.h
@@ -25,7 +25,7 @@ class DLLEXPORT JobQueue : public QObject
     Q_OBJECT
 public:
     explicit JobQueue( QObject* parent = nullptr );
-    virtual ~JobQueue();
+    ~JobQueue() override;
 
     static JobQueue* instance();
 
diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h
index c439f4619..0a2127fb0 100644
--- a/src/libcalamares/PythonHelper.h
+++ b/src/libcalamares/PythonHelper.h
@@ -48,7 +48,7 @@ public:
     static Helper* instance();
 
 private:
-    virtual ~Helper();
+    ~Helper() override;
     explicit Helper();
 
     boost::python::object m_mainModule;
diff --git a/src/libcalamares/locale/LabelModel.h b/src/libcalamares/locale/LabelModel.h
index 8648dc71c..7e6f2dacc 100644
--- a/src/libcalamares/locale/LabelModel.h
+++ b/src/libcalamares/locale/LabelModel.h
@@ -36,7 +36,7 @@ public:
     };
 
     LabelModel( const QStringList& locales, QObject* parent = nullptr );
-    virtual ~LabelModel() override;
+    ~LabelModel() override;
 
     int rowCount( const QModelIndex& parent ) const override;
 
diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h
index 8c16517c7..e02612f5e 100644
--- a/src/libcalamares/locale/TimeZone.h
+++ b/src/libcalamares/locale/TimeZone.h
@@ -94,7 +94,7 @@ public:
     };
 
     RegionsModel( QObject* parent = nullptr );
-    virtual ~RegionsModel() override;
+    ~RegionsModel() override;
 
     int rowCount( const QModelIndex& parent ) const override;
     QVariant data( const QModelIndex& index, int role ) const override;
@@ -126,7 +126,7 @@ public:
     };
 
     ZonesModel( QObject* parent = nullptr );
-    virtual ~ZonesModel() override;
+    ~ZonesModel() override;
 
     int rowCount( const QModelIndex& parent ) const override;
     QVariant data( const QModelIndex& index, int role ) const override;
diff --git a/src/libcalamares/network/Manager.h b/src/libcalamares/network/Manager.h
index b3a1e23e7..930638198 100644
--- a/src/libcalamares/network/Manager.h
+++ b/src/libcalamares/network/Manager.h
@@ -99,7 +99,7 @@ public:
      * to keep the reference.
      */
     static Manager& instance();
-    virtual ~Manager();
+    virtual ~Manager() override;
 
     /** @brief Checks if the given @p url returns data.
      *
diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h
index 61aebc58d..7d60a3577 100644
--- a/src/libcalamares/utils/CalamaresUtilsSystem.h
+++ b/src/libcalamares/utils/CalamaresUtilsSystem.h
@@ -126,7 +126,7 @@ public:
      * @param parent the QObject parent.
      */
     explicit System( bool doChroot, QObject* parent = nullptr );
-    virtual ~System();
+    virtual ~System() override;
 
     static System* instance();
 
diff --git a/src/libcalamares/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h
index 891e3c1cd..a3371dd72 100644
--- a/src/libcalamares/utils/PluginFactory.h
+++ b/src/libcalamares/utils/PluginFactory.h
@@ -88,7 +88,7 @@ public:
         Q_PLUGIN_METADATA( IID CalamaresPluginFactory_iid ) \
     public: \
         explicit name(); \
-        ~name(); \
+        ~name() override; \
     };
 #define CALAMARES_PLUGIN_FACTORY_DEFINITION( name, pluginRegistrations ) \
     K_PLUGIN_FACTORY_DEFINITION_WITH_BASEFACTORY( name, CalamaresPluginFactory, pluginRegistrations )
diff --git a/src/libcalamaresui/viewpages/Slideshow.h b/src/libcalamaresui/viewpages/Slideshow.h
index 4432eed7b..9796ceea7 100644
--- a/src/libcalamaresui/viewpages/Slideshow.h
+++ b/src/libcalamaresui/viewpages/Slideshow.h
@@ -52,7 +52,7 @@ public:
         : QObject( parent )
     {
     }
-    virtual ~Slideshow();
+    ~Slideshow() override;
 
     /// @brief Is the slideshow being shown **right now**?
     bool isActive() const { return m_state == Start; }
diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.h b/src/libcalamaresui/widgets/PrettyRadioButton.h
index 6b158f353..1874457a8 100644
--- a/src/libcalamaresui/widgets/PrettyRadioButton.h
+++ b/src/libcalamaresui/widgets/PrettyRadioButton.h
@@ -38,7 +38,7 @@ class UIDLLEXPORT PrettyRadioButton : public QWidget
     Q_OBJECT
 public:
     explicit PrettyRadioButton( QWidget* parent = nullptr );
-    virtual ~PrettyRadioButton() {}
+    ~PrettyRadioButton() override {}
 
     /// @brief Passes @p text on to the ClickableLabel
     void setText( const QString& text );
diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp
index 66f4c7570..56036001f 100644
--- a/src/modules/keyboard/KeyboardPage.cpp
+++ b/src/modules/keyboard/KeyboardPage.cpp
@@ -35,7 +35,7 @@ class LayoutItem : public QListWidgetItem
 public:
     QString data;
 
-    virtual ~LayoutItem();
+    ~LayoutItem() override;
 };
 
 LayoutItem::~LayoutItem() {}
diff --git a/src/modules/keyboard/KeyboardPage.h b/src/modules/keyboard/KeyboardPage.h
index 485e27ed6..4faeebd57 100644
--- a/src/modules/keyboard/KeyboardPage.h
+++ b/src/modules/keyboard/KeyboardPage.h
@@ -34,7 +34,7 @@ class KeyboardPage : public QWidget
     Q_OBJECT
 public:
     explicit KeyboardPage( QWidget* parent = nullptr );
-    virtual ~KeyboardPage();
+    ~KeyboardPage() override;
 
     void init();
 
diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.h b/src/modules/keyboard/keyboardwidget/keyboardpreview.h
index 1a01fe1a2..6b56e4120 100644
--- a/src/modules/keyboard/keyboardwidget/keyboardpreview.h
+++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.h
@@ -71,8 +71,8 @@ private:
     QString fromUnicodeString( QString raw );
 
 protected:
-    void paintEvent( QPaintEvent* event );
-    void resizeEvent( QResizeEvent* event );
+    void paintEvent( QPaintEvent* event ) override;
+    void resizeEvent( QResizeEvent* event ) override;
 };
 
 #endif  // KEYBOARDPREVIEW_H
diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h
index a7ae0ccaf..4383f6bb0 100644
--- a/src/modules/locale/Config.h
+++ b/src/modules/locale/Config.h
@@ -52,7 +52,7 @@ class Config : public QObject
 
 public:
     Config( QObject* parent = nullptr );
-    ~Config();
+    ~Config() override;
 
     void setConfigurationMap( const QVariantMap& );
     void finalizeGlobalStorage() const;
diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h
index c8b80e906..3b76b77b7 100644
--- a/src/modules/locale/LocalePage.h
+++ b/src/modules/locale/LocalePage.h
@@ -32,7 +32,7 @@ class LocalePage : public QWidget
     Q_OBJECT
 public:
     explicit LocalePage( class Config* config, QWidget* parent = nullptr );
-    virtual ~LocalePage();
+    ~LocalePage() override;
 
     void onActivate();
 
diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h
index 3a2911597..7ccfb2b80 100644
--- a/src/modules/locale/timezonewidget/timezonewidget.h
+++ b/src/modules/locale/timezonewidget/timezonewidget.h
@@ -66,8 +66,8 @@ private:
     const CalamaresUtils::Locale::ZonesModel* m_zonesData;
     const TimeZoneData* m_currentLocation = nullptr;  // Not owned by me
 
-    void paintEvent( QPaintEvent* event );
-    void mousePressEvent( QMouseEvent* event );
+    void paintEvent( QPaintEvent* event ) override;
+    void mousePressEvent( QMouseEvent* event ) override;
 };
 
 #endif  // TIMEZONEWIDGET_H
diff --git a/src/modules/netinstall/Config.h b/src/modules/netinstall/Config.h
index 56cbd784b..13eb098c6 100644
--- a/src/modules/netinstall/Config.h
+++ b/src/modules/netinstall/Config.h
@@ -28,7 +28,7 @@ class Config : public QObject
 
 public:
     Config( QObject* parent = nullptr );
-    virtual ~Config();
+    ~Config() override;
 
     enum class Status
     {
diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h
index 167f9807f..1c97423da 100644
--- a/src/modules/netinstall/NetInstallPage.h
+++ b/src/modules/netinstall/NetInstallPage.h
@@ -35,7 +35,7 @@ class NetInstallPage : public QWidget
     Q_OBJECT
 public:
     NetInstallPage( Config* config, QWidget* parent = nullptr );
-    virtual ~NetInstallPage();
+    ~NetInstallPage() override;
 
     /** @brief Sets the page title
      *
diff --git a/src/modules/tracking/Config.h b/src/modules/tracking/Config.h
index 655a71410..c91d430f5 100644
--- a/src/modules/tracking/Config.h
+++ b/src/modules/tracking/Config.h
@@ -36,7 +36,7 @@ class TrackingStyleConfig : public QObject
 
 public:
     TrackingStyleConfig( QObject* parent );
-    virtual ~TrackingStyleConfig();
+    ~TrackingStyleConfig() override;
 
     void setConfigurationMap( const QVariantMap& );
 
diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h
index 33e82cd89..e4057941c 100644
--- a/src/modules/users/Config.h
+++ b/src/modules/users/Config.h
@@ -104,7 +104,7 @@ public:
     using PasswordStatus = QPair< PasswordValidity, QString >;
 
     Config( QObject* parent = nullptr );
-    ~Config();
+    ~Config() override;
 
     void setConfigurationMap( const QVariantMap& );
 
diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h
index f4d2c47d4..ed537540c 100644
--- a/src/modules/users/UsersPage.h
+++ b/src/modules/users/UsersPage.h
@@ -32,7 +32,7 @@ class UsersPage : public QWidget
     Q_OBJECT
 public:
     explicit UsersPage( Config* config, QWidget* parent = nullptr );
-    virtual ~UsersPage();
+    ~UsersPage() override;
 
     void onActivate();
 
diff --git a/src/modules/welcome/checker/CheckerContainer.h b/src/modules/welcome/checker/CheckerContainer.h
index c721f2b36..93b75ac04 100644
--- a/src/modules/welcome/checker/CheckerContainer.h
+++ b/src/modules/welcome/checker/CheckerContainer.h
@@ -32,7 +32,7 @@ class CheckerContainer : public QWidget
     Q_OBJECT
 public:
     explicit CheckerContainer( const Calamares::RequirementsModel& model, QWidget* parent = nullptr );
-    virtual ~CheckerContainer();
+    ~CheckerContainer() override;
 
     bool verdict() const;
 
diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp
index 1ad2c1b29..b0e8a175e 100644
--- a/src/modules/welcome/checker/ResultsListWidget.cpp
+++ b/src/modules/welcome/checker/ResultsListWidget.cpp
@@ -87,7 +87,7 @@ public:
      * or UB happens.
      */
     ResultsListDialog( const Calamares::RequirementsModel& model, QWidget* parent );
-    virtual ~ResultsListDialog();
+    ~ResultsListDialog() override;
 
 private:
     QLabel* m_title;

From 2878c474c5909c2d04d4e6a8003d09f7ef9e8520 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 22:49:30 +0200
Subject: [PATCH 18/22] Warnings-- (~T() override)

Change all the places that had
	virtual ~T() override
to the less redundant form without override.
---
 src/calamares/CalamaresWindow.h                               | 2 +-
 src/calamares/progresstree/ProgressTreeView.h                 | 2 +-
 src/calamares/testmain.cpp                                    | 2 +-
 src/libcalamares/ProcessJob.h                                 | 2 +-
 src/libcalamares/Tests.cpp                                    | 2 +-
 src/libcalamares/modulesystem/RequirementsChecker.h           | 2 +-
 src/libcalamares/network/Manager.h                            | 2 +-
 src/libcalamares/utils/CalamaresUtilsSystem.h                 | 2 +-
 src/libcalamaresui/ViewManager.h                              | 2 +-
 src/libcalamaresui/modulesystem/CppJobModule.h                | 2 +-
 src/libcalamaresui/modulesystem/ModuleManager.h               | 2 +-
 src/libcalamaresui/modulesystem/ProcessJobModule.h            | 2 +-
 src/libcalamaresui/modulesystem/PythonJobModule.h             | 2 +-
 src/libcalamaresui/modulesystem/ViewModule.h                  | 2 +-
 src/libcalamaresui/viewpages/BlankViewStep.h                  | 2 +-
 src/libcalamaresui/viewpages/QmlViewStep.h                    | 2 +-
 src/libcalamaresui/viewpages/Slideshow.h                      | 4 ++--
 src/libcalamaresui/viewpages/ViewStep.h                       | 2 +-
 src/libcalamaresui/widgets/ClickableLabel.h                   | 2 +-
 src/libcalamaresui/widgets/FixedAspectRatioLabel.h            | 2 +-
 src/modules/contextualprocess/ContextualProcessJob.h          | 2 +-
 src/modules/dracutlukscfg/DracutLuksCfgJob.h                  | 2 +-
 src/modules/dummycpp/DummyCppJob.h                            | 2 +-
 src/modules/finished/FinishedViewStep.h                       | 2 +-
 src/modules/fsresizer/ResizeFSJob.h                           | 2 +-
 src/modules/hostinfo/HostInfoJob.h                            | 2 +-
 src/modules/initcpio/InitcpioJob.h                            | 2 +-
 src/modules/initramfs/InitramfsJob.h                          | 2 +-
 src/modules/interactiveterminal/InteractiveTerminalViewStep.h | 2 +-
 src/modules/keyboard/KeyboardViewStep.h                       | 2 +-
 src/modules/license/LicenseViewStep.h                         | 2 +-
 src/modules/license/LicenseWidget.h                           | 2 +-
 src/modules/locale/LocaleViewStep.h                           | 2 +-
 src/modules/luksbootkeyfile/LuksBootKeyFileJob.h              | 2 +-
 src/modules/machineid/MachineIdJob.h                          | 2 +-
 src/modules/netinstall/NetInstallViewStep.h                   | 2 +-
 src/modules/notesqml/NotesQmlViewStep.h                       | 2 +-
 src/modules/oemid/OEMViewStep.cpp                             | 2 +-
 src/modules/oemid/OEMViewStep.h                               | 2 +-
 src/modules/packagechooser/PackageChooserViewStep.h           | 2 +-
 src/modules/packagechooser/PackageModel.h                     | 2 +-
 src/modules/partition/gui/PartitionBarsView.h                 | 2 +-
 src/modules/partition/gui/PartitionLabelsView.h               | 2 +-
 src/modules/partition/gui/PartitionViewStep.h                 | 2 +-
 src/modules/partition/tests/PartitionJobTests.h               | 2 +-
 src/modules/plasmalnf/PlasmaLnfJob.h                          | 2 +-
 src/modules/plasmalnf/PlasmaLnfViewStep.h                     | 2 +-
 src/modules/preservefiles/PreserveFiles.h                     | 2 +-
 src/modules/removeuser/RemoveUserJob.h                        | 2 +-
 src/modules/shellprocess/ShellProcessJob.h                    | 2 +-
 src/modules/summary/SummaryViewStep.h                         | 2 +-
 src/modules/tracking/TrackingViewStep.h                       | 2 +-
 src/modules/users/UsersViewStep.h                             | 2 +-
 src/modules/webview/WebViewStep.h                             | 2 +-
 src/modules/welcome/WelcomeViewStep.h                         | 2 +-
 55 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h
index b6e63aa6b..009425aae 100644
--- a/src/calamares/CalamaresWindow.h
+++ b/src/calamares/CalamaresWindow.h
@@ -28,7 +28,7 @@ class CalamaresWindow : public QWidget
     Q_OBJECT
 public:
     CalamaresWindow( QWidget* parent = nullptr );
-    virtual ~CalamaresWindow() override {}
+    ~CalamaresWindow() override {}
 
 public slots:
     /**
diff --git a/src/calamares/progresstree/ProgressTreeView.h b/src/calamares/progresstree/ProgressTreeView.h
index 98bbe10b4..5c416dfd6 100644
--- a/src/calamares/progresstree/ProgressTreeView.h
+++ b/src/calamares/progresstree/ProgressTreeView.h
@@ -22,7 +22,7 @@ class ProgressTreeView : public QListView
     Q_OBJECT
 public:
     explicit ProgressTreeView( QWidget* parent = nullptr );
-    virtual ~ProgressTreeView() override;
+    ~ProgressTreeView() override;
 
     /**
      * @brief setModel assigns a model to this view.
diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp
index c9d6f7195..e038b5a2f 100644
--- a/src/calamares/testmain.cpp
+++ b/src/calamares/testmain.cpp
@@ -140,7 +140,7 @@ public:
         , m_delay( t )
     {
     }
-    virtual ~ExecViewJob() override;
+    ~ExecViewJob() override;
 
     QString prettyName() const override { return m_name; }
 
diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h
index 126eab1f9..ab47f30dd 100644
--- a/src/libcalamares/ProcessJob.h
+++ b/src/libcalamares/ProcessJob.h
@@ -27,7 +27,7 @@ public:
                          bool runInChroot = false,
                          std::chrono::seconds secondsTimeout = std::chrono::seconds( 30 ),
                          QObject* parent = nullptr );
-    virtual ~ProcessJob() override;
+    ~ProcessJob() override;
 
     QString prettyName() const override;
     QString prettyStatusMessage() const override;
diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp
index b5183bf8c..bde7ac0d3 100644
--- a/src/libcalamares/Tests.cpp
+++ b/src/libcalamares/Tests.cpp
@@ -484,7 +484,7 @@ public:
         : Calamares::Job( parent )
     {
     }
-    virtual ~DummyJob() override;
+    ~DummyJob() override;
 
     QString prettyName() const override;
     Calamares::JobResult exec() override;
diff --git a/src/libcalamares/modulesystem/RequirementsChecker.h b/src/libcalamares/modulesystem/RequirementsChecker.h
index 3577b5397..b933a29a8 100644
--- a/src/libcalamares/modulesystem/RequirementsChecker.h
+++ b/src/libcalamares/modulesystem/RequirementsChecker.h
@@ -34,7 +34,7 @@ class RequirementsChecker : public QObject
 
 public:
     RequirementsChecker( QVector< Module* > modules, RequirementsModel* model, QObject* parent = nullptr );
-    virtual ~RequirementsChecker() override;
+    ~RequirementsChecker() override;
 
 public Q_SLOTS:
     /// @brief Start checking all the requirements
diff --git a/src/libcalamares/network/Manager.h b/src/libcalamares/network/Manager.h
index 930638198..a038dceae 100644
--- a/src/libcalamares/network/Manager.h
+++ b/src/libcalamares/network/Manager.h
@@ -99,7 +99,7 @@ public:
      * to keep the reference.
      */
     static Manager& instance();
-    virtual ~Manager() override;
+    ~Manager() override;
 
     /** @brief Checks if the given @p url returns data.
      *
diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h
index 7d60a3577..afdd4ec34 100644
--- a/src/libcalamares/utils/CalamaresUtilsSystem.h
+++ b/src/libcalamares/utils/CalamaresUtilsSystem.h
@@ -126,7 +126,7 @@ public:
      * @param parent the QObject parent.
      */
     explicit System( bool doChroot, QObject* parent = nullptr );
-    virtual ~System() override;
+    ~System() override;
 
     static System* instance();
 
diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h
index 947503eaa..165358b76 100644
--- a/src/libcalamaresui/ViewManager.h
+++ b/src/libcalamaresui/ViewManager.h
@@ -212,7 +212,7 @@ signals:
 
 private:
     explicit ViewManager( QObject* parent = nullptr );
-    virtual ~ViewManager() override;
+    ~ViewManager() override;
 
     void insertViewStep( int before, ViewStep* step );
     void updateButtonLabels();
diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h
index 288f674f4..b999fd0a3 100644
--- a/src/libcalamaresui/modulesystem/CppJobModule.h
+++ b/src/libcalamaresui/modulesystem/CppJobModule.h
@@ -34,7 +34,7 @@ protected:
 
 private:
     explicit CppJobModule();
-    virtual ~CppJobModule() override;
+    ~CppJobModule() override;
 
     QPluginLoader* m_loader;
     job_ptr m_job;
diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h
index d2beedf2e..7f7ead05e 100644
--- a/src/libcalamaresui/modulesystem/ModuleManager.h
+++ b/src/libcalamaresui/modulesystem/ModuleManager.h
@@ -37,7 +37,7 @@ class ModuleManager : public QObject
     Q_OBJECT
 public:
     explicit ModuleManager( const QStringList& paths, QObject* parent = nullptr );
-    virtual ~ModuleManager() override;
+    ~ModuleManager() override;
 
     static ModuleManager* instance();
 
diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h
index 0e00f5545..645127d47 100644
--- a/src/libcalamaresui/modulesystem/ProcessJobModule.h
+++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h
@@ -33,7 +33,7 @@ protected:
 
 private:
     explicit ProcessJobModule();
-    virtual ~ProcessJobModule() override;
+    ~ProcessJobModule() override;
 
     QString m_command;
     QString m_workingPath;
diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h
index 37634d6be..4424cc7d4 100644
--- a/src/libcalamaresui/modulesystem/PythonJobModule.h
+++ b/src/libcalamaresui/modulesystem/PythonJobModule.h
@@ -30,7 +30,7 @@ protected:
 
 private:
     explicit PythonJobModule();
-    virtual ~PythonJobModule() override;
+    ~PythonJobModule() override;
 
     QString m_scriptFileName;
     QString m_workingPath;
diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h
index 8e5eb44b4..217611b03 100644
--- a/src/libcalamaresui/modulesystem/ViewModule.h
+++ b/src/libcalamaresui/modulesystem/ViewModule.h
@@ -37,7 +37,7 @@ protected:
 
 private:
     explicit ViewModule();
-    virtual ~ViewModule() override;
+    ~ViewModule() override;
 
     QPluginLoader* m_loader;
     ViewStep* m_viewStep = nullptr;
diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h
index 793241647..1845fcda9 100644
--- a/src/libcalamaresui/viewpages/BlankViewStep.h
+++ b/src/libcalamaresui/viewpages/BlankViewStep.h
@@ -29,7 +29,7 @@ public:
                             const QString& description,
                             const QString& details = QString(),
                             QObject* parent = nullptr );
-    virtual ~BlankViewStep() override;
+    ~BlankViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/libcalamaresui/viewpages/QmlViewStep.h b/src/libcalamaresui/viewpages/QmlViewStep.h
index 7f04bea81..9817851b6 100644
--- a/src/libcalamaresui/viewpages/QmlViewStep.h
+++ b/src/libcalamaresui/viewpages/QmlViewStep.h
@@ -50,7 +50,7 @@ public:
      * @see Qml.h for available Calamares internals.
      */
     QmlViewStep( QObject* parent = nullptr );
-    virtual ~QmlViewStep() override;
+    ~QmlViewStep() override;
 
     virtual QString prettyName() const override;
 
diff --git a/src/libcalamaresui/viewpages/Slideshow.h b/src/libcalamaresui/viewpages/Slideshow.h
index 9796ceea7..41dacd46e 100644
--- a/src/libcalamaresui/viewpages/Slideshow.h
+++ b/src/libcalamaresui/viewpages/Slideshow.h
@@ -91,7 +91,7 @@ class SlideshowQML : public Slideshow
     Q_OBJECT
 public:
     SlideshowQML( QWidget* parent );
-    virtual ~SlideshowQML() override;
+    ~SlideshowQML() override;
 
     QWidget* widget() override;
     void changeSlideShowState( Action a ) override;
@@ -123,7 +123,7 @@ class SlideshowPictures : public Slideshow
     Q_OBJECT
 public:
     SlideshowPictures( QWidget* parent );
-    virtual ~SlideshowPictures() override;
+    ~SlideshowPictures() override;
 
     QWidget* widget() override;
     virtual void changeSlideShowState( Action a ) override;
diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h
index 156975fc5..c20a9d396 100644
--- a/src/libcalamaresui/viewpages/ViewStep.h
+++ b/src/libcalamaresui/viewpages/ViewStep.h
@@ -41,7 +41,7 @@ class UIDLLEXPORT ViewStep : public QObject
     Q_OBJECT
 public:
     explicit ViewStep( QObject* parent = nullptr );
-    virtual ~ViewStep() override;
+    ~ViewStep() override;
 
     /** @brief Human-readable name of the step
      *
diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h
index 83ddb3d86..8c5561677 100644
--- a/src/libcalamaresui/widgets/ClickableLabel.h
+++ b/src/libcalamaresui/widgets/ClickableLabel.h
@@ -32,7 +32,7 @@ class UIDLLEXPORT ClickableLabel : public QLabel
 public:
     explicit ClickableLabel( QWidget* parent = nullptr );
     explicit ClickableLabel( const QString& text, QWidget* parent = nullptr );
-    virtual ~ClickableLabel() override;
+    ~ClickableLabel() override;
 
 signals:
     void clicked();
diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h
index ded7ba602..7dd058775 100644
--- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h
+++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h
@@ -19,7 +19,7 @@ class FixedAspectRatioLabel : public QLabel
     Q_OBJECT
 public:
     explicit FixedAspectRatioLabel( QWidget* parent = nullptr );
-    virtual ~FixedAspectRatioLabel() override;
+    ~FixedAspectRatioLabel() override;
 
 public slots:
     void setPixmap( const QPixmap& pixmap );
diff --git a/src/modules/contextualprocess/ContextualProcessJob.h b/src/modules/contextualprocess/ContextualProcessJob.h
index f84afb5f1..8d58a3cbe 100644
--- a/src/modules/contextualprocess/ContextualProcessJob.h
+++ b/src/modules/contextualprocess/ContextualProcessJob.h
@@ -26,7 +26,7 @@ class PLUGINDLLEXPORT ContextualProcessJob : public Calamares::CppJob
 
 public:
     explicit ContextualProcessJob( QObject* parent = nullptr );
-    virtual ~ContextualProcessJob() override;
+    ~ContextualProcessJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h
index eb517b21d..7965e9834 100644
--- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h
+++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h
@@ -26,7 +26,7 @@ class PLUGINDLLEXPORT DracutLuksCfgJob : public Calamares::CppJob
 
 public:
     explicit DracutLuksCfgJob( QObject* parent = nullptr );
-    virtual ~DracutLuksCfgJob() override;
+    ~DracutLuksCfgJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/dummycpp/DummyCppJob.h b/src/modules/dummycpp/DummyCppJob.h
index 2f267d511..5271a73a5 100644
--- a/src/modules/dummycpp/DummyCppJob.h
+++ b/src/modules/dummycpp/DummyCppJob.h
@@ -26,7 +26,7 @@ class PLUGINDLLEXPORT DummyCppJob : public Calamares::CppJob
 
 public:
     explicit DummyCppJob( QObject* parent = nullptr );
-    virtual ~DummyCppJob() override;
+    ~DummyCppJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/finished/FinishedViewStep.h b/src/modules/finished/FinishedViewStep.h
index 97d38b267..729f9126d 100644
--- a/src/modules/finished/FinishedViewStep.h
+++ b/src/modules/finished/FinishedViewStep.h
@@ -36,7 +36,7 @@ public:
     static QString modeName( RestartMode m );
 
     explicit FinishedViewStep( QObject* parent = nullptr );
-    virtual ~FinishedViewStep() override;
+    ~FinishedViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/fsresizer/ResizeFSJob.h b/src/modules/fsresizer/ResizeFSJob.h
index 5c9c961a5..52c4692e6 100644
--- a/src/modules/fsresizer/ResizeFSJob.h
+++ b/src/modules/fsresizer/ResizeFSJob.h
@@ -33,7 +33,7 @@ class PLUGINDLLEXPORT ResizeFSJob : public Calamares::CppJob
 
 public:
     explicit ResizeFSJob( QObject* parent = nullptr );
-    virtual ~ResizeFSJob() override;
+    ~ResizeFSJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/hostinfo/HostInfoJob.h b/src/modules/hostinfo/HostInfoJob.h
index d9b450ac4..b252da7e0 100644
--- a/src/modules/hostinfo/HostInfoJob.h
+++ b/src/modules/hostinfo/HostInfoJob.h
@@ -43,7 +43,7 @@ class PLUGINDLLEXPORT HostInfoJob : public Calamares::CppJob
 
 public:
     explicit HostInfoJob( QObject* parent = nullptr );
-    virtual ~HostInfoJob() override;
+    ~HostInfoJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/initcpio/InitcpioJob.h b/src/modules/initcpio/InitcpioJob.h
index 45421ea05..6e7f2b585 100644
--- a/src/modules/initcpio/InitcpioJob.h
+++ b/src/modules/initcpio/InitcpioJob.h
@@ -23,7 +23,7 @@ class PLUGINDLLEXPORT InitcpioJob : public Calamares::CppJob
 
 public:
     explicit InitcpioJob( QObject* parent = nullptr );
-    virtual ~InitcpioJob() override;
+    ~InitcpioJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/initramfs/InitramfsJob.h b/src/modules/initramfs/InitramfsJob.h
index 7b3a03911..c09c9eba2 100644
--- a/src/modules/initramfs/InitramfsJob.h
+++ b/src/modules/initramfs/InitramfsJob.h
@@ -23,7 +23,7 @@ class PLUGINDLLEXPORT InitramfsJob : public Calamares::CppJob
 
 public:
     explicit InitramfsJob( QObject* parent = nullptr );
-    virtual ~InitramfsJob() override;
+    ~InitramfsJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h
index f01a19ee6..8e0e6508f 100644
--- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h
+++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h
@@ -26,7 +26,7 @@ class PLUGINDLLEXPORT InteractiveTerminalViewStep : public Calamares::ViewStep
 
 public:
     explicit InteractiveTerminalViewStep( QObject* parent = nullptr );
-    virtual ~InteractiveTerminalViewStep() override;
+    ~InteractiveTerminalViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/keyboard/KeyboardViewStep.h b/src/modules/keyboard/KeyboardViewStep.h
index 5d4882aca..aa9a1d335 100644
--- a/src/modules/keyboard/KeyboardViewStep.h
+++ b/src/modules/keyboard/KeyboardViewStep.h
@@ -25,7 +25,7 @@ class PLUGINDLLEXPORT KeyboardViewStep : public Calamares::ViewStep
 
 public:
     explicit KeyboardViewStep( QObject* parent = nullptr );
-    virtual ~KeyboardViewStep() override;
+    ~KeyboardViewStep() override;
 
     QString prettyName() const override;
     QString prettyStatus() const override;
diff --git a/src/modules/license/LicenseViewStep.h b/src/modules/license/LicenseViewStep.h
index 15e345221..0e028f8c1 100644
--- a/src/modules/license/LicenseViewStep.h
+++ b/src/modules/license/LicenseViewStep.h
@@ -27,7 +27,7 @@ class PLUGINDLLEXPORT LicenseViewStep : public Calamares::ViewStep
 
 public:
     explicit LicenseViewStep( QObject* parent = nullptr );
-    virtual ~LicenseViewStep() override;
+    ~LicenseViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/license/LicenseWidget.h b/src/modules/license/LicenseWidget.h
index 2d810e80a..3f99163b9 100644
--- a/src/modules/license/LicenseWidget.h
+++ b/src/modules/license/LicenseWidget.h
@@ -24,7 +24,7 @@ class LicenseWidget : public QWidget
 {
 public:
     LicenseWidget( LicenseEntry e, QWidget* parent = nullptr );
-    virtual ~LicenseWidget() override;
+    ~LicenseWidget() override;
 
     void retranslateUi();
 
diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h
index fd9c00796..12b05f9f8 100644
--- a/src/modules/locale/LocaleViewStep.h
+++ b/src/modules/locale/LocaleViewStep.h
@@ -27,7 +27,7 @@ class PLUGINDLLEXPORT LocaleViewStep : public Calamares::ViewStep
 
 public:
     explicit LocaleViewStep( QObject* parent = nullptr );
-    virtual ~LocaleViewStep() override;
+    ~LocaleViewStep() override;
 
     QString prettyName() const override;
     QString prettyStatus() const override;
diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h
index d78a7ecdc..9681228bd 100644
--- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h
+++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h
@@ -25,7 +25,7 @@ class PLUGINDLLEXPORT LuksBootKeyFileJob : public Calamares::CppJob
     Q_OBJECT
 public:
     explicit LuksBootKeyFileJob( QObject* parent = nullptr );
-    virtual ~LuksBootKeyFileJob() override;
+    ~LuksBootKeyFileJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/machineid/MachineIdJob.h b/src/modules/machineid/MachineIdJob.h
index 136f28ecb..7f406fc55 100644
--- a/src/modules/machineid/MachineIdJob.h
+++ b/src/modules/machineid/MachineIdJob.h
@@ -29,7 +29,7 @@ class PLUGINDLLEXPORT MachineIdJob : public Calamares::CppJob
 
 public:
     explicit MachineIdJob( QObject* parent = nullptr );
-    virtual ~MachineIdJob() override;
+    ~MachineIdJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/netinstall/NetInstallViewStep.h b/src/modules/netinstall/NetInstallViewStep.h
index cd79e7a4a..c500cbcd9 100644
--- a/src/modules/netinstall/NetInstallViewStep.h
+++ b/src/modules/netinstall/NetInstallViewStep.h
@@ -28,7 +28,7 @@ class PLUGINDLLEXPORT NetInstallViewStep : public Calamares::ViewStep
 
 public:
     explicit NetInstallViewStep( QObject* parent = nullptr );
-    virtual ~NetInstallViewStep() override;
+    ~NetInstallViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/notesqml/NotesQmlViewStep.h b/src/modules/notesqml/NotesQmlViewStep.h
index 10f249a88..485a7969e 100644
--- a/src/modules/notesqml/NotesQmlViewStep.h
+++ b/src/modules/notesqml/NotesQmlViewStep.h
@@ -22,7 +22,7 @@ class PLUGINDLLEXPORT NotesQmlViewStep : public Calamares::QmlViewStep
 
 public:
     NotesQmlViewStep( QObject* parent = nullptr );
-    virtual ~NotesQmlViewStep() override;
+    ~NotesQmlViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/oemid/OEMViewStep.cpp b/src/modules/oemid/OEMViewStep.cpp
index 7405c6e3a..f996d4ff3 100644
--- a/src/modules/oemid/OEMViewStep.cpp
+++ b/src/modules/oemid/OEMViewStep.cpp
@@ -32,7 +32,7 @@ public:
         CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); )
     }
 
-    virtual ~OEMPage() override;
+    ~OEMPage() override;
 
     Ui_OEMPage* m_ui;
 };
diff --git a/src/modules/oemid/OEMViewStep.h b/src/modules/oemid/OEMViewStep.h
index c07cb7971..a0b07c6fd 100644
--- a/src/modules/oemid/OEMViewStep.h
+++ b/src/modules/oemid/OEMViewStep.h
@@ -25,7 +25,7 @@ class PLUGINDLLEXPORT OEMViewStep : public Calamares::ViewStep
 
 public:
     explicit OEMViewStep( QObject* parent = nullptr );
-    virtual ~OEMViewStep() override;
+    ~OEMViewStep() override;
 
     QString prettyName() const override;
     QString prettyStatus() const override;
diff --git a/src/modules/packagechooser/PackageChooserViewStep.h b/src/modules/packagechooser/PackageChooserViewStep.h
index 2a10ce270..9dfd2bdee 100644
--- a/src/modules/packagechooser/PackageChooserViewStep.h
+++ b/src/modules/packagechooser/PackageChooserViewStep.h
@@ -29,7 +29,7 @@ class PLUGINDLLEXPORT PackageChooserViewStep : public Calamares::ViewStep
 
 public:
     explicit PackageChooserViewStep( QObject* parent = nullptr );
-    virtual ~PackageChooserViewStep() override;
+    ~PackageChooserViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/packagechooser/PackageModel.h b/src/modules/packagechooser/PackageModel.h
index b8fc9a4ce..375cf28c4 100644
--- a/src/modules/packagechooser/PackageModel.h
+++ b/src/modules/packagechooser/PackageModel.h
@@ -88,7 +88,7 @@ class PackageListModel : public QAbstractListModel
 public:
     PackageListModel( PackageList&& items, QObject* parent );
     PackageListModel( QObject* parent );
-    virtual ~PackageListModel() override;
+    ~PackageListModel() override;
 
     /** @brief Add a package @p to the model
      *
diff --git a/src/modules/partition/gui/PartitionBarsView.h b/src/modules/partition/gui/PartitionBarsView.h
index 4dacaaae5..39c3bafe1 100644
--- a/src/modules/partition/gui/PartitionBarsView.h
+++ b/src/modules/partition/gui/PartitionBarsView.h
@@ -34,7 +34,7 @@ public:
     };
 
     explicit PartitionBarsView( QWidget* parent = nullptr );
-    virtual ~PartitionBarsView() override;
+    ~PartitionBarsView() override;
 
     void setNestedPartitionsMode( NestedPartitionsMode mode );
 
diff --git a/src/modules/partition/gui/PartitionLabelsView.h b/src/modules/partition/gui/PartitionLabelsView.h
index ac7a272ad..9b5a277ab 100644
--- a/src/modules/partition/gui/PartitionLabelsView.h
+++ b/src/modules/partition/gui/PartitionLabelsView.h
@@ -28,7 +28,7 @@ class PartitionLabelsView : public QAbstractItemView
     Q_OBJECT
 public:
     explicit PartitionLabelsView( QWidget* parent = nullptr );
-    virtual ~PartitionLabelsView() override;
+    ~PartitionLabelsView() override;
 
     QSize minimumSizeHint() const override;
 
diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h
index 6ece9a2b1..9f3da9f3d 100644
--- a/src/modules/partition/gui/PartitionViewStep.h
+++ b/src/modules/partition/gui/PartitionViewStep.h
@@ -40,7 +40,7 @@ class PLUGINDLLEXPORT PartitionViewStep : public Calamares::ViewStep
 
 public:
     explicit PartitionViewStep( QObject* parent = nullptr );
-    virtual ~PartitionViewStep() override;
+    ~PartitionViewStep() override;
 
     QString prettyName() const override;
     QWidget* createSummaryWidget() const override;
diff --git a/src/modules/partition/tests/PartitionJobTests.h b/src/modules/partition/tests/PartitionJobTests.h
index 364213f54..c2c01088f 100644
--- a/src/modules/partition/tests/PartitionJobTests.h
+++ b/src/modules/partition/tests/PartitionJobTests.h
@@ -27,7 +27,7 @@ class QueueRunner : public QObject
 {
 public:
     QueueRunner( Calamares::JobQueue* queue );
-    virtual ~QueueRunner() override;
+    ~QueueRunner() override;
 
     /**
      * Synchronously runs the queue. Returns true on success
diff --git a/src/modules/plasmalnf/PlasmaLnfJob.h b/src/modules/plasmalnf/PlasmaLnfJob.h
index 314070c0c..83360434e 100644
--- a/src/modules/plasmalnf/PlasmaLnfJob.h
+++ b/src/modules/plasmalnf/PlasmaLnfJob.h
@@ -21,7 +21,7 @@ class PlasmaLnfJob : public Calamares::Job
 
 public:
     explicit PlasmaLnfJob( const QString& lnfPath, const QString& id );
-    virtual ~PlasmaLnfJob() override;
+    ~PlasmaLnfJob() override;
 
     QString prettyName() const override;
     QString prettyStatusMessage() const override;
diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h
index a98ec4bf5..46c24c970 100644
--- a/src/modules/plasmalnf/PlasmaLnfViewStep.h
+++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h
@@ -26,7 +26,7 @@ class PLUGINDLLEXPORT PlasmaLnfViewStep : public Calamares::ViewStep
 
 public:
     explicit PlasmaLnfViewStep( QObject* parent = nullptr );
-    virtual ~PlasmaLnfViewStep() override;
+    ~PlasmaLnfViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/preservefiles/PreserveFiles.h b/src/modules/preservefiles/PreserveFiles.h
index d2b7373e2..7a0aab34d 100644
--- a/src/modules/preservefiles/PreserveFiles.h
+++ b/src/modules/preservefiles/PreserveFiles.h
@@ -41,7 +41,7 @@ class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob
 
 public:
     explicit PreserveFiles( QObject* parent = nullptr );
-    virtual ~PreserveFiles() override;
+    ~PreserveFiles() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/removeuser/RemoveUserJob.h b/src/modules/removeuser/RemoveUserJob.h
index 8f7de35e0..c8a4df15d 100644
--- a/src/modules/removeuser/RemoveUserJob.h
+++ b/src/modules/removeuser/RemoveUserJob.h
@@ -23,7 +23,7 @@ class PLUGINDLLEXPORT RemoveUserJob : public Calamares::CppJob
 
 public:
     explicit RemoveUserJob( QObject* parent = nullptr );
-    virtual ~RemoveUserJob() override;
+    ~RemoveUserJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/shellprocess/ShellProcessJob.h b/src/modules/shellprocess/ShellProcessJob.h
index c63a7b91f..468aded59 100644
--- a/src/modules/shellprocess/ShellProcessJob.h
+++ b/src/modules/shellprocess/ShellProcessJob.h
@@ -27,7 +27,7 @@ class PLUGINDLLEXPORT ShellProcessJob : public Calamares::CppJob
 
 public:
     explicit ShellProcessJob( QObject* parent = nullptr );
-    virtual ~ShellProcessJob() override;
+    ~ShellProcessJob() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/summary/SummaryViewStep.h b/src/modules/summary/SummaryViewStep.h
index 0a2933d8b..c89efc42f 100644
--- a/src/modules/summary/SummaryViewStep.h
+++ b/src/modules/summary/SummaryViewStep.h
@@ -25,7 +25,7 @@ class PLUGINDLLEXPORT SummaryViewStep : public Calamares::ViewStep
 
 public:
     explicit SummaryViewStep( QObject* parent = nullptr );
-    virtual ~SummaryViewStep() override;
+    ~SummaryViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h
index 7b27dbec6..0601dde57 100644
--- a/src/modules/tracking/TrackingViewStep.h
+++ b/src/modules/tracking/TrackingViewStep.h
@@ -29,7 +29,7 @@ class PLUGINDLLEXPORT TrackingViewStep : public Calamares::ViewStep
 
 public:
     explicit TrackingViewStep( QObject* parent = nullptr );
-    virtual ~TrackingViewStep() override;
+    ~TrackingViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h
index a03948adf..abafc1b23 100644
--- a/src/modules/users/UsersViewStep.h
+++ b/src/modules/users/UsersViewStep.h
@@ -27,7 +27,7 @@ class PLUGINDLLEXPORT UsersViewStep : public Calamares::ViewStep
 
 public:
     explicit UsersViewStep( QObject* parent = nullptr );
-    virtual ~UsersViewStep() override;
+    ~UsersViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/webview/WebViewStep.h b/src/modules/webview/WebViewStep.h
index 691672211..339997320 100644
--- a/src/modules/webview/WebViewStep.h
+++ b/src/modules/webview/WebViewStep.h
@@ -41,7 +41,7 @@ class PLUGINDLLEXPORT WebViewStep : public Calamares::ViewStep
 
 public:
     explicit WebViewStep( QObject* parent = nullptr );
-    virtual ~WebViewStep() override;
+    ~WebViewStep() override;
 
     QString prettyName() const override;
 
diff --git a/src/modules/welcome/WelcomeViewStep.h b/src/modules/welcome/WelcomeViewStep.h
index 16eec6d29..57632f7ac 100644
--- a/src/modules/welcome/WelcomeViewStep.h
+++ b/src/modules/welcome/WelcomeViewStep.h
@@ -37,7 +37,7 @@ class PLUGINDLLEXPORT WelcomeViewStep : public Calamares::ViewStep
 
 public:
     explicit WelcomeViewStep( QObject* parent = nullptr );
-    virtual ~WelcomeViewStep() override;
+    ~WelcomeViewStep() override;
 
     QString prettyName() const override;
 

From 268cf203a80fe3b51327c9baa70b9dccccb6d36c Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 23:01:22 +0200
Subject: [PATCH 19/22] [libcalamaresui] Remove unused parameter/functionality

- nothing in Calamares uses the tinting, and it triggers some
  deprecation warnings, so just remove it.
---
 src/libcalamaresui/utils/ImageRegistry.cpp | 29 ++++++----------------
 src/libcalamaresui/utils/ImageRegistry.h   |  8 +++---
 2 files changed, 10 insertions(+), 27 deletions(-)

diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp
index ffc65300e..86a9cf212 100644
--- a/src/libcalamaresui/utils/ImageRegistry.cpp
+++ b/src/libcalamaresui/utils/ImageRegistry.cpp
@@ -34,9 +34,9 @@ ImageRegistry::icon( const QString& image, CalamaresUtils::ImageMode mode )
 
 
 qint64
-ImageRegistry::cacheKey( const QSize& size, qreal opacity, QColor tint )
+ImageRegistry::cacheKey( const QSize& size, qreal opacity )
 {
-    return size.width() * 100 + size.height() * 10 + static_cast< qint64 >( opacity * 100.0 ) + tint.value();
+    return size.width() * 100 + size.height() * 10 + static_cast< qint64 >( opacity * 100.0 );
 }
 
 
@@ -44,8 +44,7 @@ QPixmap
 ImageRegistry::pixmap( const QString& image,
                        const QSize& size,
                        CalamaresUtils::ImageMode mode,
-                       qreal opacity,
-                       QColor tint )
+                       qreal opacity )
 {
     Q_ASSERT( !( size.width() < 0 || size.height() < 0 ) );
     if ( size.width() < 0 || size.height() < 0 )
@@ -64,7 +63,7 @@ ImageRegistry::pixmap( const QString& image,
         {
             subsubcache = subcache.value( mode );
 
-            const qint64 ck = cacheKey( size, opacity, tint );
+            const qint64 ck = cacheKey( size, opacity );
             if ( subsubcache.contains( ck ) )
             {
                 return subsubcache.value( ck );
@@ -85,19 +84,6 @@ ImageRegistry::pixmap( const QString& image,
         svgRenderer.render( &pixPainter );
         pixPainter.end();
 
-        if ( tint.alpha() > 0 )
-        {
-            QImage resultImage( p.size(), QImage::Format_ARGB32_Premultiplied );
-            QPainter painter( &resultImage );
-            painter.drawPixmap( 0, 0, p );
-            painter.setCompositionMode( QPainter::CompositionMode_Screen );
-            painter.fillRect( resultImage.rect(), tint );
-            painter.end();
-
-            resultImage.setAlphaChannel( p.toImage().alphaChannel() );
-            p = QPixmap::fromImage( resultImage );
-        }
-
         pixmap = p;
     }
     else
@@ -128,7 +114,7 @@ ImageRegistry::pixmap( const QString& image,
             }
         }
 
-        putInCache( image, size, mode, opacity, pixmap, tint );
+        putInCache( image, size, mode, opacity, pixmap );
     }
 
     return pixmap;
@@ -140,8 +126,7 @@ ImageRegistry::putInCache( const QString& image,
                            const QSize& size,
                            CalamaresUtils::ImageMode mode,
                            qreal opacity,
-                           const QPixmap& pixmap,
-                           QColor tint )
+                           const QPixmap& pixmap )
 {
     QHash< qint64, QPixmap > subsubcache;
     QHash< int, QHash< qint64, QPixmap > > subcache;
@@ -155,7 +140,7 @@ ImageRegistry::putInCache( const QString& image,
         }
     }
 
-    subsubcache.insert( cacheKey( size, opacity, tint ), pixmap );
+    subsubcache.insert( cacheKey( size, opacity ), pixmap );
     subcache.insert( mode, subsubcache );
     s_cache.insert( image, subcache );
 }
diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h
index 80bc25ff6..87c73823f 100644
--- a/src/libcalamaresui/utils/ImageRegistry.h
+++ b/src/libcalamaresui/utils/ImageRegistry.h
@@ -25,17 +25,15 @@ public:
     QPixmap pixmap( const QString& image,
                     const QSize& size,
                     CalamaresUtils::ImageMode mode = CalamaresUtils::Original,
-                    qreal opacity = 1.0,
-                    QColor tint = QColor( 0, 0, 0, 0 ) );
+                    qreal opacity = 1.0 );
 
 private:
-    qint64 cacheKey( const QSize& size, qreal opacity, QColor tint );
+    qint64 cacheKey( const QSize& size, qreal opacity );
     void putInCache( const QString& image,
                      const QSize& size,
                      CalamaresUtils::ImageMode mode,
                      qreal opacity,
-                     const QPixmap& pixmap,
-                     QColor tint );
+                     const QPixmap& pixmap );
 };
 
 #endif  // IMAGE_REGISTRY_H

From 02423c823d1954072387cfbd95d8086e8723eeb8 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 23:03:38 +0200
Subject: [PATCH 20/22] [libcalamaresui] Nothing uses the opacity for pixmaps,
 drop that too

---
 src/libcalamaresui/utils/ImageRegistry.cpp | 15 ++++++---------
 src/libcalamaresui/utils/ImageRegistry.h   |  6 ++----
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp
index 86a9cf212..57683dbd0 100644
--- a/src/libcalamaresui/utils/ImageRegistry.cpp
+++ b/src/libcalamaresui/utils/ImageRegistry.cpp
@@ -34,17 +34,16 @@ ImageRegistry::icon( const QString& image, CalamaresUtils::ImageMode mode )
 
 
 qint64
-ImageRegistry::cacheKey( const QSize& size, qreal opacity )
+ImageRegistry::cacheKey( const QSize& size )
 {
-    return size.width() * 100 + size.height() * 10 + static_cast< qint64 >( opacity * 100.0 );
+    return size.width() * 100 + size.height() * 10;
 }
 
 
 QPixmap
 ImageRegistry::pixmap( const QString& image,
                        const QSize& size,
-                       CalamaresUtils::ImageMode mode,
-                       qreal opacity )
+                       CalamaresUtils::ImageMode mode )
 {
     Q_ASSERT( !( size.width() < 0 || size.height() < 0 ) );
     if ( size.width() < 0 || size.height() < 0 )
@@ -63,7 +62,7 @@ ImageRegistry::pixmap( const QString& image,
         {
             subsubcache = subcache.value( mode );
 
-            const qint64 ck = cacheKey( size, opacity );
+            const qint64 ck = cacheKey( size );
             if ( subsubcache.contains( ck ) )
             {
                 return subsubcache.value( ck );
@@ -80,7 +79,6 @@ ImageRegistry::pixmap( const QString& image,
         p.fill( Qt::transparent );
 
         QPainter pixPainter( &p );
-        pixPainter.setOpacity( opacity );
         svgRenderer.render( &pixPainter );
         pixPainter.end();
 
@@ -114,7 +112,7 @@ ImageRegistry::pixmap( const QString& image,
             }
         }
 
-        putInCache( image, size, mode, opacity, pixmap );
+        putInCache( image, size, mode, pixmap );
     }
 
     return pixmap;
@@ -125,7 +123,6 @@ void
 ImageRegistry::putInCache( const QString& image,
                            const QSize& size,
                            CalamaresUtils::ImageMode mode,
-                           qreal opacity,
                            const QPixmap& pixmap )
 {
     QHash< qint64, QPixmap > subsubcache;
@@ -140,7 +137,7 @@ ImageRegistry::putInCache( const QString& image,
         }
     }
 
-    subsubcache.insert( cacheKey( size, opacity ), pixmap );
+    subsubcache.insert( cacheKey( size ), pixmap );
     subcache.insert( mode, subsubcache );
     s_cache.insert( image, subcache );
 }
diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h
index 87c73823f..4cf48968e 100644
--- a/src/libcalamaresui/utils/ImageRegistry.h
+++ b/src/libcalamaresui/utils/ImageRegistry.h
@@ -24,15 +24,13 @@ public:
     QIcon icon( const QString& image, CalamaresUtils::ImageMode mode = CalamaresUtils::Original );
     QPixmap pixmap( const QString& image,
                     const QSize& size,
-                    CalamaresUtils::ImageMode mode = CalamaresUtils::Original,
-                    qreal opacity = 1.0 );
+                    CalamaresUtils::ImageMode mode = CalamaresUtils::Original );
 
 private:
-    qint64 cacheKey( const QSize& size, qreal opacity );
+    qint64 cacheKey( const QSize& size );
     void putInCache( const QString& image,
                      const QSize& size,
                      CalamaresUtils::ImageMode mode,
-                     qreal opacity,
                      const QPixmap& pixmap );
 };
 

From 6b07bdf6eddafd74946ab93eed05117d5b95b4a6 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 22 Sep 2020 23:51:35 +0200
Subject: [PATCH 21/22] [keyboard] Do not use deprecated Qt4-era indexChanged
 for text

---
 src/modules/keyboard/KeyboardPage.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp
index 56036001f..bd300d7e3 100644
--- a/src/modules/keyboard/KeyboardPage.cpp
+++ b/src/modules/keyboard/KeyboardPage.cpp
@@ -77,7 +77,7 @@ KeyboardPage::KeyboardPage( QWidget* parent )
         ui->buttonRestore, &QPushButton::clicked, [this] { ui->comboBoxModel->setCurrentIndex( m_defaultIndex ); } );
 
     connect( ui->comboBoxModel,
-             static_cast< void ( QComboBox::* )( const QString& ) >( &QComboBox::currentIndexChanged ),
+             &QComboBox::currentTextChanged,
              [this]( const QString& text ) {
                  QString model = m_models.value( text, "pc105" );
 

From ffed7b6d7133922be6c3412c9c0a45b3b70a53da Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Wed, 23 Sep 2020 11:16:23 +0200
Subject: [PATCH 22/22] [partition] Warnings-- over QButtonGroup

- this was deprecated in 5.15 and an alternative introduced also
  in 5.15, so it's a pain in the butt for backwards-compatibility.
---
 src/modules/partition/gui/ChoicePage.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp
index 6b4b8b659..2e965ad93 100644
--- a/src/modules/partition/gui/ChoicePage.cpp
+++ b/src/modules/partition/gui/ChoicePage.cpp
@@ -270,7 +270,12 @@ ChoicePage::setupChoices()
 
     m_itemsLayout->addStretch();
 
-    connect( m_grp, QOverload< int, bool >::of( &QButtonGroup::buttonToggled ), this, [this]( int id, bool checked ) {
+#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) )
+    auto buttonSignal = QOverload< int, bool >::of( &QButtonGroup::buttonToggled );
+#else
+    auto buttonSignal = &QButtonGroup::idToggled;
+#endif
+    connect( m_grp, buttonSignal, this, [this]( int id, bool checked ) {
         if ( checked )  // An action was picked.
         {
             m_choice = static_cast< InstallChoice >( id );