From 6d0752712369a66d61eb5cda19f9560f4da2de1b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 16 Apr 2020 23:37:58 +0200 Subject: [PATCH 001/399] [partition] Comment-out unsupported swap options - I notice they get copied into distro configurations a lot, leading to warnings in the logs --- src/modules/partition/partition.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index f6cc34ee4..758de0b97 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -34,10 +34,10 @@ efiSystemPartition: "/boot/efi" # 8.8GiB on disk in the end). userSwapChoices: - none # Create no swap, use no swap - - reuse # Re-use existing swap, but don't create any (unsupported right now) - small # Up to 4GB - suspend # At least main memory size - - file # To swap file instead of partition (unsupported right now) + # - reuse # Re-use existing swap, but don't create any (unsupported right now) + # - file # To swap file instead of partition (unsupported right now) # LEGACY SETTINGS (these will generate a warning) # ensureSuspendToDisk: true From ca59c8419cbb2a0a8032f0e7399e8fd8015e2403 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 17 Apr 2020 00:24:00 +0200 Subject: [PATCH 002/399] [partition] Goal of this branch: configurable default action --- src/modules/partition/partition.conf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 758de0b97..4eb2bf878 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -39,6 +39,16 @@ userSwapChoices: # - reuse # Re-use existing swap, but don't create any (unsupported right now) # - file # To swap file instead of partition (unsupported right now) +# By default, when the user arrives at the partitioning page, no action +# is selected (out of erase, reuse, ...). You can explicitly set None +# here to select no action on arrival, **or** pick one of these +# actions and that will be selected if it is available. If it isn't +# available on arrival, no action will be selected. +# - erase +# - replace +# - alongside +userDefaultAction: None + # LEGACY SETTINGS (these will generate a warning) # ensureSuspendToDisk: true # neverCreateSwap: false From b33e54abb9622c0153abdb39d50ef5f8504084dc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 17 Apr 2020 00:24:32 +0200 Subject: [PATCH 003/399] [partition] Stub of a Config object - Even though this isn't a QML'able module, work towards a decoupled Config object anyway - Not actually used yet. --- src/modules/partition/CMakeLists.txt | 1 + src/modules/partition/core/Config.cpp | 19 ++++++++++++ src/modules/partition/core/Config.h | 44 +++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 src/modules/partition/core/Config.cpp create mode 100644 src/modules/partition/core/Config.h diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index d40bbcd1c..65b1a91e9 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -56,6 +56,7 @@ if ( KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND SOURCES core/BootLoaderModel.cpp core/ColorUtils.cpp + core/Config.cpp core/DeviceList.cpp core/DeviceModel.cpp core/KPMHelpers.cpp diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp new file mode 100644 index 000000000..50dd052d0 --- /dev/null +++ b/src/modules/partition/core/Config.cpp @@ -0,0 +1,19 @@ +/* === This file is part of Calamares - === + * + * Copyright 2020, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "Config.h" diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h new file mode 100644 index 000000000..c9b2bd289 --- /dev/null +++ b/src/modules/partition/core/Config.h @@ -0,0 +1,44 @@ +/* === This file is part of Calamares - === + * + * Copyright 2020, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PARTITION_CONFIG_H +#define PARTITION_CONFIG_H + +#include "core/PartitionActions.h" + +#include +#include + +class Config : public QObject +{ + Q_OBJECT + +public: + Config() = default; + virtual ~Config() = default; + + using SwapChoiceSet = QSet< PartitionActions::Choices::SwapChoice >; + +private: + SwapChoiceSet m_swapChoices; + + qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module +}; + + +#endif From c7857b7749b040a1d14fd376441f036b8dedebd1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 17 Apr 2020 00:28:14 +0200 Subject: [PATCH 004/399] [partition] Coding style on tests --- .../partition/tests/ClearMountsJobTests.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/modules/partition/tests/ClearMountsJobTests.cpp b/src/modules/partition/tests/ClearMountsJobTests.cpp index 17ff48945..bdccc1bc4 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.cpp +++ b/src/modules/partition/tests/ClearMountsJobTests.cpp @@ -26,19 +26,17 @@ QTEST_GUILESS_MAIN( ClearMountsJobTests ) /* Not exactly public API */ -QStringList -getPartitionsForDevice( const QString& deviceName ); +QStringList getPartitionsForDevice( const QString& deviceName ); QStringList -getPartitionsForDevice_other(const QString& deviceName) +getPartitionsForDevice_other( const QString& deviceName ) { QProcess process; process.setProgram( "sh" ); - process.setArguments( { - "-c", - QString( "echo $(awk '{print $4}' /proc/partitions | sed -e '/name/d' -e '/^$/d' -e '/[1-9]/!d' | grep %1)" ) - .arg( deviceName ) - } ); + process.setArguments( + { "-c", + QString( "echo $(awk '{print $4}' /proc/partitions | sed -e '/name/d' -e '/^$/d' -e '/[1-9]/!d' | grep %1)" ) + .arg( deviceName ) } ); process.start(); process.waitForFinished(); @@ -55,10 +53,11 @@ getPartitionsForDevice_other(const QString& deviceName) ClearMountsJobTests::ClearMountsJobTests() { - Logger::setupLogLevel(6); + Logger::setupLogLevel( Logger::LOGDEBUG ); } -void ClearMountsJobTests::testFindPartitions() +void +ClearMountsJobTests::testFindPartitions() { QStringList partitions = getPartitionsForDevice( "sda" ); QStringList other_part = getPartitionsForDevice_other( "sda" ); From a381d6794f0e013ff9ef99d8b3352674fb456920 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 May 2020 13:07:12 +0200 Subject: [PATCH 005/399] [partition] Migrate required-storage setting to Config object - Create and use the config object in the view step - Add setConfigurationMap() to Config --- src/modules/partition/core/Config.cpp | 28 +++++++++++++++++++ src/modules/partition/core/Config.h | 8 +++--- .../partition/gui/PartitionViewStep.cpp | 16 ++++------- src/modules/partition/gui/PartitionViewStep.h | 5 ++-- 4 files changed, 40 insertions(+), 17 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index 50dd052d0..5026169fb 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -17,3 +17,31 @@ */ #include "Config.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/Variant.h" + +Config::Config( QObject* parent ) + : QObject( parent ) +{ +} + +void +Config::setConfigurationMap( const QVariantMap& configurationMap ) +{ + // Settings that overlap with the Welcome module + m_requiredStorageGiB = CalamaresUtils::getDouble( configurationMap, "requiredStorage", -1.0 ); +} + +void +Config::updateGlobalStorage() const +{ + // If there's no setting (e.g. from the welcome page) for required storage + // then use ours, if it was set. + auto* gs = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; + if ( m_requiredStorageGiB >= 0.0 && gs && !gs->contains( "requiredStorageGiB" ) ) + { + gs->insert( "requiredStorageGiB", m_requiredStorageGiB ); + } +} diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index c9b2bd289..2543700be 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -29,14 +29,14 @@ class Config : public QObject Q_OBJECT public: - Config() = default; + Config( QObject* parent ); virtual ~Config() = default; - using SwapChoiceSet = QSet< PartitionActions::Choices::SwapChoice >; + void setConfigurationMap( const QVariantMap& ); + + void updateGlobalStorage() const; private: - SwapChoiceSet m_swapChoices; - qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module }; diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index a583a4b96..02666097b 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -22,6 +22,7 @@ #include "gui/PartitionViewStep.h" +#include "core/Config.h" #include "core/DeviceModel.h" #include "core/KPMHelpers.h" #include "core/OsproberEntry.h" @@ -64,11 +65,11 @@ PartitionViewStep::PartitionViewStep( QObject* parent ) : Calamares::ViewStep( parent ) + , m_config( new Config( this ) ) , m_core( nullptr ) , m_widget( new QStackedWidget() ) , m_choicePage( nullptr ) , m_manualPartitionPage( nullptr ) - , m_requiredStorageGiB( 0.0 ) { m_widget->setContentsMargins( 0, 0, 0, 0 ); @@ -385,13 +386,7 @@ PartitionViewStep::isAtEnd() const void PartitionViewStep::onActivate() { - // If there's no setting (e.g. from the welcome page) for required storage - // then use ours, if it was set. - auto* gs = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; - if ( m_requiredStorageGiB >= 0.0 && gs && !gs->contains( "requiredStorageGiB" ) ) - { - gs->insert( "requiredStorageGiB", m_requiredStorageGiB ); - } + m_config->updateGlobalStorage(); // if we're coming back to PVS from the next VS if ( m_widget->currentWidget() == m_choicePage && m_choicePage->currentChoice() == ChoicePage::Alongside ) @@ -525,6 +520,8 @@ PartitionViewStep::onLeave() void PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { + m_config->setConfigurationMap( configurationMap ); + // Copy the efiSystemPartition setting to the global storage. It is needed not only in // the EraseDiskPage, but also in the bootloader configuration modules (grub, bootloader). Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); @@ -635,9 +632,6 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_swapChoices = choices; - // Settings that overlap with the Welcome module - m_requiredStorageGiB = CalamaresUtils::getDouble( configurationMap, "requiredStorage", -1.0 ); - // These gs settings seem to be unused (in upstream Calamares) outside of // the partition module itself. gs->insert( "ensureSuspendToDisk", ensureSuspendToDisk ); diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index 63d11c816..efe2cb343 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -32,6 +32,7 @@ #include class ChoicePage; +class Config; class PartitionPage; class PartitionCoreModule; class QStackedWidget; @@ -78,6 +79,8 @@ private: void initPartitionCoreModule(); void continueLoading(); + Config* m_config; + PartitionCoreModule* m_core; QStackedWidget* m_widget; ChoicePage* m_choicePage; @@ -87,8 +90,6 @@ private: QFutureWatcher* m_future; QSet< PartitionActions::Choices::SwapChoice > m_swapChoices; - - qreal m_requiredStorageGiB; // May duplicate setting in the welcome module }; CALAMARES_PLUGIN_FACTORY_DECLARATION( PartitionViewStepFactory ) From 4ae398c18d9a71dccb125268b587b3a2f1185d1a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 May 2020 14:03:31 +0200 Subject: [PATCH 006/399] [partition] Move swap choices into config --- src/modules/partition/core/Config.cpp | 89 +++++++++++++++++++ src/modules/partition/core/Config.h | 3 + .../partition/gui/PartitionViewStep.cpp | 88 ------------------ src/modules/partition/gui/PartitionViewStep.h | 4 - 4 files changed, 92 insertions(+), 92 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index 5026169fb..b8e68a137 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -20,6 +20,7 @@ #include "GlobalStorage.h" #include "JobQueue.h" +#include "utils/Logger.h" #include "utils/Variant.h" Config::Config( QObject* parent ) @@ -27,11 +28,99 @@ Config::Config( QObject* parent ) { } +Config::SwapChoices +getSwapChoices( const QVariantMap& configurationMap ) +{ + // SWAP SETTINGS + // + // This is a bit convoluted because there's legacy settings to handle as well + // as the new-style list of choices, with mapping back-and-forth. + if ( configurationMap.contains( "userSwapChoices" ) + && ( configurationMap.contains( "ensureSuspendToDisk" ) || configurationMap.contains( "neverCreateSwap" ) ) ) + { + cError() << "Partition-module configuration mixes old- and new-style swap settings."; + } + + if ( configurationMap.contains( "ensureSuspendToDisk" ) ) + { + cWarning() << "Partition-module setting *ensureSuspendToDisk* is deprecated."; + } + bool ensureSuspendToDisk = CalamaresUtils::getBool( configurationMap, "ensureSuspendToDisk", true ); + + if ( configurationMap.contains( "neverCreateSwap" ) ) + { + cWarning() << "Partition-module setting *neverCreateSwap* is deprecated."; + } + bool neverCreateSwap = CalamaresUtils::getBool( configurationMap, "neverCreateSwap", false ); + + Config::SwapChoices choices; // Available swap choices + if ( configurationMap.contains( "userSwapChoices" ) ) + { + // We've already warned about overlapping settings with the + // legacy *ensureSuspendToDisk* and *neverCreateSwap*. + QStringList l = configurationMap[ "userSwapChoices" ].toStringList(); + + for ( const auto& item : l ) + { + bool ok = false; + auto v = PartitionActions::Choices::nameToChoice( item, ok ); + if ( ok ) + { + choices.insert( v ); + } + } + + if ( choices.isEmpty() ) + { + cWarning() << "Partition-module configuration for *userSwapChoices* is empty:" << l; + choices.insert( PartitionActions::Choices::SwapChoice::FullSwap ); + } + + // suspend if it's one of the possible choices; suppress swap only if it's + // the **only** choice available. + ensureSuspendToDisk = choices.contains( PartitionActions::Choices::SwapChoice::FullSwap ); + neverCreateSwap = ( choices.count() == 1 ) && choices.contains( PartitionActions::Choices::SwapChoice::NoSwap ); + } + else + { + // Convert the legacy settings into a single setting for now. + if ( neverCreateSwap ) + { + choices.insert( PartitionActions::Choices::SwapChoice::NoSwap ); + } + else if ( ensureSuspendToDisk ) + { + choices.insert( PartitionActions::Choices::SwapChoice::FullSwap ); + } + else + { + choices.insert( PartitionActions::Choices::SwapChoice::SmallSwap ); + } + } + + // Not all are supported right now // FIXME + static const char unsupportedSetting[] = "Partition-module does not support *userSwapChoices* setting"; + +#define COMPLAIN_UNSUPPORTED( x ) \ + if ( choices.contains( x ) ) \ + { \ + cWarning() << unsupportedSetting << PartitionActions::Choices::choiceToName( x ); \ + choices.remove( x ); \ + } + + COMPLAIN_UNSUPPORTED( PartitionActions::Choices::SwapChoice::SwapFile ) + COMPLAIN_UNSUPPORTED( PartitionActions::Choices::SwapChoice::ReuseSwap ) +#undef COMPLAIN_UNSUPPORTED + + return choices; +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { // Settings that overlap with the Welcome module m_requiredStorageGiB = CalamaresUtils::getDouble( configurationMap, "requiredStorage", -1.0 ); + m_swapChoices = getSwapChoices( configurationMap ); } void diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index 2543700be..dcd8199d7 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -36,7 +36,10 @@ public: void updateGlobalStorage() const; + using SwapChoices = QSet< PartitionActions::Choices::SwapChoice >; + private: + SwapChoices m_swapChoices; qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module }; diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 02666097b..608d8c70c 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -549,94 +549,6 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) gs->insert( "efiSystemPartitionName", CalamaresUtils::getString( configurationMap, "efiSystemPartitionName" ) ); } - // SWAP SETTINGS - // - // This is a bit convoluted because there's legacy settings to handle as well - // as the new-style list of choices, with mapping back-and-forth. - if ( configurationMap.contains( "userSwapChoices" ) - && ( configurationMap.contains( "ensureSuspendToDisk" ) || configurationMap.contains( "neverCreateSwap" ) ) ) - { - cError() << "Partition-module configuration mixes old- and new-style swap settings."; - } - - if ( configurationMap.contains( "ensureSuspendToDisk" ) ) - { - cWarning() << "Partition-module setting *ensureSuspendToDisk* is deprecated."; - } - bool ensureSuspendToDisk = CalamaresUtils::getBool( configurationMap, "ensureSuspendToDisk", true ); - - if ( configurationMap.contains( "neverCreateSwap" ) ) - { - cWarning() << "Partition-module setting *neverCreateSwap* is deprecated."; - } - bool neverCreateSwap = CalamaresUtils::getBool( configurationMap, "neverCreateSwap", false ); - - QSet< PartitionActions::Choices::SwapChoice > choices; // Available swap choices - if ( configurationMap.contains( "userSwapChoices" ) ) - { - // We've already warned about overlapping settings with the - // legacy *ensureSuspendToDisk* and *neverCreateSwap*. - QStringList l = configurationMap[ "userSwapChoices" ].toStringList(); - - for ( const auto& item : l ) - { - bool ok = false; - auto v = PartitionActions::Choices::nameToChoice( item, ok ); - if ( ok ) - { - choices.insert( v ); - } - } - - if ( choices.isEmpty() ) - { - cWarning() << "Partition-module configuration for *userSwapChoices* is empty:" << l; - choices.insert( PartitionActions::Choices::SwapChoice::FullSwap ); - } - - // suspend if it's one of the possible choices; suppress swap only if it's - // the **only** choice available. - ensureSuspendToDisk = choices.contains( PartitionActions::Choices::SwapChoice::FullSwap ); - neverCreateSwap = ( choices.count() == 1 ) && choices.contains( PartitionActions::Choices::SwapChoice::NoSwap ); - } - else - { - // Convert the legacy settings into a single setting for now. - if ( neverCreateSwap ) - { - choices.insert( PartitionActions::Choices::SwapChoice::NoSwap ); - } - else if ( ensureSuspendToDisk ) - { - choices.insert( PartitionActions::Choices::SwapChoice::FullSwap ); - } - else - { - choices.insert( PartitionActions::Choices::SwapChoice::SmallSwap ); - } - } - - // Not all are supported right now // FIXME - static const char unsupportedSetting[] = "Partition-module does not support *userSwapChoices* setting"; - -#define COMPLAIN_UNSUPPORTED( x ) \ - if ( choices.contains( x ) ) \ - { \ - cWarning() << unsupportedSetting << PartitionActions::Choices::choiceToName( x ); \ - choices.remove( x ); \ - } - - COMPLAIN_UNSUPPORTED( PartitionActions::Choices::SwapChoice::SwapFile ) - COMPLAIN_UNSUPPORTED( PartitionActions::Choices::SwapChoice::ReuseSwap ) -#undef COMPLAIN_UNSUPPORTED - - m_swapChoices = choices; - - // These gs settings seem to be unused (in upstream Calamares) outside of - // the partition module itself. - gs->insert( "ensureSuspendToDisk", ensureSuspendToDisk ); - gs->insert( "neverCreateSwap", neverCreateSwap ); - // OTHER SETTINGS // gs->insert( "drawNestedPartitions", CalamaresUtils::getBool( configurationMap, "drawNestedPartitions", false ) ); diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index efe2cb343..c2f7afdb3 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -26,8 +26,6 @@ #include "DllMacro.h" -#include "core/PartitionActions.h" - #include #include @@ -88,8 +86,6 @@ private: WaitingWidget* m_waitingWidget; QFutureWatcher* m_future; - - QSet< PartitionActions::Choices::SwapChoice > m_swapChoices; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( PartitionViewStepFactory ) From 68bb06675567a952996af4c3ec9f30d8229fbe60 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 18 May 2020 14:12:50 +0200 Subject: [PATCH 007/399] [partition] Consolidate SwapChoice handling - pickOne() may be useful, given a set of swap choices; expose it - move type definitions to PartitionActions, where some of them come from. --- src/modules/partition/core/Config.cpp | 4 ++-- src/modules/partition/core/Config.h | 4 +--- .../partition/core/PartitionActions.cpp | 19 ++++++++++++++++++ src/modules/partition/core/PartitionActions.h | 10 ++++++++++ src/modules/partition/gui/ChoicePage.cpp | 20 +------------------ 5 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index b8e68a137..d3b5a0310 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -28,7 +28,7 @@ Config::Config( QObject* parent ) { } -Config::SwapChoices +static PartitionActions::Choices::SwapChoiceSet getSwapChoices( const QVariantMap& configurationMap ) { // SWAP SETTINGS @@ -53,7 +53,7 @@ getSwapChoices( const QVariantMap& configurationMap ) } bool neverCreateSwap = CalamaresUtils::getBool( configurationMap, "neverCreateSwap", false ); - Config::SwapChoices choices; // Available swap choices + PartitionActions::Choices::SwapChoiceSet choices; // Available swap choices if ( configurationMap.contains( "userSwapChoices" ) ) { // We've already warned about overlapping settings with the diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index dcd8199d7..c18506f7b 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -36,10 +36,8 @@ public: void updateGlobalStorage() const; - using SwapChoices = QSet< PartitionActions::Choices::SwapChoice >; - private: - SwapChoices m_swapChoices; + PartitionActions::Choices::SwapChoiceSet m_swapChoices; qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module }; diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index d0de2c0d4..3bf5d35d4 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -293,6 +293,25 @@ choiceToName( SwapChoice c ) return nameTable().find( c, ok ); } +SwapChoice +pickOne( const SwapChoiceSet& s ) +{ + if ( s.count() == 0 ) + { + return SwapChoice::NoSwap; + } + if ( s.count() == 1 ) + { + return *( s.begin() ); + } + if ( s.contains( SwapChoice::NoSwap ) ) + { + return SwapChoice::NoSwap; + } + // Here, count > 1 but NoSwap is not a member. + return *( s.begin() ); +} + } // namespace Choices } // namespace PartitionActions diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index ed7045822..558ccb4b9 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -19,6 +19,7 @@ #ifndef PARTITIONACTIONS_H #define PARTITIONACTIONS_H +#include #include class PartitionCoreModule; @@ -42,10 +43,19 @@ enum SwapChoice FullSwap, // ensureSuspendToDisk -- at least RAM size SwapFile // use a file (if supported) }; +using SwapChoiceSet = QSet< SwapChoice >; SwapChoice nameToChoice( QString name, bool& ok ); QString choiceToName( SwapChoice ); +/** @brief Given a set of swap choices, return a sensible value from it. + * + * "Sensible" here means: if there is one value, use it; otherwise, use + * NoSwap if there are no choices, or if NoSwap is one of the choices, in the set. + * If that's not possible, any value from the set. + */ +SwapChoice pickOne( const SwapChoiceSet& s ); + struct ReplacePartitionOptions { QString defaultFsType; // e.g. "ext4" or "btrfs" diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 5c90ea7b0..b7d4c33ad 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -70,24 +70,6 @@ using CalamaresUtils::Partition::isPartitionFreeSpace; using CalamaresUtils::Partition::findPartitionByPath; using Calamares::PrettyRadioButton; -/** @brief Given a set of swap choices, return a sensible value from it. - * - * "Sensible" here means: if there is one value, use it; otherwise, use - * NoSwap if there are no choices, or if NoSwap is one of the choices, in the set. - * If that's not possible, any value from the set. - */ -SwapChoice pickOne( const SwapChoiceSet& s ) -{ - if ( s.count() == 0 ) - return SwapChoice::NoSwap; - if ( s.count() == 1 ) - return *( s.begin() ); - if ( s.contains( SwapChoice::NoSwap ) ) - return SwapChoice::NoSwap; - // Here, count > 1 but NoSwap is not a member. - return *( s.begin() ); -} - /** * @brief ChoicePage::ChoicePage is the default constructor. Called on startup as part of * the module loading code path. @@ -112,7 +94,7 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent ) , m_lastSelectedDeviceIndex( -1 ) , m_enableEncryptionWidget( true ) , m_availableSwapChoices( swapChoices ) - , m_eraseSwapChoice( pickOne( swapChoices ) ) + , m_eraseSwapChoice( PartitionActions::Choices::pickOne( swapChoices ) ) , m_allowManualPartitioning( true ) { setupUi( this ); From 4473d7f5dd4f45fb6f2af3f92befb49f666887d5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 22 Jun 2020 16:18:10 -0400 Subject: [PATCH 008/399] [preservefiles] Move permissions classes to libcalamares --- .../permissions.cpp => libcalamares/utils/Permissions.cpp} | 0 .../permissions.h => libcalamares/utils/Permissions.h} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/{modules/preservefiles/permissions.cpp => libcalamares/utils/Permissions.cpp} (100%) rename src/{modules/preservefiles/permissions.h => libcalamares/utils/Permissions.h} (100%) diff --git a/src/modules/preservefiles/permissions.cpp b/src/libcalamares/utils/Permissions.cpp similarity index 100% rename from src/modules/preservefiles/permissions.cpp rename to src/libcalamares/utils/Permissions.cpp diff --git a/src/modules/preservefiles/permissions.h b/src/libcalamares/utils/Permissions.h similarity index 100% rename from src/modules/preservefiles/permissions.h rename to src/libcalamares/utils/Permissions.h From e24f812b2d29e2833668b2c4a553a9d9ef1e496b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 22 Jun 2020 16:32:47 -0400 Subject: [PATCH 009/399] [libcalamares] Chase Permissions move - Fix include names in *preservefiles* - Tidy up include guards - Fix CMakeLists in *perservefiles* and *libcalamares* - Use SPDX license headers --- src/libcalamares/CMakeLists.txt | 1 + src/libcalamares/utils/Permissions.cpp | 67 ++++++-------- src/libcalamares/utils/Permissions.h | 41 ++++----- src/modules/preservefiles/CMakeLists.txt | 1 - src/modules/preservefiles/PreserveFiles.cpp | 99 ++++++++++++--------- src/modules/preservefiles/PreserveFiles.h | 34 +++---- 6 files changed, 115 insertions(+), 128 deletions(-) diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 0516b5613..56bacb32a 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -76,6 +76,7 @@ set( libSources utils/Dirs.cpp utils/Entropy.cpp utils/Logger.cpp + utils/Permissions.cpp utils/PluginFactory.cpp utils/Retranslator.cpp utils/String.cpp diff --git a/src/libcalamares/utils/Permissions.cpp b/src/libcalamares/utils/Permissions.cpp index a3f8ac136..d9d3226e6 100644 --- a/src/libcalamares/utils/Permissions.cpp +++ b/src/libcalamares/utils/Permissions.cpp @@ -1,75 +1,66 @@ /* === This file is part of Calamares - === * - * Copyright (C) 2018 Scott Harvey - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * SPDX-FileCopyrightText: 2018 Scott Harvey + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * */ +#include "Permissions.h" + #include #include -#include "permissions.h" -Permissions::Permissions() : - m_username(), - m_group(), - m_valid(false), - m_value(0) +Permissions::Permissions() + : m_username() + , m_group() + , m_valid( false ) + , m_value( 0 ) { } -Permissions::Permissions(QString p) : Permissions() +Permissions::Permissions( QString p ) + : Permissions() { - parsePermissions(p); + parsePermissions( p ); } -void Permissions::parsePermissions(const QString& p) { +void +Permissions::parsePermissions( const QString& p ) +{ - QStringList segments = p.split(":"); + QStringList segments = p.split( ":" ); - if (segments.length() != 3) { + if ( segments.length() != 3 ) + { m_valid = false; return; } - if (segments[0].isEmpty() || segments[1].isEmpty()) { + if ( segments[ 0 ].isEmpty() || segments[ 1 ].isEmpty() ) + { m_valid = false; return; } bool ok; - int octal = segments[2].toInt(&ok, 8); - if (!ok || octal == 0) { + int octal = segments[ 2 ].toInt( &ok, 8 ); + if ( !ok || octal == 0 ) + { m_valid = false; return; - } else { + } + else + { m_value = octal; } // We have exactly three segments and the third is valid octal, // so we can declare the string valid and set the user and group names m_valid = true; - m_username = segments[0]; - m_group = segments[1]; + m_username = segments[ 0 ]; + m_group = segments[ 1 ]; return; - } - - - - - - diff --git a/src/libcalamares/utils/Permissions.h b/src/libcalamares/utils/Permissions.h index 4cb70a2c2..baa5da554 100644 --- a/src/libcalamares/utils/Permissions.h +++ b/src/libcalamares/utils/Permissions.h @@ -1,45 +1,35 @@ /* === This file is part of Calamares - === * - * Copyright (C) 2018 Scott Harvey - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * SPDX-FileCopyrightText: 2018 Scott Harvey + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * */ -#ifndef PERMISSIONS_H -#define PERMISSIONS_H +#ifndef LIBCALAMARES_PERMISSIONS_H +#define LIBCALAMARES_PERMISSIONS_H + +#include "DllMacro.h" #include /** - * @brief The Permissions class takes a QString @p in the form of + * @brief The Permissions class takes a QString @p in the form of * ::, checks it for validity, and makes the three * components available indivdually. */ -class Permissions +class DLLEXPORT Permissions { public: - /** @brief Constructor - * - * Splits the string @p at the colon (":") into separate elements for + * + * Splits the string @p at the colon (":") into separate elements for * , , and (permissions), where is returned as * an **octal** integer. */ - Permissions(QString p); - + Permissions( QString p ); + /** @brief Default constructor of an invalid Permissions. */ Permissions(); @@ -50,13 +40,12 @@ public: QString octal() const { return QString::number( m_value, 8 ); } private: - void parsePermissions(QString const &p); + void parsePermissions( QString const& p ); QString m_username; QString m_group; bool m_valid; int m_value; - }; -#endif // PERMISSIONS_H +#endif // LIBCALAMARES_PERMISSIONS_H diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index f6cd98008..571de31ca 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -4,7 +4,6 @@ calamares_add_plugin( preservefiles TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES - permissions.cpp PreserveFiles.cpp LINK_PRIVATE_LIBRARIES calamares diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 175f8e4f8..3e34024e7 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -1,39 +1,28 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PreserveFiles.h" -#include "permissions.h" - #include "CalamaresVersion.h" -#include "JobQueue.h" #include "GlobalStorage.h" - +#include "JobQueue.h" #include "utils/CalamaresUtilsSystem.h" #include "utils/CommandList.h" #include "utils/Logger.h" +#include "utils/Permissions.h" #include "utils/Units.h" #include using CalamaresUtils::operator""_MiB; -QString targetPrefix() +QString +targetPrefix() { if ( CalamaresUtils::System::instance()->doChroot() ) { @@ -42,9 +31,13 @@ QString targetPrefix() { QString r = gs->value( "rootMountPoint" ).toString(); if ( !r.isEmpty() ) + { return r; + } else + { cDebug() << "RootMountPoint is empty"; + } } else { @@ -55,16 +48,21 @@ QString targetPrefix() return QLatin1String( "/" ); } -QString atReplacements( QString s ) +QString +atReplacements( QString s ) { Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); QString root( "/" ); QString user; if ( gs && gs->contains( "rootMountPoint" ) ) + { root = gs->value( "rootMountPoint" ).toString(); + } if ( gs && gs->contains( "username" ) ) + { user = gs->value( "username" ).toString(); + } return s.replace( "@@ROOT@@", root ).replace( "@@USER@@", user ); } @@ -74,9 +72,7 @@ PreserveFiles::PreserveFiles( QObject* parent ) { } -PreserveFiles::~PreserveFiles() -{ -} +PreserveFiles::~PreserveFiles() {} QString PreserveFiles::prettyName() const @@ -107,8 +103,7 @@ copy_file( const QString& source, const QString& dest ) { b = sourcef.read( 1_MiB ); destf.write( b ); - } - while ( b.count() > 0 ); + } while ( b.count() > 0 ); sourcef.close(); destf.close(); @@ -116,14 +111,19 @@ copy_file( const QString& source, const QString& dest ) return true; } -Calamares::JobResult PreserveFiles::exec() +Calamares::JobResult +PreserveFiles::exec() { if ( m_items.isEmpty() ) + { return Calamares::JobResult::error( tr( "No files configured to save for later." ) ); + } QString prefix = targetPrefix(); if ( !prefix.endsWith( '/' ) ) + { prefix.append( '/' ); + } int count = 0; for ( const auto& it : m_items ) @@ -133,16 +133,24 @@ Calamares::JobResult PreserveFiles::exec() QString dest = prefix + bare_dest; if ( it.type == ItemType::Log ) + { source = Logger::logFile(); + } if ( it.type == ItemType::Config ) { if ( Calamares::JobQueue::instance()->globalStorage()->save( dest ) ) + { cWarning() << "Could not write config for" << dest; + } else + { ++count; + } } else if ( source.isEmpty() ) + { cWarning() << "Skipping unnamed source file for" << dest; + } else { if ( copy_file( source, dest ) ) @@ -153,17 +161,23 @@ Calamares::JobResult PreserveFiles::exec() int r; - r = s_p->targetEnvCall( QStringList{ "chown", it.perm.username(), bare_dest } ); + r = s_p->targetEnvCall( QStringList { "chown", it.perm.username(), bare_dest } ); if ( r ) + { cWarning() << "Could not chown target" << bare_dest; + } - r = s_p->targetEnvCall( QStringList{ "chgrp", it.perm.group(), bare_dest } ); + r = s_p->targetEnvCall( QStringList { "chgrp", it.perm.group(), bare_dest } ); if ( r ) + { cWarning() << "Could not chgrp target" << bare_dest; + } - r = s_p->targetEnvCall( QStringList{ "chmod", it.perm.octal(), bare_dest } ); + r = s_p->targetEnvCall( QStringList { "chmod", it.perm.octal(), bare_dest } ); if ( r ) + { cWarning() << "Could not chmod target" << bare_dest; + } } ++count; @@ -171,12 +185,13 @@ Calamares::JobResult PreserveFiles::exec() } } - return count == m_items.count() ? - Calamares::JobResult::ok() : - Calamares::JobResult::error( tr( "Not all of the configured files could be preserved." ) ); + return count == m_items.count() + ? Calamares::JobResult::ok() + : Calamares::JobResult::error( tr( "Not all of the configured files could be preserved." ) ); } -void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) +void +PreserveFiles::setConfigurationMap( const QVariantMap& configurationMap ) { auto files = configurationMap[ "files" ]; if ( !files.isValid() ) @@ -193,7 +208,9 @@ void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) QString defaultPermissions = configurationMap[ "perm" ].toString(); if ( defaultPermissions.isEmpty() ) + { defaultPermissions = QStringLiteral( "root:root:0400" ); + } QVariantList l = files.toList(); unsigned int c = 0; @@ -203,22 +220,23 @@ void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) { QString filename = li.toString(); if ( !filename.isEmpty() ) - m_items.append( Item{ filename, filename, Permissions( defaultPermissions ), ItemType::Path } ); + m_items.append( Item { filename, filename, Permissions( defaultPermissions ), ItemType::Path } ); else + { cDebug() << "Empty filename for preservefiles, item" << c; + } } else if ( li.type() == QVariant::Map ) { const auto map = li.toMap(); QString dest = map[ "dest" ].toString(); QString from = map[ "from" ].toString(); - ItemType t = - ( from == "log" ) ? ItemType::Log : - ( from == "config" ) ? ItemType::Config : - ItemType::None; + ItemType t = ( from == "log" ) ? ItemType::Log : ( from == "config" ) ? ItemType::Config : ItemType::None; QString perm = map[ "perm" ].toString(); if ( perm.isEmpty() ) + { perm = defaultPermissions; + } if ( dest.isEmpty() ) { @@ -230,15 +248,16 @@ void PreserveFiles::setConfigurationMap(const QVariantMap& configurationMap) } else { - m_items.append( Item{ QString(), dest, Permissions( perm ), t } ); + m_items.append( Item { QString(), dest, Permissions( perm ), t } ); } } else + { cDebug() << "Invalid type for preservefiles, item" << c; + } ++c; } } -CALAMARES_PLUGIN_FACTORY_DEFINITION( PreserveFilesFactory, registerPlugin(); ) - +CALAMARES_PLUGIN_FACTORY_DEFINITION( PreserveFilesFactory, registerPlugin< PreserveFiles >(); ) diff --git a/src/modules/preservefiles/PreserveFiles.h b/src/modules/preservefiles/PreserveFiles.h index 587ac9bab..214ff0df8 100644 --- a/src/modules/preservefiles/PreserveFiles.h +++ b/src/modules/preservefiles/PreserveFiles.h @@ -1,35 +1,23 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PRESERVEFILES_H #define PRESERVEFILES_H +#include "CppJob.h" +#include "DllMacro.h" +#include "utils/Permissions.h" +#include "utils/PluginFactory.h" + #include #include #include -#include "CppJob.h" -#include "DllMacro.h" - -#include "utils/PluginFactory.h" - -#include "permissions.h" - class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob { Q_OBJECT @@ -40,7 +28,7 @@ class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob Path, Log, Config - } ; + }; struct Item { @@ -48,7 +36,7 @@ class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob QString dest; Permissions perm; ItemType type; - } ; + }; using ItemList = QList< Item >; @@ -68,4 +56,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( PreserveFilesFactory ) -#endif // PRESERVEFILES_H +#endif // PRESERVEFILES_H From e1c85340e40a09756a0d60d79179ea1f26e4a967 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Mon, 20 Jul 2020 12:05:55 +0200 Subject: [PATCH 010/399] i18n: [calamares] Automatic merge of Transifex translations FIXES #1455 --- lang/calamares_cs_CZ.ts | 8 ++++---- lang/calamares_pt_BR.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index e38f1ff69..e1a62eb13 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -781,7 +781,7 @@ Instalační program bude ukončen a všechny změny ztraceny. <h1>Welcome to the Calamares setup program for %1</h1> - + <h1>Vítejte v Calamares instalačním programu pro %1.</h1> @@ -796,7 +796,7 @@ Instalační program bude ukončen a všechny změny ztraceny. <h1>Welcome to the %1 installer</h1> - + <h1>Vítejte v instalátoru %1.</h1> @@ -3424,7 +3424,7 @@ Výstup: KDE user feedback - + Zpětná vazba uživatele KDE @@ -3445,7 +3445,7 @@ Výstup: Could not configure KDE user feedback correctly, Calamares error %1. - + Nepodařilo se správně nastavit zpětnou vazbu KDE uživatele, chyba Calamares %1. diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index f65ecd0ee..27d8803a3 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -3549,7 +3549,7 @@ Saída: Your username must start with a lowercase letter or underscore. - Seu nome de usuário deve começar com uma letra maiúscula ou com um sublinhado. + Seu nome de usuário deve começar com uma letra minúscula ou com um sublinhado. From 0d5db2dd062c13c542c02a0a5750e8e8393c6e84 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 12:36:58 +0200 Subject: [PATCH 011/399] [localeq] Config-handling is a total bodge-job, disable --- src/modules/localeq/LocaleQmlViewStep.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index fd5e72734..4354cb7bd 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -65,7 +65,7 @@ LocaleQmlViewStep::fetchGeoIpTimezone() } } - m_config->setLocaleInfo(m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath); + // m_config->setLocaleInfo(m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath); } Calamares::RequirementsList LocaleQmlViewStep::checkRequirements() @@ -138,6 +138,7 @@ void LocaleQmlViewStep::onActivate() void LocaleQmlViewStep::onLeave() { +#if 0 if ( true ) { m_jobs = m_config->createJobs(); @@ -157,6 +158,7 @@ void LocaleQmlViewStep::onLeave() m_jobs.clear(); Calamares::JobQueue::instance()->globalStorage()->remove( "localeConf" ); } +#endif } void LocaleQmlViewStep::setConfigurationMap(const QVariantMap& configurationMap) From 8119c7e72a861df5d85394cd602963d86e059cc9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 12:37:27 +0200 Subject: [PATCH 012/399] [locale] Reset Config object The Config object wasn't being used at all in the locale module; reset it to empty and start using it in locale, so that configuration functionality can be added to it as-needed, and with the necessary refactoring built-in. --- src/modules/locale/Config.cpp | 306 +------------------------- src/modules/locale/Config.h | 56 +---- src/modules/locale/LocaleViewStep.cpp | 4 +- src/modules/locale/LocaleViewStep.h | 10 +- 4 files changed, 17 insertions(+), 359 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index cde0a5e09..ae8595734 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,313 +20,16 @@ #include "Config.h" -#include "LCLocaleDialog.h" -#include "SetTimezoneJob.h" -#include "timezonewidget/timezonewidget.h" - -#include "GlobalStorage.h" -#include "JobQueue.h" -#include "Settings.h" - -#include "locale/Label.h" -#include "locale/TimeZone.h" -#include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" -#include "utils/Retranslator.h" - -#include -#include -#include Config::Config( QObject* parent ) : QObject( parent ) - , m_regionList( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) - , m_regionModel( new CalamaresUtils::Locale::CStringListModel( m_regionList ) ) - , m_zonesModel( new CalamaresUtils::Locale::CStringListModel() ) - , m_blockTzWidgetSet( false ) { - connect( m_regionModel, &CalamaresUtils::Locale::CStringListModel::currentIndexChanged, [&]() { - m_zonesModel->setList( static_cast< const CalamaresUtils::Locale::TZRegion* >( - m_regionModel->item( m_regionModel->currentIndex() ) ) - ->zones() ); - updateLocaleLabels(); - } ); - - connect( - m_zonesModel, &CalamaresUtils::Locale::CStringListModel::currentIndexChanged, [&]() { updateLocaleLabels(); } ); } -Config::~Config() -{ - qDeleteAll( m_regionList ); -} - -CalamaresUtils::Locale::CStringListModel* -Config::zonesModel() const -{ - return m_zonesModel; -} - -CalamaresUtils::Locale::CStringListModel* -Config::regionModel() const -{ - return m_regionModel; -} +Config::~Config() {} void -Config::setLocaleInfo( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ) +Config::setConfigurationMap( const QVariantMap& ) { - using namespace CalamaresUtils::Locale; - - cDebug() << "REGION MODEL SIZE" << initialRegion << initialZone; - auto* region = m_regionList.find< TZRegion >( initialRegion ); - if ( region && region->zones().find< TZZone >( initialZone ) ) - { - m_regionModel->setCurrentIndex( m_regionModel->indexOf( initialRegion ) ); - m_zonesModel->setList( region->zones() ); - m_zonesModel->setCurrentIndex( m_zonesModel->indexOf( initialZone ) ); - } - else - { - m_regionModel->setCurrentIndex( m_regionModel->indexOf( "America" ) ); - m_zonesModel->setList( - static_cast< const TZRegion* >( m_regionModel->item( m_regionModel->currentIndex() ) )->zones() ); - m_zonesModel->setCurrentIndex( m_zonesModel->indexOf( "New_York" ) ); - } - - // Some distros come with a meaningfully commented and easy to parse locale.gen, - // and others ship a separate file /usr/share/i18n/SUPPORTED with a clean list of - // supported locales. We first try that one, and if it doesn't exist, we fall back - // to parsing the lines from locale.gen - m_localeGenLines.clear(); - QFile supported( "/usr/share/i18n/SUPPORTED" ); - QByteArray ba; - - if ( supported.exists() && supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - ba = supported.readAll(); - supported.close(); - - const auto lines = ba.split( '\n' ); - for ( const QByteArray& line : lines ) - { - m_localeGenLines.append( QString::fromLatin1( line.simplified() ) ); - } - } - else - { - QFile localeGen( localeGenPath ); - if ( localeGen.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - ba = localeGen.readAll(); - localeGen.close(); - } - else - { - cWarning() << "Cannot open file" << localeGenPath - << ". Assuming the supported languages are already built into " - "the locale archive."; - QProcess localeA; - localeA.start( "locale", QStringList() << "-a" ); - localeA.waitForFinished(); - ba = localeA.readAllStandardOutput(); - } - const auto lines = ba.split( '\n' ); - for ( const QByteArray& line : lines ) - { - if ( line.startsWith( "## " ) || line.startsWith( "# " ) || line.simplified() == "#" ) - { - continue; - } - - QString lineString = QString::fromLatin1( line.simplified() ); - if ( lineString.startsWith( "#" ) ) - { - lineString.remove( '#' ); - } - lineString = lineString.simplified(); - - if ( lineString.isEmpty() ) - { - continue; - } - - m_localeGenLines.append( lineString ); - } - } - - if ( m_localeGenLines.isEmpty() ) - { - cWarning() << "cannot acquire a list of available locales." - << "The locale and localecfg modules will be broken as long as this " - "system does not provide" - << "\n\t " - << "* a well-formed" << supported.fileName() << "\n\tOR" - << "* a well-formed" - << ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR" - << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; - return; // something went wrong and there's nothing we can do about it. - } - - // Assuming we have a list of supported locales, we usually only want UTF-8 ones - // because it's not 1995. - for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ) - { - if ( !it->contains( "UTF-8", Qt::CaseInsensitive ) && !it->contains( "utf8", Qt::CaseInsensitive ) ) - { - it = m_localeGenLines.erase( it ); - } - else - { - ++it; - } - } - - // We strip " UTF-8" from "en_US.UTF-8 UTF-8" because it's redundant redundant. - for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ++it ) - { - if ( it->endsWith( " UTF-8" ) ) - { - it->chop( 6 ); - } - *it = it->simplified(); - } - updateGlobalStorage(); - updateLocaleLabels(); -} - -void -Config::updateGlobalLocale() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); - gs->insert( "locale", bcp47 ); -} - -void -Config::updateGlobalStorage() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - - const auto* location = currentLocation(); - bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) - || ( location->zone() != gs->value( "locationZone" ) ); -#ifdef DEBUG_TIMEZONES - if ( locationChanged ) - { - cDebug() << "Location changed" << gs->value( "locationRegion" ) << ',' << gs->value( "locationZone" ) << "to" - << location->region() << ',' << location->zone(); - } -#endif - gs->insert( "locationRegion", location->region() ); - gs->insert( "locationZone", location->zone() ); - - updateGlobalLocale(); - - // If we're in chroot mode (normal install mode), then we immediately set the - // timezone on the live system. When debugging timezones, don't bother. -#ifndef DEBUG_TIMEZONES - if ( locationChanged && Calamares::Settings::instance()->doChroot() ) - { - QProcess::execute( "timedatectl", // depends on systemd - { "set-timezone", location->region() + '/' + location->zone() } ); - } -#endif - - // Preserve those settings that have been made explicit. - auto newLocale = guessLocaleConfiguration(); - if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lang ) - { - newLocale.setLanguage( m_selectedLocaleConfiguration.language() ); - } - if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lc ) - { - newLocale.lc_numeric = m_selectedLocaleConfiguration.lc_numeric; - newLocale.lc_time = m_selectedLocaleConfiguration.lc_time; - newLocale.lc_monetary = m_selectedLocaleConfiguration.lc_monetary; - newLocale.lc_paper = m_selectedLocaleConfiguration.lc_paper; - newLocale.lc_name = m_selectedLocaleConfiguration.lc_name; - newLocale.lc_address = m_selectedLocaleConfiguration.lc_address; - newLocale.lc_telephone = m_selectedLocaleConfiguration.lc_telephone; - newLocale.lc_measurement = m_selectedLocaleConfiguration.lc_measurement; - newLocale.lc_identification = m_selectedLocaleConfiguration.lc_identification; - } - newLocale.explicit_lang = m_selectedLocaleConfiguration.explicit_lang; - newLocale.explicit_lc = m_selectedLocaleConfiguration.explicit_lc; - - m_selectedLocaleConfiguration = newLocale; - updateLocaleLabels(); -} - -void -Config::updateLocaleLabels() -{ - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; - auto labels = prettyLocaleStatus( lc ); - emit prettyStatusChanged(); -} - - -std::pair< QString, QString > -Config::prettyLocaleStatus( const LocaleConfiguration& lc ) const -{ - using CalamaresUtils::Locale::Label; - - Label lang( lc.language(), Label::LabelFormat::AlwaysWithCountry ); - Label num( lc.lc_numeric, Label::LabelFormat::AlwaysWithCountry ); - - return std::make_pair< QString, QString >( - tr( "The system language will be set to %1." ).arg( lang.label() ), - tr( "The numbers and dates locale will be set to %1." ).arg( num.label() ) ); -} - -Calamares::JobList -Config::createJobs() -{ - QList< Calamares::job_ptr > list; - const CalamaresUtils::Locale::TZZone* location = currentLocation(); - - Calamares::Job* j = new SetTimezoneJob( location->region(), location->zone() ); - list.append( Calamares::job_ptr( j ) ); - - return list; -} - -LocaleConfiguration -Config::guessLocaleConfiguration() const -{ - return LocaleConfiguration::fromLanguageAndLocation( - QLocale().name(), m_localeGenLines, currentLocation() ? currentLocation()->country() : "" ); -} - -QMap< QString, QString > -Config::localesMap() -{ - return m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().toMap() - : m_selectedLocaleConfiguration.toMap(); -} - -QString -Config::prettyStatus() const -{ - QString status; - status += tr( "Set timezone to %1/%2.
" ) - .arg( m_regionModel->item( m_regionModel->currentIndex() )->tr() ) - .arg( m_zonesModel->item( m_zonesModel->currentIndex() )->tr() ); - - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; - auto labels = prettyLocaleStatus( lc ); - status += labels.first + "
"; - status += labels.second + "
"; - - return status; -} - - -const CalamaresUtils::Locale::TZZone* -Config::currentLocation() const -{ - return static_cast< const CalamaresUtils::Locale::TZZone* >( m_zonesModel->item( m_zonesModel->currentIndex() ) ); } diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index cfbed7bae..fcfc22a98 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,66 +21,17 @@ #ifndef LOCALE_CONFIG_H #define LOCALE_CONFIG_H -#include "LocaleConfiguration.h" - -#include "Job.h" -#include "locale/TimeZone.h" - -#include #include -#include - class Config : public QObject { Q_OBJECT - Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) - Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) - Q_PROPERTY( QString prettyStatus READ prettyStatus NOTIFY prettyStatusChanged FINAL ) public: Config( QObject* parent = nullptr ); ~Config(); - CalamaresUtils::Locale::CStringListModel* regionModel() const; - CalamaresUtils::Locale::CStringListModel* zonesModel() const; - void setLocaleInfo( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ); - - Calamares::JobList createJobs(); - QMap< QString, QString > localesMap(); - QString prettyStatus() const; - -private: - CalamaresUtils::Locale::CStringPairList m_regionList; - CalamaresUtils::Locale::CStringListModel* m_regionModel; - CalamaresUtils::Locale::CStringListModel* m_zonesModel; - - LocaleConfiguration m_selectedLocaleConfiguration; - - QStringList m_localeGenLines; - int m_currentRegion = -1; - - bool m_blockTzWidgetSet; - - LocaleConfiguration guessLocaleConfiguration() const; - - // For the given locale config, return two strings describing - // the settings for language and numbers. - std::pair< QString, QString > prettyLocaleStatus( const LocaleConfiguration& ) const; - - /** @brief Update the GS *locale* key with the selected system language. - * - * This uses whatever is set in m_selectedLocaleConfiguration as the language, - * and writes it to GS *locale* key (as a string, in BCP47 format). - */ - void updateGlobalLocale(); - void updateGlobalStorage(); - void updateLocaleLabels(); - - const CalamaresUtils::Locale::TZZone* currentLocation() const; - -signals: - void prettyStatusChanged(); + void setConfigurationMap( const QVariantMap& ); }; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 3a8c37673..880f42a7d 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -34,7 +34,6 @@ #include #include -#include CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleViewStepFactory, registerPlugin< LocaleViewStep >(); ) @@ -45,6 +44,7 @@ LocaleViewStep::LocaleViewStep( QObject* parent ) , m_actualWidget( nullptr ) , m_nextEnabled( false ) , m_geoip( nullptr ) + , m_config( std::make_unique< Config >() ) { QBoxLayout* mainLayout = new QHBoxLayout; m_widget->setLayout( mainLayout ); @@ -221,6 +221,8 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) cWarning() << "GeoIP Style" << style << "is not recognized."; } } + + m_config->setConfigurationMap( configurationMap ); } Calamares::RequirementsList diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 841aba97f..4e6c3d262 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -20,16 +20,14 @@ #ifndef LOCALEVIEWSTEP_H #define LOCALEVIEWSTEP_H +#include "Config.h" + +#include "DllMacro.h" #include "geoip/Handler.h" #include "geoip/Interface.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" -#include "DllMacro.h" - -#include -#include - #include class LocalePage; @@ -79,6 +77,8 @@ private: Calamares::JobList m_jobs; std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; + + std::unique_ptr< Config > m_config; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( LocaleViewStepFactory ) From b6b5c449968c72c76ba60819f1f66054f46739b8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 12:55:07 +0200 Subject: [PATCH 013/399] [locale] Load supported locales in Config --- src/modules/locale/Config.cpp | 126 +++++++++++++++++++++++++++++++++- src/modules/locale/Config.h | 4 ++ 2 files changed, 129 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index ae8595734..d886f1eec 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -21,6 +21,124 @@ #include "Config.h" #include "utils/Logger.h" +#include "utils/Variant.h" + +#include +#include + +/** @brief Load supported locale keys + * + * If i18n/SUPPORTED exists, read the lines from that and return those + * as supported locales; otherwise, try the file at @p localeGenPath + * and get lines from that. Failing both, try the output of `locale -a`. + * + * This gives us a list of locale identifiers (e.g. en_US.UTF-8), which + * are not particularly human-readable. + * + * Only UTF-8 locales are returned (even if the system claims to support + * other, non-UTF-8, locales). + */ +static QStringList +loadLocales( const QString& localeGenPath ) +{ + QStringList localeGenLines; + + // Some distros come with a meaningfully commented and easy to parse locale.gen, + // and others ship a separate file /usr/share/i18n/SUPPORTED with a clean list of + // supported locales. We first try that one, and if it doesn't exist, we fall back + // to parsing the lines from locale.gen + localeGenLines.clear(); + QFile supported( "/usr/share/i18n/SUPPORTED" ); + QByteArray ba; + + if ( supported.exists() && supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + ba = supported.readAll(); + supported.close(); + + const auto lines = ba.split( '\n' ); + for ( const QByteArray& line : lines ) + { + localeGenLines.append( QString::fromLatin1( line.simplified() ) ); + } + } + else + { + QFile localeGen( localeGenPath ); + if ( localeGen.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + ba = localeGen.readAll(); + localeGen.close(); + } + else + { + cWarning() << "Cannot open file" << localeGenPath + << ". Assuming the supported languages are already built into " + "the locale archive."; + QProcess localeA; + localeA.start( "locale", QStringList() << "-a" ); + localeA.waitForFinished(); + ba = localeA.readAllStandardOutput(); + } + const auto lines = ba.split( '\n' ); + for ( const QByteArray& line : lines ) + { + if ( line.startsWith( "## " ) || line.startsWith( "# " ) || line.simplified() == "#" ) + { + continue; + } + + QString lineString = QString::fromLatin1( line.simplified() ); + if ( lineString.startsWith( "#" ) ) + { + lineString.remove( '#' ); + } + lineString = lineString.simplified(); + + if ( lineString.isEmpty() ) + { + continue; + } + + localeGenLines.append( lineString ); + } + } + + if ( localeGenLines.isEmpty() ) + { + cWarning() << "cannot acquire a list of available locales." + << "The locale and localecfg modules will be broken as long as this " + "system does not provide" + << "\n\t " + << "* a well-formed" << supported.fileName() << "\n\tOR" + << "* a well-formed" + << ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR" + << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; + return localeGenLines; // something went wrong and there's nothing we can do about it. + } + + // Assuming we have a list of supported locales, we usually only want UTF-8 ones + // because it's not 1995. + auto notUtf8 = []( const QString& s ) { + return !s.contains( "UTF-8", Qt::CaseInsensitive ) && !s.contains( "utf8", Qt::CaseInsensitive ); + }; + auto it = std::remove_if( localeGenLines.begin(), localeGenLines.end(), notUtf8 ); + localeGenLines.erase( it, localeGenLines.end() ); + + // We strip " UTF-8" from "en_US.UTF-8 UTF-8" because it's redundant redundant. + // Also simplify whitespace. + auto unredundant = []( QString& s ) { + if ( s.endsWith( " UTF-8" ) ) + { + s.chop( 6 ); + } + s = s.simplified(); + }; + std::for_each( localeGenLines.begin(), localeGenLines.end(), unredundant ); + + return localeGenLines; +} + Config::Config( QObject* parent ) : QObject( parent ) @@ -30,6 +148,12 @@ Config::Config( QObject* parent ) Config::~Config() {} void -Config::setConfigurationMap( const QVariantMap& ) +Config::setConfigurationMap( const QVariantMap& configurationMap ) { + QString localeGenPath = CalamaresUtils::getString( configurationMap, "localeGenPath" ); + if ( localeGenPath.isEmpty() ) + { + localeGenPath = QStringLiteral( "/etc/locale.gen" ); + } + m_localeGenLines = loadLocales( localeGenPath ); } diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index fcfc22a98..53e4d5561 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -32,6 +32,10 @@ public: ~Config(); void setConfigurationMap( const QVariantMap& ); + +private: + /// A list of supported locale identifiers (e.g. "en_US.UTF-8") + QStringList m_localeGenLines; }; From 338635146f792f448ab59448fc72d01a078634b5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 12:58:35 +0200 Subject: [PATCH 014/399] [locale] Hand the Config object also to the page --- src/modules/locale/LocalePage.cpp | 5 +++-- src/modules/locale/LocalePage.h | 7 ++++++- src/modules/locale/LocaleViewStep.cpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 53d97ea02..faeae7edc 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -19,6 +19,7 @@ #include "LocalePage.h" +#include "Config.h" #include "SetTimezoneJob.h" #include "timezonewidget/timezonewidget.h" @@ -26,7 +27,6 @@ #include "JobQueue.h" #include "LCLocaleDialog.h" #include "Settings.h" - #include "locale/Label.h" #include "locale/TimeZone.h" #include "utils/CalamaresUtilsGui.h" @@ -40,8 +40,9 @@ #include #include -LocalePage::LocalePage( QWidget* parent ) +LocalePage::LocalePage( Config* config, QWidget* parent ) : QWidget( parent ) + , m_config( config ) , m_regionList( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( m_regionList ) ) , m_blockTzWidgetSet( false ) diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index f31d81fb6..1e2052223 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -32,13 +32,15 @@ class QComboBox; class QLabel; class QPushButton; + +class Config; class TimeZoneWidget; class LocalePage : public QWidget { Q_OBJECT public: - explicit LocalePage( QWidget* parent = nullptr ); + explicit LocalePage( class Config* config, QWidget* parent = nullptr ); virtual ~LocalePage(); void init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ); @@ -54,6 +56,9 @@ public: private: LocaleConfiguration guessLocaleConfiguration() const; + /// @brief Non-owning pointer to the ViewStep's config + Config* m_config; + // For the given locale config, return two strings describing // the settings for language and numbers. std::pair< QString, QString > prettyLocaleStatus( const LocaleConfiguration& ) const; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 880f42a7d..173532bf8 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -68,7 +68,7 @@ LocaleViewStep::setUpPage() { if ( !m_actualWidget ) { - m_actualWidget = new LocalePage(); + m_actualWidget = new LocalePage( m_config.get() ); } m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath ); m_widget->layout()->addWidget( m_actualWidget ); From 25ba1bb767ae2ae32d53caba820917cf02d20e4f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 13:22:38 +0200 Subject: [PATCH 015/399] [locale] Remove localeGenLines from page - the Config object took over loading of the string list - expose the list as a property - drop loading code from the page. --- src/modules/locale/Config.h | 4 ++ src/modules/locale/LocalePage.cpp | 100 ++------------------------ src/modules/locale/LocalePage.h | 4 +- src/modules/locale/LocaleViewStep.cpp | 2 +- 4 files changed, 10 insertions(+), 100 deletions(-) diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 53e4d5561..34aa8b92f 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -26,6 +26,7 @@ class Config : public QObject { Q_OBJECT + Q_PROPERTY( const QStringList& supportedLocales READ supportedLocales CONSTANT FINAL ) public: Config( QObject* parent = nullptr ); @@ -33,6 +34,9 @@ public: void setConfigurationMap( const QVariantMap& ); +public Q_SLOTS: + const QStringList& supportedLocales() const { return m_localeGenLines; } + private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") QStringList m_localeGenLines; diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index faeae7edc..fa04d1058 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -138,7 +138,7 @@ LocalePage::updateLocaleLabels() } void -LocalePage::init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ) +LocalePage::init( const QString& initialRegion, const QString& initialZone ) { using namespace CalamaresUtils::Locale; @@ -155,98 +155,6 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone, cons m_tzWidget->setCurrentLocation( "America", "New_York" ); } - // Some distros come with a meaningfully commented and easy to parse locale.gen, - // and others ship a separate file /usr/share/i18n/SUPPORTED with a clean list of - // supported locales. We first try that one, and if it doesn't exist, we fall back - // to parsing the lines from locale.gen - m_localeGenLines.clear(); - QFile supported( "/usr/share/i18n/SUPPORTED" ); - QByteArray ba; - - if ( supported.exists() && supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - ba = supported.readAll(); - supported.close(); - - const auto lines = ba.split( '\n' ); - for ( const QByteArray& line : lines ) - { - m_localeGenLines.append( QString::fromLatin1( line.simplified() ) ); - } - } - else - { - QFile localeGen( localeGenPath ); - if ( localeGen.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - ba = localeGen.readAll(); - localeGen.close(); - } - else - { - cWarning() << "Cannot open file" << localeGenPath - << ". Assuming the supported languages are already built into " - "the locale archive."; - QProcess localeA; - localeA.start( "locale", QStringList() << "-a" ); - localeA.waitForFinished(); - ba = localeA.readAllStandardOutput(); - } - const auto lines = ba.split( '\n' ); - for ( const QByteArray& line : lines ) - { - if ( line.startsWith( "## " ) || line.startsWith( "# " ) || line.simplified() == "#" ) - { - continue; - } - - QString lineString = QString::fromLatin1( line.simplified() ); - if ( lineString.startsWith( "#" ) ) - { - lineString.remove( '#' ); - } - lineString = lineString.simplified(); - - if ( lineString.isEmpty() ) - { - continue; - } - - m_localeGenLines.append( lineString ); - } - } - - if ( m_localeGenLines.isEmpty() ) - { - cWarning() << "cannot acquire a list of available locales." - << "The locale and localecfg modules will be broken as long as this " - "system does not provide" - << "\n\t " - << "* a well-formed" << supported.fileName() << "\n\tOR" - << "* a well-formed" - << ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR" - << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; - return; // something went wrong and there's nothing we can do about it. - } - - // Assuming we have a list of supported locales, we usually only want UTF-8 ones - // because it's not 1995. - auto notUtf8 = []( const QString& s ) { - return !s.contains( "UTF-8", Qt::CaseInsensitive ) && !s.contains( "utf8", Qt::CaseInsensitive ); - }; - auto it = std::remove_if( m_localeGenLines.begin(), m_localeGenLines.end(), notUtf8 ); - m_localeGenLines.erase( it, m_localeGenLines.end() ); - - // We strip " UTF-8" from "en_US.UTF-8 UTF-8" because it's redundant redundant. - // Also simplify whitespace. - auto unredundant = []( QString& s ) { - if ( s.endsWith( " UTF-8" ) ) - { - s.chop( 6 ); - } - s = s.simplified(); - }; - std::for_each( m_localeGenLines.begin(), m_localeGenLines.end(), unredundant ); updateGlobalStorage(); } @@ -319,7 +227,7 @@ LocaleConfiguration LocalePage::guessLocaleConfiguration() const { return LocaleConfiguration::fromLanguageAndLocation( - QLocale().name(), m_localeGenLines, m_tzWidget->currentLocation()->country() ); + QLocale().name(), m_config->supportedLocales(), m_tzWidget->currentLocation()->country() ); } @@ -446,7 +354,7 @@ LocalePage::changeLocale() LCLocaleDialog* dlg = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().language() : m_selectedLocaleConfiguration.language(), - m_localeGenLines, + m_config->supportedLocales(), this ); dlg->exec(); if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) @@ -467,7 +375,7 @@ LocalePage::changeFormats() LCLocaleDialog* dlg = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().lc_numeric : m_selectedLocaleConfiguration.lc_numeric, - m_localeGenLines, + m_config->supportedLocales(), this ); dlg->exec(); if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 1e2052223..ea41f5233 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -43,7 +43,7 @@ public: explicit LocalePage( class Config* config, QWidget* parent = nullptr ); virtual ~LocalePage(); - void init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ); + void init( const QString& initialRegion, const QString& initialZone ); QString prettyStatus() const; @@ -95,8 +95,6 @@ private: LocaleConfiguration m_selectedLocaleConfiguration; - QStringList m_localeGenLines; - bool m_blockTzWidgetSet; }; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 173532bf8..e35b5a112 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -70,7 +70,7 @@ LocaleViewStep::setUpPage() { m_actualWidget = new LocalePage( m_config.get() ); } - m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath ); + m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second ); m_widget->layout()->addWidget( m_actualWidget ); ensureSize( m_actualWidget->sizeHint() ); From 931ce20f304075e737bfd44632752a0c852ccf18 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 13:38:20 +0200 Subject: [PATCH 016/399] [locale] Reduce API surface - getLocationPosition doesn't need to be a method, since it calls out to a static function of TimeZoneImageList anyway. --- src/modules/locale/timezonewidget/timezonewidget.cpp | 7 +++++++ src/modules/locale/timezonewidget/timezonewidget.h | 5 ----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index b81e0414c..05ee8f54d 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -34,6 +34,13 @@ #define ZONE_NAME QStringLiteral( "zone" ) #endif +static QPoint +getLocationPosition( const CalamaresUtils::Locale::TZZone* l ) +{ + return TimeZoneImageList::getLocationPosition( l->longitude(), l->latitude() ); +} + + TimeZoneWidget::TimeZoneWidget( QWidget* parent ) : QWidget( parent ) , timeZoneImages( TimeZoneImageList::fromQRC() ) diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index afebbfd7b..08a0491ee 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -53,11 +53,6 @@ private: TimeZoneImageList timeZoneImages; const TZZone* m_currentLocation = nullptr; // Not owned by me - QPoint getLocationPosition( const TZZone* l ) - { - return timeZoneImages.getLocationPosition( l->longitude(), l->latitude() ); - } - void paintEvent( QPaintEvent* event ); void mousePressEvent( QMouseEvent* event ); }; From 439f828d9b31a63841761a0b982bd9be6f73a910 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 13:47:23 +0200 Subject: [PATCH 017/399] [locale] Document TZ widget --- .../locale/timezonewidget/timezonewidget.h | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 08a0491ee..7ef29d72d 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -31,6 +31,22 @@ #include #include +/** @brief The TimeZoneWidget shows a map and reports where clicks happen + * + * This widget shows a map (unspecified whether it's a whole world map + * or can show regionsvia some kind of internal state). Mouse clicks are + * translated into timezone locations (e.g. the zone for America/New_York). + * + * The current location can be changed programmatically, by name + * or through a pointer to a location. If a pointer is used, take care + * that the pointer is to a zone in the same model as used by the + * widget. + * + * When a location is chosen -- by mouse click or programmatically -- + * the locationChanged() signal is emitted with the new location. + * + * NOTE: the widget currently uses the globally cached TZRegion::fromZoneTab() + */ class TimeZoneWidget : public QWidget { Q_OBJECT @@ -39,10 +55,19 @@ public: explicit TimeZoneWidget( QWidget* parent = nullptr ); + /** @brief Sets a location by name + * + * @p region should be "America" or the like, while @p zone + * names a zone within that region. + */ void setCurrentLocation( QString region, QString zone ); + /** @brief Sets a location by pointer + * + * Pointer should be within the same model as the widget uses. + */ void setCurrentLocation( const TZZone* location ); - const TZZone* currentLocation() { return m_currentLocation; } + const TZZone* currentLocation() { return m_currentLocation; } signals: void locationChanged( const TZZone* location ); From 51b7ec875f7c952ab0bce1e616784006b709dd8f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 13:55:00 +0200 Subject: [PATCH 018/399] [locale] Don't need own copy of zones list --- src/modules/locale/LocalePage.cpp | 8 +++----- src/modules/locale/LocalePage.h | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index fa04d1058..9903b2693 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -43,8 +43,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) : QWidget( parent ) , m_config( config ) - , m_regionList( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) - , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( m_regionList ) ) + , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) ) , m_blockTzWidgetSet( false ) { QBoxLayout* mainLayout = new QVBoxLayout; @@ -118,7 +117,6 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) LocalePage::~LocalePage() { - qDeleteAll( m_regionList ); } @@ -145,7 +143,7 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone ) m_regionCombo->setModel( m_regionModel.get() ); m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - auto* region = m_regionList.find< TZRegion >( initialRegion ); + auto* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( initialRegion ); if ( region && region->zones().find< TZZone >( initialZone ) ) { m_tzWidget->setCurrentLocation( initialRegion, initialZone ); @@ -297,7 +295,7 @@ LocalePage::regionChanged( int currentIndex ) Q_UNUSED( currentIndex ) QString selectedRegion = m_regionCombo->currentData().toString(); - TZRegion* region = m_regionList.find< TZRegion >( selectedRegion ); + TZRegion* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( selectedRegion ); if ( !region ) { return; diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index ea41f5233..5d40f7fc8 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -79,7 +79,6 @@ private: void changeFormats(); // Dynamically, QList< TZRegion* > - CalamaresUtils::Locale::CStringPairList m_regionList; std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; TimeZoneWidget* m_tzWidget; From e8282f27a3af0827d3993ba702612e5a500c0fc8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 14:06:21 +0200 Subject: [PATCH 019/399] Docs: update RELEASE.md with some GPG-info and remove old steps --- ci/RELEASE.md | 112 +++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 61 deletions(-) diff --git a/ci/RELEASE.md b/ci/RELEASE.md index 524a67a65..7fa19c26a 100644 --- a/ci/RELEASE.md +++ b/ci/RELEASE.md @@ -1,21 +1,13 @@ # Calamares Release Process > Calamares releases are now rolling when-they-are-ready releases. -> Releases are made from *master* and tagged there. When, in future, +> Releases are made from *calamares* and tagged there. When, in future, > LTS releases resume, these steps may be edited again. > > Most things are automated through the release script [RELEASE.sh](RELEASE.sh) -## (0) A week in advance +## (1) Preparation -* Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs - automatically once a week on master. The badge is displayed on the - project front page and in the wiki. -* Build with clang -Weverything, fix what's relevant. - ``` - rm -rf build ; mkdir build ; cd build - CC=clang CXX=clang++ cmake .. && make - ``` * Make sure all tests pass. ``` make @@ -25,16 +17,6 @@ an additional environment variable to be set for some tests, which will destroy an attached disk. This is not always desirable. There are some sample config-files that are empty and which fail the config-tests. -* Notify [translators][transifex]. In the dashboard there is an *Announcements* - link that you can use to send a translation announcement. Note that regular - use of `txpush.sh` will notify translators as well of any changes. - -[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview -[transifex]: https://www.transifex.com/calamares/calamares/dashboard/ - - -## (1) Preparation - * Pull latest translations from Transifex. We only push / pull translations from master, so longer-lived branches (e.g. 3.1.x) don't get translation updates. This is to keep the translation workflow simple. The script @@ -47,13 +29,8 @@ fairly complete translations, or use `ci/txstats.py` for an automated suggestion. If there are changes, commit them. * Push the changes. -* Drop the RC variable to 0 in `CMakeLists.txt`, *CALAMARES_VERSION_RC*. -* Check `README.md` and the - [Coding Guide](https://github.com/calamares/calamares/wiki/Develop-Code), - make sure it's all still - relevant. Run `ci/calamaresstyle` to check the C++ code style. - Run pycodestyle on recently-modified Python modules, fix what makes sense. * Check defaults in `settings.conf` and other configuration files. +* Drop the RC variable to 0 in `CMakeLists.txt`, *CALAMARES_VERSION_RC*. * Edit `CHANGES` and set the date of the release. * Commit both. This is usually done with commit-message *Changes: pre-release housekeeping*. @@ -73,44 +50,16 @@ On success, it prints out a suitable signature- and SHA256 blurb for use in the release announcement. -### (2.1) Buld and Test +## (3) Release -* Build with gcc. If available, build again with Clang and double-check - any warnings Clang produces. -* Run the tests; `make test` in the build directory should have no - failures (or if there are, know why they are there). +Follow the instructions printed by the release script. -### (2.2) Tag - -* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the - tag is shown as a verified tag. Do not sign -rc tags. - You can use `make show-version` in the build directory to get the right - version number -- this will fail if you didn't follow step (1). - -### (2.3) Tarball - -* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without - the helper script, - ``` - V=calamares-3.1.5 - git archive -o $V.tar.gz --prefix $V/ master - ``` - Double check that the tarball matches the version number. -* Test tarball (e.g. unpack somewhere else and run the tests from step 0). - - -## (3) Housekeeping - -* Generate MD5 and SHA256 checksums. -* Upload tarball. -* Announce on mailing list, notify packagers. -* Write release article. -* Publish tarball. -* Update download page. +* Push the tags. +* Create a new release on GitHub. +* Upload tarball and signature. * Publish release article on `calamares.io`. -* Publicize on social networks. -* Close associated milestone on GitHub if this is the actual release. -* Publish blog post. +* Close associated milestone on GitHub if it's entirely done. +* Update topic on #calamares IRC channel. ## (4) Post-Release @@ -133,3 +82,44 @@ This release contains contributions from (alphabetically by first name): ## Modules ## - No module changes yet ``` + +# Related Material + +> This section isn't directly related to any specific release, +> but bears on all releases. + +## GPG Key Maintainence + +Calamares uses GPG Keys for signing the tarballs and some commits +(tags, mostly). Calamares uses the **maintainer's** personal GPG +key for this. This section details some GPG activities that the +maintainer should do with those keys. + +- Signing sub-key. It's convenient to use a signing sub-key specifically + for the signing of Calamares. To do so, add a key to the private key. + It's recommended to use key expiry, and to update signing keys periodically. + - Run `gpg -K` to find the key ID of your personal GPG secret key. + - Run `gpg --edit-key ` to edit that personal GPG key. + - In gpg edit-mode, use `addkey`, then pick a key type that is *sign-only* + (e.g. type 4, *RSA (sign only)*), then pick a keysize (3072 seems ok + as of 2020) and set a key expiry time, (e.g. in 18 months time). + - After generation, the secret key information is printed again, now + including the new signing subkey: + ``` +ssb rsa3072/0xCFDDC96F12B1915C + created: 2020-07-11 expires: 2022-01-02 usage: S +``` +- Update the `RELEASE.sh` script with a new signing sub-key ID when a new + one is generated. Also announce the change of signing sub-key (e.g. on + the Calmares site or as part of a release announcement). + - Send the updated key to keyservers with `gpg --send-keys ` + - Optional: sanitize the keyring for use in development machines. + Export the current subkeys of the master key and keep **only** those + secret keys around. There is documentation + [here](https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/) + but be careful. + - Export the public key material with `gpg --export --armor `, + possibly also setting an output file. + - Upload that public key to the relevant GitHub profile. + - Upload that public key to the Calamares site. + From 88d1d255f6a61080ce45d86116c4b662bc78eca5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 16:13:08 +0200 Subject: [PATCH 020/399] [locale] Add regions & zones models to Config - The models are constant pointers, even if their contents aren't. - Make the top-level (region) model point to the global TZ list. --- src/modules/locale/Config.cpp | 3 +++ src/modules/locale/Config.h | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index d886f1eec..52378b0b4 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -142,6 +142,9 @@ loadLocales( const QString& localeGenPath ) Config::Config( QObject* parent ) : QObject( parent ) + , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( + CalamaresUtils::Locale::TZRegion::fromZoneTab() ) ) + , m_zonesModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >() ) { } diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 34aa8b92f..a98ecc73d 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -21,12 +21,18 @@ #ifndef LOCALE_CONFIG_H #define LOCALE_CONFIG_H +#include "locale/TimeZone.h" + #include +#include + class Config : public QObject { Q_OBJECT Q_PROPERTY( const QStringList& supportedLocales READ supportedLocales CONSTANT FINAL ) + Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) + Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) public: Config( QObject* parent = nullptr ); @@ -36,10 +42,17 @@ public: public Q_SLOTS: const QStringList& supportedLocales() const { return m_localeGenLines; } + CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } + CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") QStringList m_localeGenLines; + + /// The regions (America, Asia, Europe ..) + std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; + /// The zones for the current region (e.g. America/New_York) + std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_zonesModel; }; From 4d5ff6d5c4d049ddf94921ffe49a48886ff79a98 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 16:27:15 +0200 Subject: [PATCH 021/399] [locale] Make the Page use the region model from Config --- src/modules/locale/LocalePage.cpp | 3 +-- src/modules/locale/LocalePage.h | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 9903b2693..2d0832758 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -43,7 +43,6 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) : QWidget( parent ) , m_config( config ) - , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) ) , m_blockTzWidgetSet( false ) { QBoxLayout* mainLayout = new QVBoxLayout; @@ -140,7 +139,7 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone ) { using namespace CalamaresUtils::Locale; - m_regionCombo->setModel( m_regionModel.get() ); + m_regionCombo->setModel( m_config->regionModel() ); m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); auto* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( initialRegion ); diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 5d40f7fc8..6c7fed1d6 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -78,9 +78,6 @@ private: void changeLocale(); void changeFormats(); - // Dynamically, QList< TZRegion* > - std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; - TimeZoneWidget* m_tzWidget; QComboBox* m_regionCombo; QComboBox* m_zoneCombo; From f0cac7d6692c472931f4224de95540d402077478 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 16:54:44 +0200 Subject: [PATCH 022/399] [locale] Hook tz widget up to the Config's data --- src/modules/locale/Config.cpp | 16 ++++++++++++++-- src/modules/locale/Config.h | 3 +++ src/modules/locale/LocalePage.cpp | 2 +- .../locale/timezonewidget/timezonewidget.cpp | 8 ++++---- .../locale/timezonewidget/timezonewidget.h | 4 +++- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 52378b0b4..39ae8732b 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -139,17 +139,29 @@ loadLocales( const QString& localeGenPath ) return localeGenLines; } +static inline const CalamaresUtils::Locale::CStringPairList& +timezoneData() +{ + return CalamaresUtils::Locale::TZRegion::fromZoneTab(); +} + Config::Config( QObject* parent ) : QObject( parent ) - , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( - CalamaresUtils::Locale::TZRegion::fromZoneTab() ) ) + , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( ::timezoneData() ) ) , m_zonesModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >() ) { } Config::~Config() {} +const CalamaresUtils::Locale::CStringPairList& +Config::timezoneData() const +{ + return ::timezoneData(); +} + + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index a98ecc73d..4f8c9bc64 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -33,6 +33,7 @@ class Config : public QObject Q_PROPERTY( const QStringList& supportedLocales READ supportedLocales CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) + Q_PROPERTY( const CalamaresUtils::Locale::CStringPairList& timezoneData READ timezoneData CONSTANT FINAL ) public: Config( QObject* parent = nullptr ); @@ -44,6 +45,8 @@ public Q_SLOTS: const QStringList& supportedLocales() const { return m_localeGenLines; } CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } + // Underlying data for the models + const CalamaresUtils::Locale::CStringPairList& timezoneData() const; private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 2d0832758..2a4212fca 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -48,7 +48,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) QBoxLayout* mainLayout = new QVBoxLayout; QBoxLayout* tzwLayout = new QHBoxLayout; - m_tzWidget = new TimeZoneWidget( this ); + m_tzWidget = new TimeZoneWidget( config->timezoneData(), this ); tzwLayout->addStretch(); tzwLayout->addWidget( m_tzWidget ); tzwLayout->addStretch(); diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 05ee8f54d..149ad6590 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -41,9 +41,10 @@ getLocationPosition( const CalamaresUtils::Locale::TZZone* l ) } -TimeZoneWidget::TimeZoneWidget( QWidget* parent ) +TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& zones, QWidget* parent ) : QWidget( parent ) , timeZoneImages( TimeZoneImageList::fromQRC() ) + , m_zonesData( zones ) { setMouseTracking( false ); setCursor( Qt::PointingHandCursor ); @@ -67,8 +68,7 @@ void TimeZoneWidget::setCurrentLocation( QString regionName, QString zoneName ) { using namespace CalamaresUtils::Locale; - const auto& regions = TZRegion::fromZoneTab(); - auto* region = regions.find< TZRegion >( regionName ); + auto* region = m_zonesData.find< TZRegion >( regionName ); if ( !region ) { return; @@ -201,7 +201,7 @@ TimeZoneWidget::mousePressEvent( QMouseEvent* event ) using namespace CalamaresUtils::Locale; const TZZone* closest = nullptr; - for ( const auto* region_p : TZRegion::fromZoneTab() ) + for ( const auto* region_p : m_zonesData ) { const auto* region = dynamic_cast< const TZRegion* >( region_p ); if ( region ) diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 7ef29d72d..c070b4cd4 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -53,7 +53,7 @@ class TimeZoneWidget : public QWidget public: using TZZone = CalamaresUtils::Locale::TZZone; - explicit TimeZoneWidget( QWidget* parent = nullptr ); + explicit TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& zones, QWidget* parent = nullptr ); /** @brief Sets a location by name * @@ -76,6 +76,8 @@ private: QFont font; QImage background, pin, currentZoneImage; TimeZoneImageList timeZoneImages; + + const CalamaresUtils::Locale::CStringPairList& m_zonesData; const TZZone* m_currentLocation = nullptr; // Not owned by me void paintEvent( QPaintEvent* event ); From 8c21b5985396af73dc51f1c8b486f3553cdde409 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 18:13:33 +0200 Subject: [PATCH 023/399] [locale] Remove unused localegen (moved to Config earlier) --- src/modules/locale/LocaleViewStep.cpp | 6 ------ src/modules/locale/LocaleViewStep.h | 5 ++--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index e35b5a112..d71523da1 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -201,12 +201,6 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); } - m_localeGenPath = CalamaresUtils::getString( configurationMap, "localeGenPath" ); - if ( m_localeGenPath.isEmpty() ) - { - m_localeGenPath = QStringLiteral( "/etc/locale.gen" ); - } - bool ok = false; QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok ); if ( ok ) diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 4e6c3d262..24764b172 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -72,10 +72,9 @@ private: bool m_nextEnabled; QString m_prettyStatus; - CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; - QString m_localeGenPath; - Calamares::JobList m_jobs; + + CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; std::unique_ptr< Config > m_config; From 5a6a9a0d45d95ebef47019a6632effeead0cd67b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 22:21:29 +0200 Subject: [PATCH 024/399] [locale] Move job-creation to Config - since Config knows what settings there are, it should create the jobs to run later -- not the Page. - this doesn't work yet, because the Config does **not** know what the selected timezone is yet. --- src/modules/locale/Config.cpp | 17 +++++++++++++++++ src/modules/locale/Config.h | 2 ++ src/modules/locale/LocalePage.cpp | 17 +---------------- src/modules/locale/LocalePage.h | 2 -- src/modules/locale/LocaleViewStep.cpp | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 39ae8732b..2e0eb8173 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -20,6 +20,8 @@ #include "Config.h" +#include "SetTimezoneJob.h" + #include "utils/Logger.h" #include "utils/Variant.h" @@ -172,3 +174,18 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) } m_localeGenLines = loadLocales( localeGenPath ); } + +Calamares::JobList +Config::createJobs() +{ + Calamares::JobList list; + const CalamaresUtils::Locale::TZZone* location = nullptr; // TODO: m_tzWidget->currentLocation(); + + if ( location ) + { + Calamares::Job* j = new SetTimezoneJob( location->region(), location->zone() ); + list.append( Calamares::job_ptr( j ) ); + } + + return list; +} diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 4f8c9bc64..8e1f29cf7 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -21,6 +21,7 @@ #ifndef LOCALE_CONFIG_H #define LOCALE_CONFIG_H +#include "Job.h" #include "locale/TimeZone.h" #include @@ -40,6 +41,7 @@ public: ~Config(); void setConfigurationMap( const QVariantMap& ); + Calamares::JobList createJobs(); public Q_SLOTS: const QStringList& supportedLocales() const { return m_localeGenLines; } diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 2a4212fca..b3fa8e8e9 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -114,9 +114,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) } -LocalePage::~LocalePage() -{ -} +LocalePage::~LocalePage() {} void @@ -185,19 +183,6 @@ LocalePage::prettyStatus() const } -Calamares::JobList -LocalePage::createJobs() -{ - QList< Calamares::job_ptr > list; - const CalamaresUtils::Locale::TZZone* location = m_tzWidget->currentLocation(); - - Calamares::Job* j = new SetTimezoneJob( location->region(), location->zone() ); - list.append( Calamares::job_ptr( j ) ); - - return list; -} - - QMap< QString, QString > LocalePage::localesMap() { diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 6c7fed1d6..c8312309e 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -47,8 +47,6 @@ public: QString prettyStatus() const; - Calamares::JobList createJobs(); - QMap< QString, QString > localesMap(); void onActivate(); diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index d71523da1..81162d843 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -166,7 +166,7 @@ LocaleViewStep::onLeave() { if ( m_actualWidget ) { - m_jobs = m_actualWidget->createJobs(); + m_jobs = m_config->createJobs(); m_prettyStatus = m_actualWidget->prettyStatus(); auto map = m_actualWidget->localesMap(); From 726f88218525b7fa91dca8410b372d2d15be99b4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jul 2020 23:06:12 +0200 Subject: [PATCH 025/399] [locale] Move current-location to Config --- src/modules/locale/Config.cpp | 25 ++++++++++++++++++ src/modules/locale/Config.h | 22 ++++++++++++++++ src/modules/locale/LocalePage.cpp | 26 ++++++++----------- .../locale/timezonewidget/timezonewidget.cpp | 20 +++----------- .../locale/timezonewidget/timezonewidget.h | 10 ++----- 5 files changed, 63 insertions(+), 40 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 2e0eb8173..5a97339a8 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -163,6 +163,31 @@ Config::timezoneData() const return ::timezoneData(); } +void +Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) +{ + using namespace CalamaresUtils::Locale; + auto* region = timezoneData().find< TZRegion >( regionName ); + auto* zone = region ? region->zones().find< TZZone >( zoneName ) : nullptr; + if ( zone ) + { + setCurrentLocation( zone ); + } + else + { + setCurrentLocation( QStringLiteral("America"), QStringLiteral("New_York") ); + } +} + +void +Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) +{ + if ( location != m_currentLocation ) + { + m_currentLocation = location; + emit currentLocationChanged( m_currentLocation ); + } +} void Config::setConfigurationMap( const QVariantMap& configurationMap ) diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 8e1f29cf7..44e7c9142 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -35,6 +35,7 @@ class Config : public QObject Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) Q_PROPERTY( const CalamaresUtils::Locale::CStringPairList& timezoneData READ timezoneData CONSTANT FINAL ) + Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation NOTIFY currentLocationChanged ) public: Config( QObject* parent = nullptr ); @@ -50,6 +51,23 @@ public Q_SLOTS: // Underlying data for the models const CalamaresUtils::Locale::CStringPairList& timezoneData() const; + /** @brief Sets a location by name + * + * @p region should be "America" or the like, while @p zone + * names a zone within that region. + */ + void setCurrentLocation( const QString& region, const QString& zone ); + /** @brief Sets a location by pointer + * + * Pointer should be within the same model as the widget uses. + */ + void setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ); + + const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } + +signals: + void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ); + private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") QStringList m_localeGenLines; @@ -58,6 +76,10 @@ private: std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; /// The zones for the current region (e.g. America/New_York) std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_zonesModel; + + /// The location, points into the timezone data + const CalamaresUtils::Locale::TZZone* m_currentLocation = nullptr; + }; diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index b3fa8e8e9..d4d24afef 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -104,9 +104,13 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) setMinimumWidth( m_tzWidget->width() ); setLayout( mainLayout ); + connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); + connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); + connect( m_tzWidget, &TimeZoneWidget::locationChanged, config, QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) ); + connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged ); connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged ); - connect( m_tzWidget, &TimeZoneWidget::locationChanged, this, &LocalePage::locationChanged ); + connect( m_localeChangeButton, &QPushButton::clicked, this, &LocalePage::changeLocale ); connect( m_formatsChangeButton, &QPushButton::clicked, this, &LocalePage::changeFormats ); @@ -140,16 +144,7 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone ) m_regionCombo->setModel( m_config->regionModel() ); m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - auto* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( initialRegion ); - if ( region && region->zones().find< TZZone >( initialZone ) ) - { - m_tzWidget->setCurrentLocation( initialRegion, initialZone ); - } - else - { - m_tzWidget->setCurrentLocation( "America", "New_York" ); - } - + m_config->setCurrentLocation( initialRegion, initialZone ); updateGlobalStorage(); } @@ -209,7 +204,7 @@ LocaleConfiguration LocalePage::guessLocaleConfiguration() const { return LocaleConfiguration::fromLanguageAndLocation( - QLocale().name(), m_config->supportedLocales(), m_tzWidget->currentLocation()->country() ); + QLocale().name(), m_config->supportedLocales(), m_config->currentLocation()->country() ); } @@ -227,7 +222,7 @@ LocalePage::updateGlobalStorage() { auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const auto* location = m_tzWidget->currentLocation(); + const auto* location = m_config->currentLocation(); bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) || ( location->zone() != gs->value( "locationZone" ) ); @@ -296,9 +291,10 @@ LocalePage::zoneChanged( int currentIndex ) { Q_UNUSED( currentIndex ) if ( !m_blockTzWidgetSet ) - m_tzWidget->setCurrentLocation( m_regionCombo->currentData().toString(), + { + m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() ); - + } updateGlobalStorage(); } diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 149ad6590..df1142e17 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -65,26 +65,13 @@ TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& z void -TimeZoneWidget::setCurrentLocation( QString regionName, QString zoneName ) +TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) { - using namespace CalamaresUtils::Locale; - auto* region = m_zonesData.find< TZRegion >( regionName ); - if ( !region ) + if ( location == m_currentLocation ) { return; } - auto* zone = region->zones().find< TZZone >( zoneName ); - if ( zone ) - { - setCurrentLocation( zone ); - } -} - - -void -TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) -{ m_currentLocation = location; // Set zone @@ -100,7 +87,6 @@ TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* locati // Repaint widget repaint(); - emit locationChanged( m_currentLocation ); } @@ -229,6 +215,6 @@ TimeZoneWidget::mousePressEvent( QMouseEvent* event ) // Set zone image and repaint widget setCurrentLocation( closest ); // Emit signal - emit locationChanged( m_currentLocation ); + emit locationChanged( closest ); } } diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index c070b4cd4..6bb94c0dd 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -55,21 +55,15 @@ public: explicit TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& zones, QWidget* parent = nullptr ); - /** @brief Sets a location by name - * - * @p region should be "America" or the like, while @p zone - * names a zone within that region. - */ - void setCurrentLocation( QString region, QString zone ); +public Q_SLOTS: /** @brief Sets a location by pointer * * Pointer should be within the same model as the widget uses. */ void setCurrentLocation( const TZZone* location ); - const TZZone* currentLocation() { return m_currentLocation; } - signals: + /** @brief The location has changed by mouse click */ void locationChanged( const TZZone* location ); private: From 98f912f80a59a0e3b61a902d0771e9f05c66833d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 00:11:16 +0200 Subject: [PATCH 026/399] [locale] Drop LocalePage:;init - setting the initial location is something the Config-object should do - setting up the combo-boxes can be done in the constructor --- src/modules/locale/LocalePage.cpp | 17 ++++------------- src/modules/locale/LocalePage.h | 2 -- src/modules/locale/LocaleViewStep.cpp | 2 +- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index d4d24afef..f0a2418ac 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -115,6 +115,10 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) connect( m_formatsChangeButton, &QPushButton::clicked, this, &LocalePage::changeFormats ); CALAMARES_RETRANSLATE_SLOT( &LocalePage::updateLocaleLabels ) + + m_regionCombo->setModel( m_config->regionModel() ); + m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); + updateGlobalStorage(); } @@ -136,19 +140,6 @@ LocalePage::updateLocaleLabels() m_formatsLabel->setText( labels.second ); } -void -LocalePage::init( const QString& initialRegion, const QString& initialZone ) -{ - using namespace CalamaresUtils::Locale; - - m_regionCombo->setModel( m_config->regionModel() ); - m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - - m_config->setCurrentLocation( initialRegion, initialZone ); - - updateGlobalStorage(); -} - std::pair< QString, QString > LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const { diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index c8312309e..3d4b1d03f 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -43,8 +43,6 @@ public: explicit LocalePage( class Config* config, QWidget* parent = nullptr ); virtual ~LocalePage(); - void init( const QString& initialRegion, const QString& initialZone ); - QString prettyStatus() const; QMap< QString, QString > localesMap(); diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 81162d843..e17c7b004 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -70,7 +70,7 @@ LocaleViewStep::setUpPage() { m_actualWidget = new LocalePage( m_config.get() ); } - m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second ); + m_config->setCurrentLocation( m_startingTimezone.first, m_startingTimezone.second ); m_widget->layout()->addWidget( m_actualWidget ); ensureSize( m_actualWidget->sizeHint() ); From 0645a46b42da350ed25d08d65ade6bdb110583db Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 00:21:16 +0200 Subject: [PATCH 027/399] [libcalamares] Expand RAII conveniences --- src/libcalamares/utils/RAII.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/utils/RAII.h b/src/libcalamares/utils/RAII.h index dae85e84a..28e57ff9e 100644 --- a/src/libcalamares/utils/RAII.h +++ b/src/libcalamares/utils/RAII.h @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify @@ -24,6 +24,7 @@ #define UTILS_RAII_H #include +#include #include @@ -44,4 +45,21 @@ struct cqDeleter } }; +/// @brief Sets a bool to @p value and resets to !value on destruction +template < bool value > +struct cBoolSetter +{ + bool& m_b; + + cBoolSetter( bool& b ) + : m_b( b ) + { + m_b = value; + } + ~cBoolSetter() { m_b = !value; } +}; + +/// @brief Blocks signals on a QObject until destruction +using cSignalBlocker = QSignalBlocker; + #endif From 81520bbbf9c60e21329dd3d38cb10804b3486bd3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 00:21:42 +0200 Subject: [PATCH 028/399] [locale] Chase RAII conveniences - several early-return paths would leave the TZ widget blocked - use the zones data from config --- src/modules/locale/LocalePage.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index f0a2418ac..abb4b63bc 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -31,6 +31,7 @@ #include "locale/TimeZone.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" +#include "utils/RAII.h" #include "utils/Retranslator.h" #include @@ -106,7 +107,10 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); - connect( m_tzWidget, &TimeZoneWidget::locationChanged, config, QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) ); + connect( m_tzWidget, + &TimeZoneWidget::locationChanged, + config, + QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) ); connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged ); connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged ); @@ -265,15 +269,17 @@ LocalePage::regionChanged( int currentIndex ) Q_UNUSED( currentIndex ) QString selectedRegion = m_regionCombo->currentData().toString(); - TZRegion* region = CalamaresUtils::Locale::TZRegion::fromZoneTab().find< TZRegion >( selectedRegion ); + TZRegion* region = m_config->timezoneData().find< TZRegion >( selectedRegion ); if ( !region ) { return; } - m_zoneCombo->blockSignals( true ); - m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); - m_zoneCombo->blockSignals( false ); + { + cSignalBlocker b( m_zoneCombo ); + m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); + } + m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); } @@ -283,8 +289,7 @@ LocalePage::zoneChanged( int currentIndex ) Q_UNUSED( currentIndex ) if ( !m_blockTzWidgetSet ) { - m_config->setCurrentLocation( m_regionCombo->currentData().toString(), - m_zoneCombo->currentData().toString() ); + m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() ); } updateGlobalStorage(); } @@ -292,7 +297,7 @@ LocalePage::zoneChanged( int currentIndex ) void LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) { - m_blockTzWidgetSet = true; + cBoolSetter< true > b( m_blockTzWidgetSet ); // Set region index int index = m_regionCombo->findData( location->region() ); @@ -312,8 +317,6 @@ LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) m_zoneCombo->setCurrentIndex( index ); - m_blockTzWidgetSet = false; - updateGlobalStorage(); } From a307217d83d9fcd4e1aa418331b70e954e896135 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 11:08:17 +0200 Subject: [PATCH 029/399] [locale] Tidy LocaleConfiguration - expand API documentation - minor coding-style adjustments --- src/modules/locale/LocaleConfiguration.cpp | 4 +-- src/modules/locale/LocaleConfiguration.h | 37 ++++++++++++++++------ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index f1810fb83..055907228 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -37,7 +37,7 @@ LocaleConfiguration::LocaleConfiguration( const QString& localeName, const QStri lc_numeric = lc_time = lc_monetary = lc_paper = lc_name = lc_address = lc_telephone = lc_measurement = lc_identification = formatsName; - (void)setLanguage( localeName ); + setLanguage( localeName ); } @@ -83,7 +83,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, if ( language == "pt" || language == "zh" ) { QString proposedLocale = QString( "%1_%2" ).arg( language ).arg( countryCode ); - foreach ( QString line, linesForLanguage ) + for ( const QString& line : linesForLanguage ) { if ( line.contains( proposedLocale ) ) { diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 4f4fc6b21..2e02bc02a 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -26,36 +26,53 @@ class LocaleConfiguration { -public: - /// @brief Create an empty locale, with nothing set - explicit LocaleConfiguration(); - /// @brief Create a locale with everything set to the given @p localeName +public: // TODO: private (but need to be public for tests) + /** @brief Create a locale with everything set to the given @p localeName + * + * Consumers should use fromLanguageAndLocation() instead. + */ explicit LocaleConfiguration( const QString& localeName /* "en_US.UTF-8" */ ) : LocaleConfiguration( localeName, localeName ) { } - /// @brief Create a locale with language and formats separate + /** @brief Create a locale with language and formats separate + * + * Consumers should use fromLanguageAndLocation() instead. + */ explicit LocaleConfiguration( const QString& localeName, const QString& formatsName ); + /// @brief Create an empty locale, with nothing set + explicit LocaleConfiguration(); + + /** @brief Create a "sensible" locale configuration for @p language and @p countryCode + * + * This method applies some heuristics to pick a good locale (from the list + * @p availableLocales), along with a good language (for instance, in + * large countries with many languages, picking a generally used one). + */ static LocaleConfiguration fromLanguageAndLocation( const QString& language, const QStringList& availableLocales, const QString& countryCode ); + /// Is this an empty (default-constructed and not modified) configuration? bool isEmpty() const; - /** @brief sets lang and the BCP47 representation + /** @brief sets language to @p localeName * - * Note that the documentation how this works is in packages.conf + * The language may be regionalized, e.g. "nl_BE". Both the language + * (with region) and BCP47 representation (without region, lowercase) + * are updated. The BCP47 representation is used by the packages module. + * See also `packages.conf` for a discussion of how this is used. */ void setLanguage( const QString& localeName ); + /// Current language (including region) QString language() const { return m_lang; } - - // Note that the documentation how this works is in packages.conf + /// Current language (lowercase, BCP47 format, no region) QString toBcp47() const { return m_languageLocaleBcp47; } QMap< QString, QString > toMap() const; // These become all uppercase in locale.conf, but we keep them lowercase here to - // avoid confusion with locale.h. + // avoid confusion with , which defines (e.g.) LC_NUMERIC macro. QString lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address, lc_telephone, lc_measurement, lc_identification; From 66eacce654402371439babdce599165b2a3acf24 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 13:16:52 +0200 Subject: [PATCH 030/399] [locale] Move localeconfiguration to Config object - the language and LC settings migrate from page to config - add API for explicitly setting language (which is then preserved when clicking new locations) --- src/modules/locale/Config.cpp | 61 ++++++++++++++++++++++- src/modules/locale/Config.h | 33 ++++++++++++- src/modules/locale/LocalePage.cpp | 82 +++++-------------------------- src/modules/locale/LocalePage.h | 3 -- 4 files changed, 104 insertions(+), 75 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 5a97339a8..c19569d43 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -175,7 +175,8 @@ Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) } else { - setCurrentLocation( QStringLiteral("America"), QStringLiteral("New_York") ); + // Recursive, but America/New_York always exists. + setCurrentLocation( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); } } @@ -185,10 +186,66 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) if ( location != m_currentLocation ) { m_currentLocation = location; + // Overwrite those settings that have not been made explicit. + auto newLocale = automaticLocaleConfiguration(); + if ( !m_selectedLocaleConfiguration.explicit_lang ) + { + m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); + } + if ( !m_selectedLocaleConfiguration.explicit_lc ) + { + m_selectedLocaleConfiguration.lc_numeric = newLocale.lc_numeric; + m_selectedLocaleConfiguration.lc_time = newLocale.lc_time; + m_selectedLocaleConfiguration.lc_monetary = newLocale.lc_monetary; + m_selectedLocaleConfiguration.lc_paper = newLocale.lc_paper; + m_selectedLocaleConfiguration.lc_name = newLocale.lc_name; + m_selectedLocaleConfiguration.lc_address = newLocale.lc_address; + m_selectedLocaleConfiguration.lc_telephone = newLocale.lc_telephone; + m_selectedLocaleConfiguration.lc_measurement = newLocale.lc_measurement; + m_selectedLocaleConfiguration.lc_identification = newLocale.lc_identification; + } emit currentLocationChanged( m_currentLocation ); } } + +LocaleConfiguration +Config::automaticLocaleConfiguration() const +{ + return LocaleConfiguration::fromLanguageAndLocation( + QLocale().name(), supportedLocales(), currentLocation()->country() ); +} + +LocaleConfiguration +Config::localeConfiguration() const +{ + return m_selectedLocaleConfiguration.isEmpty() ? automaticLocaleConfiguration() : m_selectedLocaleConfiguration; +} + +void +Config::setLanguageExplicitly( const QString& language ) +{ + m_selectedLocaleConfiguration.setLanguage( language ); + m_selectedLocaleConfiguration.explicit_lang = true; +} + +void +Config::setLCLocaleExplicitly( const QString& locale ) +{ + // TODO: improve the granularity of this setting. + m_selectedLocaleConfiguration.lc_numeric = locale; + m_selectedLocaleConfiguration.lc_time = locale; + m_selectedLocaleConfiguration.lc_monetary = locale; + m_selectedLocaleConfiguration.lc_paper = locale; + m_selectedLocaleConfiguration.lc_name = locale; + m_selectedLocaleConfiguration.lc_address = locale; + m_selectedLocaleConfiguration.lc_telephone = locale; + m_selectedLocaleConfiguration.lc_measurement = locale; + m_selectedLocaleConfiguration.lc_identification = locale; + m_selectedLocaleConfiguration.explicit_lc = true; +} + + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { @@ -204,7 +261,7 @@ Calamares::JobList Config::createJobs() { Calamares::JobList list; - const CalamaresUtils::Locale::TZZone* location = nullptr; // TODO: m_tzWidget->currentLocation(); + const CalamaresUtils::Locale::TZZone* location = currentLocation(); if ( location ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 44e7c9142..ff9125c13 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -21,6 +21,8 @@ #ifndef LOCALE_CONFIG_H #define LOCALE_CONFIG_H +#include "LocaleConfiguration.h" + #include "Job.h" #include "locale/TimeZone.h" @@ -35,7 +37,8 @@ class Config : public QObject Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) Q_PROPERTY( const CalamaresUtils::Locale::CStringPairList& timezoneData READ timezoneData CONSTANT FINAL ) - Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation NOTIFY currentLocationChanged ) + Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation + NOTIFY currentLocationChanged ) public: Config( QObject* parent = nullptr ); @@ -60,11 +63,29 @@ public Q_SLOTS: /** @brief Sets a location by pointer * * Pointer should be within the same model as the widget uses. + * This can update the locale configuration -- the automatic one + * follows the current location, and otherwise only explicitly-set + * values will ignore changes to the location. */ void setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ); + /** @brief The currently selected location (timezone) + * + * The location is a pointer into the date that timezoneData() returns. + * It is possible to return nullptr, if no location has been picked yet. + */ const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } + /// locale configuration (LC_* and LANG) based solely on the current location. + LocaleConfiguration automaticLocaleConfiguration() const; + /// locale configuration that takes explicit settings into account + LocaleConfiguration localeConfiguration() const; + + /// Set a language by user-choice, overriding future location changes + void setLanguageExplicitly( const QString& language ); + /// Set LC (formats) by user-choice, overriding future location changes + void setLCLocaleExplicitly( const QString& locale ); + signals: void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ); @@ -80,6 +101,16 @@ private: /// The location, points into the timezone data const CalamaresUtils::Locale::TZZone* m_currentLocation = nullptr; + /** @brief Specific locale configurations + * + * "Automatic" locale configuration based on the location (e.g. + * Europe/Amsterdam means Dutch language and Dutch locale) leave + * this empty; if the user explicitly sets something, then + * this configuration is non-empty and takes precedence over the + * automatic location settings (so a user in Amsterdam can still + * pick Ukranian settings, for instance). + */ + LocaleConfiguration m_selectedLocaleConfiguration; }; diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index abb4b63bc..d09d38540 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -137,8 +137,7 @@ LocalePage::updateLocaleLabels() m_localeChangeButton->setText( tr( "&Change..." ) ); m_formatsChangeButton->setText( tr( "&Change..." ) ); - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; + LocaleConfiguration lc = m_config->localeConfiguration(); auto labels = prettyLocaleStatus( lc ); m_localeLabel->setText( labels.first ); m_formatsLabel->setText( labels.second ); @@ -163,8 +162,7 @@ LocalePage::prettyStatus() const QString status; status += tr( "Set timezone to %1/%2.
" ).arg( m_regionCombo->currentText() ).arg( m_zoneCombo->currentText() ); - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; + LocaleConfiguration lc = m_config->localeConfiguration(); auto labels = prettyLocaleStatus( lc ); status += labels.first + "
"; status += labels.second + "
"; @@ -176,8 +174,7 @@ LocalePage::prettyStatus() const QMap< QString, QString > LocalePage::localesMap() { - return m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().toMap() - : m_selectedLocaleConfiguration.toMap(); + return m_config->localeConfiguration().toMap(); } @@ -185,21 +182,8 @@ void LocalePage::onActivate() { m_regionCombo->setFocus(); - if ( m_selectedLocaleConfiguration.isEmpty() || !m_selectedLocaleConfiguration.explicit_lang ) - { - auto newLocale = guessLocaleConfiguration(); - m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); - updateGlobalLocale(); - updateLocaleLabels(); - } -} - - -LocaleConfiguration -LocalePage::guessLocaleConfiguration() const -{ - return LocaleConfiguration::fromLanguageAndLocation( - QLocale().name(), m_config->supportedLocales(), m_config->currentLocation()->country() ); + updateGlobalLocale(); + updateLocaleLabels(); } @@ -207,7 +191,7 @@ void LocalePage::updateGlobalLocale() { auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); + const QString bcp47 = m_config->localeConfiguration().toBcp47(); gs->insert( "locale", bcp47 ); } @@ -236,28 +220,6 @@ LocalePage::updateGlobalStorage() } #endif - // Preserve those settings that have been made explicit. - auto newLocale = guessLocaleConfiguration(); - if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lang ) - { - newLocale.setLanguage( m_selectedLocaleConfiguration.language() ); - } - if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lc ) - { - newLocale.lc_numeric = m_selectedLocaleConfiguration.lc_numeric; - newLocale.lc_time = m_selectedLocaleConfiguration.lc_time; - newLocale.lc_monetary = m_selectedLocaleConfiguration.lc_monetary; - newLocale.lc_paper = m_selectedLocaleConfiguration.lc_paper; - newLocale.lc_name = m_selectedLocaleConfiguration.lc_name; - newLocale.lc_address = m_selectedLocaleConfiguration.lc_address; - newLocale.lc_telephone = m_selectedLocaleConfiguration.lc_telephone; - newLocale.lc_measurement = m_selectedLocaleConfiguration.lc_measurement; - newLocale.lc_identification = m_selectedLocaleConfiguration.lc_identification; - } - newLocale.explicit_lang = m_selectedLocaleConfiguration.explicit_lang; - newLocale.explicit_lc = m_selectedLocaleConfiguration.explicit_lc; - - m_selectedLocaleConfiguration = newLocale; updateLocaleLabels(); } @@ -324,17 +286,13 @@ void LocalePage::changeLocale() { LCLocaleDialog* dlg - = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().language() - : m_selectedLocaleConfiguration.language(), - m_config->supportedLocales(), - this ); + = new LCLocaleDialog( m_config->localeConfiguration().language(), m_config->supportedLocales(), this ); dlg->exec(); if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { - m_selectedLocaleConfiguration.setLanguage( dlg->selectedLCLocale() ); - m_selectedLocaleConfiguration.explicit_lang = true; - this->updateGlobalLocale(); - this->updateLocaleLabels(); + m_config->setLanguageExplicitly( dlg->selectedLCLocale() ); + updateGlobalLocale(); + updateLocaleLabels(); } dlg->deleteLater(); @@ -345,26 +303,12 @@ void LocalePage::changeFormats() { LCLocaleDialog* dlg - = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().lc_numeric - : m_selectedLocaleConfiguration.lc_numeric, - m_config->supportedLocales(), - this ); + = new LCLocaleDialog( m_config->localeConfiguration().lc_numeric, m_config->supportedLocales(), this ); dlg->exec(); if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { - // TODO: improve the granularity of this setting. - m_selectedLocaleConfiguration.lc_numeric = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_time = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_monetary = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_paper = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_name = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_address = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_telephone = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_measurement = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_identification = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.explicit_lc = true; - - this->updateLocaleLabels(); + m_config->setLCLocaleExplicitly( dlg->selectedLCLocale() ); + updateLocaleLabels(); } dlg->deleteLater(); diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 3d4b1d03f..9690c4d97 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -50,8 +50,6 @@ public: void onActivate(); private: - LocaleConfiguration guessLocaleConfiguration() const; - /// @brief Non-owning pointer to the ViewStep's config Config* m_config; @@ -85,7 +83,6 @@ private: QLabel* m_formatsLabel; QPushButton* m_formatsChangeButton; - LocaleConfiguration m_selectedLocaleConfiguration; bool m_blockTzWidgetSet; }; From abc98cfa796f4c783cc0d1088000f9b98b44de5f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 14:57:09 +0200 Subject: [PATCH 031/399] [locale] Simplify allocation, guard against crashes if the dialog is deleted. --- src/modules/locale/LocalePage.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index d09d38540..98383b429 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -285,31 +286,31 @@ LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) void LocalePage::changeLocale() { - LCLocaleDialog* dlg - = new LCLocaleDialog( m_config->localeConfiguration().language(), m_config->supportedLocales(), this ); + QPointer< LCLocaleDialog > dlg( + new LCLocaleDialog( m_config->localeConfiguration().language(), m_config->supportedLocales(), this ) ); dlg->exec(); - if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) + if ( dlg && dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { m_config->setLanguageExplicitly( dlg->selectedLCLocale() ); updateGlobalLocale(); updateLocaleLabels(); } - dlg->deleteLater(); + delete dlg; } void LocalePage::changeFormats() { - LCLocaleDialog* dlg - = new LCLocaleDialog( m_config->localeConfiguration().lc_numeric, m_config->supportedLocales(), this ); + QPointer< LCLocaleDialog > dlg( + new LCLocaleDialog( m_config->localeConfiguration().lc_numeric, m_config->supportedLocales(), this ) ); dlg->exec(); - if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) + if ( dlg && dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { m_config->setLCLocaleExplicitly( dlg->selectedLCLocale() ); updateLocaleLabels(); } - dlg->deleteLater(); + delete dlg; } From 855b21a7dbcf67a4f391886fa3c8ea36d93ee0bd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 15:35:38 +0200 Subject: [PATCH 032/399] [locale] Remove redundant method - configuration information lives in the Config object --- src/modules/locale/LocalePage.cpp | 8 -------- src/modules/locale/LocalePage.h | 2 -- src/modules/locale/LocaleViewStep.cpp | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 98383b429..58ea4a81c 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -171,14 +171,6 @@ LocalePage::prettyStatus() const return status; } - -QMap< QString, QString > -LocalePage::localesMap() -{ - return m_config->localeConfiguration().toMap(); -} - - void LocalePage::onActivate() { diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 9690c4d97..3a4dd93a9 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -45,8 +45,6 @@ public: QString prettyStatus() const; - QMap< QString, QString > localesMap(); - void onActivate(); private: diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index e17c7b004..c7ed8766b 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -169,7 +169,7 @@ LocaleViewStep::onLeave() m_jobs = m_config->createJobs(); m_prettyStatus = m_actualWidget->prettyStatus(); - auto map = m_actualWidget->localesMap(); + auto map = m_config->localeConfiguration().toMap(); QVariantMap vm; for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) { From ef08ff6ac09cb3f10937a6001f2dd08d6c198980 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 15:51:49 +0200 Subject: [PATCH 033/399] [locale] Move status strings from Page to Config - the config knows the status and how to describe it, fetch the strings from there. --- src/modules/locale/Config.cpp | 28 +++++++++++++++++++++++++++ src/modules/locale/Config.h | 13 +++++++++++++ src/modules/locale/LocalePage.cpp | 28 +-------------------------- src/modules/locale/LocalePage.h | 6 ------ src/modules/locale/LocaleViewStep.cpp | 2 +- 5 files changed, 43 insertions(+), 34 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index c19569d43..8893d387a 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -22,6 +22,7 @@ #include "SetTimezoneJob.h" +#include "locale/Label.h" #include "utils/Logger.h" #include "utils/Variant.h" @@ -245,6 +246,33 @@ Config::setLCLocaleExplicitly( const QString& locale ) m_selectedLocaleConfiguration.explicit_lc = true; } +std::pair< QString, QString > +Config::prettyLocaleStatus() const +{ + using CalamaresUtils::Locale::Label; + + Label lang( m_selectedLocaleConfiguration.language(), Label::LabelFormat::AlwaysWithCountry ); + Label num( m_selectedLocaleConfiguration.lc_numeric, Label::LabelFormat::AlwaysWithCountry ); + + return std::make_pair< QString, QString >( + tr( "The system language will be set to %1." ).arg( lang.label() ), + tr( "The numbers and dates locale will be set to %1." ).arg( num.label() ) ); +} + +QString +Config::prettyStatus() const +{ + QString br( QStringLiteral("
")); + QString status; + status += tr( "Set timezone to %1/%2." ).arg( m_currentLocation->region(), m_currentLocation->zone() ) + br; + + auto labels = prettyLocaleStatus(); + status += labels.first + br; + status += labels.second + br; + + return status; +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index ff9125c13..91ed8f1be 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -47,6 +47,19 @@ public: void setConfigurationMap( const QVariantMap& ); Calamares::JobList createJobs(); + /** @brief Human-readable status for language and LC + * + * For the current locale config, return two strings describing + * the settings for language and numbers. + */ + std::pair< QString, QString > prettyLocaleStatus() const; + /** @brief Human-readable zone, language and LC status + * + * Concatenates all three strings with
+ */ + QString prettyStatus() const; + + public Q_SLOTS: const QStringList& supportedLocales() const { return m_localeGenLines; } CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 58ea4a81c..fb3433d23 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -138,38 +138,12 @@ LocalePage::updateLocaleLabels() m_localeChangeButton->setText( tr( "&Change..." ) ); m_formatsChangeButton->setText( tr( "&Change..." ) ); - LocaleConfiguration lc = m_config->localeConfiguration(); - auto labels = prettyLocaleStatus( lc ); + auto labels = m_config->prettyLocaleStatus(); m_localeLabel->setText( labels.first ); m_formatsLabel->setText( labels.second ); } -std::pair< QString, QString > -LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const -{ - using CalamaresUtils::Locale::Label; - Label lang( lc.language(), Label::LabelFormat::AlwaysWithCountry ); - Label num( lc.lc_numeric, Label::LabelFormat::AlwaysWithCountry ); - - return std::make_pair< QString, QString >( - tr( "The system language will be set to %1." ).arg( lang.label() ), - tr( "The numbers and dates locale will be set to %1." ).arg( num.label() ) ); -} - -QString -LocalePage::prettyStatus() const -{ - QString status; - status += tr( "Set timezone to %1/%2.
" ).arg( m_regionCombo->currentText() ).arg( m_zoneCombo->currentText() ); - - LocaleConfiguration lc = m_config->localeConfiguration(); - auto labels = prettyLocaleStatus( lc ); - status += labels.first + "
"; - status += labels.second + "
"; - - return status; -} void LocalePage::onActivate() diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 3a4dd93a9..b40aeb465 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -43,18 +43,12 @@ public: explicit LocalePage( class Config* config, QWidget* parent = nullptr ); virtual ~LocalePage(); - QString prettyStatus() const; - void onActivate(); private: /// @brief Non-owning pointer to the ViewStep's config Config* m_config; - // For the given locale config, return two strings describing - // the settings for language and numbers. - std::pair< QString, QString > prettyLocaleStatus( const LocaleConfiguration& ) const; - /** @brief Update the GS *locale* key with the selected system language. * * This uses whatever is set in m_selectedLocaleConfiguration as the language, diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index c7ed8766b..00752ebb6 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -167,7 +167,7 @@ LocaleViewStep::onLeave() if ( m_actualWidget ) { m_jobs = m_config->createJobs(); - m_prettyStatus = m_actualWidget->prettyStatus(); + m_prettyStatus = m_config->prettyStatus(); auto map = m_config->localeConfiguration().toMap(); QVariantMap vm; From f7c2e4a3e77221acf9ebe016acbb7da44ff87cf1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 16:27:21 +0200 Subject: [PATCH 034/399] [locale] Sanitize Config signals and slots - remove the weirdly-structured prettyStatus and similar: the Config object has human-readable status strings (three, for location, language, and LC-formats) which can be normal properties with signals. - Implement prettyStatus in the view step by querying the Config. --- src/modules/locale/Config.cpp | 49 +++++++++++-------- src/modules/locale/Config.h | 68 ++++++++++++++------------- src/modules/locale/LocalePage.cpp | 9 ++-- src/modules/locale/LocaleViewStep.cpp | 4 +- src/modules/locale/LocaleViewStep.h | 1 - 5 files changed, 70 insertions(+), 61 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 8893d387a..cdd4e767f 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -192,6 +192,7 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) if ( !m_selectedLocaleConfiguration.explicit_lang ) { m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); + emit currentLanguageStatusChanged( currentLanguageStatus() ); } if ( !m_selectedLocaleConfiguration.explicit_lc ) { @@ -204,6 +205,8 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) m_selectedLocaleConfiguration.lc_telephone = newLocale.lc_telephone; m_selectedLocaleConfiguration.lc_measurement = newLocale.lc_measurement; m_selectedLocaleConfiguration.lc_identification = newLocale.lc_identification; + + emit currentLCStatusChanged( currentLCStatus() ); } emit currentLocationChanged( m_currentLocation ); } @@ -228,6 +231,8 @@ Config::setLanguageExplicitly( const QString& language ) { m_selectedLocaleConfiguration.setLanguage( language ); m_selectedLocaleConfiguration.explicit_lang = true; + + emit currentLanguageStatusChanged( currentLanguageStatus() ); } void @@ -244,33 +249,37 @@ Config::setLCLocaleExplicitly( const QString& locale ) m_selectedLocaleConfiguration.lc_measurement = locale; m_selectedLocaleConfiguration.lc_identification = locale; m_selectedLocaleConfiguration.explicit_lc = true; -} -std::pair< QString, QString > -Config::prettyLocaleStatus() const -{ - using CalamaresUtils::Locale::Label; - - Label lang( m_selectedLocaleConfiguration.language(), Label::LabelFormat::AlwaysWithCountry ); - Label num( m_selectedLocaleConfiguration.lc_numeric, Label::LabelFormat::AlwaysWithCountry ); - - return std::make_pair< QString, QString >( - tr( "The system language will be set to %1." ).arg( lang.label() ), - tr( "The numbers and dates locale will be set to %1." ).arg( num.label() ) ); + emit currentLCStatusChanged( currentLCStatus() ); } QString -Config::prettyStatus() const +Config::currentLocationStatus() const { - QString br( QStringLiteral("
")); - QString status; - status += tr( "Set timezone to %1/%2." ).arg( m_currentLocation->region(), m_currentLocation->zone() ) + br; + return tr( "Set timezone to %1/%2." ).arg( m_currentLocation->region(), m_currentLocation->zone() ); +} - auto labels = prettyLocaleStatus(); - status += labels.first + br; - status += labels.second + br; +static inline QString +localeLabel( const QString& s ) +{ + using CalamaresUtils::Locale::Label; - return status; + Label lang( s, Label::LabelFormat::AlwaysWithCountry ); + return lang.label(); +} + +QString +Config::currentLanguageStatus() const +{ + return tr( "The system language will be set to %1." ) + .arg( localeLabel( m_selectedLocaleConfiguration.language() ) ); +} + +QString +Config::currentLCStatus() const +{ + return tr( "The numbers and dates locale will be set to %1." ) + .arg( localeLabel( m_selectedLocaleConfiguration.lc_numeric ) ); } diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 91ed8f1be..c4a512100 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -36,10 +36,14 @@ class Config : public QObject Q_PROPERTY( const QStringList& supportedLocales READ supportedLocales CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) - Q_PROPERTY( const CalamaresUtils::Locale::CStringPairList& timezoneData READ timezoneData CONSTANT FINAL ) + Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation NOTIFY currentLocationChanged ) + Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) + Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged ) + Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -47,25 +51,37 @@ public: void setConfigurationMap( const QVariantMap& ); Calamares::JobList createJobs(); - /** @brief Human-readable status for language and LC - * - * For the current locale config, return two strings describing - * the settings for language and numbers. - */ - std::pair< QString, QString > prettyLocaleStatus() const; - /** @brief Human-readable zone, language and LC status - * - * Concatenates all three strings with
- */ - QString prettyStatus() const; + // Underlying data for the models + const CalamaresUtils::Locale::CStringPairList& timezoneData() const; + /** @brief The currently selected location (timezone) + * + * The location is a pointer into the date that timezoneData() returns. + * It is possible to return nullptr, if no location has been picked yet. + */ + const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } + + /// locale configuration (LC_* and LANG) based solely on the current location. + LocaleConfiguration automaticLocaleConfiguration() const; + /// locale configuration that takes explicit settings into account + LocaleConfiguration localeConfiguration() const; + + /// The human-readable description of what timezone is used + QString currentLocationStatus() const; + /// The human-readable description of what language is used + QString currentLanguageStatus() const; + /// The human-readable description of what locale (LC_*) is used + QString currentLCStatus() const; -public Q_SLOTS: const QStringList& supportedLocales() const { return m_localeGenLines; } CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } - // Underlying data for the models - const CalamaresUtils::Locale::CStringPairList& timezoneData() const; + +public Q_SLOTS: + /// Set a language by user-choice, overriding future location changes + void setLanguageExplicitly( const QString& language ); + /// Set LC (formats) by user-choice, overriding future location changes + void setLCLocaleExplicitly( const QString& locale ); /** @brief Sets a location by name * @@ -82,25 +98,11 @@ public Q_SLOTS: */ void setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ); - /** @brief The currently selected location (timezone) - * - * The location is a pointer into the date that timezoneData() returns. - * It is possible to return nullptr, if no location has been picked yet. - */ - const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } - - /// locale configuration (LC_* and LANG) based solely on the current location. - LocaleConfiguration automaticLocaleConfiguration() const; - /// locale configuration that takes explicit settings into account - LocaleConfiguration localeConfiguration() const; - - /// Set a language by user-choice, overriding future location changes - void setLanguageExplicitly( const QString& language ); - /// Set LC (formats) by user-choice, overriding future location changes - void setLCLocaleExplicitly( const QString& locale ); - signals: - void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ); + void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ) const; + void currentLocationStatusChanged( const QString& ) const; + void currentLanguageStatusChanged( const QString& ) const; + void currentLCStatusChanged( const QString& ) const; private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index fb3433d23..c312f39f6 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -106,6 +106,8 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) setMinimumWidth( m_tzWidget->width() ); setLayout( mainLayout ); + connect( config, &Config::currentLCStatusChanged, m_formatsLabel, &QLabel::setText ); + connect( config, &Config::currentLanguageStatusChanged, m_localeLabel, &QLabel::setText ); connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); connect( m_tzWidget, @@ -137,14 +139,11 @@ LocalePage::updateLocaleLabels() m_zoneLabel->setText( tr( "Zone:" ) ); m_localeChangeButton->setText( tr( "&Change..." ) ); m_formatsChangeButton->setText( tr( "&Change..." ) ); - - auto labels = m_config->prettyLocaleStatus(); - m_localeLabel->setText( labels.first ); - m_formatsLabel->setText( labels.second ); + m_localeLabel->setText( m_config->currentLanguageStatus() ); + m_formatsLabel->setText( m_config->currentLCStatus() ); } - void LocalePage::onActivate() { diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 00752ebb6..31f8eb8bd 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -104,7 +104,8 @@ LocaleViewStep::prettyName() const QString LocaleViewStep::prettyStatus() const { - return m_prettyStatus; + QStringList l { m_config->currentLocationStatus(), m_config->currentLanguageStatus(), m_config->currentLCStatus() }; + return l.join( QStringLiteral( "
" ) ); } @@ -167,7 +168,6 @@ LocaleViewStep::onLeave() if ( m_actualWidget ) { m_jobs = m_config->createJobs(); - m_prettyStatus = m_config->prettyStatus(); auto map = m_config->localeConfiguration().toMap(); QVariantMap vm; diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 24764b172..cb1902f2e 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -70,7 +70,6 @@ private: LocalePage* m_actualWidget; bool m_nextEnabled; - QString m_prettyStatus; Calamares::JobList m_jobs; From 1de2210d29e4403d57fadf538c8a6ca82df3a5c8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 17:37:09 +0200 Subject: [PATCH 035/399] [locale] Move the GS updating to the Config object - since all locale changes need to be entered into GS anyway, this is something the Config object can do because it is the source of truth for locale settings. - drop all the GS settings from the Page. --- src/modules/locale/Config.cpp | 33 ++++++++++++++++++++++++ src/modules/locale/LocalePage.cpp | 42 ------------------------------- src/modules/locale/LocalePage.h | 7 ------ 3 files changed, 33 insertions(+), 49 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index cdd4e767f..5fa8b3c8b 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -22,6 +22,9 @@ #include "SetTimezoneJob.h" +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" #include "locale/Label.h" #include "utils/Logger.h" #include "utils/Variant.h" @@ -154,6 +157,36 @@ Config::Config( QObject* parent ) , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( ::timezoneData() ) ) , m_zonesModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >() ) { + // Slightly unusual: connect to our *own* signals. Wherever the language + // or the location is changed, these signals are emitted, so hook up to + // them to update global storage accordingly. This simplifies code: + // we don't need to call an update-GS method, or introduce an intermediate + // update-thing-and-GS method. And everywhere where we **do** change + // language or location, we already emit the signal. + connect( this, &Config::currentLanguageStatusChanged, [&]() { + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + gs->insert( "locale", m_selectedLocaleConfiguration.toBcp47() ); + } ); + + connect( this, &Config::currentLocationChanged, [&]() { + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + const auto* location = currentLocation(); + bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) + || ( location->zone() != gs->value( "locationZone" ) ); + + gs->insert( "locationRegion", location->region() ); + gs->insert( "locationZone", location->zone() ); + + // If we're in chroot mode (normal install mode), then we immediately set the + // timezone on the live system. When debugging timezones, don't bother. +#ifndef DEBUG_TIMEZONES + if ( locationChanged && Calamares::Settings::instance()->doChroot() ) + { + QProcess::execute( "timedatectl", // depends on systemd + { "set-timezone", location->region() + '/' + location->zone() } ); + } +#endif + } ); } Config::~Config() {} diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index c312f39f6..0ea56a072 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -125,7 +125,6 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) m_regionCombo->setModel( m_config->regionModel() ); m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - updateGlobalStorage(); } @@ -148,47 +147,10 @@ void LocalePage::onActivate() { m_regionCombo->setFocus(); - updateGlobalLocale(); updateLocaleLabels(); } -void -LocalePage::updateGlobalLocale() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const QString bcp47 = m_config->localeConfiguration().toBcp47(); - gs->insert( "locale", bcp47 ); -} - - -void -LocalePage::updateGlobalStorage() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - - const auto* location = m_config->currentLocation(); - bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) - || ( location->zone() != gs->value( "locationZone" ) ); - - gs->insert( "locationRegion", location->region() ); - gs->insert( "locationZone", location->zone() ); - - updateGlobalLocale(); - - // If we're in chroot mode (normal install mode), then we immediately set the - // timezone on the live system. When debugging timezones, don't bother. -#ifndef DEBUG_TIMEZONES - if ( locationChanged && Calamares::Settings::instance()->doChroot() ) - { - QProcess::execute( "timedatectl", // depends on systemd - { "set-timezone", location->region() + '/' + location->zone() } ); - } -#endif - - updateLocaleLabels(); -} - void LocalePage::regionChanged( int currentIndex ) { @@ -219,7 +181,6 @@ LocalePage::zoneChanged( int currentIndex ) { m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() ); } - updateGlobalStorage(); } void @@ -244,8 +205,6 @@ LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) } m_zoneCombo->setCurrentIndex( index ); - - updateGlobalStorage(); } void @@ -257,7 +216,6 @@ LocalePage::changeLocale() if ( dlg && dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { m_config->setLanguageExplicitly( dlg->selectedLCLocale() ); - updateGlobalLocale(); updateLocaleLabels(); } diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index b40aeb465..bf41f8f69 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -49,13 +49,6 @@ private: /// @brief Non-owning pointer to the ViewStep's config Config* m_config; - /** @brief Update the GS *locale* key with the selected system language. - * - * This uses whatever is set in m_selectedLocaleConfiguration as the language, - * and writes it to GS *locale* key (as a string, in BCP47 format). - */ - void updateGlobalLocale(); - void updateGlobalStorage(); void updateLocaleLabels(); void regionChanged( int currentIndex ); From 995ebd5c834d564a2b0f128f5ad1212ed562a515 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 21 Jul 2020 17:44:44 +0200 Subject: [PATCH 036/399] [locale] Remove unused #includes --- src/modules/locale/LocalePage.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 0ea56a072..3999599c9 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -20,15 +20,9 @@ #include "LocalePage.h" #include "Config.h" -#include "SetTimezoneJob.h" +#include "LCLocaleDialog.h" #include "timezonewidget/timezonewidget.h" -#include "GlobalStorage.h" -#include "JobQueue.h" -#include "LCLocaleDialog.h" -#include "Settings.h" -#include "locale/Label.h" -#include "locale/TimeZone.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/RAII.h" @@ -36,10 +30,8 @@ #include #include -#include #include #include -#include #include LocalePage::LocalePage( Config* config, QWidget* parent ) From f6419d5de123077a5961de9b481fefba6b7b551f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 00:06:56 +0200 Subject: [PATCH 037/399] [locale] New setting *adjustLiveTimezone* - allow finer-grained control over whether-or-not to adjust the timezone in the live system. - handle some special cases at the point of loading-configuration. - document the setting in locale.conf - correct some documentation bugs - adjust the YAML schema for locale.conf so it's legal YAML syntax **and** validates the current file. --- src/modules/locale/Config.cpp | 23 ++++++++++++++---- src/modules/locale/Config.h | 7 ++++++ src/modules/locale/locale.conf | 17 ++++++++++--- src/modules/locale/locale.schema.yaml | 35 ++++++++++++++++++++++++--- 4 files changed, 69 insertions(+), 13 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 5fa8b3c8b..4a2923081 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -177,15 +177,11 @@ Config::Config( QObject* parent ) gs->insert( "locationRegion", location->region() ); gs->insert( "locationZone", location->zone() ); - // If we're in chroot mode (normal install mode), then we immediately set the - // timezone on the live system. When debugging timezones, don't bother. -#ifndef DEBUG_TIMEZONES - if ( locationChanged && Calamares::Settings::instance()->doChroot() ) + if ( locationChanged && m_adjustLiveTimezone ) { QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location->region() + '/' + location->zone() } ); } -#endif } ); } @@ -325,6 +321,23 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) localeGenPath = QStringLiteral( "/etc/locale.gen" ); } m_localeGenLines = loadLocales( localeGenPath ); + + m_adjustLiveTimezone + = CalamaresUtils::getBool( configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); +#ifdef DEBUG_TIMEZONES + if ( m_adjustLiveTimezone ) + { + cDebug() << "Turning off live-timezone adjustments because debugging is on."; + m_adjustLiveTimezone = false; + } +#endif +#ifdef __FreeBSD__ + if ( m_adjustLiveTimezone ) + { + cDebug() << "Turning off live-timezone adjustments on FreeBSD."; + m_adjustLiveTimezone = false; + } +#endif } Calamares::JobList diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index c4a512100..c8710f4a9 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -126,6 +126,13 @@ private: * pick Ukranian settings, for instance). */ LocaleConfiguration m_selectedLocaleConfiguration; + + /** @brief Should we adjust the "live" timezone when the location changes? + * + * In the Widgets UI, clicking around on the world map adjusts the + * timezone, and the live system can be made to follow that. + */ + bool m_adjustLiveTimezone; }; diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index dc68a050f..572326f0b 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,5 +1,5 @@ --- -# This settings are used to set your default system time zone. +# These settings are used to set your default system time zone. # Time zones are usually located under /usr/share/zoneinfo and # provided by the 'tzdata' package of your Distribution. # @@ -14,17 +14,26 @@ region: "America" zone: "New_York" +# Should changing the system location (e.g. clicking around on the timezone +# map) immediately reflect the changed timezone in the live system? +# By default, installers (with a target system) do, and setup (e.g. OEM +# configuration) does not, but you can switch it on here (or off, if +# you think it's annoying in the installer). +# +# Note that not all systems support live adjustment. +# +# adjustLiveTimezone: true # System locales are detected in the following order: # # - /usr/share/i18n/SUPPORTED # - localeGenPath (defaults to /etc/locale.gen if not set) -# - 'locale -a' output +# - `locale -a` output # -# Enable only when your Distribution is using an +# Enable only when your Distribution is using a # custom path for locale.gen # -#localeGenPath: "PATH_TO/locale.gen" +#localeGenPath: "/etc/locale.gen" # GeoIP based Language settings: Leave commented out to disable GeoIP. # diff --git a/src/modules/locale/locale.schema.yaml b/src/modules/locale/locale.schema.yaml index 41c3ad487..6eadb5c85 100644 --- a/src/modules/locale/locale.schema.yaml +++ b/src/modules/locale/locale.schema.yaml @@ -4,7 +4,34 @@ $id: https://calamares.io/schemas/locale additionalProperties: false type: object properties: - "region": { type: str } - "zone": { type: str } - "localeGenPath": { type: string, required: true } - "geoipUrl": { type: str } + region: { type: string, + enum: [ + Africa, + America, + Antarctica, + Arctic, + Asia, + Atlantic, + Australia, + Europe, + Indian, + Pacific + ] + } + zone: { type: string } + + adjustLiveTimezone: { type: boolean, default: true } + + localeGenPath: { type: string } + + # TODO: refactor, this is reused in welcome + geoip: + additionalProperties: false + type: object + properties: + style: { type: string, enum: [ none, fixed, xml, json ] } + url: { type: string } + selector: { type: string } + required: [ style, url, selector ] + +required: [ region, zone ] From 0c9480aa3f0fe7f17704354134f573fa2fd31ddf Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 00:23:50 +0200 Subject: [PATCH 038/399] [locale] Move more business logic to Config - writing *localeConf* settings to GS can be done always when the formats are set, rather than special-cased. The code that handles the "special case" of no widget existing for the ViewStep overlooks the other crashes that happen then. - Since Config knows what jobs to create, just ask it rather than keeping a copy. --- src/modules/locale/Config.cpp | 12 +++++++++++- src/modules/locale/LocaleViewStep.cpp | 20 +------------------- src/modules/locale/LocaleViewStep.h | 2 -- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 4a2923081..cb0fe7734 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -170,18 +170,28 @@ Config::Config( QObject* parent ) connect( this, &Config::currentLocationChanged, [&]() { auto* gs = Calamares::JobQueue::instance()->globalStorage(); + + // Update the GS region and zone (and possibly the live timezone) const auto* location = currentLocation(); bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) || ( location->zone() != gs->value( "locationZone" ) ); gs->insert( "locationRegion", location->region() ); gs->insert( "locationZone", location->zone() ); - if ( locationChanged && m_adjustLiveTimezone ) { QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location->region() + '/' + location->zone() } ); } + + // Update GS localeConf (the LC_ variables) + auto map = localeConfiguration().toMap(); + QVariantMap vm; + for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) + { + vm.insert( it.key(), it.value() ); + } + gs->insert( "localeConf", vm ); } ); } diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 31f8eb8bd..5baf68b43 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -147,7 +147,7 @@ LocaleViewStep::isAtEnd() const Calamares::JobList LocaleViewStep::jobs() const { - return m_jobs; + return m_config->createJobs(); } @@ -165,24 +165,6 @@ LocaleViewStep::onActivate() void LocaleViewStep::onLeave() { - if ( m_actualWidget ) - { - m_jobs = m_config->createJobs(); - - auto map = m_config->localeConfiguration().toMap(); - QVariantMap vm; - for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) - { - vm.insert( it.key(), it.value() ); - } - - Calamares::JobQueue::instance()->globalStorage()->insert( "localeConf", vm ); - } - else - { - m_jobs.clear(); - Calamares::JobQueue::instance()->globalStorage()->remove( "localeConf" ); - } } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index cb1902f2e..a1456764f 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -71,8 +71,6 @@ private: LocalePage* m_actualWidget; bool m_nextEnabled; - Calamares::JobList m_jobs; - CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; From 781d76c9e540a346f7cf6dd6cb9643a74bd0f51c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 00:32:29 +0200 Subject: [PATCH 039/399] [locale] Avoid nullptr if there is no location --- src/modules/locale/Config.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index cb0fe7734..0898a77f2 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -255,6 +255,11 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) LocaleConfiguration Config::automaticLocaleConfiguration() const { + // Special case: no location has been set at **all** + if ( !currentLocation() ) + { + return LocaleConfiguration(); + } return LocaleConfiguration::fromLanguageAndLocation( QLocale().name(), supportedLocales(), currentLocation()->country() ); } From b607cf3f98c1cad911d84ebff116c37d97123834 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 01:26:15 +0200 Subject: [PATCH 040/399] [locale] Get starting TZ in Config - read the *region* and *zone* settings; this duplicates what the ViewStep does and is currently unused, but .. - add new support for using the system's TZ (rather than the fixed values from *region* and *zone*). This complements GeoIP lookup. This is the actual feature that started the long rewrite of the Config object (so that all the business logic would be in one place, usable for both widgets and QML). FIXES #1381 --- src/modules/locale/Config.cpp | 26 ++++++++++++++++++++++++-- src/modules/locale/Config.h | 5 +++++ src/modules/locale/locale.conf | 12 ++++++++++++ src/modules/locale/locale.schema.yaml | 1 + 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 0898a77f2..0ecd7e049 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -31,6 +31,7 @@ #include #include +#include /** @brief Load supported locale keys * @@ -342,17 +343,38 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) #ifdef DEBUG_TIMEZONES if ( m_adjustLiveTimezone ) { - cDebug() << "Turning off live-timezone adjustments because debugging is on."; + cWarning() << "Turning off live-timezone adjustments because debugging is on."; m_adjustLiveTimezone = false; } #endif #ifdef __FreeBSD__ if ( m_adjustLiveTimezone ) { - cDebug() << "Turning off live-timezone adjustments on FreeBSD."; + cWarning() << "Turning off live-timezone adjustments on FreeBSD."; m_adjustLiveTimezone = false; } #endif + + QString region = CalamaresUtils::getString( configurationMap, "region" ); + QString zone = CalamaresUtils::getString( configurationMap, "zone" ); + if ( !region.isEmpty() && !zone.isEmpty() ) + { + m_startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); + } + else + { + m_startingTimezone + = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); + } + + if ( CalamaresUtils::getBool( configurationMap, "useSystemTimezone", false ) ) + { + auto systemtz = CalamaresUtils::GeoIP::splitTZString( QTimeZone::systemTimeZoneId() ); + if ( systemtz.isValid() ) + { + m_startingTimezone = systemtz; + } + } } Calamares::JobList diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index c8710f4a9..7e634a4a8 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -24,6 +24,7 @@ #include "LocaleConfiguration.h" #include "Job.h" +#include "geoip/Interface.h" #include "locale/TimeZone.h" #include @@ -133,6 +134,10 @@ private: * timezone, and the live system can be made to follow that. */ bool m_adjustLiveTimezone; + + /** @brief The initial timezone (region, zone) specified in the config. + */ + CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; }; diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 572326f0b..8236a879b 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -11,9 +11,21 @@ # the locale page can be set through keys *region* and *zone*. # If either is not set, defaults to America/New_York. # +# Note that useSystemTimezone and GeoIP settings can change the +# starting time zone. +# region: "America" zone: "New_York" +# Instead of using *region* and *zone* specified above, +# you can use the system's notion of the timezone, instead. +# This can help if your system is automatically configured with +# a sensible TZ rather than chasing a fixed default. +# +# The default is false. +# +# useSystemTimezone: true + # Should changing the system location (e.g. clicking around on the timezone # map) immediately reflect the changed timezone in the live system? # By default, installers (with a target system) do, and setup (e.g. OEM diff --git a/src/modules/locale/locale.schema.yaml b/src/modules/locale/locale.schema.yaml index 6eadb5c85..d6c35020f 100644 --- a/src/modules/locale/locale.schema.yaml +++ b/src/modules/locale/locale.schema.yaml @@ -19,6 +19,7 @@ properties: ] } zone: { type: string } + useSystemTimezone: { type: boolean, default: false } adjustLiveTimezone: { type: boolean, default: true } From f64a1eb16ada6920999e8cf2eb5e60ee412bc9fa Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 11:52:42 +0200 Subject: [PATCH 041/399] [libcalamaresui] Document the signals from ModuleManager --- .../modulesystem/ModuleManager.h | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index 2c51e70f7..2bac78af6 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -103,10 +103,36 @@ public: RequirementsModel* requirementsModel() { return m_requirementsModel; } signals: + /** @brief Emitted when all the module **configuration** has been read + * + * This indicates that all of the module.desc files have been + * loaded; bad ones are silently skipped, so this just indicates + * that the module manager is ready for the next phase (loading). + */ void initDone(); - void modulesLoaded(); /// All of the modules were loaded successfully - void modulesFailed( QStringList ); /// .. or not - // Below, see RequirementsChecker documentation + /** @brief Emitted when all the modules are loaded successfully + * + * Each module listed in the settings is loaded. Modules are loaded + * only once, even when instantiated multiple times. If all of + * the listed modules are successfully loaded, this signal is + * emitted (otherwise, it isn't, so you need to wait for **both** + * of the signals). + * + * If this is emitted (i.e. all modules have loaded) then the next + * phase, requirements checking, can be started. + */ + void modulesLoaded(); + /** @brief Emitted if any modules failed to load + * + * Modules that failed to load (for any reason) are listed by + * instance key (e.g. "welcome@welcome", "shellprocess@mycustomthing"). + */ + void modulesFailed( QStringList ); + /** @brief Emitted after all requirements have been checked + * + * The bool value indicates if all of the **mandatory** requirements + * are satisfied (e.g. whether installation can continue). + */ void requirementsComplete( bool ); private slots: From a25d61077fa09d835387caa9384a6f7a054ed315 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 11:53:06 +0200 Subject: [PATCH 042/399] [locale] Add GeoIP settings to Config - this doesn't do the lookup **yet** - while here, refactor setConfigurationMap so it reads like a story, with chunks bitten out into a handful of static inline void methods. --- src/modules/locale/Config.cpp | 58 ++++++++++++++++++++++++++++------- src/modules/locale/Config.h | 11 +++++++ 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 0ecd7e049..fc797c0aa 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -327,43 +327,50 @@ Config::currentLCStatus() const .arg( localeLabel( m_selectedLocaleConfiguration.lc_numeric ) ); } - -void -Config::setConfigurationMap( const QVariantMap& configurationMap ) +static inline void +getLocaleGenLines( const QVariantMap& configurationMap, QStringList& localeGenLines ) { QString localeGenPath = CalamaresUtils::getString( configurationMap, "localeGenPath" ); if ( localeGenPath.isEmpty() ) { localeGenPath = QStringLiteral( "/etc/locale.gen" ); } - m_localeGenLines = loadLocales( localeGenPath ); + localeGenLines = loadLocales( localeGenPath ); +} - m_adjustLiveTimezone +static inline void +getAdjustLiveTimezone( const QVariantMap& configurationMap, bool& adjustLiveTimezone ) +{ + adjustLiveTimezone = CalamaresUtils::getBool( configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); #ifdef DEBUG_TIMEZONES if ( m_adjustLiveTimezone ) { cWarning() << "Turning off live-timezone adjustments because debugging is on."; - m_adjustLiveTimezone = false; + adjustLiveTimezone = false; } #endif #ifdef __FreeBSD__ - if ( m_adjustLiveTimezone ) + if ( adjustLiveTimezone ) { cWarning() << "Turning off live-timezone adjustments on FreeBSD."; - m_adjustLiveTimezone = false; + adjustLiveTimezone = false; } #endif +} +static inline void +getStartingTimezone( const QVariantMap& configurationMap, CalamaresUtils::GeoIP::RegionZonePair& startingTimezone ) +{ QString region = CalamaresUtils::getString( configurationMap, "region" ); QString zone = CalamaresUtils::getString( configurationMap, "zone" ); if ( !region.isEmpty() && !zone.isEmpty() ) { - m_startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); + startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); } else { - m_startingTimezone + startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); } @@ -372,11 +379,40 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) auto systemtz = CalamaresUtils::GeoIP::splitTZString( QTimeZone::systemTimeZoneId() ); if ( systemtz.isValid() ) { - m_startingTimezone = systemtz; + cDebug() << "Overriding configured timezone" << startingTimezone << "with system timezone" << systemtz; + startingTimezone = systemtz; } } } +static inline void +getGeoIP( const QVariantMap& configurationMap, std::unique_ptr< CalamaresUtils::GeoIP::Handler >& geoip ) +{ + bool ok = false; + QVariantMap map = CalamaresUtils::getSubMap( configurationMap, "geoip", ok ); + if ( ok ) + { + QString url = CalamaresUtils::getString( map, "url" ); + QString style = CalamaresUtils::getString( map, "style" ); + QString selector = CalamaresUtils::getString( map, "selector" ); + + geoip = std::make_unique< CalamaresUtils::GeoIP::Handler >( style, url, selector ); + if ( !geoip->isValid() ) + { + cWarning() << "GeoIP Style" << style << "is not recognized."; + } + } +} + +void +Config::setConfigurationMap( const QVariantMap& configurationMap ) +{ + getLocaleGenLines( configurationMap, m_localeGenLines ); + getAdjustLiveTimezone( configurationMap, m_adjustLiveTimezone ); + getStartingTimezone( configurationMap, m_startingTimezone ); + getGeoIP( configurationMap, m_geoip ); +} + Calamares::JobList Config::createJobs() { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 7e634a4a8..421bb7998 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -24,6 +24,7 @@ #include "LocaleConfiguration.h" #include "Job.h" +#include "geoip/Handler.h" #include "geoip/Interface.h" #include "locale/TimeZone.h" @@ -136,8 +137,18 @@ private: bool m_adjustLiveTimezone; /** @brief The initial timezone (region, zone) specified in the config. + * + * This may be overridden by setting *useSystemTimezone* or by + * GeoIP settings. */ CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; + + /** @brief Handler for GeoIP lookup (if configured) + * + * The GeoIP lookup needs to be started at some suitable time, + * by explicitly calling *TODO* + */ + std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; }; From 42331f6e139c2b24a741a6ad60e948fd3af79f9c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 14:47:43 +0200 Subject: [PATCH 043/399] [locale] Move GeoIP lookup to config - replace the weird synchronous-lookup-during-requirements-checking with a proper async lookup when the system is ready. --- src/modules/locale/Config.cpp | 61 +++++++++++++++++++++++-- src/modules/locale/Config.h | 10 +++- src/modules/locale/LocaleViewStep.cpp | 66 +-------------------------- src/modules/locale/LocaleViewStep.h | 7 --- 4 files changed, 68 insertions(+), 76 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index fc797c0aa..42b6d616f 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -26,6 +26,8 @@ #include "JobQueue.h" #include "Settings.h" #include "locale/Label.h" +#include "modulesystem/ModuleManager.h" +#include "network/Manager.h" #include "utils/Logger.h" #include "utils/Variant.h" @@ -204,6 +206,15 @@ Config::timezoneData() const return ::timezoneData(); } +void +Config::setCurrentLocation() +{ + if ( !m_currentLocation && m_startingTimezone.isValid() ) + { + setCurrentLocation( m_startingTimezone.first, m_startingTimezone.second ); + } +} + void Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) { @@ -252,7 +263,6 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) } } - LocaleConfiguration Config::automaticLocaleConfiguration() const { @@ -341,8 +351,8 @@ getLocaleGenLines( const QVariantMap& configurationMap, QStringList& localeGenLi static inline void getAdjustLiveTimezone( const QVariantMap& configurationMap, bool& adjustLiveTimezone ) { - adjustLiveTimezone - = CalamaresUtils::getBool( configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); + adjustLiveTimezone = CalamaresUtils::getBool( + configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); #ifdef DEBUG_TIMEZONES if ( m_adjustLiveTimezone ) { @@ -411,6 +421,12 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) getAdjustLiveTimezone( configurationMap, m_adjustLiveTimezone ); getStartingTimezone( configurationMap, m_startingTimezone ); getGeoIP( configurationMap, m_geoip ); + + if ( m_geoip && m_geoip->isValid() ) + { + connect( + Calamares::ModuleManager::instance(), &Calamares::ModuleManager::modulesLoaded, this, &Config::startGeoIP ); + } } Calamares::JobList @@ -427,3 +443,42 @@ Config::createJobs() return list; } + +void +Config::startGeoIP() +{ + if ( m_geoip && m_geoip->isValid() ) + { + auto& network = CalamaresUtils::Network::Manager::instance(); + if ( network.hasInternet() || network.synchronousPing( m_geoip->url() ) ) + { + using Watcher = QFutureWatcher< CalamaresUtils::GeoIP::RegionZonePair >; + m_geoipWatcher = std::make_unique< Watcher >(); + m_geoipWatcher->setFuture( m_geoip->query() ); + connect( m_geoipWatcher.get(), &Watcher::finished, this, &Config::completeGeoIP ); + } + } +} + +void +Config::completeGeoIP() +{ + if ( !currentLocation() ) + { + auto r = m_geoipWatcher->result(); + if ( r.isValid() ) + { + m_startingTimezone = r; + } + else + { + cWarning() << "GeoIP returned invalid result."; + } + } + else + { + cWarning() << "GeoIP result ignored because a location is already set."; + } + m_geoipWatcher.reset(); + m_geoip.reset(); +} diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 421bb7998..3d048bc28 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -28,6 +28,7 @@ #include "geoip/Interface.h" #include "locale/TimeZone.h" +#include #include #include @@ -59,7 +60,6 @@ public: /** @brief The currently selected location (timezone) * * The location is a pointer into the date that timezoneData() returns. - * It is possible to return nullptr, if no location has been picked yet. */ const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } @@ -79,6 +79,9 @@ public: CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } + /// Special case, set location from starting timezone if not already set + void setCurrentLocation(); + public Q_SLOTS: /// Set a language by user-choice, overriding future location changes void setLanguageExplicitly( const QString& language ); @@ -149,6 +152,11 @@ private: * by explicitly calling *TODO* */ std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; + + // Implementation details for doing GeoIP lookup + void startGeoIP(); + void completeGeoIP(); + std::unique_ptr< QFutureWatcher< CalamaresUtils::GeoIP::RegionZonePair > > m_geoipWatcher; }; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 5baf68b43..8ae894aa8 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -43,7 +43,6 @@ LocaleViewStep::LocaleViewStep( QObject* parent ) , m_widget( new QWidget() ) , m_actualWidget( nullptr ) , m_nextEnabled( false ) - , m_geoip( nullptr ) , m_config( std::make_unique< Config >() ) { QBoxLayout* mainLayout = new QHBoxLayout; @@ -66,11 +65,11 @@ LocaleViewStep::~LocaleViewStep() void LocaleViewStep::setUpPage() { + m_config->setCurrentLocation(); if ( !m_actualWidget ) { m_actualWidget = new LocalePage( m_config.get() ); } - m_config->setCurrentLocation( m_startingTimezone.first, m_startingTimezone.second ); m_widget->layout()->addWidget( m_actualWidget ); ensureSize( m_actualWidget->sizeHint() ); @@ -80,20 +79,6 @@ LocaleViewStep::setUpPage() } -void -LocaleViewStep::fetchGeoIpTimezone() -{ - if ( m_geoip && m_geoip->isValid() ) - { - m_startingTimezone = m_geoip->get(); - if ( !m_startingTimezone.isValid() ) - { - cWarning() << "GeoIP lookup at" << m_geoip->url() << "failed."; - } - } -} - - QString LocaleViewStep::prettyName() const { @@ -171,54 +156,5 @@ LocaleViewStep::onLeave() void LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - QString region = CalamaresUtils::getString( configurationMap, "region" ); - QString zone = CalamaresUtils::getString( configurationMap, "zone" ); - if ( !region.isEmpty() && !zone.isEmpty() ) - { - m_startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); - } - else - { - m_startingTimezone - = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); - } - - bool ok = false; - QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok ); - if ( ok ) - { - QString url = CalamaresUtils::getString( geoip, "url" ); - QString style = CalamaresUtils::getString( geoip, "style" ); - QString selector = CalamaresUtils::getString( geoip, "selector" ); - - m_geoip = std::make_unique< CalamaresUtils::GeoIP::Handler >( style, url, selector ); - if ( !m_geoip->isValid() ) - { - cWarning() << "GeoIP Style" << style << "is not recognized."; - } - } - m_config->setConfigurationMap( configurationMap ); } - -Calamares::RequirementsList -LocaleViewStep::checkRequirements() -{ - if ( m_geoip && m_geoip->isValid() ) - { - auto& network = CalamaresUtils::Network::Manager::instance(); - if ( network.hasInternet() ) - { - fetchGeoIpTimezone(); - } - else - { - if ( network.synchronousPing( m_geoip->url() ) ) - { - fetchGeoIpTimezone(); - } - } - } - - return Calamares::RequirementsList(); -} diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index a1456764f..f02a3205d 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -58,22 +58,15 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; - /// @brief Do setup (returns empty list) asynchronously - virtual Calamares::RequirementsList checkRequirements() override; - private slots: void setUpPage(); private: - void fetchGeoIpTimezone(); QWidget* m_widget; LocalePage* m_actualWidget; bool m_nextEnabled; - CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; - std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; - std::unique_ptr< Config > m_config; }; From 4f684be83dfc58692f94f1ffd6c9cbda5bba6dd4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 16:55:55 +0200 Subject: [PATCH 044/399] [locale] Avoid crashes in the map widget if there is no current location --- .../locale/timezonewidget/timezonewidget.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index df1142e17..0972e3296 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -94,11 +94,18 @@ TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* locati //### Private //### +struct PainterEnder +{ + QPainter& p; + ~PainterEnder() { p.end(); } +}; + void TimeZoneWidget::paintEvent( QPaintEvent* ) { QFontMetrics fontMetrics( font ); QPainter painter( this ); + PainterEnder painter_end { painter }; painter.setRenderHint( QPainter::Antialiasing ); painter.setFont( font ); @@ -109,6 +116,11 @@ TimeZoneWidget::paintEvent( QPaintEvent* ) // Draw zone image painter.drawImage( 0, 0, currentZoneImage ); + if ( !m_currentLocation ) + { + return; + } + #ifdef DEBUG_TIMEZONES QPoint point = getLocationPosition( m_currentLocation ); // Draw latitude lines @@ -168,8 +180,6 @@ TimeZoneWidget::paintEvent( QPaintEvent* ) painter.setPen( Qt::white ); painter.drawText( rect.x() + 5, rect.bottom() - 4, m_currentLocation ? m_currentLocation->tr() : QString() ); #endif - - painter.end(); } From 824cb4d4b841f59220abd09be8d191c98e93fcf3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 17:03:25 +0200 Subject: [PATCH 045/399] [locale] As the Page is constructed, it shouldn't change the location - since the Page hooked up a model and changed the region-selection **after** connecting to signals, it would reset the location to Africa/Abijan (alphabetically the first timezone) during construction. Don't do that. --- src/modules/locale/LocalePage.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 3999599c9..406f27a6e 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -98,6 +98,12 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) setMinimumWidth( m_tzWidget->width() ); setLayout( mainLayout ); + // Set up the location before connecting signals, to avoid a signal + // storm as various parts interact. + m_regionCombo->setModel( m_config->regionModel() ); + locationChanged( m_config->currentLocation() ); // doesn't inform TZ widget + m_tzWidget->setCurrentLocation( m_config->currentLocation() ); + connect( config, &Config::currentLCStatusChanged, m_formatsLabel, &QLabel::setText ); connect( config, &Config::currentLanguageStatusChanged, m_localeLabel, &QLabel::setText ); connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation ); @@ -114,9 +120,6 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) connect( m_formatsChangeButton, &QPushButton::clicked, this, &LocalePage::changeFormats ); CALAMARES_RETRANSLATE_SLOT( &LocalePage::updateLocaleLabels ) - - m_regionCombo->setModel( m_config->regionModel() ); - m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); } @@ -178,6 +181,10 @@ LocalePage::zoneChanged( int currentIndex ) void LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) { + if ( !location ) + { + return; + } cBoolSetter< true > b( m_blockTzWidgetSet ); // Set region index From 1f3cb32486eb3918b977c307276920c384f9ed7a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 22 Jul 2020 17:10:08 +0200 Subject: [PATCH 046/399] [locale] Apply coding style --- src/modules/locale/timezonewidget/TimeZoneImage.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index a60c9b7d7..22bd263d6 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -25,9 +25,9 @@ #include static const char* zoneNames[] - = { "0.0", "1.0", "2.0", "3.0", "3.5", "4.0", "4.5", "5.0", "5.5", "5.75", "6.0", "6.5", "7.0", - "8.0", "9.0", "9.5", "10.0", "10.5", "11.0", "12.0", "12.75", "13.0", "-1.0", "-2.0", "-3.0", - "-3.5", "-4.0", "-4.5", "-5.0", "-5.5", "-6.0", "-7.0", "-8.0", "-9.0", "-9.5", "-10.0", "-11.0" }; + = { "0.0", "1.0", "2.0", "3.0", "3.5", "4.0", "4.5", "5.0", "5.5", "5.75", "6.0", "6.5", "7.0", + "8.0", "9.0", "9.5", "10.0", "10.5", "11.0", "12.0", "12.75", "13.0", "-1.0", "-2.0", "-3.0", "-3.5", + "-4.0", "-4.5", "-5.0", "-5.5", "-6.0", "-7.0", "-8.0", "-9.0", "-9.5", "-10.0", "-11.0" }; static_assert( TimeZoneImageList::zoneCount == ( sizeof( zoneNames ) / sizeof( zoneNames[ 0 ] ) ), "Incorrect number of zones" ); From d90d451f427497e13ab1f7fc527ce796305e53ed Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 10:43:31 +0200 Subject: [PATCH 047/399] [locale] Remove unnecessary includes --- src/modules/locale/LocaleViewStep.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index f02a3205d..0a40da861 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -23,8 +23,6 @@ #include "Config.h" #include "DllMacro.h" -#include "geoip/Handler.h" -#include "geoip/Interface.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" From 4b7403d115a485ef679f0e35d09a92dd50316197 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 11:11:18 +0200 Subject: [PATCH 048/399] [localeq] Re-do with new Config - remove stray and useless TODOs - remove unnecessary empty overrides - clean up includes - drop all the code that is now in Config Since the business logic (setting locations, maintaining GS, ...) is all in the Config object, the ViewStep is remarkably simple: hook up a UI to the Config, which in the case of QML is done automatically. --- src/modules/localeq/LocaleQmlViewStep.cpp | 135 ++-------------------- src/modules/localeq/LocaleQmlViewStep.h | 26 +---- 2 files changed, 11 insertions(+), 150 deletions(-) diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index 4354cb7bd..7891f73fd 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -19,30 +19,13 @@ #include "LocaleQmlViewStep.h" -#include "GlobalStorage.h" -#include "JobQueue.h" - -#include "geoip/Handler.h" -#include "network/Manager.h" -#include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" -#include "utils/Variant.h" -#include "utils/Yaml.h" - -#include "Branding.h" -#include "modulesystem/ModuleManager.h" -#include -#include -#include -#include CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleQmlViewStepFactory, registerPlugin< LocaleQmlViewStep >(); ) LocaleQmlViewStep::LocaleQmlViewStep( QObject* parent ) -: Calamares::QmlViewStep( parent ) -, m_config( new Config( this ) ) -, m_nextEnabled( false ) -, m_geoip( nullptr ) + : Calamares::QmlViewStep( parent ) + , m_config( std::make_unique< Config >( this ) ) { emit nextStatusChanged( m_nextEnabled ); } @@ -50,43 +33,7 @@ LocaleQmlViewStep::LocaleQmlViewStep( QObject* parent ) QObject* LocaleQmlViewStep::getConfig() { - return m_config; -} - -void -LocaleQmlViewStep::fetchGeoIpTimezone() -{ - if ( m_geoip && m_geoip->isValid() ) - { - m_startingTimezone = m_geoip->get(); - if ( !m_startingTimezone.isValid() ) - { - cWarning() << "GeoIP lookup at" << m_geoip->url() << "failed."; - } - } - - // m_config->setLocaleInfo(m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath); -} - -Calamares::RequirementsList LocaleQmlViewStep::checkRequirements() -{ - if ( m_geoip && m_geoip->isValid() ) - { - auto& network = CalamaresUtils::Network::Manager::instance(); - if ( network.hasInternet() ) - { - fetchGeoIpTimezone(); - } - else - { - if ( network.synchronousPing( m_geoip->url() ) ) - { - fetchGeoIpTimezone(); - } - } - } - - return Calamares::RequirementsList(); + return m_config.get(); } QString @@ -98,14 +45,12 @@ LocaleQmlViewStep::prettyName() const bool LocaleQmlViewStep::isNextEnabled() const { - // TODO: should return true return true; } bool LocaleQmlViewStep::isBackEnabled() const { - // TODO: should return true (it's weird that you are not allowed to have welcome *after* anything return true; } @@ -113,7 +58,6 @@ LocaleQmlViewStep::isBackEnabled() const bool LocaleQmlViewStep::isAtBeginning() const { - // TODO: adjust to "pages" in the QML return true; } @@ -121,81 +65,18 @@ LocaleQmlViewStep::isAtBeginning() const bool LocaleQmlViewStep::isAtEnd() const { - // TODO: adjust to "pages" in the QML return true; } Calamares::JobList LocaleQmlViewStep::jobs() const { - return m_jobs; + return m_config->createJobs(); } -void LocaleQmlViewStep::onActivate() +void +LocaleQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - // TODO no sure if it is needed at all or for the abstract class to start something -} - -void LocaleQmlViewStep::onLeave() -{ -#if 0 - if ( true ) - { - m_jobs = m_config->createJobs(); -// m_prettyStatus = m_actualWidget->prettyStatus(); - - auto map = m_config->localesMap(); - QVariantMap vm; - for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) - { - vm.insert( it.key(), it.value() ); - } - - Calamares::JobQueue::instance()->globalStorage()->insert( "localeConf", vm ); - } - else - { - m_jobs.clear(); - Calamares::JobQueue::instance()->globalStorage()->remove( "localeConf" ); - } -#endif -} - -void LocaleQmlViewStep::setConfigurationMap(const QVariantMap& configurationMap) -{ - QString region = CalamaresUtils::getString( configurationMap, "region" ); - QString zone = CalamaresUtils::getString( configurationMap, "zone" ); - if ( !region.isEmpty() && !zone.isEmpty() ) - { - m_startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); - } - else - { - m_startingTimezone - = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); - } - - m_localeGenPath = CalamaresUtils::getString( configurationMap, "localeGenPath" ); - if ( m_localeGenPath.isEmpty() ) - { - m_localeGenPath = QStringLiteral( "/etc/locale.gen" ); - } - - bool ok = false; - QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok ); - if ( ok ) - { - QString url = CalamaresUtils::getString( geoip, "url" ); - QString style = CalamaresUtils::getString( geoip, "style" ); - QString selector = CalamaresUtils::getString( geoip, "selector" ); - - m_geoip = std::make_unique< CalamaresUtils::GeoIP::Handler >( style, url, selector ); - if ( !m_geoip->isValid() ) - { - cWarning() << "GeoIP Style" << style << "is not recognized."; - } - } - - checkRequirements(); - Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last + m_config->setConfigurationMap( configurationMap ); + Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last } diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index 0639274d6..20689e149 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -20,14 +20,10 @@ #define LOCALE_QMLVIEWSTEP_H #include "Config.h" -#include "geoip/Handler.h" -#include "geoip/Interface.h" + +#include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/QmlViewStep.h" -#include - -#include -#include #include @@ -47,28 +43,12 @@ public: bool isAtEnd() const override; Calamares::JobList jobs() const override; - void onActivate() override; - void onLeave() override; void setConfigurationMap( const QVariantMap& configurationMap ) override; QObject* getConfig() override; - virtual Calamares::RequirementsList checkRequirements() override; - private: - // TODO: a generic QML viewstep should return a config object from a method - Config *m_config; - - bool m_nextEnabled; - QString m_prettyStatus; - - CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; - QString m_localeGenPath; - - Calamares::JobList m_jobs; - std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; - - void fetchGeoIpTimezone(); + std::unique_ptr< Config > m_config; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( LocaleQmlViewStepFactory ) From 51e743a67f9122c566c497ef0413fa8109444d75 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 12:48:18 +0200 Subject: [PATCH 049/399] [libcalamares] Give GlobalStorage a parent --- src/libcalamares/GlobalStorage.cpp | 6 +++--- src/libcalamares/GlobalStorage.h | 4 ++-- src/libcalamares/JobQueue.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index d58a3b0c6..341fc3892 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * @@ -36,8 +36,8 @@ using CalamaresUtils::operator""_MiB; namespace Calamares { -GlobalStorage::GlobalStorage() - : QObject( nullptr ) +GlobalStorage::GlobalStorage( QObject* parent ) + : QObject( parent ) { } diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index e9ba1da8a..a2848f888 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * @@ -39,7 +39,7 @@ class GlobalStorage : public QObject { Q_OBJECT public: - explicit GlobalStorage(); + explicit GlobalStorage( QObject* parent = nullptr ); //NOTE: thread safety is guaranteed by JobQueue, which executes jobs one by one. // If at any time jobs become concurrent, this class must be made thread-safe. diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index adff9464b..64cc4794d 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * @@ -170,7 +170,7 @@ JobQueue::globalStorage() const JobQueue::JobQueue( QObject* parent ) : QObject( parent ) , m_thread( new JobThread( this ) ) - , m_storage( new GlobalStorage() ) + , m_storage( new GlobalStorage( this ) ) { Q_ASSERT( !s_instance ); s_instance = this; From 36fb1124be8b0a215e0eb88418bf042bf3861792 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 12:57:01 +0200 Subject: [PATCH 050/399] [libcalamares] Export network status as Q_PROPERTY and to QML --- src/libcalamares/network/Manager.cpp | 8 ++++++-- src/libcalamares/network/Manager.h | 25 ++++++++++++++++++------- src/libcalamaresui/utils/Qml.cpp | 5 +++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp index d70988a0a..9d7534e99 100644 --- a/src/libcalamares/network/Manager.cpp +++ b/src/libcalamares/network/Manager.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify @@ -168,7 +168,11 @@ Manager::checkHasInternet() { hasInternet = synchronousPing( d->m_hasInternetUrl ); } - d->m_hasInternet = hasInternet; + if ( hasInternet != d->m_hasInternet ) + { + d->m_hasInternet = hasInternet; + emit hasInternetChanged( hasInternet ); + } return hasInternet; } diff --git a/src/libcalamares/network/Manager.h b/src/libcalamares/network/Manager.h index 1ba3eb411..8673d340b 100644 --- a/src/libcalamares/network/Manager.h +++ b/src/libcalamares/network/Manager.h @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify @@ -98,9 +98,10 @@ struct RequestStatus QDebug& operator<<( QDebug& s, const RequestStatus& e ); -class DLLEXPORT Manager : QObject +class DLLEXPORT Manager : public QObject { Q_OBJECT + Q_PROPERTY( bool hasInternet READ hasInternet NOTIFY hasInternetChanged FINAL ) Manager(); @@ -133,6 +134,16 @@ public: /// @brief Set the URL which is used for the general "is there internet" check. void setCheckHasInternetUrl( const QUrl& url ); + + /** @brief Do a network request asynchronously. + * + * Returns a pointer to the reply-from-the-request. + * This may be a nullptr if an error occurs immediately. + * The caller is responsible for cleaning up the reply (eventually). + */ + QNetworkReply* asynchronousGet( const QUrl& url, const RequestOptions& options = RequestOptions() ); + +public Q_SLOTS: /** @brief Do an explicit check for internet connectivity. * * This **may** do a ping to the configured check URL, but can also @@ -148,13 +159,13 @@ public: */ bool hasInternet(); - /** @brief Do a network request asynchronously. +signals: + /** @brief Indicates that internet connectivity status has changed * - * Returns a pointer to the reply-from-the-request. - * This may be a nullptr if an error occurs immediately. - * The caller is responsible for cleaning up the reply (eventually). + * The value is that returned from hasInternet() -- @c true when there + * is connectivity, @c false otherwise. */ - QNetworkReply* asynchronousGet( const QUrl& url, const RequestOptions& options = RequestOptions() ); + void hasInternetChanged( bool ); private: class Private; diff --git a/src/libcalamaresui/utils/Qml.cpp b/src/libcalamaresui/utils/Qml.cpp index 4f53aa317..1f1152fa2 100644 --- a/src/libcalamaresui/utils/Qml.cpp +++ b/src/libcalamaresui/utils/Qml.cpp @@ -23,6 +23,7 @@ #include "JobQueue.h" #include "Settings.h" #include "ViewManager.h" +#include "network/Manager.h" #include "utils/Dirs.h" #include "utils/Logger.h" @@ -242,6 +243,10 @@ registerQmlModels() "io.calamares.core", 1, 0, "Global", []( QQmlEngine*, QJSEngine* ) -> QObject* { return Calamares::JobQueue::instance()->globalStorage(); } ); + qmlRegisterSingletonType< CalamaresUtils::Network::Manager >( + "io.calamares.core", 1, 0, "Network", []( QQmlEngine*, QJSEngine* ) -> QObject* { + return &CalamaresUtils::Network::Manager::instance(); + } ); } } From fb927c976397d57d45a8bff6008fa8b356ac8583 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 12:57:26 +0200 Subject: [PATCH 051/399] [localeq] Use network-connected property to direct map-loading --- src/modules/localeq/localeq.qml | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index ffd87f5b5..df82b1f9b 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -31,41 +31,13 @@ Page { property var confLang: "American English" property var confLocale: "Nederland" - //Needs to come from .conf/geoip - property var hasInternet: true - - function getInt(format) { - var requestURL = "https://example.org/"; - var xhr = new XMLHttpRequest; - - xhr.onreadystatechange = function() { - if (xhr.readyState === XMLHttpRequest.DONE) { - - if (xhr.status !== 200) { - console.log("Disconnected!!"); - var connected = false - hasInternet = connected - return; - } - - else { - console.log("Connected!!"); - } - } - } - xhr.open("GET", requestURL, true); - xhr.send(); - } - Component.onCompleted: { - getInt(); - } Loader { id: image anchors.horizontalCenter: parent.horizontalCenter width: parent.width height: parent.height / 1.28 - source: (hasInternet) ? "Map.qml" : "Offline.qml" + source: (Network.hasInternet) ? "Map.qml" : "Offline.qml" } RowLayout { From fdbfbfe2845e735ae9d3c1e2d46d355e6fde95b6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 17:46:20 +0200 Subject: [PATCH 052/399] [localeq] Fix build, missed one case of removed member variable --- src/modules/localeq/LocaleQmlViewStep.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index 7891f73fd..e0ef75f63 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -27,7 +27,6 @@ LocaleQmlViewStep::LocaleQmlViewStep( QObject* parent ) : Calamares::QmlViewStep( parent ) , m_config( std::make_unique< Config >( this ) ) { - emit nextStatusChanged( m_nextEnabled ); } QObject* From 75da1bece4f5da57275e87a3ce276efe3fdd2c83 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 23:25:52 +0200 Subject: [PATCH 053/399] [locale] Add properties for language and LC codes - we already had the human-readable status strings, but also want the actual code (particularly for being able to **update** the code from QML) --- src/modules/locale/Config.cpp | 2 ++ src/modules/locale/Config.h | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 42b6d616f..21f4d90a7 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -288,6 +288,7 @@ Config::setLanguageExplicitly( const QString& language ) m_selectedLocaleConfiguration.explicit_lang = true; emit currentLanguageStatusChanged( currentLanguageStatus() ); + emit currentLanguageCodeChanged( currentLanguageCode() ); } void @@ -306,6 +307,7 @@ Config::setLCLocaleExplicitly( const QString& locale ) m_selectedLocaleConfiguration.explicit_lc = true; emit currentLCStatusChanged( currentLCStatus() ); + emit currentLCCodeChanged( currentLCCode() ); } QString diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 3d048bc28..484c1032e 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -43,9 +43,13 @@ class Config : public QObject Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation NOTIFY currentLocationChanged ) + // Status are complete, human-readable, messages Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged ) + // Code are internal identifiers, like "en_US.UTF-8" + Q_PROPERTY( QString currentLanguageCode READ currentLanguageCode WRITE setLanguageExplicitly NOTIFY currentLanguageCodeChanged ) + Q_PROPERTY( QString currentLCCode READ currentLCCode WRITE setLCLocaleExplicitly NOTIFY currentLCCodeChanged ) public: Config( QObject* parent = nullptr ); @@ -103,11 +107,16 @@ public Q_SLOTS: */ void setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ); + QString currentLanguageCode() const { return localeConfiguration().language(); } + QString currentLCCode() const { return localeConfiguration().lc_numeric; } + signals: void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ) const; void currentLocationStatusChanged( const QString& ) const; void currentLanguageStatusChanged( const QString& ) const; void currentLCStatusChanged( const QString& ) const; + void currentLanguageCodeChanged( const QString& ) const; + void currentLCCodeChanged( const QString& ) const; private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") From 00e945434453841c09269e0384bffe7b1d047ef1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 23:26:15 +0200 Subject: [PATCH 054/399] [localeq] Hook up to Config object - get network status from the global Network object; document that - get the strings describing the language and LC settings from the config-object instead of roll-our-own - use the model of supported locales from Config to populate listboxes - connect selection of language or LC to the Config object --- src/modules/localeq/i18n.qml | 20 +++++++------------- src/modules/localeq/localeq.qml | 7 ++++--- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/modules/localeq/i18n.qml b/src/modules/localeq/i18n.qml index a806d0174..eea9864a3 100644 --- a/src/modules/localeq/i18n.qml +++ b/src/modules/localeq/i18n.qml @@ -32,10 +32,6 @@ Item { anchors.fill: parent } - //Needs to come from Locale config - property var confLang: "en_US.UTF8" - property var confLocale: "nl_NL.UTF8" - Rectangle { id: textArea x: 28 @@ -57,7 +53,7 @@ Item { width: 240 wrapMode: Text.WordWrap text: qsTr("

Languages


- The system locale setting affects the language and character set for some command line user interface elements. The current setting is %1.").arg(confLang) + The system locale setting affects the language and character set for some command line user interface elements. The current setting is %1.").arg(config.currentLanguageCode) font.pointSize: 10 } } @@ -76,8 +72,7 @@ Item { id: list1 focus: true - // bogus entries, need to come from Locale config - model: ["en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8"] + model: config.supportedLocales currentIndex: 1 highlight: Rectangle { @@ -95,17 +90,17 @@ Item { } onClicked: { list1.currentIndex = index - confLang = list1.currentIndex } } } + onCurrentItemChanged: { config.currentLanguageCode = model[currentIndex] } /* This works because model is a stringlist */ } } } } Column { - id: i18n + id: lc_numeric x: 430 y: 40 @@ -118,7 +113,7 @@ Item { width: 240 wrapMode: Text.WordWrap text: qsTr("

Locales


- The system locale setting affects the language and character set for some command line user interface elements. The current setting is %1.").arg(confLocale) + The system locale setting affects the numbers and dates format. The current setting is %1.").arg(config.currentLCCode) font.pointSize: 10 } } @@ -139,7 +134,7 @@ Item { focus: true // bogus entries, need to come from Locale config - model: ["en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8", "en_GB.UTF-8 UTF-8", "en_US.UTF-8 UTF-8 ", "nl_NL.UTF-8 UTF-8"] + model: config.supportedLocales currentIndex: 2 highlight: Rectangle { @@ -154,11 +149,10 @@ Item { cursorShape: Qt.PointingHandCursor onClicked: { list2.currentIndex = index - confLocale = list1.currentIndex } } } - onCurrentItemChanged: console.debug(currentIndex) + onCurrentItemChanged: { config.currentLCCode = model[currentIndex]; } /* This works because model is a stringlist */ } } } diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index df82b1f9b..c48140d12 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -37,7 +37,8 @@ Page { anchors.horizontalCenter: parent.horizontalCenter width: parent.width height: parent.height / 1.28 - source: (Network.hasInternet) ? "Map.qml" : "Offline.qml" + // Network is in io.calamares.core + source: Network.hasInternet ? "Map.qml" : "Offline.qml" } RowLayout { @@ -67,7 +68,7 @@ Page { Label { Layout.fillWidth: true wrapMode: Text.WordWrap - text: qsTr("System language set to %1").arg(confLang) + text: config.currentLanguageStatus } Kirigami.Separator { Layout.fillWidth: true @@ -75,7 +76,7 @@ Page { Label { Layout.fillWidth: true wrapMode: Text.WordWrap - text: qsTr("Numbers and dates locale set to %1").arg(confLocale) + text: config.currentLCStatus } } Button { From e78cde7ccbdcfb3bb739ced851ef7056f1c09017 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 23 Jul 2020 23:30:43 +0200 Subject: [PATCH 055/399] [locale] Update GS when the LC value changes (not just location) --- src/modules/locale/Config.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 21f4d90a7..f0198dd21 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -166,11 +166,23 @@ Config::Config( QObject* parent ) // we don't need to call an update-GS method, or introduce an intermediate // update-thing-and-GS method. And everywhere where we **do** change // language or location, we already emit the signal. - connect( this, &Config::currentLanguageStatusChanged, [&]() { + connect( this, &Config::currentLanguageCodeChanged, [&]() { auto* gs = Calamares::JobQueue::instance()->globalStorage(); gs->insert( "locale", m_selectedLocaleConfiguration.toBcp47() ); } ); + connect( this, &Config::currentLCCodeChanged, [&]() { + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + // Update GS localeConf (the LC_ variables) + auto map = localeConfiguration().toMap(); + QVariantMap vm; + for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) + { + vm.insert( it.key(), it.value() ); + } + gs->insert( "localeConf", vm ); + } ); + connect( this, &Config::currentLocationChanged, [&]() { auto* gs = Calamares::JobQueue::instance()->globalStorage(); @@ -186,15 +198,6 @@ Config::Config( QObject* parent ) QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location->region() + '/' + location->zone() } ); } - - // Update GS localeConf (the LC_ variables) - auto map = localeConfiguration().toMap(); - QVariantMap vm; - for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) - { - vm.insert( it.key(), it.value() ); - } - gs->insert( "localeConf", vm ); } ); } From a4ed160060b9addd7302f62e227d73a24d4d443c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 11:07:58 +0200 Subject: [PATCH 056/399] [localeq] Offer a Config setting to set location from region/zone - already had methods for various kinds of broken-up data, but not one for plain "region/zone" strings; having this makes it easier for QML to report a zone. - use the region/zone method from QML, so that clicking on the world map updates the actual TZ in Config. --- src/modules/locale/Config.cpp | 9 +++++++++ src/modules/locale/Config.h | 9 ++++++++- src/modules/localeq/Map.qml | 7 ++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index f0198dd21..f28a2d0b5 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -218,6 +218,15 @@ Config::setCurrentLocation() } } +void Config::setCurrentLocation(const QString& regionzone) +{ + auto r = CalamaresUtils::GeoIP::splitTZString( regionzone ); + if ( r.isValid() ) + { + setCurrentLocation( r.first, r.second ); + } +} + void Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 484c1032e..d74555ee5 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -92,7 +92,14 @@ public Q_SLOTS: /// Set LC (formats) by user-choice, overriding future location changes void setLCLocaleExplicitly( const QString& locale ); - /** @brief Sets a location by name + /** @brief Sets a location by full name + * + * @p regionzone should be an identifier from zone.tab, e.g. "Africa/Abidjan", + * which is split into regon and zone. Invalid names will **not** + * change the actual location. + */ + void setCurrentLocation( const QString& regionzone ); + /** @brief Sets a location by split name * * @p region should be "America" or the like, while @p zone * names a zone within that region. diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index 023de6d1b..080d7388a 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -74,6 +74,7 @@ Column { var tz2 = responseJSON.timezoneId tzText.text = "Timezone: " + tz2 + config.setCurrentLocation(tz2) } } @@ -126,7 +127,7 @@ Column { anchorPoint.x: image.width/4 anchorPoint.y: image.height coordinate: QtPositioning.coordinate( - map.center.latitude, + map.center.latitude, map.center.longitude) //coordinate: QtPositioning.coordinate(40.730610, -73.935242) // New York @@ -156,7 +157,7 @@ Column { map.center.longitude = coordinate.longitude getTz(); - + console.log(coordinate.latitude, coordinate.longitude) } } @@ -199,7 +200,7 @@ Column { } Rectangle { - width: parent.width + width: parent.width height: 100 anchors.horizontalCenter: parent.horizontalCenter From 07c096673d1f4b46a8746a6782a0d3e5cd8d6ab4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 11:10:56 +0200 Subject: [PATCH 057/399] [localeq] Report summary before install --- src/modules/localeq/LocaleQmlViewStep.cpp | 7 +++++++ src/modules/localeq/LocaleQmlViewStep.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index e0ef75f63..d1186af1f 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -41,6 +41,13 @@ LocaleQmlViewStep::prettyName() const return tr( "Location" ); } +QString +LocaleQmlViewStep::prettyStatus() const +{ + QStringList l { m_config->currentLocationStatus(), m_config->currentLanguageStatus(), m_config->currentLCStatus() }; + return l.join( QStringLiteral( "
" ) ); +} + bool LocaleQmlViewStep::isNextEnabled() const { diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index 20689e149..3d73c6f79 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -35,6 +35,7 @@ public: explicit LocaleQmlViewStep( QObject* parent = nullptr ); QString prettyName() const override; + QString prettyStatus() const override; bool isNextEnabled() const override; bool isBackEnabled() const override; From 23810aae3d8372d225e2ebe142267bc1fa11fde7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 11:29:47 +0200 Subject: [PATCH 058/399] CMake: switch to autorcc from manual futzing --- CMakeModules/CalamaresAddLibrary.cmake | 9 ++++--- CMakeModules/CalamaresAutomoc.cmake | 36 ++++++++++++++++++++------ 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index 88978e751..901791e30 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -62,10 +62,8 @@ function(calamares_add_library) include_directories(${CMAKE_CURRENT_BINARY_DIR}) # add resources from current dir - if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}") - qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}") - list(APPEND LIBRARY_SOURCES ${LIBRARY_RC_SOURCES}) - unset(LIBRARY_RC_SOURCES) + if(LIBRARY_RESOURCES) + list(APPEND LIBRARY_SOURCES ${LIBRARY_RESOURCES}) endif() # add target @@ -81,6 +79,9 @@ function(calamares_add_library) if(LIBRARY_UI) calamares_autouic(${target} ${LIBRARY_UI}) endif() + if(LIBRARY_RESOURCES) + calamares_autorcc(${target} ${LIBRARY_RESOURCES}) + endif() if(LIBRARY_EXPORT_MACRO) set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO}) diff --git a/CMakeModules/CalamaresAutomoc.cmake b/CMakeModules/CalamaresAutomoc.cmake index 3de586ad2..c9a08a20d 100644 --- a/CMakeModules/CalamaresAutomoc.cmake +++ b/CMakeModules/CalamaresAutomoc.cmake @@ -18,17 +18,28 @@ # ### # -# Helper function for doing automoc on a target, and autoui on a .ui file. +# Helper function for doing automoc, autouic, autorcc on targets, +# and on the corresponding .ui or .rcc files. # -# Sets AUTOMOC TRUE for a target. +# calamares_automoc(target) +# Sets AUTOMOC TRUE for a target. # -# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that -# as well to set options passed to MOC. This can be used to add -# libcalamares/utils/moc-warnings.h file to the moc, which in turn -# reduces compiler warnings in generated MOC code. +# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that +# as well to set options passed to MOC. This can be used to add +# libcalamares/utils/moc-warnings.h file to the moc, which in turn +# reduces compiler warnings in generated MOC code. # -# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that -# to the options passed to uic. +# calamares_autouic(target [uifile ..]) +# Sets AUTOUIC TRUE for a target. +# +# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that +# to the options passed to uic for each of the named uifiles. +# +# calamares_autorcc(target [rcfile ..]) +# Sets AUTOUIC TRUE for a target. +# +# If the global variable CALAMARES_AUTORCC_OPTIONS is set, adds that +# to the options passed to rcc for each of the named rcfiles. function(calamares_automoc TARGET) set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE ) @@ -45,3 +56,12 @@ function(calamares_autouic TARGET) endforeach() endif() endfunction() + +function(calamares_autorcc TARGET) + set_target_properties( ${TARGET} PROPERTIES AUTORCC TRUE ) + if ( CALAMARES_AUTORCC_OPTIONS ) + foreach(S ${ARGN}) + set_property(SOURCE ${S} PROPERTY AUTORCC_OPTIONS "${CALAMARES_AUTORCC_OPTIONS}") + endforeach() + endif() +endfunction() From a080e47f4b775d488589180ecb6f29b90c9f7967 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 11:53:32 +0200 Subject: [PATCH 059/399] [locale] Add prettyStatus to Config - this is present in the previous config, and helps make the modules consistent by returning prettyStatus in both ViewSteps. --- src/modules/locale/Config.cpp | 12 ++++++++++++ src/modules/locale/Config.h | 7 +++++++ src/modules/locale/LocaleViewStep.cpp | 3 +-- src/modules/localeq/LocaleQmlViewStep.cpp | 3 +-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index f28a2d0b5..7a49525f2 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -199,6 +199,11 @@ Config::Config( QObject* parent ) { "set-timezone", location->region() + '/' + location->zone() } ); } } ); + + auto prettyStatusNotify = [&]() { emit prettyStatusChanged( prettyStatus() ); }; + connect( this, &Config::currentLanguageStatusChanged, prettyStatusNotify ); + connect( this, &Config::currentLCStatusChanged, prettyStatusNotify ); + connect( this, &Config::currentLocationStatusChanged, prettyStatusNotify ); } Config::~Config() {} @@ -351,6 +356,13 @@ Config::currentLCStatus() const .arg( localeLabel( m_selectedLocaleConfiguration.lc_numeric ) ); } +QString +Config::prettyStatus() const +{ + QStringList l { currentLocationStatus(), currentLanguageStatus(), currentLCStatus() }; + return l.join( QStringLiteral( "
" ) ); +} + static inline void getLocaleGenLines( const QVariantMap& configurationMap, QStringList& localeGenLines ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index d74555ee5..e9a8e6373 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -51,6 +51,9 @@ class Config : public QObject Q_PROPERTY( QString currentLanguageCode READ currentLanguageCode WRITE setLanguageExplicitly NOTIFY currentLanguageCodeChanged ) Q_PROPERTY( QString currentLCCode READ currentLCCode WRITE setLCLocaleExplicitly NOTIFY currentLCCodeChanged ) + // This is a long human-readable string with all three statuses + Q_PROPERTY( QString prettyStatus READ prettyStatus NOTIFY prettyStatusChanged FINAL ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -79,6 +82,9 @@ public: /// The human-readable description of what locale (LC_*) is used QString currentLCStatus() const; + /// The human-readable summary of what the module will do + QString prettyStatus() const; + const QStringList& supportedLocales() const { return m_localeGenLines; } CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } @@ -122,6 +128,7 @@ signals: void currentLocationStatusChanged( const QString& ) const; void currentLanguageStatusChanged( const QString& ) const; void currentLCStatusChanged( const QString& ) const; + void prettyStatusChanged( const QString& ) const; void currentLanguageCodeChanged( const QString& ) const; void currentLCCodeChanged( const QString& ) const; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 8ae894aa8..a85c87e4f 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -89,8 +89,7 @@ LocaleViewStep::prettyName() const QString LocaleViewStep::prettyStatus() const { - QStringList l { m_config->currentLocationStatus(), m_config->currentLanguageStatus(), m_config->currentLCStatus() }; - return l.join( QStringLiteral( "
" ) ); + return m_config->prettyStatus(); } diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index d1186af1f..ead2e2673 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -44,8 +44,7 @@ LocaleQmlViewStep::prettyName() const QString LocaleQmlViewStep::prettyStatus() const { - QStringList l { m_config->currentLocationStatus(), m_config->currentLanguageStatus(), m_config->currentLCStatus() }; - return l.join( QStringLiteral( "
" ) ); + return m_config->prettyStatus(); } bool From 09020d68b093c1a28f251db95d645a70d6e9cded Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 12:15:27 +0200 Subject: [PATCH 060/399] [libcalamaresui] Make dox of ModuleManager signals more explicit --- src/libcalamaresui/modulesystem/ModuleManager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index 2bac78af6..bea8acf41 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -130,10 +130,10 @@ signals: void modulesFailed( QStringList ); /** @brief Emitted after all requirements have been checked * - * The bool value indicates if all of the **mandatory** requirements + * The bool @p canContinue indicates if all of the **mandatory** requirements * are satisfied (e.g. whether installation can continue). */ - void requirementsComplete( bool ); + void requirementsComplete( bool canContinue ); private slots: void doInit(); From 682146aa9b9d5267b379c6144c0454caa462594e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 9 Jul 2020 16:08:51 +0200 Subject: [PATCH 061/399] [libcalamares] Expand dox on TimeZone pairs --- src/libcalamares/locale/TimeZone.h | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 60900ef21..05820817a 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * */ @@ -88,7 +87,13 @@ public: } }; -/// @brief A pair of strings for timezone regions (e.g. "America") +/** @brief Timezone regions (e.g. "America") + * + * A region has a key and a human-readable name, but also + * a collection of associated timezone zones (TZZone, below). + * This class is not usually constructed, but uses fromFile() + * to load a complete tree structure of timezones. + */ class TZRegion : public CStringPair { Q_OBJECT @@ -120,7 +125,12 @@ private: CStringPairList m_zones; }; -/// @brief A pair of strings for specific timezone names (e.g. "New_York") +/** @brief Specific timezone zones (e.g. "New_York", "New York") + * + * A timezone zone lives in a region, and has some associated + * data like the country (used to map likely languages) and latitude + * and longitude information. + */ class TZZone : public CStringPair { Q_OBJECT From a835bb9a10014dc18935c8919802020f7e3f5789 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 12:26:02 +0200 Subject: [PATCH 062/399] Changes: document new locale features --- CHANGES | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index d7510976a..ad374e40a 100644 --- a/CHANGES +++ b/CHANGES @@ -9,10 +9,18 @@ This release contains contributions from (alphabetically by first name): - No external contributors yet ## Core ## - - No core changes yet + - A new object *Network* is available to QML modules in `io.calamares.core`. + It exposes network status through the *hasInternet* property. ## Modules ## - - No module changes yet + - The *locale* module has been completely redone on the inside. + Users should see no changes. #1391 + - The *localeq* module uses the redone internals of the locale module. + It can now be used to set timezone, language and locale information + and is a suitable alternative module. Thanks to Anke Boersma who did + the work of figuring out maps. Note that the map uses several GeoIP + and GeoData providers and you may need to configure the URLs + with suitable usernames for those services. #1426 # 3.2.27 (2020-07-11) # From 11482559ad64a11946ffc591e270ee3cd768c05c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 13:39:43 +0200 Subject: [PATCH 063/399] [netinstall] There is no netinstall.qrc --- src/modules/netinstall/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 762e92985..0f2cf06f8 100644 --- a/src/modules/netinstall/CMakeLists.txt +++ b/src/modules/netinstall/CMakeLists.txt @@ -9,8 +9,6 @@ calamares_add_plugin( netinstall PackageModel.cpp UI page_netinst.ui - RESOURCES - netinstall.qrc LINK_PRIVATE_LIBRARIES calamaresui Qt5::Network From 4d3422b93181188bcff06c2938c70748ed9a3a5e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 24 Jul 2020 14:24:03 +0200 Subject: [PATCH 064/399] [libcalamares] dox for Permissions - Expand the documentation, emphasize octal-vs-decimal - east-const consistently in this file (most of Calamares is west-const) - shuffle the is-valid bool to the end of the data members, so sorting by size. --- src/libcalamares/utils/Permissions.cpp | 6 +++--- src/libcalamares/utils/Permissions.h | 29 ++++++++++++++++++++------ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/libcalamares/utils/Permissions.cpp b/src/libcalamares/utils/Permissions.cpp index d9d3226e6..3166d840a 100644 --- a/src/libcalamares/utils/Permissions.cpp +++ b/src/libcalamares/utils/Permissions.cpp @@ -14,20 +14,20 @@ Permissions::Permissions() : m_username() , m_group() - , m_valid( false ) , m_value( 0 ) + , m_valid( false ) { } -Permissions::Permissions( QString p ) +Permissions::Permissions( QString const& p ) : Permissions() { parsePermissions( p ); } void -Permissions::parsePermissions( const QString& p ) +Permissions::parsePermissions( QString const& p ) { QStringList segments = p.split( ":" ); diff --git a/src/libcalamares/utils/Permissions.h b/src/libcalamares/utils/Permissions.h index baa5da554..b6e2d3a44 100644 --- a/src/libcalamares/utils/Permissions.h +++ b/src/libcalamares/utils/Permissions.h @@ -25,27 +25,44 @@ public: /** @brief Constructor * * Splits the string @p at the colon (":") into separate elements for - * , , and (permissions), where is returned as - * an **octal** integer. + * , , and (permissions), where is interpreted + * as an **octal** integer. That is, "root:wheel:755" will give + * you an integer value of four-hundred-ninety-three (493), + * corresponding to the UNIX file permissions rwxr-xr-x, + * as one would expect from chmod and other command-line utilities. */ - Permissions( QString p ); + Permissions( QString const& p ); - /** @brief Default constructor of an invalid Permissions. */ + /// @brief Default constructor of an invalid Permissions. Permissions(); + /// @brief Was the Permissions object constructed from valid data? bool isValid() const { return m_valid; } + /// @brief The user (first component, e.g. "root" in "root:wheel:755") QString username() const { return m_username; } + /// @brief The group (second component, e.g. "wheel" in "root:wheel:755") QString group() const { return m_group; } + /** @brief The value (file permission) as an integer. + * + * Bear in mind that input is in octal, but integers are just integers; + * naively printing them will get decimal results (e.g. 493 from the + * input of "root:wheel:755"). + */ int value() const { return m_value; } - QString octal() const { return QString::number( m_value, 8 ); } + /** @brief The value (file permission) as octal string + * + * This is suitable for passing to chmod-the-program, or for + * recreating the original Permissions string. + */ + QString octal() const { return QString::number( value(), 8 ); } private: void parsePermissions( QString const& p ); QString m_username; QString m_group; - bool m_valid; int m_value; + bool m_valid; }; #endif // LIBCALAMARES_PERMISSIONS_H From bc484ae5da7ee5f52ca661c6e66bfc463d82614c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 22 Jun 2020 16:40:12 +0200 Subject: [PATCH 065/399] [users] Refactor /etc/group file handing --- src/modules/users/CreateUserJob.cpp | 58 +++++++++++++++++------------ 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 776b45ce9..349d6c295 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -54,6 +54,36 @@ CreateUserJob::prettyStatusMessage() const return tr( "Creating user %1." ).arg( m_userName ); } +static QStringList +groupsInTargetSystem( const QDir& targetRoot ) +{ + QFileInfo groupsFi( targetRoot.absoluteFilePath( "etc/group" ) ); + QFile groupsFile( groupsFi.absoluteFilePath() ); + if ( !groupsFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + return QStringList(); + } + QString groupsData = QString::fromLocal8Bit( groupsFile.readAll() ); + QStringList groupsLines = groupsData.split( '\n' ); + for ( QStringList::iterator it = groupsLines.begin(); it != groupsLines.end(); ++it ) + { + int indexOfFirstToDrop = it->indexOf( ':' ); + it->truncate( indexOfFirstToDrop ); + } + return groupsLines; +} + +static void +ensureGroupsExistInTarget( const QStringList& wantedGroups, const QStringList& availableGroups ) +{ + for ( const QString& group : wantedGroups ) + { + if ( !availableGroups.contains( group ) ) + { + CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", group } ); + } + } +} Calamares::JobResult CreateUserJob::exec() @@ -89,36 +119,16 @@ CreateUserJob::exec() cDebug() << "[CREATEUSER]: preparing groups"; - QFileInfo groupsFi( destDir.absoluteFilePath( "etc/group" ) ); - QFile groupsFile( groupsFi.absoluteFilePath() ); - if ( !groupsFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - return Calamares::JobResult::error( tr( "Cannot open groups file for reading." ) ); - } - QString groupsData = QString::fromLocal8Bit( groupsFile.readAll() ); - QStringList groupsLines = groupsData.split( '\n' ); - for ( QStringList::iterator it = groupsLines.begin(); it != groupsLines.end(); ++it ) - { - int indexOfFirstToDrop = it->indexOf( ':' ); - it->truncate( indexOfFirstToDrop ); - } - - for ( const QString& group : m_defaultGroups ) - { - if ( !groupsLines.contains( group ) ) - { - CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", group } ); - } - } + QStringList availableGroups = groupsInTargetSystem( destDir ); + ensureGroupsExistInTarget( m_defaultGroups, availableGroups ); QString defaultGroups = m_defaultGroups.join( ',' ); if ( m_autologin ) { - QString autologinGroup; if ( gs->contains( "autologinGroup" ) && !gs->value( "autologinGroup" ).toString().isEmpty() ) { - autologinGroup = gs->value( "autologinGroup" ).toString(); - CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", autologinGroup } ); + QString autologinGroup = gs->value( "autologinGroup" ).toString(); + ensureGroupsExistInTarget( QStringList { autologinGroup }, availableGroups ); defaultGroups.append( QString( ",%1" ).arg( autologinGroup ) ); } } From 409ab6ee868b22f8e42083ce668876d3f5f313e8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 22 Jun 2020 17:10:03 +0200 Subject: [PATCH 066/399] [users] Refactor writing sudoers file - use existing convenience methods --- src/modules/users/CreateUserJob.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 349d6c295..f0b1dca88 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -95,26 +95,23 @@ CreateUserJob::exec() { cDebug() << "[CREATEUSER]: preparing sudoers"; - QFileInfo sudoersFi( destDir.absoluteFilePath( "etc/sudoers.d/10-installer" ) ); + QString sudoersLine = QString( "%%1 ALL=(ALL) ALL\n" ).arg( gs->value( "sudoersGroup" ).toString() ); + auto fileResult + = CalamaresUtils::System::instance()->createTargetFile( QStringLiteral( "/etc/sudoers.d/10-installer" ), + sudoersLine.toUtf8().constData(), + CalamaresUtils::System::WriteMode::Overwrite ); - if ( !sudoersFi.absoluteDir().exists() ) + if ( fileResult ) { - return Calamares::JobResult::error( tr( "Sudoers dir is not writable." ) ); + if ( QProcess::execute( "chmod", { "440", fileResult.path() } ) ) + { + return Calamares::JobResult::error( tr( "Cannot chmod sudoers file." ) ); + } } - - QFile sudoersFile( sudoersFi.absoluteFilePath() ); - if ( !sudoersFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + else { return Calamares::JobResult::error( tr( "Cannot create sudoers file for writing." ) ); } - - QString sudoersGroup = gs->value( "sudoersGroup" ).toString(); - - QTextStream sudoersOut( &sudoersFile ); - sudoersOut << QString( "%%1 ALL=(ALL) ALL\n" ).arg( sudoersGroup ); - - if ( QProcess::execute( "chmod", { "440", sudoersFi.absoluteFilePath() } ) ) - return Calamares::JobResult::error( tr( "Cannot chmod sudoers file." ) ); } cDebug() << "[CREATEUSER]: preparing groups"; From d114c383fa911f9c447b6f964243ba889a74316c Mon Sep 17 00:00:00 2001 From: demmm Date: Fri, 24 Jul 2020 17:34:14 +0200 Subject: [PATCH 067/399] [localeq] remove obsolete vars & comments set index in i18n.qml to -1, old settings were just for reading from the bogus model current model uses strings, so index fails to read from it. This fixes cala crashing on loading i18n.qml --- src/modules/localeq/i18n.qml | 5 ++--- src/modules/localeq/localeq.qml | 3 --- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/modules/localeq/i18n.qml b/src/modules/localeq/i18n.qml index eea9864a3..6907b1ba8 100644 --- a/src/modules/localeq/i18n.qml +++ b/src/modules/localeq/i18n.qml @@ -74,7 +74,7 @@ Item { model: config.supportedLocales - currentIndex: 1 + currentIndex: -1 highlight: Rectangle { color: Kirigami.Theme.highlightColor } @@ -133,10 +133,9 @@ Item { width: 180; height: 200 focus: true - // bogus entries, need to come from Locale config model: config.supportedLocales - currentIndex: 2 + currentIndex: -1 highlight: Rectangle { color: Kirigami.Theme.highlightColor } diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index c48140d12..49719db65 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -29,9 +29,6 @@ Page { width: 800 height: 550 - property var confLang: "American English" - property var confLocale: "Nederland" - Loader { id: image anchors.horizontalCenter: parent.horizontalCenter From 2b3cc1778236a21339d8fd5de97cb80fa7abac2a Mon Sep 17 00:00:00 2001 From: apt-ghetto Date: Fri, 24 Jul 2020 17:56:58 +0200 Subject: [PATCH 068/399] Revert Manual Partition instructions With PR calamares/calamares#1357 the label of the "Manual partitioning" option was changed, which introduced several downsides: * The label is shown for UEFI and for BIOS installations. * The mountpoint of the ESP is and should be distro specific. * The label always mentioned GPT, which is irrelevant. * The label should explain, what the option does, and not, what problems can occur under certain circumstances. --- src/modules/partition/gui/ChoicePage.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 69a740d20..9e48e69ac 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -332,9 +332,7 @@ ChoicePage::setupChoices() CALAMARES_RETRANSLATE( m_somethingElseButton->setText( tr( "Manual partitioning
" - "You can create or resize partitions yourself." - " Having a GPT partition table and fat32 512Mb /boot partition " - "is a must for UEFI installs, either use an existing without formatting or create one." ) ); + "You can create or resize partitions yourself." ) ); updateSwapChoicesTr( m_eraseSwapChoiceComboBox ); ) } From 01b22d27a8cc7d8447d554d8162613f2c4b4a992 Mon Sep 17 00:00:00 2001 From: apt-ghetto Date: Sat, 25 Jul 2020 15:59:59 +0200 Subject: [PATCH 069/399] Do not allow 'root' as username On the "Users" tab, the user can choose a username. It was possible to use 'root' as username, which led to an installation error, because 'root' exists already. Added a new check to the username validation. Fixes #1462. --- src/modules/users/UsersPage.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9c7ce6f7b..5c649d622 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -409,6 +409,13 @@ UsersPage::validateUsernameText( const QString& textRef ) tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ) ); m_readyUsername = false; } + else if ( 0 == QString::compare("root", text, Qt::CaseSensitive ) ) + { + labelError( ui->labelUsername, + ui->labelUsernameError, + tr( "'root' is not allowed as user name." ) ); + m_readyUsername = false; + } else { labelOk( ui->labelUsername, ui->labelUsernameError ); From 3a3507f2b29e9e0b080e5d118a70e76f06959960 Mon Sep 17 00:00:00 2001 From: demmm Date: Sat, 25 Jul 2020 17:18:28 +0200 Subject: [PATCH 070/399] [keyboardq] remove background image use make the module more in line with the look of the rest of Calamares --- src/modules/keyboardq/ListViewTemplate.qml | 2 +- src/modules/keyboardq/ResponsiveBase.qml | 47 +++------------------ src/modules/keyboardq/keyboard.jpg | Bin 103372 -> 0 bytes src/modules/keyboardq/keyboardq.qml | 5 ++- src/modules/keyboardq/keyboardq.qrc | 1 - 5 files changed, 11 insertions(+), 44 deletions(-) delete mode 100644 src/modules/keyboardq/keyboard.jpg diff --git a/src/modules/keyboardq/ListViewTemplate.qml b/src/modules/keyboardq/ListViewTemplate.qml index eb160afab..4564b887b 100644 --- a/src/modules/keyboardq/ListViewTemplate.qml +++ b/src/modules/keyboardq/ListViewTemplate.qml @@ -15,7 +15,7 @@ ListView { z: parent.z - 1 anchors.fill: parent - color: Kirigami.Theme.backgroundColor + color: "#BDC3C7" radius: 5 opacity: 0.7 } diff --git a/src/modules/keyboardq/ResponsiveBase.qml b/src/modules/keyboardq/ResponsiveBase.qml index c9f5c7091..38fa15d1b 100644 --- a/src/modules/keyboardq/ResponsiveBase.qml +++ b/src/modules/keyboardq/ResponsiveBase.qml @@ -13,8 +13,8 @@ Page { width: 800 //parent.width height: 550 //parent.height - Kirigami.Theme.backgroundColor: "#fafafa" - Kirigami.Theme.textColor: "#333" + Kirigami.Theme.backgroundColor: "#FAFAFA" + Kirigami.Theme.textColor: "#1F1F1F" property string subtitle property string message @@ -22,39 +22,6 @@ Page { default property alias content : _content.data property alias stackView: _stackView - background: Item { - - id: _background - - Image { - - id: _wallpaper - height: parent.height - width: parent.width - - sourceSize.width: 800 - sourceSize.height: 550 - - fillMode: Image.PreserveAspectCrop - antialiasing: false - smooth: false - asynchronous: true - cache: true - - source: "keyboard.jpg" - } - - FastBlur { - - id: fastBlur - anchors.fill: parent - source: _wallpaper - radius: 32 - transparentBorder: false - cached: true - } - } - ColumnLayout { id: _content @@ -63,7 +30,7 @@ Page { spacing: Kirigami.Units.smallSpacing * 5 anchors.margins: Kirigami.Units.smallSpacing * 5 anchors.bottomMargin: 20 - + Label { Layout.fillWidth: true @@ -72,7 +39,7 @@ Page { wrapMode: Text.NoWrap elide: Text.ElideMiddle text: control.title - color: "white" + color: Kirigami.Theme.textColor font.bold: true font.weight: Font.Bold font.pointSize: 24 @@ -86,7 +53,7 @@ Page { wrapMode: Text.Wrap elide: Text.ElideMiddle text: control.subtitle - color: "white" + color: Kirigami.Theme.textColor font.weight: Font.Light font.pointSize: 12 } @@ -99,7 +66,7 @@ Page { wrapMode: Text.Wrap elide: Text.ElideMiddle text: control.message - color: "white" + color: Kirigami.Theme.textColor font.weight: Font.Light font.pointSize: 10 } @@ -110,7 +77,7 @@ Page { Layout.fillHeight: true Layout.preferredWidth: parent.width clip: true - } + } } } diff --git a/src/modules/keyboardq/keyboard.jpg b/src/modules/keyboardq/keyboard.jpg deleted file mode 100644 index 9c0600fac5da2748cc80a4ba18e5b1df8e285465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103372 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.qml ListViewTemplate.qml ResponsiveBase.qml - keyboard.jpg From e0bb7d9f6f6556e94e3dd3bb689c880a54b1183a Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sun, 26 Jul 2020 11:02:36 +0200 Subject: [PATCH 071/399] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_de.ts | 2 +- lang/calamares_ie.ts | 3941 ++++++++++++++++++++++++++++++++++++++ lang/calamares_it_IT.ts | 26 +- lang/calamares_nl.ts | 18 +- lang/calamares_tg.ts | 3947 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 7911 insertions(+), 23 deletions(-) create mode 100644 lang/calamares_ie.ts create mode 100644 lang/calamares_tg.ts diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 9098ab48c..c0d0cadaf 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -792,7 +792,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <h1>Welcome to the %1 installer</h1> - + <h1>Willkommen zum %1 Installationsprogramm</h1>
diff --git a/lang/calamares_ie.ts b/lang/calamares_ie.ts new file mode 100644 index 000000000..e65456755 --- /dev/null +++ b/lang/calamares_ie.ts @@ -0,0 +1,3941 @@ + + + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::BlankViewStep + + + Blank Page + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Reload Stylesheet + + + + + Widget Tree + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Set up + + + + + Install + + + + + Calamares::FailJob + + + Job failed (%1) + + + + + Programmed job failure was explicitly requested. + + + + + Calamares::JobThread + + + Done + + + + + Calamares::NamedJob + + + Example job (%1) + + + + + Calamares::ProcessJob + + + Run command '%1' in target system. + + + + + Run command '%1'. + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::QmlViewStep + + + Loading ... + + + + + QML Step <i>%1</i>. + + + + + Loading failed. + + + + + Calamares::RequirementsChecker + + + Requirements checking for module <i>%1</i> is complete. + + + + + Waiting for %n module(s). + + + + + + + + (%n second(s)) + + + + + + + + System-requirements checking is complete. + + + + + Calamares::ViewManager + + + Setup Failed + + + + + Installation Failed + + + + + Would you like to paste the install log to the web? + + + + + Error + + + + + + &Yes + + + + + + &No + + + + + &Close + + + + + Install Log Paste URL + + + + + The upload was unsuccessful. No web-paste was done. + + + + + Calamares Initialization Failed + + + + + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. + + + + + <br/>The following modules could not be loaded: + + + + + Continue with setup? + + + + + Continue with installation? + + + + + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Set up now + + + + + &Install now + + + + + Go &back + + + + + &Set up + + + + + &Install + + + + + Setup is complete. Close the setup program. + + + + + The installation is complete. Close the installer. + + + + + Cancel setup without changing the system. + + + + + Cancel installation without changing the system. + + + + + &Next + + + + + &Back + + + + + &Done + + + + + &Cancel + + + + + Cancel setup? + + + + + Cancel installation? + + + + + Do you really want to cancel the current setup process? +The setup program will quit and all changes will be lost. + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + + + + + &Next + + + + + &Cancel + + + + + %1 Setup Program + + + + + %1 Installer + + + + + CheckerContainer + + + Gathering system information... + + + + + ChoicePage + + + Form + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. + + + + + Boot loader location: + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + No Swap + + + + + Reuse Swap + + + + + Swap (no Hibernate) + + + + + Swap (with Hibernate) + + + + + Swap to file + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + Config + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + Network Installation. (Disabled: Incorrect configuration) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + Network Installation. (Disabled: internal error) + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + <h1>Welcome to the Calamares setup program for %1</h1> + + + + + <h1>Welcome to %1 setup</h1> + + + + + <h1>Welcome to the Calamares installer for %1</h1> + + + + + <h1>Welcome to the %1 installer</h1> + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + Si&ze: + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + &Mount Point: + + + + + Flags: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + + + + + CreateVolumeGroupJob + + + Create new volume group named %1. + + + + + Create new volume group named <strong>%1</strong>. + + + + + Creating new volume group named %1. + + + + + The installer failed to create a volume group named '%1'. + + + + + DeactivateVolumeGroupJob + + + + Deactivate volume group named %1. + + + + + Deactivate volume group named <strong>%1</strong>. + + + + + The installer failed to deactivate a volume group named %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + DeviceModel + + + %1 - %2 (%3) + device[name] - size[number] (device-node[name]) + + + + + %1 - (%2) + device[name] - (device-node[name]) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Setup Complete + + + + + Installation Complete + + + + + The setup of %1 is complete. + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MiB) on %4. + + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + GeneralRequirements + + + has at least %1 GiB available drive space + + + + + There is not enough drive space. At least %1 GiB is required. + + + + + has at least %1 GiB working memory + + + + + The system does not have enough working memory. At least %1 GiB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + is running the installer as an administrator (root) + + + + + The setup program is not running with administrator rights. + + + + + The installer is not running with administrator rights. + + + + + has a screen large enough to show the whole installer + + + + + The screen is too small to display the setup program. + + + + + The screen is too small to display the installer. + + + + + HostInfoJob + + + Collecting information about your machine. + + + + + IDJob + + + + + + OEM Batch Identifier + + + + + Could not create directories <code>%1</code>. + + + + + Could not open file <code>%1</code>. + + + + + Could not write to file <code>%1</code>. + + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardQmlViewStep + + + Keyboard + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + <h1>License Agreement</h1> + + + + + I accept the terms and conditions above. + + + + + Please review the End User License Agreements (EULAs). + + + + + This setup procedure will install proprietary software that is subject to licensing terms. + + + + + If you do not agree with the terms, the setup procedure cannot continue. + + + + + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + LicenseViewStep + + + License + + + + + LicenseWidget + + + URL: %1 + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + File: %1 + + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + LocaleQmlViewStep + + + Location + + + + + LocaleViewStep + + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + + + + + + + Encrypted rootfs setup error + + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could not configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + + + Map + + + 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. + + + + + NetInstallViewStep + + + + Package selection + + + + + Office software + + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + + + + + Services + + + + + Login + + + + + Desktop + + + + + Applications + + + + + Communication + + + + + Development + + + + + Office + + + + + Multimedia + + + + + Internet + + + + + Theming + + + + + Gaming + + + + + Utilities + + + + + NotesQmlViewStep + + + Notes + + + + + OEMPage + + + Ba&tch: + + + + + <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> + + + + + <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> + + + + + OEMViewStep + + + OEM Configuration + + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + Offline + + + Timezone: %1 + + + + + To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Password is empty + + + + + PackageChooserPage + + + Form + + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + + + + PackageModel + + + Name + + + + + Description + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + Your Full Name + + + + + What name do you want to use to log in? + + + + + login + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Computer Name + + + + + Choose a password to keep your account safe. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + + Password + + + + + + Repeat Password + + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + + + Require strong passwords. + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + size[number] filesystem[name] + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + Cre&ate + + + + + &Edit + + + + + &Delete + + + + + New Volume Group + + + + + Resize Volume Group + + + + + Deactivate Volume Group + + + + + Remove Volume Group + + + + + I&nstall boot loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + EFI system partition flag not set + + + + + Option to use GPT on BIOS + + + + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + has at least one disk device available. + + + + + There are no partitions to install on. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + %1 (%2) + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Default Keyboard Model + + + + + + Default + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + No product + + + + + No description provided. + + + + + (no mount point) + + + + + Unpartitioned space or unknown partition table + + + + + Recommended + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + RemoveUserJob + + + Remove live user from target system + + + + + RemoveVolumeGroupJob + + + + Remove Volume Group named %1. + + + + + Remove Volume Group named <strong>%1</strong>. + + + + + The installer failed to remove a volume group named '%1'. + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + Requirements + + + <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> + + + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + ResizeFSJob + + + Resize Filesystem Job + + + + + Invalid configuration + + + + + The file-system resize job has an invalid configuration and will not run. + + + + + KPMCore not Available + + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + + + + + The filesystem %1 could not be found in this system, and cannot be resized. + + + + + The device %1 could not be found in this system, and cannot be resized. + + + + + + The filesystem %1 cannot be resized. + + + + + + The device %1 cannot be resized. + + + + + The filesystem %1 must be resized, but cannot. + + + + + The device %1 must be resized, but cannot + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. + + + + + Resizing %2MiB partition %1 to %3MiB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ResizeVolumeGroupDialog + + + Resize Volume Group + + + + + ResizeVolumeGroupJob + + + + Resize volume group named %1 from %2 to %3. + + + + + Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. + + + + + The installer failed to resize a volume group named '%1'. + + + + + ResultsListDialog + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ResultsListWidget + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MiB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MiB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the setup procedure. + + + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingKUserFeedbackJob + + + KDE user feedback + + + + + Configuring KDE user feedback. + + + + + + Error in KDE user feedback configuration. + + + + + Could not configure KDE user feedback correctly, script error %1. + + + + + Could not configure KDE user feedback correctly, Calamares error %1. + + + + + TrackingMachineUpdateManagerJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. + + + + + By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. + + + + + By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> + + + + + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> + + + + + Your username is too long. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + VariantModel + + + Key + + + + + Value + + + + + VolumeGroupBaseDialog + + + Create Volume Group + + + + + List of Physical Volumes + + + + + Volume Group Name: + + + + + Volume Group Type: + + + + + Physical Extent Size: + + + + + MiB + + + + + Total Size: + + + + + Used Size: + + + + + Total Sectors: + + + + + Quantity of LVs: + + + + + WelcomePage + + + Form + + + + + + Select application and system language + + + + + &About + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + &Support + + + + + Open issues and bug-tracking website + + + + + &Known issues + + + + + Open release notes website + + + + + &Release notes + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + %1 support + + + + + About %1 setup + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + WelcomeQmlViewStep + + + Welcome + + + + + WelcomeViewStep + + + Welcome + + + + + about + + + <h1>%1</h1><br/> + <strong>%2<br/> + for %3</strong><br/><br/> + Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Thanks to <a href='https://calamares.io/team/'>the Calamares team</a> + and the <a href='https://www.transifex.com/calamares/calamares/'>Calamares + translators team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + development is sponsored by <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. + + + + + Back + + + + + i18n + + + <h1>Languages</h1> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + + + + + <h1>Locales</h1> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + + + + + Back + + + + + keyboardq + + + Keyboard Model + + + + + Pick your preferred keyboard model or use the default one based on the detected hardware + + + + + Refresh + + + + + + Layouts + + + + + + Keyboard Layout + + + + + Models + + + + + Variants + + + + + Test your keyboard + + + + + localeq + + + System language set to %1 + + + + + Numbers and dates locale set to %1 + + + + + Change + + + + + notesqml + + + <h3>%1</h3> + <p>These are example release notes.</p> + + + + + release_notes + + + <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> + + <p><b>This is bold text</b></p> + <p><i>This is italic text</i></p> + <p><u>This is underlined text</u></p> + <p><center>This text will be center-aligned.</center></p> + <p><s>This is strikethrough</s></p> + + <p>Code example: + <code>ls -l /home</code></p> + + <p><b>Lists:</b></p> + <ul> + <li>Intel CPU systems</li> + <li>AMD CPU systems</li> + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> + + + + + Back + + + + + welcomeq + + + <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> + + + + + About + + + + + Support + + + + + Known issues + + + + + Release notes + + + + + Donate + + + + diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 3a36cc2a8..136eb7532 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -776,22 +776,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>Welcome to the Calamares setup program for %1</h1> - + Benvenuto nel programma di installazione Calamares di %1 <h1>Welcome to %1 setup</h1> - + Benvenuto nell'installazione di %1 <h1>Welcome to the Calamares installer for %1</h1> - + Benvenuto nel programma di installazione Calamares di %1 <h1>Welcome to the %1 installer</h1> - + Benvenuto nel programma di installazione di %1 @@ -1780,7 +1780,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse 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. - + Seleziona la tua posizione sulla mappa in modo che il programma di installazione possa suggerirti la localizzazione e le impostazioni del fuso orario. Puoi modificare le impostazioni suggerite nella parte in basso. Trascina la mappa per spostarti e usa i pulsanti +/- oppure la rotella del mouse per ingrandire o rimpicciolire.
@@ -1926,12 +1926,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Timezone: %1 - + Fuso orario: %1 To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + Per selezionare un fuso orario, assicurati di essere collegato ad Internet. Riavvia il programma di installazione dopo esserti collegato. Puoi modificare le impostazioni relative alla lingua e alla posizione nella parte in basso. @@ -2836,7 +2836,7 @@ Output: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + Questo computer non soddisfa alcuni requisiti raccomandati per poter installare %1. L'installazione può continuare, ma alcune funzionalità potrebbero essere disabilitate. @@ -2947,13 +2947,13 @@ Output: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + Questo computer non soddisfa i requisiti minimi per poter installare %1. L'installazione non può continuare. <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + Questo computer non soddisfa alcuni requisiti raccomandati per poter installare %1. L'installazione può continuare, ma alcune funzionalità potrebbero essere disabilitate. @@ -3419,12 +3419,12 @@ Output: KDE user feedback - + Riscontro dell'utente di KDE Configuring KDE user feedback. - + Sto configurando il riscontro dell'utente di KDE @@ -3865,7 +3865,7 @@ Output: System language set to %1 - + Lingua di sistema impostata su %1 diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index 07ac3dfcd..2af094205 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -245,7 +245,7 @@ (%n second(s)) (%n seconde) - (%n seconden) + (%n seconde(n)) @@ -528,7 +528,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Handmatige partitionering</strong><br/>Je kunt zelf de partities creëren of wijzigen. Het hebben van een GPT partititie tabel and <strong>een FAT-32 512 MB /boot partitie is belangrijk voor UEFI installaties</strong>. Gebruik een bestaande zonder formatteren of maak een nieuwe aan. @@ -1426,7 +1426,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. The screen is too small to display the installer. - Het schem is te klein on het installatieprogramma te vertonen. + Het scherm is te klein on het installatieprogramma te laten zien. @@ -1655,12 +1655,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Hide license text - + Verberg licentietekst Show the license text - + Toon licentietekst @@ -2268,7 +2268,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Your Full Name - Volledige Naam + Volledige naam @@ -2278,7 +2278,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. login - + Gebruikersnaam @@ -2310,13 +2310,13 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Password - + Wachtwoord Repeat Password - + Herhaal wachtwoord diff --git a/lang/calamares_tg.ts b/lang/calamares_tg.ts new file mode 100644 index 000000000..24713cdb1 --- /dev/null +++ b/lang/calamares_tg.ts @@ -0,0 +1,3947 @@ + + + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + <strong>Муҳити роҳандозӣ</strong> барои низоми ҷорӣ.<br><br>Низомҳои x86 куҳна танҳо <strong>BIOS</strong>-ро дастгирӣ менамоянд.<br>Низомҳои муосир одатан <strong>EFI</strong>-ро истифода мебаранд, аммо инчунин метавонанд ҳамчун BIOS намоиш дода шаванд, агар дар реҷаи мувофиқсозӣ оғоз шавад. + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + Низоми ҷорӣ бо муҳити роҳандозии <strong>EFI</strong> оғоз ёфт.<br><br>Барои танзими оғози кор аз муҳити EFI насбкунандаи ҷорӣ бояд барномаи боркунандаи роҳандозиро монанди <strong>GRUB</strong> ё <strong>systemd-boot</strong> дар <strong>Қисми диски низомии EFI</strong> ба кор дарорад. Ин амал бояд ба таври худкор иҷро шавад, агар шумо барои қисмбандии диск тарзи дастиро интихоб накунед. Дар ин маврид шумо бояд онро мустақилона интихоб ё эҷод кунед. + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + Низоми ҷорӣ бо муҳити роҳандозии <strong>BIOS</strong> оғоз ёфт.<br><br>Барои танзими оғози кор аз муҳити BIOS насбкунандаи ҷорӣ бояд боркунандаи роҳандозиро монанди <strong>GRUB</strong> дар аввали қисми диск ё дар <strong>Сабти роҳандозии асосӣ</strong> назди аввали ҷадвали қисми диск (тарзи пазируфта) насб намояд. Ин амал бояд ба таври худкор иҷро шавад, агар шумо барои қисмбандии диск тарзи дастиро интихоб накунед. Дар ин маврид шумо бояд онро мустақилона интихоб ё эҷод кунед. + + + + BootLoaderModel + + + Master Boot Record of %1 + Сабти роҳандозии асосӣ барои %1 + + + + Boot Partition + Қисми диски роҳандозӣ + + + + System Partition + Қисми диски низомӣ + + + + Do not install a boot loader + Боркунандаи роҳандозӣ насб карда нашавад + + + + %1 (%2) + %1 (%2) + + + + Calamares::BlankViewStep + + + Blank Page + Саҳифаи холӣ + + + + Calamares::DebugWindow + + + Form + Шакл + + + + GlobalStorage + Захирагоҳи умумӣ + + + + JobQueue + Навбати вазифа + + + + Modules + Модулҳо + + + + Type: + Навъ: + + + + + none + ҳеҷ чиз + + + + Interface: + Интерфейс: + + + + Tools + Абзорҳо + + + + Reload Stylesheet + Аз нав бор кардани варақаи услубҳо + + + + Widget Tree + Дарахти виҷетҳо + + + + Debug information + Иттилооти ислоҳи нуқсонҳо + + + + Calamares::ExecutionViewStep + + + Set up + Танзимкунӣ + + + + Install + Насбкунӣ + + + + Calamares::FailJob + + + Job failed (%1) + Вазифа иҷро нашуд (%1) + + + + Programmed job failure was explicitly requested. + Қатъшавии вазифаи барномавӣ ботафсил дархост карда шуд. + + + + Calamares::JobThread + + + Done + Тайёр + + + + Calamares::NamedJob + + + Example job (%1) + Вазифаи намунавӣ (%1) + + + + Calamares::ProcessJob + + + Run command '%1' in target system. + Иҷро кардани фармони '%1' дар низоми интихобшуда. + + + + Run command '%1'. + Иҷро кардани фармони '%1'. + + + + Running command %1 %2 + Иҷрокунии фармони %1 %2 + + + + Calamares::PythonJob + + + Running %1 operation. + Иҷрокунии амалиёти %1. + + + + Bad working directory path + Масири феҳристи корӣ нодуруст аст + + + + Working directory %1 for python job %2 is not readable. + Феҳристи кории %1 барои вазифаи "python"-и %2 хонда намешавад. + + + + Bad main script file + Файли нақши асосӣ нодуруст аст + + + + Main script file %1 for python job %2 is not readable. + Файли нақши асосии %1 барои вазифаи "python"-и %2 хонда намешавад. + + + + Boost.Python error in job "%1". + Хатои "Boost.Python" дар вазифаи "%1". + + + + Calamares::QmlViewStep + + + Loading ... + Бор шуда истодааст... + + + + QML Step <i>%1</i>. + Қадами QML <i>%1</i>. + + + + Loading failed. + Боршавӣ қатъ шуд. + + + + Calamares::RequirementsChecker + + + Requirements checking for module <i>%1</i> is complete. + Санҷиши талабот барои модули <i>%1</i> ба анҷом расид. + + + + Waiting for %n module(s). + + Дар ҳоли интизори %n модул. + Дар ҳоли интизори %n модул. + + + + + (%n second(s)) + + (%n сония) + (%n сония) + + + + + System-requirements checking is complete. + Санҷиши талаботи низомӣ ба анҷом расид. + + + + Calamares::ViewManager + + + Setup Failed + Танзимкунӣ иҷро нашуд + + + + Installation Failed + Насбкунӣ иҷро нашуд + + + + Would you like to paste the install log to the web? + Шумо мехоҳед, ки сабти рӯйдодҳои насбро ба шабака нусха бардоред? + + + + Error + Хато + + + + + &Yes + &Ҳа + + + + + &No + &Не + + + + &Close + &Пӯшидан + + + + Install Log Paste URL + Гузоштани нишонии URL-и сабти рӯйдодҳои насб + + + + The upload was unsuccessful. No web-paste was done. + Боркунӣ иҷро нашуд. Гузариш ба шабака иҷро нашуд. + + + + Calamares Initialization Failed + Омодашавии Calamares қатъ шуд + + + + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. + %1 насб карда намешавад. Calamares ҳамаи модулҳои танзимкардашударо бор карда натавонист. Ин мушкилие мебошад, ки бо ҳамин роҳ Calamares дар дистрибутиви ҷори кор мекунад. + + + + <br/>The following modules could not be loaded: + <br/>Модулҳои зерин бор карда намешаванд: + + + + Continue with setup? + Танзимкуниро идома медиҳед? + + + + Continue with installation? + Насбкуниро идома медиҳед? + + + + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> + Барномаи танзимкунии %1 барои танзим кардани %2 ба диски компютери шумо тағйиротро ворид мекунад.<br/><strong>Шумо ин тағйиротро ботил карда наметавонед.</strong> + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + Насбкунандаи %1 барои насб кардани %2 ба диски компютери шумо тағйиротро ворид мекунад.<br/><strong>Шумо ин тағйиротро ботил карда наметавонед.</strong> + + + + &Set up now + &Ҳозир танзим карда шавад + + + + &Install now + &Ҳозир насб карда шавад + + + + Go &back + &Бозгашт + + + + &Set up + &Танзим кардан + + + + &Install + &Насб кардан + + + + Setup is complete. Close the setup program. + Танзим ба анҷом расид. Барномаи танзимкуниро пӯшед. + + + + The installation is complete. Close the installer. + Насб ба анҷом расид. Барномаи насбкуниро пӯшед. + + + + Cancel setup without changing the system. + Бекор кардани танзимкунӣ бе тағйирдиҳии низом + + + + Cancel installation without changing the system. + Бекор кардани насбкунӣ бе тағйирдиҳии низом + + + + &Next + &Навбатӣ + + + + &Back + &Ба қафо + + + + &Done + &Тайёр + + + + &Cancel + &Бекор кардан + + + + Cancel setup? + Танзимкуниро бекор мекунед? + + + + Cancel installation? + Насбкуниро бекор мекунед? + + + + Do you really want to cancel the current setup process? +The setup program will quit and all changes will be lost. + Шумо дар ҳақиқат мехоҳед, ки раванди танзимкунии ҷориро бекор намоед? +Барномаи танзимкунӣ хомӯш карда мешавад ва ҳамаи тағйирот гум карда мешаванд. + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + Шумо дар ҳақиқат мехоҳед, ки раванди насбкунии ҷориро бекор намоед? +Насбкунанда хомӯш карда мешавад ва ҳамаи тағйирот гум карда мешаванд. + + + + CalamaresPython::Helper + + + Unknown exception type + Навъи истисноии номаълум + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + &Ба қафо + + + + &Next + &Навбатӣ + + + + &Cancel + &Бекор кардан + + + + %1 Setup Program + Барномаи танзимкунии %1 + + + + %1 Installer + Насбкунандаи %1 + + + + CheckerContainer + + + Gathering system information... + Ҷамъкунии иттилооти низомӣ... + + + + ChoicePage + + + Form + Шакл + + + + Select storage de&vice: + Интихоби дастгоҳи &захирагоҳ: + + + + + + + Current: + Ҷорӣ: + + + + After: + Баъд аз: + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + + + + + Reuse %1 as home partition for %2. + Дубора истифода бурдани %1 ҳамчун диски асосӣ барои %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. + + + + + Boot loader location: + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + Қисми диски низомии: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + No Swap + + + + + Reuse Swap + + + + + Swap (no Hibernate) + + + + + Swap (with Hibernate) + + + + + Swap to file + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + Config + + + Set keyboard model to %1.<br/> + Намунаи клавиатура ба %1 танзим карда мешавад.<br/> + + + + Set keyboard layout to %1/%2. + Тарҳбандии клавиатура ба %1 %1/%2 танзим карда мешавад. + + + + The system language will be set to %1. + Забони низом ба %1 танзим карда мешавад. + + + + The numbers and dates locale will be set to %1. + Низоми рақамҳо ва санаҳо ба %1 танзим карда мешавад. + + + + Set timezone to %1/%2.<br/> + Танзими минтақаи вақт ба %1/%2.<br/> + + + + Network Installation. (Disabled: Incorrect configuration) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + Network Installation. (Disabled: internal error) + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + Ин барнома аз Шумо якчанд савол мепурсад ва %2-ро дар компютери шумо танзим мекунад. + + + + <h1>Welcome to the Calamares setup program for %1</h1> + <h1>Хуш омадед ба барномаи танзимкунии Calamares барои %1</h1> + + + + <h1>Welcome to %1 setup</h1> + <h1>Хуш омадед ба танзимкунии %1</h1> + + + + <h1>Welcome to the Calamares installer for %1</h1> + <h1>Хуш омадед ба насбкунандаи Calamares барои %1</h1> + + + + <h1>Welcome to the %1 installer</h1> + <h1>Хуш омадед ба насбкунандаи %1</h1> + + + + ContextualProcessJob + + + Contextual Processes Job + Вазифаи равандҳои мазмунӣ + + + + CreatePartitionDialog + + + Create a Partition + Эҷод кардани қисми диск + + + + Si&ze: + &Андоза: + + + + MiB + МБ + + + + Partition &Type: + &Навъи қисми диск: + + + + &Primary + &Асосӣ + + + + E&xtended + &Афзуда + + + + Fi&le System: + &Низоми файлӣ: + + + + LVM LV name + Номи LVM LV + + + + &Mount Point: + &Нуқтаи васл: + + + + Flags: + Нишонҳо: + + + + En&crypt + &Рамзгузорӣ кардан + + + + Logical + Мантиқӣ + + + + Primary + Асосӣ + + + + GPT + GPT + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + Эҷод кардани корбари %1 + + + + Create user <strong>%1</strong>. + Эҷод кардани корбари <strong>%1</strong>. + + + + Creating user %1. + Эҷодкунии корбари %1. + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + Эҷод кардани гурӯҳи ҳаҷм + + + + CreateVolumeGroupJob + + + Create new volume group named %1. + Эҷод кардани гурӯҳи ҳаҷми нав бо номи %1. + + + + Create new volume group named <strong>%1</strong>. + Эҷод кардани гурӯҳи ҳаҷми нав бо номи <strong>%1</strong>. + + + + Creating new volume group named %1. + Эҷодкунии гурӯҳи ҳаҷм бо номи %1. + + + + The installer failed to create a volume group named '%1'. + Насбкунанда гурӯҳи ҳаҷмро бо номи '%1' эҷод карда натавонист. + + + + DeactivateVolumeGroupJob + + + + Deactivate volume group named %1. + Ғайрифаъол кардани гурӯҳи ҳаҷм бо номи %1. + + + + Deactivate volume group named <strong>%1</strong>. + Ғайрифаъол кардани гурӯҳи ҳаҷм бо номи <strong>%1</strong>. + + + + The installer failed to deactivate a volume group named %1. + Насбкунанда гурӯҳи ҳаҷмро бо номи %1 ғайрифаъол карда натавонист. + + + + DeletePartitionJob + + + Delete partition %1. + Нест кардани қисми диски %1. + + + + Delete partition <strong>%1</strong>. + Нест кардани қисми диски <strong>%1</strong>. + + + + Deleting partition %1. + Несткунии қисми диски %1. + + + + The installer failed to delete partition %1. + Насбкунанда қисми диски %1-ро нест карда натавонист. + + + + DeviceInfoWidget + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + DeviceModel + + + %1 - %2 (%3) + device[name] - size[number] (device-node[name]) + %1 - %2 (%3) + + + + %1 - (%2) + device[name] - (device-node[name]) + %1 - (%2) + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + %1 кушода нашуд + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + Муҳтаво: + + + + &Keep + &Нигоҳ доштан + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + &Нуқтаи васл: + + + + Si&ze: + &Андоза: + + + + MiB + МБ + + + + Fi&le System: + &Низоми файлӣ: + + + + Flags: + Нишонҳо: + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + Шакл + + + + En&crypt system + &Рамзгузории низом + + + + Passphrase + Гузарвожа + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + Шакл + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + Анҷом + + + + Setup Complete + + + + + Installation Complete + + + + + The setup of %1 is complete. + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MiB) on %4. + + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + GeneralRequirements + + + has at least %1 GiB available drive space + + + + + There is not enough drive space. At least %1 GiB is required. + + + + + has at least %1 GiB working memory + + + + + The system does not have enough working memory. At least %1 GiB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + is running the installer as an administrator (root) + + + + + The setup program is not running with administrator rights. + + + + + The installer is not running with administrator rights. + + + + + has a screen large enough to show the whole installer + + + + + The screen is too small to display the setup program. + + + + + The screen is too small to display the installer. + + + + + HostInfoJob + + + Collecting information about your machine. + + + + + IDJob + + + + + + OEM Batch Identifier + + + + + Could not create directories <code>%1</code>. + + + + + Could not open file <code>%1</code>. + + + + + Could not write to file <code>%1</code>. + + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + Нақш + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + Намунаи клавиатура ба %1 танзим карда мешавад.<br/> + + + + Set keyboard layout to %1/%2. + Тарҳбандии клавиатура ба %1 %1/%2 танзим карда мешавад. + + + + KeyboardQmlViewStep + + + Keyboard + Клавиатура + + + + KeyboardViewStep + + + Keyboard + Клавиатура + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + &Бекор кардан + + + + &OK + &ХУБ + + + + LicensePage + + + Form + Шакл + + + + <h1>License Agreement</h1> + <h1>Созишномаи иҷозатномавӣ</h1> + + + + I accept the terms and conditions above. + Ман шарту шароитҳои дар боло зикршударо қабул мекунам. + + + + Please review the End User License Agreements (EULAs). + + + + + This setup procedure will install proprietary software that is subject to licensing terms. + + + + + If you do not agree with the terms, the setup procedure cannot continue. + + + + + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + LicenseViewStep + + + License + + + + + LicenseWidget + + + URL: %1 + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + File: %1 + Файл: %1 + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + Минтақа: + + + + Zone: + Шаҳр: + + + + + &Change... + &Тағйир додан... + + + + The system language will be set to %1. + Забони низом ба %1 танзим карда мешавад. + + + + The numbers and dates locale will be set to %1. + Низоми рақамҳо ва санаҳо ба %1 танзим карда мешавад. + + + + Set timezone to %1/%2.<br/> + Танзим кардани минтақаи вақт ба %1/%2.<br/> + + + + LocaleQmlViewStep + + + Location + Ҷойгиршавӣ + + + + LocaleViewStep + + + Location + Ҷойгиршавӣ + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + + + + + + + Encrypted rootfs setup error + Хатои танзими рамзгузории "rootfs" + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could not configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + Хатои танзимкунӣ + + + + No root mount point is set for MachineId. + + + + + Map + + + 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. + + + + + NetInstallViewStep + + + + Package selection + + + + + Office software + Нармафзори идорӣ + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + + + + + Services + Хидматҳо + + + + Login + Воридшавӣ + + + + Desktop + Мизи корӣ + + + + Applications + Барномаҳо + + + + Communication + Воситаҳои алоқа + + + + Development + Барномарезӣ + + + + Office + Идора + + + + Multimedia + Мултимедиа + + + + Internet + Интернет + + + + Theming + Мавзӯъҳо + + + + Gaming + Бозиҳо + + + + Utilities + Барномаҳои муфид + + + + NotesQmlViewStep + + + Notes + Ёддоштҳо + + + + OEMPage + + + Ba&tch: + + + + + <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> + + + + + <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> + + + + + OEMViewStep + + + OEM Configuration + + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + Offline + + + Timezone: %1 + Минтақаи вақт: %1 + + + + To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. + + + + + PWQ + + + Password is too short + Ниҳонвожа хеле кӯтоҳ аст + + + + Password is too long + Ниҳонвожа хеле дароз аст + + + + Password is too weak + Ниҳонвожа хеле заиф аст + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + Ниҳонвожа хеле кӯтоҳ аст + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + Танзими номаълум - %1 + + + + Unknown setting + Танзими номаълум + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + Хатои номаълум + + + + Password is empty + Ниҳонвожаро ворид накардед + + + + PackageChooserPage + + + Form + Шакл + + + + Product Name + Номи маҳсул + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + Интихоби бастаҳо + + + + Please pick a product from the list. The selected product will be installed. + Лутфан, маҳсулеро аз рӯйхат интихоб намоед. Маҳсули интихобшуда насб карда мешавад. + + + + PackageChooserViewStep + + + Packages + Бастаҳо + + + + PackageModel + + + Name + Ном + + + + Description + Тавсиф + + + + Page_Keyboard + + + Form + Шакл + + + + Keyboard Model: + Намунаи клавиатура: + + + + Type here to test your keyboard + Барои санҷидани клавиатура матнро дар ин сатр ворид намоед + + + + Page_UserSetup + + + Form + Шакл + + + + What is your name? + Номи шумо чист? + + + + Your Full Name + Номи пурраи шумо + + + + What name do you want to use to log in? + Кадом номро барои ворид шудан ба низом истифода мебаред? + + + + login + воридшавӣ + + + + What is the name of this computer? + Номи ин компютер чист? + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Computer Name + Номи компютер + + + + Choose a password to keep your account safe. + Барои эмин нигоҳ доштани ҳисоби худ ниҳонвожаеро интихоб намоед. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + + Password + Ниҳонвожа + + + + + Repeat Password + Ниҳонвожаро такроран ворид намоед + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + + + Require strong passwords. + Ниҳонвожаҳои қавӣ лозиманд. + + + + Log in automatically without asking for the password. + Ба таври худкор бе дархости ниҳонвожа ворид карда шавад. + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + Реша + + + + Home + Асосӣ + + + + Boot + Роҳандозӣ + + + + EFI system + Низоми EFI + + + + Swap + Мубодила + + + + New partition for %1 + Қисми диски нав барои %1 + + + + New partition + Қисми диски нав + + + + %1 %2 + size[number] filesystem[name] + %1 %2 + + + + PartitionModel + + + + Free Space + Фазои озод + + + + + New partition + Қисми диски нав + + + + Name + Ном + + + + File System + Низоми файлӣ + + + + Mount Point + Нуқтаи васл + + + + Size + Андоза + + + + PartitionPage + + + Form + Шакл + + + + Storage de&vice: + &Дастгоҳи захирагоҳ: + + + + &Revert All Changes + &Бозгардонидани ҳамаи тағйирот + + + + New Partition &Table + &Ҷадвали қисми диски нав + + + + Cre&ate + &Эҷод кардан + + + + &Edit + &Таҳрир кардан + + + + &Delete + &Нест кардан + + + + New Volume Group + Эҷод кардани гурӯҳи ҳаҷми нав + + + + Resize Volume Group + Иваз кардани андозаи гурӯҳи ҳаҷм + + + + Deactivate Volume Group + Ғайрифаъол кардани гурӯҳи ҳаҷм + + + + Remove Volume Group + Тоза кардани гурӯҳи ҳаҷм + + + + I&nstall boot loader on: + &Насб кардани боркунандаи роҳандозӣ дар: + + + + Are you sure you want to create a new partition table on %1? + Шумо мутмаин ҳастед, ки мехоҳед ҷадвали қисми диски навро дар %1 эҷод намоед? + + + + Can not create new partition + Қисми диски нав эҷод карда намешавад + + + + The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. + + + + + PartitionViewStep + + + Gathering system information... + Ҷамъкунии иттилооти низомӣ... + + + + Partitions + Қисмҳои диск + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + <strong>Пок кардани</strong> диск ва насб кардани %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>Иваз кардани</strong> қисми диск бо %1. + + + + <strong>Manual</strong> partitioning. + <strong>Ба таври дастӣ</strong> эҷод кардани қисмҳои диск. + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + Диски <strong>%1</strong> (%2) + + + + Current: + Ҷорӣ: + + + + After: + Баъд аз: + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + EFI system partition flag not set + + + + + Option to use GPT on BIOS + + + + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + + + + + Boot partition not encrypted + Қисми диски роҳандозӣ рамзгузорӣ нашудааст + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + has at least one disk device available. + + + + + There are no partitions to install on. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + Шакл + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + Намуди зоҳирӣ + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + %1 (%2) + %1 (%2) + + + + unknown + номаълум + + + + extended + афзуда + + + + unformatted + + + + + swap + мубодила + + + + Default Keyboard Model + Намунаи клавиатураи муқаррар + + + + + Default + Муқаррар + + + + + + + File not found + Файл ёфт нашуд + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + No product + + + + + No description provided. + + + + + (no mount point) + + + + + Unpartitioned space or unknown partition table + + + + + Recommended + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + RemoveUserJob + + + Remove live user from target system + + + + + RemoveVolumeGroupJob + + + + Remove Volume Group named %1. + Тоза кардани гурӯҳи ҳаҷм бо номи %1. + + + + Remove Volume Group named <strong>%1</strong>. + Тоза кардани гурӯҳи ҳаҷм бо номи <strong>%1</strong>. + + + + The installer failed to remove a volume group named '%1'. + Насбкунанда гурӯҳи ҳаҷмро бо номи '%1' тоза карда натавонист. + + + + ReplaceWidget + + + Form + Шакл + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + %1 дар ин қисми диск насб карда намешавад. + + + + Data partition (%1) + Қисми диски иттилоотӣ (%1) + + + + Unknown system partition (%1) + Қисми диски низомии номаълум (%1) + + + + %1 system partition (%2) + Қисми диски низомии %1 (%2) + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + Қисми диски низомии: + + + + Requirements + + + <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> + + + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + ResizeFSJob + + + Resize Filesystem Job + + + + + Invalid configuration + + + + + The file-system resize job has an invalid configuration and will not run. + + + + + KPMCore not Available + + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + Андоза иваз карда нашуд + + + + The filesystem %1 could not be found in this system, and cannot be resized. + + + + + The device %1 could not be found in this system, and cannot be resized. + + + + + + The filesystem %1 cannot be resized. + + + + + + The device %1 cannot be resized. + + + + + The filesystem %1 must be resized, but cannot. + + + + + The device %1 must be resized, but cannot + + + + + ResizePartitionJob + + + Resize partition %1. + Иваз кардани андозаи қисми диски %1. + + + + Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. + + + + + Resizing %2MiB partition %1 to %3MiB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ResizeVolumeGroupDialog + + + Resize Volume Group + Иваз кардани андозаи гурӯҳи ҳаҷм + + + + ResizeVolumeGroupJob + + + + Resize volume group named %1 from %2 to %3. + Иваз кардани андозаи гурӯҳи ҳаҷм бо номи %1 аз %2 ба %3. + + + + Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. + Иваз кардани андозаи гурӯҳи ҳаҷм бо номи <strong>%1</strong> аз <strong>%2</strong> ба <strong>%3</strong>. + + + + The installer failed to resize a volume group named '%1'. + Насбкунанда андозаи гурӯҳи ҳаҷмро бо номи '%1' иваз карда натавонист. + + + + ResultsListDialog + + + For best results, please ensure that this computer: + + + + + System requirements + Талаботи низом + + + + ResultsListWidget + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + Ин барнома аз Шумо якчанд савол мепурсад ва %2-ро дар компютери шумо танзим мекунад. + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + Хатои дохилӣ + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + Танзимкунии намунаи клавиатура ба %1, тарҳбандӣ ба %2-%3 + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MiB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MiB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + Танзими ниҳонвожа барои корбари %1 + + + + Setting password for user %1. + Танзимкунии ниҳонвожа барои корбари %1. + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + Ниҳонвожа барои корбари %1 танзим карда намешавад. + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the setup procedure. + + + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + Ҷамъбаст + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingKUserFeedbackJob + + + KDE user feedback + Изҳори назари корбари KDE + + + + Configuring KDE user feedback. + Танзимкунии изҳори назари корбари KDE. + + + + + Error in KDE user feedback configuration. + + + + + Could not configure KDE user feedback correctly, script error %1. + + + + + Could not configure KDE user feedback correctly, Calamares error %1. + + + + + TrackingMachineUpdateManagerJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + Шакл + + + + Placeholder + + + + + <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. + + + + + By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. + + + + + By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + Изҳори назар + + + + UsersPage + + + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> + + + + + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> + + + + + Your username is too long. + Номи корбари шумо хеле дароз аст. + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + Корбарон + + + + VariantModel + + + Key + Тугма + + + + Value + Қимат + + + + VolumeGroupBaseDialog + + + Create Volume Group + Эҷод кардани гурӯҳи ҳаҷм + + + + List of Physical Volumes + + + + + Volume Group Name: + Номи гурӯҳи ҳаҷм: + + + + Volume Group Type: + Навъи гурӯҳи ҳаҷм: + + + + Physical Extent Size: + + + + + MiB + МБ + + + + Total Size: + Андозаи умумӣ: + + + + Used Size: + Андозаи истифодашуда: + + + + Total Sectors: + Бахшҳои умумӣ: + + + + Quantity of LVs: + Шумораи LV-ҳо: + + + + WelcomePage + + + Form + Шакл + + + + + Select application and system language + Интихоби забон барои низом ва барномаҳо + + + + &About + &Дар бораи барнома + + + + Open donations website + Сомонаи саҳмгузориро кушоед + + + + &Donate + &Саҳмгузорӣ + + + + Open help and support website + Сомонаи кумак ва дастгириро кушоед + + + + &Support + &Дастгирӣ + + + + Open issues and bug-tracking website + Сомонаи масъалаҳо ва пайгирии нуқсонҳоро кушоед + + + + &Known issues + &Масъалаҳои маълум + + + + Open release notes website + Сомонаро бо қайдҳои нашр кушоед + + + + &Release notes + &Қайдҳои нашр + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + <h1>Хуш омадед ба барномаи танзимкунии Calamares барои %1.</h1> + + + + <h1>Welcome to %1 setup.</h1> + <h1>Хуш омадед ба танзимкунии %1.</h1> + + + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Хуш омадед ба насбкунандаи Calamares барои %1.</h1> + + + + <h1>Welcome to the %1 installer.</h1> + <h1>Хуш омадед ба насбкунандаи %1.</h1> + + + + %1 support + Дастгирии %1 + + + + About %1 setup + Дар бораи танзими %1 + + + + About %1 installer + Дар бораи насбкунандаи %1 + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + WelcomeQmlViewStep + + + Welcome + Хуш омадед + + + + WelcomeViewStep + + + Welcome + Хуш омадед + + + + about + + + <h1>%1</h1><br/> + <strong>%2<br/> + for %3</strong><br/><br/> + Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Thanks to <a href='https://calamares.io/team/'>the Calamares team</a> + and the <a href='https://www.transifex.com/calamares/calamares/'>Calamares + translators team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + development is sponsored by <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. + + + + + Back + Ба қафо + + + + i18n + + + <h1>Languages</h1> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + <h1>Забонҳо</h1> </br> + Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад. Танзими ҷорӣ: <strong>%1</strong>. + + + + <h1>Locales</h1> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + <h1>Маҳаллигардонӣ</h1> </br> + Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад. Танзими ҷорӣ: <strong>%1</strong>. + + + + Back + Ба қафо + + + + keyboardq + + + Keyboard Model + Намунаи клавиатура + + + + Pick your preferred keyboard model or use the default one based on the detected hardware + + + + + Refresh + Навсозӣ кардан + + + + + Layouts + Тарҳбандиҳо + + + + + Keyboard Layout + Тарҳбандии клавиатура + + + + Models + Намунаҳо + + + + Variants + Имконот + + + + Test your keyboard + Клавиатураи худро санҷед + + + + localeq + + + System language set to %1 + Забони низом ба %1 танзим шуд + + + + Numbers and dates locale set to %1 + Низоми рақамҳо ва санаҳо ба %1 танзим шуд + + + + Change + Тағйир додан + + + + notesqml + + + <h3>%1</h3> + <p>These are example release notes.</p> + <h3>%1</h3> + <p>Матни намунавии қайдҳои нашр.</p> + + + + release_notes + + + <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> + + <p><b>This is bold text</b></p> + <p><i>This is italic text</i></p> + <p><u>This is underlined text</u></p> + <p><center>This text will be center-aligned.</center></p> + <p><s>This is strikethrough</s></p> + + <p>Code example: + <code>ls -l /home</code></p> + + <p><b>Lists:</b></p> + <ul> + <li>Intel CPU systems</li> + <li>AMD CPU systems</li> + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> + + + + + Back + Ба қафо + + + + welcomeq + + + <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> + <h3>Хуш омадед ба насбкунандаи <quote>%2</quote> барои %1</h3> + <p>Ин барнома аз Шумо якчанд савол мепурсад ва %1-ро дар компютери шумо танзим мекунад.</p> + + + + About + Дар бораи барнома + + + + Support + Дастгирӣ + + + + Known issues + Масъалаҳои маълум + + + + Release notes + Қайдҳои нашр + + + + Donate + Саҳмгузорӣ + + + From d5d2d2a1f10bce859e025e2dc520b4b7dea5af72 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sun, 26 Jul 2020 11:02:36 +0200 Subject: [PATCH 072/399] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/calamares.desktop b/calamares.desktop index 78c943ddb..a70f377cf 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -94,6 +94,10 @@ Name[hr]=Instaliraj sustav Icon[hr]=calamares GenericName[hr]=Instalacija sustava Comment[hr]=Calamares — Instalacija sustava +Name[ie]=Installar li sistema +Icon[ie]=calamares +GenericName[ie]=Installator del sistema +Comment[ie]=Calamares — Installator del sistema Name[hu]=Rendszer telepítése Icon[hu]=calamares GenericName[hu]=Rendszertelepítő @@ -184,6 +188,10 @@ Name[sv]=Installera system Icon[sv]=calamares GenericName[sv]=Systeminstallerare Comment[sv]=Calamares — Systeminstallerare +Name[tg]=Насбкунии низом +Icon[tg]=calamares +GenericName[tg]=Насбкунандаи низом +Comment[tg]=Calamares — Насбкунандаи низом Name[th]=ติดตั้งระบบ Name[uk]=Встановити Систему Icon[uk]=calamares From d0cdc8169e6bc5de34039d68e3fdc49e32968673 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sun, 26 Jul 2020 11:02:37 +0200 Subject: [PATCH 073/399] i18n: [python] Automatic merge of Transifex translations --- lang/python/ie/LC_MESSAGES/python.mo | Bin 0 -> 384 bytes lang/python/ie/LC_MESSAGES/python.po | 339 ++++++++++++++++++++++++++ lang/python/tg/LC_MESSAGES/python.mo | Bin 0 -> 661 bytes lang/python/tg/LC_MESSAGES/python.po | 343 +++++++++++++++++++++++++++ 4 files changed, 682 insertions(+) create mode 100644 lang/python/ie/LC_MESSAGES/python.mo create mode 100644 lang/python/ie/LC_MESSAGES/python.po create mode 100644 lang/python/tg/LC_MESSAGES/python.mo create mode 100644 lang/python/tg/LC_MESSAGES/python.po diff --git a/lang/python/ie/LC_MESSAGES/python.mo b/lang/python/ie/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..1f1e0d4d55d5df0ea52fe62ec7f76d4c7780189f GIT binary patch literal 384 zcmYL@!A=4(5QZ^&+M{O=HSqw^(k>cZO7?)bn2jPET)Ed}SZa3LOdh*>u9U*7P1#*mBAv;CL7>9kVJI`L3H6KuTnl9)ZtW!n{k_|^s!^eco zli6!JeFW1G#U>#fvIEn(X&Ow9^e$y!=)%;TD4JQQ-d`zQ*Z}-&_EKPJ_7MMkl=w11J kR6!I3S+%yZqGMxgCx~wTjxO#E$bTERH93z-*ck+^Uy##m^Z)<= literal 0 HcmV?d00001 diff --git a/lang/python/ie/LC_MESSAGES/python.po b/lang/python/ie/LC_MESSAGES/python.po new file mode 100644 index 000000000..115a704d7 --- /dev/null +++ b/lang/python/ie/LC_MESSAGES/python.po @@ -0,0 +1,339 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Language-Team: Interlingue (https://www.transifex.com/calamares/teams/20061/ie/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ie\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/grubcfg/main.py:37 +msgid "Configure GRUB." +msgstr "" + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "" + +#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 +#: src/modules/initcpiocfg/main.py:209 +#: src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:173 +#: src/modules/initramfscfg/main.py:94 src/modules/initramfscfg/main.py:98 +#: src/modules/openrcdmcryptcfg/main.py:78 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:332 +#: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 +#: src/modules/networkcfg/main.py:48 +msgid "Configuration Error" +msgstr "" + +#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 +#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 +#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/fstab/main.py:333 +msgid "No partitions are defined for
{!s}
to use." +msgstr "" + +#: src/modules/services-systemd/main.py:35 +msgid "Configure systemd services" +msgstr "" + +#: src/modules/services-systemd/main.py:68 +#: src/modules/services-openrc/main.py:102 +msgid "Cannot modify service" +msgstr "" + +#: src/modules/services-systemd/main.py:69 +msgid "" +"systemctl {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:72 +#: src/modules/services-systemd/main.py:76 +msgid "Cannot enable systemd service {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:74 +msgid "Cannot enable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:78 +msgid "Cannot disable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:80 +msgid "Cannot mask systemd unit {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:82 +msgid "" +"Unknown systemd commands {command!s} and " +"{suffix!s} for unit {name!s}." +msgstr "" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:302 +msgid "Unpacking image {}/{}, file {}/{}" +msgstr "" + +#: src/modules/unpackfs/main.py:317 +msgid "Starting to unpack {}" +msgstr "" + +#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:415 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:416 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:421 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:422 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 +#: src/modules/unpackfs/main.py:462 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:439 +msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" + +#: src/modules/unpackfs/main.py:443 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:449 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:463 +msgid "The destination \"{}\" in the target system is not a directory" +msgstr "" + +#: src/modules/displaymanager/main.py:523 +msgid "Cannot write KDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:524 +msgid "KDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:585 +msgid "Cannot write LXDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:586 +msgid "LXDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:669 +msgid "Cannot write LightDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:670 +msgid "LightDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:744 +msgid "Cannot configure LightDM" +msgstr "" + +#: src/modules/displaymanager/main.py:745 +msgid "No LightDM greeter installed." +msgstr "" + +#: src/modules/displaymanager/main.py:776 +msgid "Cannot write SLIM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:777 +msgid "SLIM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:903 +msgid "No display managers selected for the displaymanager module." +msgstr "" + +#: src/modules/displaymanager/main.py:904 +msgid "" +"The displaymanagers list is empty or undefined in bothglobalstorage and " +"displaymanager.conf." +msgstr "" + +#: src/modules/displaymanager/main.py:986 +msgid "Display manager configuration was incomplete" +msgstr "" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:210 +#: src/modules/luksopenswaphookcfg/main.py:100 +#: src/modules/initramfscfg/main.py:99 src/modules/openrcdmcryptcfg/main.py:83 +#: src/modules/fstab/main.py:339 src/modules/localecfg/main.py:145 +#: src/modules/networkcfg/main.py:49 +msgid "No root mount point is given for
{!s}
to use." +msgstr "" + +#: src/modules/luksopenswaphookcfg/main.py:35 +msgid "Configuring encrypted swap." +msgstr "" + +#: src/modules/rawfs/main.py:35 +msgid "Installing data." +msgstr "" + +#: src/modules/services-openrc/main.py:38 +msgid "Configure OpenRC services" +msgstr "" + +#: src/modules/services-openrc/main.py:66 +msgid "Cannot add service {name!s} to run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:68 +msgid "Cannot remove service {name!s} from run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:70 +msgid "" +"Unknown service-action {arg!s} for service {name!s} in run-" +"level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:103 +msgid "" +"rc-update {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:110 +msgid "Target runlevel does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:111 +msgid "" +"The path for runlevel {level!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/services-openrc/main.py:119 +msgid "Target service does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:120 +msgid "" +"The path for service {name!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/plymouthcfg/main.py:36 +msgid "Configure Plymouth theme" +msgstr "" + +#: src/modules/packages/main.py:59 src/modules/packages/main.py:68 +#: src/modules/packages/main.py:78 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:71 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/bootloader/main.py:51 +msgid "Install bootloader." +msgstr "" + +#: src/modules/hwclock/main.py:35 +msgid "Setting hardware clock." +msgstr "" + +#: src/modules/dracut/main.py:36 +msgid "Creating initramfs with dracut." +msgstr "" + +#: src/modules/dracut/main.py:58 +msgid "Failed to run dracut on the target" +msgstr "" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "" + +#: src/modules/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "" + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 +#: src/modules/dummypython/main.py:103 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/localecfg/main.py:39 +msgid "Configuring locales." +msgstr "" + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" diff --git a/lang/python/tg/LC_MESSAGES/python.mo b/lang/python/tg/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..1b88d83072b32a1b3a75791b2f5df45ad88b6f02 GIT binary patch literal 661 zcmYk3O>fgc5QY~h7hjNo0|z9ATdT6R6A+|MQ}u(iiXb!!X--_W&c@wh@0#6BQjUQ7 z2aq^%199P02_&M@_BU+Ho!`PZp_Gvxy`J&BvtPfj&wL;lGstaZ5xI)IK#Itb8^|l< z8nTbvL<-aXB|^TU-a*34gxo@Hq0XZURQye@AjND|$CfsFw9B=@Vg#*~wI?eZb?DaH&l{W1yf)93wzO#y z(W9$_#L$k4z-w*NHXn+@LmxBCBPfTZM>MR^Z~;nTbpOG8h~YhD#?p>v(xl8P9YI&b zsLt7$TDaOE~RtmPOEEyW%Cx?pT|fC%F3zGs6x zWkOaV-eKBsTifca)5=9(u~eUHT9>iv;gv>E*%tQSCUHjMwNiYJl&&kCnFwS)NlmR> zh3RK)R>IvHl;)})abMiQ>05W=#(;9*j@=J8c1P~;^qo8Y^_jR&{}oTLW&HO|-Fq~? baX+V>=o!P=M>odO(b>1jJokN)9{S`DZAjl9 literal 0 HcmV?d00001 diff --git a/lang/python/tg/LC_MESSAGES/python.po b/lang/python/tg/LC_MESSAGES/python.po new file mode 100644 index 000000000..a5ff5ce5e --- /dev/null +++ b/lang/python/tg/LC_MESSAGES/python.po @@ -0,0 +1,343 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Victor Ibragimov , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Last-Translator: Victor Ibragimov , 2020\n" +"Language-Team: Tajik (https://www.transifex.com/calamares/teams/20061/tg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/grubcfg/main.py:37 +msgid "Configure GRUB." +msgstr "Танзимоти GRUB." + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "Васлкунии қисмҳои диск." + +#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 +#: src/modules/initcpiocfg/main.py:209 +#: src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:173 +#: src/modules/initramfscfg/main.py:94 src/modules/initramfscfg/main.py:98 +#: src/modules/openrcdmcryptcfg/main.py:78 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:332 +#: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 +#: src/modules/networkcfg/main.py:48 +msgid "Configuration Error" +msgstr "Хатои танзимкунӣ" + +#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 +#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 +#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/fstab/main.py:333 +msgid "No partitions are defined for
{!s}
to use." +msgstr "" + +#: src/modules/services-systemd/main.py:35 +msgid "Configure systemd services" +msgstr "" + +#: src/modules/services-systemd/main.py:68 +#: src/modules/services-openrc/main.py:102 +msgid "Cannot modify service" +msgstr "" + +#: src/modules/services-systemd/main.py:69 +msgid "" +"systemctl {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:72 +#: src/modules/services-systemd/main.py:76 +msgid "Cannot enable systemd service {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:74 +msgid "Cannot enable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:78 +msgid "Cannot disable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:80 +msgid "Cannot mask systemd unit {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:82 +msgid "" +"Unknown systemd commands {command!s} and " +"{suffix!s} for unit {name!s}." +msgstr "" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:302 +msgid "Unpacking image {}/{}, file {}/{}" +msgstr "" + +#: src/modules/unpackfs/main.py:317 +msgid "Starting to unpack {}" +msgstr "" + +#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:415 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:416 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:421 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:422 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 +#: src/modules/unpackfs/main.py:462 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:439 +msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" + +#: src/modules/unpackfs/main.py:443 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:449 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:463 +msgid "The destination \"{}\" in the target system is not a directory" +msgstr "" + +#: src/modules/displaymanager/main.py:523 +msgid "Cannot write KDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:524 +msgid "KDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:585 +msgid "Cannot write LXDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:586 +msgid "LXDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:669 +msgid "Cannot write LightDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:670 +msgid "LightDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:744 +msgid "Cannot configure LightDM" +msgstr "" + +#: src/modules/displaymanager/main.py:745 +msgid "No LightDM greeter installed." +msgstr "" + +#: src/modules/displaymanager/main.py:776 +msgid "Cannot write SLIM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:777 +msgid "SLIM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:903 +msgid "No display managers selected for the displaymanager module." +msgstr "" + +#: src/modules/displaymanager/main.py:904 +msgid "" +"The displaymanagers list is empty or undefined in bothglobalstorage and " +"displaymanager.conf." +msgstr "" + +#: src/modules/displaymanager/main.py:986 +msgid "Display manager configuration was incomplete" +msgstr "" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:210 +#: src/modules/luksopenswaphookcfg/main.py:100 +#: src/modules/initramfscfg/main.py:99 src/modules/openrcdmcryptcfg/main.py:83 +#: src/modules/fstab/main.py:339 src/modules/localecfg/main.py:145 +#: src/modules/networkcfg/main.py:49 +msgid "No root mount point is given for
{!s}
to use." +msgstr "" + +#: src/modules/luksopenswaphookcfg/main.py:35 +msgid "Configuring encrypted swap." +msgstr "" + +#: src/modules/rawfs/main.py:35 +msgid "Installing data." +msgstr "" + +#: src/modules/services-openrc/main.py:38 +msgid "Configure OpenRC services" +msgstr "" + +#: src/modules/services-openrc/main.py:66 +msgid "Cannot add service {name!s} to run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:68 +msgid "Cannot remove service {name!s} from run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:70 +msgid "" +"Unknown service-action {arg!s} for service {name!s} in run-" +"level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:103 +msgid "" +"rc-update {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:110 +msgid "Target runlevel does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:111 +msgid "" +"The path for runlevel {level!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/services-openrc/main.py:119 +msgid "Target service does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:120 +msgid "" +"The path for service {name!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/plymouthcfg/main.py:36 +msgid "Configure Plymouth theme" +msgstr "" + +#: src/modules/packages/main.py:59 src/modules/packages/main.py:68 +#: src/modules/packages/main.py:78 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:71 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/bootloader/main.py:51 +msgid "Install bootloader." +msgstr "" + +#: src/modules/hwclock/main.py:35 +msgid "Setting hardware clock." +msgstr "" + +#: src/modules/dracut/main.py:36 +msgid "Creating initramfs with dracut." +msgstr "" + +#: src/modules/dracut/main.py:58 +msgid "Failed to run dracut on the target" +msgstr "" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "" + +#: src/modules/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "" + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 +#: src/modules/dummypython/main.py:103 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/localecfg/main.py:39 +msgid "Configuring locales." +msgstr "" + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" From d22f392609954dcbe5a3624dbada580a28016401 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 26 Jul 2020 11:09:45 +0200 Subject: [PATCH 074/399] CMake: update language lists - welcome Tajik - welcome Interlingue --- CMakeLists.txt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb3ccf699..4b6f03fea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,14 +147,15 @@ set( CALAMARES_DESCRIPTION_SUMMARY # copy these four lines to four backup lines, add "p", and then update # the original four lines with the current translations). # -# Total 66 languages -set( _tx_complete az az_AZ ca he hi hr ja sq tr_TR uk zh_TW ) -set( _tx_good as ast be cs_CZ da de es fi_FI fr hu it_IT ko lt ml - nl pt_BR pt_PT ru sk sv zh_CN ) +# Total 68 languages +set( _tx_complete az az_AZ ca da fi_FI he hi hr ja pt_BR sq tr_TR + uk zh_TW ) +set( _tx_good as ast be cs_CZ de es fr hu it_IT ko lt ml nl pt_PT + ru sk sv zh_CN ) set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id is mr nb pl - ro sl sr sr@latin th ) -set( _tx_incomplete bn ca@valencia eo fr_CH gu kk kn lo lv mk ne_NP - ur uz ) + ro sl sr sr@latin tg th ) +set( _tx_incomplete bn ca@valencia eo fr_CH gu ie kk kn lo lv mk + ne_NP ur uz ) ### Required versions # From 5e35bcc8302512e988fa9f62c76650378fe830c3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 10:42:45 +0200 Subject: [PATCH 075/399] Changes: document new features, translations --- CHANGES | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index ad374e40a..27501358f 100644 --- a/CHANGES +++ b/CHANGES @@ -6,11 +6,16 @@ website will have to do for older versions. # 3.2.28 (unreleased) # This release contains contributions from (alphabetically by first name): - - No external contributors yet + - Anke Boersma + - apt-ghetto ## Core ## - A new object *Network* is available to QML modules in `io.calamares.core`. It exposes network status through the *hasInternet* property. + - Welcome to Tajik translations. This has reached sufficient completion + to be included in the drop-down list of languages on the welcome page. + - Welcome to [Interlingue](https://en.wikipedia.org/wiki/Interlingue). + The translation is at an early stage. ## Modules ## - The *locale* module has been completely redone on the inside. @@ -21,7 +26,11 @@ This release contains contributions from (alphabetically by first name): the work of figuring out maps. Note that the map uses several GeoIP and GeoData providers and you may need to configure the URLs with suitable usernames for those services. #1426 - + - Both *locale* and *localeq* can now be configured to use the system's + timezone setting -- this can be useful to avoid both hard-coding an + initial zone and doing extra GeoIP lookups, in the case where the + live system already does so. #1391 + - The *users* module no longer accepts `root` as a username. #1462 # 3.2.27 (2020-07-11) # From 1babcd2aa486ead1127c21fff15abee4c48a2c33 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 10:57:15 +0200 Subject: [PATCH 076/399] [libcalamares] Put Permissions in CalamaresUtils namespace - most of the things in utils/ are in the CalamaresUtils namespace, let Permissions follow suit. Chase the name change in the *preservefiles* module. - add an `apply()` function for doing the most basic of chmod. Note that we don't use `QFile::setPermissions()` because the **values** used are different (0755 for chmod is 0x755 in the enum value passed to `setPermissions()`). --- src/libcalamares/utils/Permissions.cpp | 14 ++++++++++++++ src/libcalamares/utils/Permissions.h | 8 ++++++++ src/modules/preservefiles/PreserveFiles.cpp | 4 ++-- src/modules/preservefiles/PreserveFiles.h | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/utils/Permissions.cpp b/src/libcalamares/utils/Permissions.cpp index 3166d840a..3f5350e86 100644 --- a/src/libcalamares/utils/Permissions.cpp +++ b/src/libcalamares/utils/Permissions.cpp @@ -8,9 +8,14 @@ #include "Permissions.h" +#include + #include #include +namespace CalamaresUtils +{ + Permissions::Permissions() : m_username() , m_group() @@ -64,3 +69,12 @@ Permissions::parsePermissions( QString const& p ) return; } + +bool +Permissions::apply( const QString& path, int mode ) +{ + int r = chmod( path.toUtf8().constData(), mode ); + return r == 0; +} + +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Permissions.h b/src/libcalamares/utils/Permissions.h index b6e2d3a44..913d037d5 100644 --- a/src/libcalamares/utils/Permissions.h +++ b/src/libcalamares/utils/Permissions.h @@ -13,6 +13,9 @@ #include +namespace CalamaresUtils +{ + /** * @brief The Permissions class takes a QString @p in the form of * ::, checks it for validity, and makes the three @@ -56,6 +59,9 @@ public: */ QString octal() const { return QString::number( value(), 8 ); } + /// chmod(path, mode), returns true on success + static bool apply( const QString& path, int mode ); + private: void parsePermissions( QString const& p ); @@ -65,4 +71,6 @@ private: bool m_valid; }; +} // namespace CalamaresUtils + #endif // LIBCALAMARES_PERMISSIONS_H diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 3e34024e7..57c2c5422 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -220,7 +220,7 @@ PreserveFiles::setConfigurationMap( const QVariantMap& configurationMap ) { QString filename = li.toString(); if ( !filename.isEmpty() ) - m_items.append( Item { filename, filename, Permissions( defaultPermissions ), ItemType::Path } ); + m_items.append( Item { filename, filename, CalamaresUtils::Permissions( defaultPermissions ), ItemType::Path } ); else { cDebug() << "Empty filename for preservefiles, item" << c; @@ -248,7 +248,7 @@ PreserveFiles::setConfigurationMap( const QVariantMap& configurationMap ) } else { - m_items.append( Item { QString(), dest, Permissions( perm ), t } ); + m_items.append( Item { QString(), dest, CalamaresUtils::Permissions( perm ), t } ); } } else diff --git a/src/modules/preservefiles/PreserveFiles.h b/src/modules/preservefiles/PreserveFiles.h index 214ff0df8..fdba933fa 100644 --- a/src/modules/preservefiles/PreserveFiles.h +++ b/src/modules/preservefiles/PreserveFiles.h @@ -34,7 +34,7 @@ class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob { QString source; QString dest; - Permissions perm; + CalamaresUtils::Permissions perm; ItemType type; }; From 389e36303f5027cf2ca4d9a6e56c15265c4f0325 Mon Sep 17 00:00:00 2001 From: demmm Date: Mon, 27 Jul 2020 11:17:00 +0200 Subject: [PATCH 077/399] Changes: document keyboardq changes --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 27501358f..3d930c30d 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,8 @@ This release contains contributions from (alphabetically by first name): initial zone and doing extra GeoIP lookups, in the case where the live system already does so. #1391 - The *users* module no longer accepts `root` as a username. #1462 + - The *keyboardq* module is now more inline with the look of the rest + of the Calamares modules, use of a background image is removed. # 3.2.27 (2020-07-11) # From 59dff815fcec2247276ddd8264bda029656f2451 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 11:13:35 +0200 Subject: [PATCH 078/399] [libcalamares] Additional apply() methods for Permissions --- src/libcalamares/utils/Permissions.cpp | 48 ++++++++++++++++++++++++-- src/libcalamares/utils/Permissions.h | 20 +++++++++-- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/utils/Permissions.cpp b/src/libcalamares/utils/Permissions.cpp index 3f5350e86..a7afbc5fc 100644 --- a/src/libcalamares/utils/Permissions.cpp +++ b/src/libcalamares/utils/Permissions.cpp @@ -8,11 +8,14 @@ #include "Permissions.h" -#include +#include "Logger.h" +#include #include #include +#include + namespace CalamaresUtils { @@ -73,8 +76,49 @@ Permissions::parsePermissions( QString const& p ) bool Permissions::apply( const QString& path, int mode ) { - int r = chmod( path.toUtf8().constData(), mode ); + // We **don't** use QFile::setPermissions() here because it takes + // a Qt flags object that subtlely does not align with POSIX bits. + // The Qt flags are **hex** based, so 0x755 for rwxr-xr-x, while + // our integer (mode_t) stores **octal** based flags. + // + // Call chmod(2) directly, that's what Qt would be doing underneath + // anyway. + int r = chmod( path.toUtf8().constData(), mode_t( mode ) ); + if ( r ) + { + cDebug() << Logger::SubEntry << "Could not set permissions of" << path << "to" << QString::number( mode, 8 ); + } return r == 0; } +bool +Permissions::apply( const QString& path, const CalamaresUtils::Permissions& p ) +{ + if ( !p.isValid() ) + { + return false; + } + bool r = apply( path, p.value() ); + if ( r ) + { + // We don't use chgrp(2) or chown(2) here because then we need to + // go through the users list (which one, target or source?) to get + // uid_t and gid_t values to pass to that system call. + // + // Do a lame cop-out and let the chown(8) utility do the heavy lifting. + if ( QProcess::execute( "chown", { p.username() + ':' + p.group(), path } ) ) + { + r = false; + cDebug() << Logger::SubEntry << "Could not set owner of" << path << "to" + << ( p.username() + ':' + p.group() ); + } + } + if ( r ) + { + /* NOTUSED */ apply( path, p.value() ); + } + return r; +} + + } // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Permissions.h b/src/libcalamares/utils/Permissions.h index 913d037d5..1f0dd38da 100644 --- a/src/libcalamares/utils/Permissions.h +++ b/src/libcalamares/utils/Permissions.h @@ -49,7 +49,7 @@ public: * * Bear in mind that input is in octal, but integers are just integers; * naively printing them will get decimal results (e.g. 493 from the - * input of "root:wheel:755"). + * input of "root:wheel:755"). This is suitable to pass to apply(). */ int value() const { return m_value; } /** @brief The value (file permission) as octal string @@ -59,8 +59,24 @@ public: */ QString octal() const { return QString::number( value(), 8 ); } - /// chmod(path, mode), returns true on success + /** @brief Sets the file-access @p mode of @p path + * + * Pass a path that is relative (or absolute) in the **host** system. + */ static bool apply( const QString& path, int mode ); + /** @brief Do both chmod and chown on @p path + * + * Note that interpreting user- and group- names for applying the + * permissions can be different between the host system and the target + * system; the target might not have a "live" user, for instance, and + * the host won't have the user-entered username for the installation. + * + * For this call, the names are interpreted in the **host** system. + * Pass a path that is relative (or absolute) in the **host** system. + */ + static bool apply( const QString& path, const Permissions& p ); + /// Convenience method for apply(const QString&, const Permissions& ) + bool apply( const QString& path ) const { return apply( path, *this ); } private: void parsePermissions( QString const& p ); From 90a0605f38d5268b262998270426b293b0c946e0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 12:25:50 +0200 Subject: [PATCH 079/399] [preservefiles] [users] Use the Permissions methods - don't call out to tools (executables) when we have an API for it (which might call out to those tools, but that's abstracted) --- src/modules/preservefiles/PreserveFiles.cpp | 21 ++------------------- src/modules/users/CreateUserJob.cpp | 3 ++- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 57c2c5422..8352e861d 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -157,26 +157,9 @@ PreserveFiles::exec() { if ( it.perm.isValid() ) { - auto s_p = CalamaresUtils::System::instance(); - - int r; - - r = s_p->targetEnvCall( QStringList { "chown", it.perm.username(), bare_dest } ); - if ( r ) + if ( !it.perm.apply( CalamaresUtils::System::instance()->targetPath( bare_dest ) ) ) { - cWarning() << "Could not chown target" << bare_dest; - } - - r = s_p->targetEnvCall( QStringList { "chgrp", it.perm.group(), bare_dest } ); - if ( r ) - { - cWarning() << "Could not chgrp target" << bare_dest; - } - - r = s_p->targetEnvCall( QStringList { "chmod", it.perm.octal(), bare_dest } ); - if ( r ) - { - cWarning() << "Could not chmod target" << bare_dest; + cWarning() << "Could not set attributes of" << bare_dest; } } diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index f0b1dca88..84a42437a 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -12,6 +12,7 @@ #include "JobQueue.h" #include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" +#include "utils/Permissions.h" #include #include @@ -103,7 +104,7 @@ CreateUserJob::exec() if ( fileResult ) { - if ( QProcess::execute( "chmod", { "440", fileResult.path() } ) ) + if ( CalamaresUtils::Permissions::apply( fileResult.path(), 0440 ) ) { return Calamares::JobResult::error( tr( "Cannot chmod sudoers file." ) ); } From b99b87f787c0e32e1eadb095fafdd45bf8a4f6be Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 12:37:04 +0200 Subject: [PATCH 080/399] [users] Explain some weird internals --- src/modules/users/CreateUserJob.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 84a42437a..2031aa029 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -131,7 +131,8 @@ CreateUserJob::exec() } } - // If we're looking to reuse the contents of an existing /home + // If we're looking to reuse the contents of an existing /home. + // This GS setting comes from the **partitioning** module. if ( gs->value( "reuseHome" ).toBool() ) { QString shellFriendlyHome = "/home/" + m_userName; @@ -141,6 +142,7 @@ CreateUserJob::exec() QString backupDirName = "dotfiles_backup_" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_HH-mm-ss" ); existingHome.mkdir( backupDirName ); + // We need the extra `sh -c` here to ensure that we can expand the shell globs CalamaresUtils::System::instance()->targetEnvCall( { "sh", "-c", "mv -f " + shellFriendlyHome + "/.* " + shellFriendlyHome + "/" + backupDirName } ); } From 1fddf723fe30cc2ba35d96a1c11069050c312e00 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 13:18:09 +0200 Subject: [PATCH 081/399] [users] FreeBSD support creating groups --- src/modules/users/CreateUserJob.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 2031aa029..8927af8ab 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -81,7 +81,11 @@ ensureGroupsExistInTarget( const QStringList& wantedGroups, const QStringList& a { if ( !availableGroups.contains( group ) ) { +#ifdef __FreeBSD__ + CalamaresUtils::System::instance()->targetEnvCall( { "pw", "groupadd", "-n", group } ); +#else CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", group } ); +#endif } } } From 26b8c826301aa26386e239c4d346f706a60a9e88 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 13:29:51 +0200 Subject: [PATCH 082/399] [users] Refactor user-creation and user-group-setting into methods - This is prep-work for handling other tools for user- and group- creation as well. --- src/modules/users/CreateUserJob.cpp | 74 ++++++++++++++++++----------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 8927af8ab..e052fa266 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -90,6 +90,40 @@ ensureGroupsExistInTarget( const QStringList& wantedGroups, const QStringList& a } } +static Calamares::JobResult +createUser( const QString& loginName, const QString& fullName, const QString& shell ) +{ + QStringList useradd { "useradd", "-m", "-U" }; + if ( !shell.isEmpty() ) + { + useradd << "-s" << shell; + } + useradd << "-c" << fullName; + useradd << loginName; + + auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useradd ); + if ( commandResult.getExitCode() ) + { + cError() << "useradd failed" << commandResult.getExitCode(); + return commandResult.explainProcess( useradd, std::chrono::seconds( 10 ) /* bogus timeout */ ); + } + return Calamares::JobResult::ok(); +} + +static Calamares::JobResult +setUserGroups( const QString& loginName, const QStringList& groups ) +{ + auto commandResult + = CalamaresUtils::System::instance()->targetEnvCommand( { "usermod", "-aG", groups.join( ',' ), loginName } ); + if ( commandResult.getExitCode() ) + { + cError() << "usermod failed" << commandResult.getExitCode(); + return commandResult.explainProcess( "usermod", std::chrono::seconds( 10 ) /* bogus timeout */ ); + } + return Calamares::JobResult::ok(); +} + + Calamares::JobResult CreateUserJob::exec() { @@ -122,18 +156,12 @@ CreateUserJob::exec() cDebug() << "[CREATEUSER]: preparing groups"; QStringList availableGroups = groupsInTargetSystem( destDir ); - ensureGroupsExistInTarget( m_defaultGroups, availableGroups ); - - QString defaultGroups = m_defaultGroups.join( ',' ); - if ( m_autologin ) + QStringList groupsForThisUser = m_defaultGroups; + if ( m_autologin && gs->contains( "autologinGroup" ) && !gs->value( "autologinGroup" ).toString().isEmpty() ) { - if ( gs->contains( "autologinGroup" ) && !gs->value( "autologinGroup" ).toString().isEmpty() ) - { - QString autologinGroup = gs->value( "autologinGroup" ).toString(); - ensureGroupsExistInTarget( QStringList { autologinGroup }, availableGroups ); - defaultGroups.append( QString( ",%1" ).arg( autologinGroup ) ); - } + groupsForThisUser << gs->value( "autologinGroup" ).toString(); } + ensureGroupsExistInTarget( m_defaultGroups, availableGroups ); // If we're looking to reuse the contents of an existing /home. // This GS setting comes from the **partitioning** module. @@ -154,33 +182,21 @@ CreateUserJob::exec() cDebug() << "[CREATEUSER]: creating user"; - QStringList useradd { "useradd", "-m", "-U" }; - QString shell = gs->value( "userShell" ).toString(); - if ( !shell.isEmpty() ) + auto useraddResult = createUser( m_userName, m_fullName, gs->value( "userShell" ).toString() ); + if ( !useraddResult ) { - useradd << "-s" << shell; - } - useradd << "-c" << m_fullName; - useradd << m_userName; - - auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useradd ); - if ( commandResult.getExitCode() ) - { - cError() << "useradd failed" << commandResult.getExitCode(); - return commandResult.explainProcess( useradd, std::chrono::seconds( 10 ) /* bogus timeout */ ); + return useraddResult; } - commandResult - = CalamaresUtils::System::instance()->targetEnvCommand( { "usermod", "-aG", defaultGroups, m_userName } ); - if ( commandResult.getExitCode() ) + auto usergroupsResult = setUserGroups( m_userName, groupsForThisUser ); + if ( !usergroupsResult ) { - cError() << "usermod failed" << commandResult.getExitCode(); - return commandResult.explainProcess( "usermod", std::chrono::seconds( 10 ) /* bogus timeout */ ); + return usergroupsResult; } QString userGroup = QString( "%1:%2" ).arg( m_userName ).arg( m_userName ); QString homeDir = QString( "/home/%1" ).arg( m_userName ); - commandResult = CalamaresUtils::System::instance()->targetEnvCommand( { "chown", "-R", userGroup, homeDir } ); + auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( { "chown", "-R", userGroup, homeDir } ); if ( commandResult.getExitCode() ) { cError() << "chown failed" << commandResult.getExitCode(); From 8a6e4af511b0a5294e7236f4309cf2ab1c41cb4d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 13:45:00 +0200 Subject: [PATCH 083/399] [users] FreeBSD support creating user - call pw useradd and pw usermod as needed; the code paths are basically the same in invoking a program in the target system to do the work. --- src/modules/users/CreateUserJob.cpp | 35 ++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index e052fa266..0fe931fa8 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -93,19 +93,33 @@ ensureGroupsExistInTarget( const QStringList& wantedGroups, const QStringList& a static Calamares::JobResult createUser( const QString& loginName, const QString& fullName, const QString& shell ) { - QStringList useradd { "useradd", "-m", "-U" }; + QStringList useraddCommand; +#ifdef __FreeBSD__ + useraddCommand << "pw" + << "useradd" + << "-n" << loginName << "-m" + << "-c" << fullName; + if ( !shell.isEmpty() ) + { + useraddCommand << "-s" << shell; + } +#else + useraddCommand << "useradd" + << "-m" + << "-U"; if ( !shell.isEmpty() ) { useradd << "-s" << shell; } useradd << "-c" << fullName; useradd << loginName; +#endif - auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useradd ); + auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useraddCommand ); if ( commandResult.getExitCode() ) { cError() << "useradd failed" << commandResult.getExitCode(); - return commandResult.explainProcess( useradd, std::chrono::seconds( 10 ) /* bogus timeout */ ); + return commandResult.explainProcess( useraddCommand, std::chrono::seconds( 10 ) /* bogus timeout */ ); } return Calamares::JobResult::ok(); } @@ -113,12 +127,21 @@ createUser( const QString& loginName, const QString& fullName, const QString& sh static Calamares::JobResult setUserGroups( const QString& loginName, const QStringList& groups ) { - auto commandResult - = CalamaresUtils::System::instance()->targetEnvCommand( { "usermod", "-aG", groups.join( ',' ), loginName } ); + QStringList setgroupsCommand; +#ifdef __FreeBSD__ + setgroupsCommand << "pw" + << "usermod" + << "-n" << loginName << "-G" << groups.join( ',' ); +#else + setgroupsCommand << "usermod" + << "-aG" << groups.join( ',' ) << loginName; +#endif + + auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( setgroupsCommand ); if ( commandResult.getExitCode() ) { cError() << "usermod failed" << commandResult.getExitCode(); - return commandResult.explainProcess( "usermod", std::chrono::seconds( 10 ) /* bogus timeout */ ); + return commandResult.explainProcess( setgroupsCommand, std::chrono::seconds( 10 ) /* bogus timeout */ ); } return Calamares::JobResult::ok(); } From 8ce7457023aa49bfce2d3291f70612cb2d86958e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 15:00:14 +0200 Subject: [PATCH 084/399] [users] Add test for create-users code - just one test for groups-file loading - while here fix bug that blank and comment lines were being kept as valid group names --- src/modules/users/CMakeLists.txt | 7 +++++++ src/modules/users/CreateUserJob.cpp | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 1d969a93b..a449d39ac 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -49,6 +49,13 @@ calamares_add_test( ${CRYPT_LIBRARIES} ) +calamares_add_test( + userscreatetest + SOURCES + CreateUserTests.cpp + CreateUserJob.cpp +) + calamares_add_test( userstest SOURCES diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 0fe931fa8..beb454ac0 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -55,7 +55,7 @@ CreateUserJob::prettyStatusMessage() const return tr( "Creating user %1." ).arg( m_userName ); } -static QStringList +STATICTEST QStringList groupsInTargetSystem( const QDir& targetRoot ) { QFileInfo groupsFi( targetRoot.absoluteFilePath( "etc/group" ) ); @@ -66,10 +66,22 @@ groupsInTargetSystem( const QDir& targetRoot ) } QString groupsData = QString::fromLocal8Bit( groupsFile.readAll() ); QStringList groupsLines = groupsData.split( '\n' ); - for ( QStringList::iterator it = groupsLines.begin(); it != groupsLines.end(); ++it ) + QStringList::iterator it = groupsLines.begin(); + while ( it != groupsLines.end() ) { + if ( it->startsWith( '#' ) ) + { + it = groupsLines.erase( it ); + continue; + } int indexOfFirstToDrop = it->indexOf( ':' ); + if ( indexOfFirstToDrop < 1 ) + { + it = groupsLines.erase( it ); + continue; + } it->truncate( indexOfFirstToDrop ); + ++it; } return groupsLines; } From 1e08ee084f096b3cdf5cfd081abe9ad5d5b1eca6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 15:35:24 +0200 Subject: [PATCH 085/399] [users] Actually add the test file --- src/modules/users/CreateUserTests.cpp | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/modules/users/CreateUserTests.cpp diff --git a/src/modules/users/CreateUserTests.cpp b/src/modules/users/CreateUserTests.cpp new file mode 100644 index 000000000..b351109b3 --- /dev/null +++ b/src/modules/users/CreateUserTests.cpp @@ -0,0 +1,80 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "CreateUserJob.h" + +#include "utils/Logger.h" + +#include +#include + +// Implementation details +extern QStringList groupsInTargetSystem( const QDir& targetRoot ); + + +class CreateUserTests : public QObject +{ + Q_OBJECT +public: + CreateUserTests(); + virtual ~CreateUserTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testReadGroup(); +}; + +CreateUserTests::CreateUserTests() {} + +void +CreateUserTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << "Users test started."; +} + +void +CreateUserTests::testReadGroup() +{ + QDir root( "/" ); + QVERIFY( root.exists() ); + + // Get the groups in the host system + QStringList groups = groupsInTargetSystem( root ); + QVERIFY( groups.count() > 2 ); +#ifdef __FreeBSD__ + QVERIFY( groups.contains( QStringLiteral( "wheel" ) ) ); +#else + QVERIFY( groups.contains( QStringLiteral( "root" ) ) ); +#endif + QVERIFY( groups.contains( QStringLiteral( "sys" ) ) ); + + for ( const QString& s : groups ) + { + QVERIFY( !s.isEmpty() ); + QVERIFY( !s.contains( '#' ) ); + } +} + +QTEST_GUILESS_MAIN( CreateUserTests ) + +#include "utils/moc-warnings.h" + +#include "CreateUserTests.moc" From dab831b2ffe994fba4f07ae3b0f426080e8d00ae Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 12:47:01 +0200 Subject: [PATCH 086/399] [users] Introduce a (stub) Config object --- src/modules/users/CMakeLists.txt | 1 + src/modules/users/Config.cpp | 33 ++++++++++++++++++++++++++++ src/modules/users/Config.h | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/modules/users/Config.cpp create mode 100644 src/modules/users/Config.h diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index a449d39ac..bf93eb26a 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -28,6 +28,7 @@ calamares_add_plugin( users UsersPage.cpp SetHostNameJob.cpp CheckPWQuality.cpp + Config.cpp UI page_usersetup.ui RESOURCES diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp new file mode 100644 index 000000000..fb69298f6 --- /dev/null +++ b/src/modules/users/Config.cpp @@ -0,0 +1,33 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "Config.h" + +Config::Config( QObject* parent ) + : QObject( parent ) +{ +} + +Config::~Config() {} + +void +Config::setConfigurationMap( const QVariantMap& ) +{ +} diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h new file mode 100644 index 000000000..95c8c33bd --- /dev/null +++ b/src/modules/users/Config.h @@ -0,0 +1,37 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef USERS_CONFIG_H +#define USERS_CONFIG_H + +#include +#include + +class Config : public QObject +{ +public: + Config( QObject* parent = nullptr ); + ~Config(); + + // Currently, config does nothing + void setConfigurationMap( const QVariantMap& ); +}; + +#endif From 4d85a64e4f5e130562aaa1b6100a7c9a53eb00b4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 17:14:06 +0200 Subject: [PATCH 087/399] [users] Fix build on Linux --- src/modules/users/CreateUserJob.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index beb454ac0..a6812dd53 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -121,10 +121,10 @@ createUser( const QString& loginName, const QString& fullName, const QString& sh << "-U"; if ( !shell.isEmpty() ) { - useradd << "-s" << shell; + useraddCommand << "-s" << shell; } - useradd << "-c" << fullName; - useradd << loginName; + useraddCommand << "-c" << fullName; + useraddCommand << loginName; #endif auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useraddCommand ); From f9b114a67ad7d6b27bd90148493b82575c838460 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 15:21:04 +0200 Subject: [PATCH 088/399] [users] Pass the Config object to the Page - delay construction of the Page (widget) until it's needed - hand the Config object to the Page on construction This is prep-work for putting the configuration information into the Config object, rather than in the UI elements. --- src/modules/users/UsersPage.cpp | 7 ++++--- src/modules/users/UsersPage.h | 5 ++++- src/modules/users/UsersViewStep.cpp | 28 +++++++++++++++++++++------- src/modules/users/UsersViewStep.h | 3 +++ 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 5c649d622..62b8920e7 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -79,9 +79,10 @@ labelOk( QLabel* pix, QLabel* label ) pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, label->size() ) ); } -UsersPage::UsersPage( QWidget* parent ) +UsersPage::UsersPage( Config* config, QWidget* parent ) : QWidget( parent ) , ui( new Ui::Page_UserSetup ) + , m_config( config ) , m_readyFullName( false ) , m_readyUsername( false ) , m_readyHostname( false ) @@ -99,12 +100,12 @@ UsersPage::UsersPage( QWidget* parent ) connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxRootPassword, &QLineEdit::textChanged, this, &UsersPage::onRootPasswordTextChanged ); connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged, this, &UsersPage::onRootPasswordTextChanged ); - connect( ui->checkBoxValidatePassword, &QCheckBox::stateChanged, this, [ this ]( int ) { + connect( ui->checkBoxValidatePassword, &QCheckBox::stateChanged, this, [this]( int ) { onPasswordTextChanged( ui->textBoxUserPassword->text() ); onRootPasswordTextChanged( ui->textBoxRootPassword->text() ); checkReady( isReady() ); } ); - connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [ this ]( int checked ) { + connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { /* When "reuse" is checked, hide the fields for explicitly * entering the root password. However, if we're going to * disable the root password anyway, hide them all regardless of diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 3382e9335..a13886de6 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -29,6 +29,8 @@ #include +class Config; + class QLabel; namespace Ui @@ -40,7 +42,7 @@ class UsersPage : public QWidget { Q_OBJECT public: - explicit UsersPage( QWidget* parent = nullptr ); + explicit UsersPage( Config* config, QWidget* parent = nullptr ); virtual ~UsersPage(); bool isReady(); @@ -95,6 +97,7 @@ private: void retranslate(); Ui::Page_UserSetup* ui; + Config* m_config; PasswordCheckList m_passwordChecks; bool m_passwordChecksChanged = false; diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index fe633b1c2..3fc86eb91 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -20,17 +20,17 @@ #include "UsersViewStep.h" +#include "Config.h" #include "SetHostNameJob.h" #include "SetPasswordJob.h" #include "UsersPage.h" +#include "GlobalStorage.h" +#include "JobQueue.h" #include "utils/Logger.h" #include "utils/NamedEnum.h" #include "utils/Variant.h" -#include "GlobalStorage.h" -#include "JobQueue.h" - CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin< UsersViewStep >(); ) static const NamedEnumTable< SetHostNameJob::Action >& @@ -53,11 +53,11 @@ hostnameActions() UsersViewStep::UsersViewStep( QObject* parent ) : Calamares::ViewStep( parent ) - , m_widget( new UsersPage() ) + , m_widget( nullptr ) , m_actions( SetHostNameJob::Action::None ) + , m_config( new Config( this ) ) { emit nextStatusChanged( true ); - connect( m_widget, &UsersPage::checkReady, this, &UsersViewStep::nextStatusChanged ); } @@ -80,6 +80,11 @@ UsersViewStep::prettyName() const QWidget* UsersViewStep::widget() { + if ( !m_widget ) + { + m_widget = new UsersPage( m_config ); + connect( m_widget, &UsersPage::checkReady, this, &UsersViewStep::nextStatusChanged ); + } return m_widget; } @@ -87,7 +92,7 @@ UsersViewStep::widget() bool UsersViewStep::isNextEnabled() const { - return m_widget->isReady(); + return m_widget ? m_widget->isReady() : true; } @@ -122,7 +127,10 @@ UsersViewStep::jobs() const void UsersViewStep::onActivate() { - m_widget->onActivate(); + if ( m_widget ) + { + m_widget->onActivate(); + } } @@ -130,6 +138,10 @@ void UsersViewStep::onLeave() { m_jobs.clear(); + if ( !m_widget ) + { + return; + } m_jobs.append( m_widget->createJobs( m_defaultGroups ) ); Calamares::Job* j; @@ -222,4 +234,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) Action hostsfileAction = getBool( configurationMap, "writeHostsFile", true ) ? Action::WriteEtcHosts : Action::None; m_actions = hostsfileAction | hostnameAction; + + m_config->setConfigurationMap( configurationMap ); } diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index 03cc83819..aacf11f2a 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -29,6 +29,7 @@ #include #include +class Config; class UsersPage; class PLUGINDLLEXPORT UsersViewStep : public Calamares::ViewStep @@ -62,6 +63,8 @@ private: QStringList m_defaultGroups; SetHostNameJob::Actions m_actions; + + Config* m_config; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( UsersViewStepFactory ) From 8497aad7a173500d67fa3e28dbf609bf42caa9b6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 15:27:41 +0200 Subject: [PATCH 089/399] [users] Apply coding style --- src/modules/users/CheckPWQuality.cpp | 8 ++++---- src/modules/users/PasswordTests.cpp | 4 ++-- src/modules/users/Tests.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index ab3eed84f..f06137c9b 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -55,7 +55,7 @@ DEFINE_CHECK_FUNC( minLength ) { cDebug() << Logger::SubEntry << "minLength set to" << minLength; checks.push_back( PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is too short" ); }, - [ minLength ]( const QString& s ) { return s.length() >= minLength; }, + [minLength]( const QString& s ) { return s.length() >= minLength; }, PasswordCheck::Weight( 10 ) ) ); } } @@ -71,7 +71,7 @@ DEFINE_CHECK_FUNC( maxLength ) { cDebug() << Logger::SubEntry << "maxLength set to" << maxLength; checks.push_back( PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is too long" ); }, - [ maxLength ]( const QString& s ) { return s.length() <= maxLength; }, + [maxLength]( const QString& s ) { return s.length() <= maxLength; }, PasswordCheck::Weight( 10 ) ) ); } } @@ -349,8 +349,8 @@ DEFINE_CHECK_FUNC( libpwquality ) /* Something actually added? */ if ( requirement_count ) { - checks.push_back( PasswordCheck( [ settings ]() { return settings->explanation(); }, - [ settings ]( const QString& s ) { + checks.push_back( PasswordCheck( [settings]() { return settings->explanation(); }, + [settings]( const QString& s ) { int r = settings->check( s ); if ( r < 0 ) { diff --git a/src/modules/users/PasswordTests.cpp b/src/modules/users/PasswordTests.cpp index b33526162..0c1b4bffc 100644 --- a/src/modules/users/PasswordTests.cpp +++ b/src/modules/users/PasswordTests.cpp @@ -24,9 +24,9 @@ QTEST_GUILESS_MAIN( PasswordTests ) -PasswordTests::PasswordTests() { } +PasswordTests::PasswordTests() {} -PasswordTests::~PasswordTests() { } +PasswordTests::~PasswordTests() {} void PasswordTests::initTestCase() diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index 75c5e6d5f..196fd9d68 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -37,7 +37,7 @@ class UsersTests : public QObject Q_OBJECT public: UsersTests(); - virtual ~UsersTests() { } + virtual ~UsersTests() {} private Q_SLOTS: void initTestCase(); From 2f786079f30e75b4c999e8f109e4e650750777af Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 15:39:19 +0200 Subject: [PATCH 090/399] [users] Move shell settings to the Config object - this is a set-only property (as far as the current ViewStep is concerned) and is passed around in GS for non-obvious reasons. --- src/modules/users/Config.cpp | 27 ++++++++++++++++++++++++++- src/modules/users/Config.h | 29 ++++++++++++++++++++++++++++- src/modules/users/UsersViewStep.cpp | 9 --------- 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index fb69298f6..58e2b76ac 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -20,6 +20,11 @@ #include "Config.h" +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/Logger.h" +#include "utils/Variant.h" + Config::Config( QObject* parent ) : QObject( parent ) { @@ -28,6 +33,26 @@ Config::Config( QObject* parent ) Config::~Config() {} void -Config::setConfigurationMap( const QVariantMap& ) +Config::setUserShell( const QString& shell ) { + if ( !shell.isEmpty() && !shell.startsWith( '/' ) ) + { + cWarning() << "User shell" << shell << "is not an absolute path."; + return; + } + // The shell is put into GS because the CreateUser job expects it there + Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell ); +} + + +void +Config::setConfigurationMap( const QVariantMap& configurationMap ) +{ + QString shell( QLatin1String( "/bin/bash" ) ); // as if it's not set at all + if ( configurationMap.contains( "userShell" ) ) + { + shell = CalamaresUtils::getString( configurationMap, "userShell" ); + } + // Now it might be explicitly set to empty, which is ok + setUserShell( shell ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 95c8c33bd..27416e88d 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -26,12 +26,39 @@ class Config : public QObject { + Q_OBJECT + + Q_PROPERTY( QString userShell READ userShell WRITE setUserShell NOTIFY userShellChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); - // Currently, config does nothing void setConfigurationMap( const QVariantMap& ); + + /** @brief Full path to the user's shell executable + * + * Typically this will be /bin/bash, but it can be set from + * the config file with the *userShell* setting. + */ + QString userShell() const { return m_userShell; } + +public Q_SLOTS: + /** @brief Sets the user's shell if possible + * + * If the path is empty, that's ok: no shell will be explicitly set, + * so the user will get whatever shell is set to default in the target. + * + * The given non-empty @p path must be an absolute path (for use inside + * the target system!); if it is not, the shell is not changed. + */ + void setUserShell( const QString& path ); + +signals: + void userShellChanged( const QString& ); + +private: + QString m_userShell; }; #endif diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 3fc86eb91..e037902ab 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -209,15 +209,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_widget->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", false ) ); m_widget->setValidatePasswordDefault( !getBool( configurationMap, "allowWeakPasswordsDefault", false ) ); - QString shell( QLatin1String( "/bin/bash" ) ); // as if it's not set at all - if ( configurationMap.contains( "userShell" ) ) - { - shell = CalamaresUtils::getString( configurationMap, "userShell" ); - } - // Now it might be explicitly set to empty, which is ok - - Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell ); - using Action = SetHostNameJob::Action; QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" ); From 35916eb20ff8ea351cba4047932ce52aeec62e15 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 16:39:13 +0200 Subject: [PATCH 091/399] [users] Move autologin and sudoers groups to Config --- src/modules/users/Config.cpp | 28 ++++++++++++++++++++++++++++ src/modules/users/Config.h | 17 +++++++++++++++++ src/modules/users/UsersViewStep.cpp | 14 -------------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 58e2b76ac..a071da8fc 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -44,6 +44,31 @@ Config::setUserShell( const QString& shell ) Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell ); } +static inline void +setGS( const QString& key, const QString& group ) +{ + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( !gs || group.isEmpty() ) + { + return; + } + gs->insert( key, group ); +} + +void +Config::setAutologinGroup( const QString& group ) +{ + setGS( QStringLiteral( "autologinGroup" ), group ); + emit autologinGroupChanged( group ); +} + +void +Config::setSudoersGroup( const QString& group ) +{ + setGS( QStringLiteral( "sudoersGroup" ), group ); + emit sudoersGroupChanged( group ); +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) @@ -55,4 +80,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) } // Now it might be explicitly set to empty, which is ok setUserShell( shell ); + + setAutologinGroup( CalamaresUtils::getString( configurationMap, "autologinGroup" ) ); + setSudoersGroup( CalamaresUtils::getString( configurationMap, "sudoersGroup" ) ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 27416e88d..b399c6141 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -30,6 +30,9 @@ class Config : public QObject Q_PROPERTY( QString userShell READ userShell WRITE setUserShell NOTIFY userShellChanged ) + Q_PROPERTY( QString autologinGroup READ autologinGroup WRITE setAutologinGroup NOTIFY autologinGroupChanged ) + Q_PROPERTY( QString sudoersGroup READ sudoersGroup WRITE setSudoersGroup NOTIFY sudoersGroupChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -43,6 +46,11 @@ public: */ QString userShell() const { return m_userShell; } + /// The group of which auto-login users must be a member + QString autologinGroup() const { return m_autologinGroup; } + /// The group of which users who can "sudo" must be a member + QString sudoersGroup() const { return m_sudoersGroup; } + public Q_SLOTS: /** @brief Sets the user's shell if possible * @@ -54,11 +62,20 @@ public Q_SLOTS: */ void setUserShell( const QString& path ); + /// Sets the autologin group; empty is ignored + void setAutologinGroup( const QString& group ); + /// Sets the sudoer group; empty is ignored + void setSudoersGroup( const QString& group ); + signals: void userShellChanged( const QString& ); + void autologinGroupChanged( const QString& ); + void sudoersGroupChanged( const QString& ); private: QString m_userShell; + QString m_autologinGroup; + QString m_sudoersGroup; }; #endif diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index e037902ab..745163c2c 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -174,20 +174,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_defaultGroups = QStringList { "lp", "video", "network", "storage", "wheel", "audio" }; } - if ( configurationMap.contains( "autologinGroup" ) - && configurationMap.value( "autologinGroup" ).type() == QVariant::String ) - { - Calamares::JobQueue::instance()->globalStorage()->insert( - "autologinGroup", configurationMap.value( "autologinGroup" ).toString() ); - } - - if ( configurationMap.contains( "sudoersGroup" ) - && configurationMap.value( "sudoersGroup" ).type() == QVariant::String ) - { - Calamares::JobQueue::instance()->globalStorage()->insert( "sudoersGroup", - configurationMap.value( "sudoersGroup" ).toString() ); - } - bool setRootPassword = getBool( configurationMap, "setRootPassword", true ); Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", setRootPassword ); From 66ae1823a5ca7c99572d4f1f5cf27a143d050bce Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 25 Jul 2020 16:54:15 +0200 Subject: [PATCH 092/399] [users] Give Config object a user and login name - This is incomplete, because the business logic of guessing a login from the username is not here. --- src/modules/users/Config.cpp | 21 +++++++++++++++++++++ src/modules/users/Config.h | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index a071da8fc..856d27684 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -70,6 +70,27 @@ Config::setSudoersGroup( const QString& group ) } +void +Config::setLoginName( const QString& login ) +{ + if ( login != m_loginName ) + { + m_loginName = login; + emit loginNameChanged( login ); + } +} + +void +Config::setUserName( const QString& name ) +{ + if ( name != m_fullName ) + { + m_fullName = name; + emit userNameChanged( name ); + } +} + + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index b399c6141..32e51a309 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -33,6 +33,9 @@ class Config : public QObject Q_PROPERTY( QString autologinGroup READ autologinGroup WRITE setAutologinGroup NOTIFY autologinGroupChanged ) Q_PROPERTY( QString sudoersGroup READ sudoersGroup WRITE setSudoersGroup NOTIFY sudoersGroupChanged ) + Q_PROPERTY( QString userName READ userName WRITE setUserName NOTIFY userNameChanged ) + Q_PROPERTY( QString loginName READ loginName WRITE setLoginName NOTIFY loginNameChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -51,6 +54,11 @@ public: /// The group of which users who can "sudo" must be a member QString sudoersGroup() const { return m_sudoersGroup; } + /// The full (GECOS) name of the user + QString userName() const { return m_fullName; } + /// The login name of the user + QString loginName() const { return m_loginName; } + public Q_SLOTS: /** @brief Sets the user's shell if possible * @@ -67,15 +75,24 @@ public Q_SLOTS: /// Sets the sudoer group; empty is ignored void setSudoersGroup( const QString& group ); + /// Sets the full name, may guess a loginName + void setUserName( const QString& name ); + /// Sets the login name + void setLoginName( const QString& login ); + signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); void sudoersGroupChanged( const QString& ); + void userNameChanged( const QString& ); + void loginNameChanged( const QString& ); private: QString m_userShell; QString m_autologinGroup; QString m_sudoersGroup; + QString m_fullName; + QString m_loginName; }; #endif From 411a202ba5be1546e83e56faaefcff9e59444a30 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 15:34:59 +0200 Subject: [PATCH 093/399] [users] Do some login-name guessing --- src/modules/users/Config.cpp | 41 ++++++++++++++++++++++++++++++++++++ src/modules/users/Config.h | 3 ++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 856d27684..ac01f9933 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -23,8 +23,11 @@ #include "GlobalStorage.h" #include "JobQueue.h" #include "utils/Logger.h" +#include "utils/String.h" #include "utils/Variant.h" +#include + Config::Config( QObject* parent ) : QObject( parent ) { @@ -75,11 +78,34 @@ Config::setLoginName( const QString& login ) { if ( login != m_loginName ) { + m_customLoginName = !login.isEmpty(); m_loginName = login; emit loginNameChanged( login ); } } +static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); + +static QString +makeLoginNameSuggestion( const QStringList& parts ) +{ + if ( parts.isEmpty() ) + { + return QString(); + } + + QString usernameSuggestion = parts.first(); + for ( int i = 1; i < parts.length(); ++i ) + { + if ( !parts.value( i ).isEmpty() ) + { + usernameSuggestion.append( parts.value( i ).at( 0 ) ); + } + } + + return USERNAME_RX.indexIn( usernameSuggestion ) != -1 ? usernameSuggestion : QString(); +} + void Config::setUserName( const QString& name ) { @@ -87,6 +113,21 @@ Config::setUserName( const QString& name ) { m_fullName = name; emit userNameChanged( name ); + + // Build login and hostname, if needed + QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive ); + QString cleanName = CalamaresUtils::removeDiacritics( name ).toLower().replace( rx, " " ).simplified(); + QStringList cleanParts = cleanName.split( ' ' ); + + if ( !m_customLoginName ) + { + QString login = makeLoginNameSuggestion( cleanParts ); + if ( !login.isEmpty() && login != m_loginName ) + { + m_loginName = login; + emit loginNameChanged( login ); + } + } } } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 32e51a309..6aed5840f 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -77,7 +77,7 @@ public Q_SLOTS: /// Sets the full name, may guess a loginName void setUserName( const QString& name ); - /// Sets the login name + /// Sets the login name (flags it as "custom") void setLoginName( const QString& login ); signals: @@ -93,6 +93,7 @@ private: QString m_sudoersGroup; QString m_fullName; QString m_loginName; + bool m_customLoginName = false; }; #endif From 5ffa09000a0b880d6ebcb808cc91733d0a21e8af Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 15:54:52 +0200 Subject: [PATCH 094/399] [users] Add hostname guessing to Config --- src/modules/users/Config.cpp | 73 ++++++++++++++++++++++++++++++++++-- src/modules/users/Config.h | 11 ++++++ 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index ac01f9933..9deaef81f 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -26,6 +26,7 @@ #include "utils/String.h" #include "utils/Variant.h" +#include #include Config::Config( QObject* parent ) @@ -84,12 +85,56 @@ Config::setLoginName( const QString& login ) } } -static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); +void +Config::setHostName( const QString& host ) +{ + if ( host != m_hostName ) + { + m_customHostName = !host.isEmpty(); + m_hostName = host; + emit hostNameChanged( host ); + } +} + + +/** @brief Guess the machine's name + * + * If there is DMI data, use that; otherwise, just call the machine "-pc". + * Reads the DMI data just once. + */ +static QString +guessProductName() +{ + static bool tried = false; + static QString dmiProduct; + + if ( !tried ) + { + // yes validateHostnameText() but these files can be a mess + QRegExp dmirx( "[^a-zA-Z0-9]", Qt::CaseInsensitive ); + QFile dmiFile( QStringLiteral( "/sys/devices/virtual/dmi/id/product_name" ) ); + + if ( dmiFile.exists() && dmiFile.open( QIODevice::ReadOnly ) ) + { + dmiProduct = QString::fromLocal8Bit( dmiFile.readAll().simplified().data() ) + .toLower() + .replace( dmirx, " " ) + .remove( ' ' ); + } + if ( dmiProduct.isEmpty() ) + { + dmiProduct = QStringLiteral( "-pc" ); + } + tried = true; + } + return dmiProduct; +} static QString makeLoginNameSuggestion( const QStringList& parts ) { - if ( parts.isEmpty() ) + static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); + if ( parts.isEmpty() || parts.first().isEmpty() ) { return QString(); } @@ -106,6 +151,20 @@ makeLoginNameSuggestion( const QStringList& parts ) return USERNAME_RX.indexIn( usernameSuggestion ) != -1 ? usernameSuggestion : QString(); } +static QString +makeHostnameSuggestion( const QStringList& parts ) +{ + static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); + if ( parts.isEmpty() || parts.first().isEmpty() ) + { + return QString(); + } + + QString productName = guessProductName(); + QString hostnameSuggestion = QStringLiteral( "%1-%2" ).arg( parts.first() ).arg( productName ); + return HOSTNAME_RX.indexIn( hostnameSuggestion ) != -1 ? hostnameSuggestion : QString(); +} + void Config::setUserName( const QString& name ) { @@ -128,10 +187,18 @@ Config::setUserName( const QString& name ) emit loginNameChanged( login ); } } + if ( !m_customHostName ) + { + QString hostname = makeHostnameSuggestion( cleanParts ); + if ( !hostname.isEmpty() && hostname != m_hostName ) + { + m_hostName = hostname; + emit hostNameChanged( hostname ); + } + } } } - void Config::setConfigurationMap( const QVariantMap& configurationMap ) { diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 6aed5840f..59f0e8d68 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -36,6 +36,8 @@ class Config : public QObject Q_PROPERTY( QString userName READ userName WRITE setUserName NOTIFY userNameChanged ) Q_PROPERTY( QString loginName READ loginName WRITE setLoginName NOTIFY loginNameChanged ) + Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -59,6 +61,9 @@ public: /// The login name of the user QString loginName() const { return m_loginName; } + /// The host name (name for the system) + QString hostName() const { return m_hostName; } + public Q_SLOTS: /** @brief Sets the user's shell if possible * @@ -80,12 +85,16 @@ public Q_SLOTS: /// Sets the login name (flags it as "custom") void setLoginName( const QString& login ); + /// Sets the host name (flags it as "custom") + void setHostName( const QString& host ); + signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); void sudoersGroupChanged( const QString& ); void userNameChanged( const QString& ); void loginNameChanged( const QString& ); + void hostNameChanged( const QString& ); private: QString m_userShell; @@ -93,7 +102,9 @@ private: QString m_sudoersGroup; QString m_fullName; QString m_loginName; + QString m_hostName; bool m_customLoginName = false; + bool m_customHostName = false; }; #endif From 8a14cc7ffc1616dd254456190ab53e23465c6809 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 16:09:29 +0200 Subject: [PATCH 095/399] [users] Move some configuration from Page to Config object - make the HostName textbox just a view on the Config's HostName - make the username and login textboxes view onto Config - query the Config rather than the UI for job data --- src/modules/users/Config.cpp | 2 + src/modules/users/UsersPage.cpp | 135 ++++------------------------ src/modules/users/UsersPage.h | 7 -- src/modules/users/UsersViewStep.cpp | 2 +- src/modules/users/page_usersetup.ui | 4 +- 5 files changed, 24 insertions(+), 126 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 9deaef81f..24b14faf1 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -168,6 +168,8 @@ makeHostnameSuggestion( const QStringList& parts ) void Config::setUserName( const QString& name ) { + // TODO: handle "empty" case + // TODO: rename to "FullName" if ( name != m_fullName ) { m_fullName = name; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 62b8920e7..60afa1bb3 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -24,9 +24,9 @@ */ #include "UsersPage.h" - #include "ui_page_usersetup.h" +#include "Config.h" #include "CreateUserJob.h" #include "SetHostNameJob.h" #include "SetPasswordJob.h" @@ -34,7 +34,6 @@ #include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" - #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Retranslator.h" @@ -94,8 +93,6 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) // Connect signals and slots connect( ui->textBoxFullName, &QLineEdit::textEdited, this, &UsersPage::onFullNameTextEdited ); - connect( ui->textBoxUsername, &QLineEdit::textEdited, this, &UsersPage::onUsernameTextEdited ); - connect( ui->textBoxHostname, &QLineEdit::textEdited, this, &UsersPage::onHostnameTextEdited ); connect( ui->textBoxUserPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxRootPassword, &QLineEdit::textChanged, this, &UsersPage::onRootPasswordTextChanged ); @@ -124,8 +121,13 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) checkReady( isReady() ); } ); - m_customUsername = false; - m_customHostname = false; + connect( ui->textBoxHostName, &QLineEdit::textEdited, config, &Config::setHostName); + connect( config, &Config::hostNameChanged, ui->textBoxHostName, &QLineEdit::setText ); + connect( config, &Config::hostNameChanged, this, &UsersPage::validateHostnameText ); + + connect( ui->textBoxLoginName, &QLineEdit::textEdited, config, &Config::setLoginName ); + connect( config, &Config::loginNameChanged, ui->textBoxLoginName, &QLineEdit::setText ); + connect( config, &Config::loginNameChanged, this, &UsersPage::validateUsernameText ); setWriteRootPassword( true ); ui->checkBoxReusePassword->setChecked( true ); @@ -147,13 +149,13 @@ UsersPage::retranslate() ui->retranslateUi( this ); if ( Calamares::Settings::instance()->isSetupMode() ) { - ui->textBoxUsername->setToolTip( tr( "If more than one person will " + ui->textBoxLoginName->setToolTip( tr( "If more than one person will " "use this computer, you can create multiple " "accounts after setup." ) ); } else { - ui->textBoxUsername->setToolTip( tr( "If more than one person will " + ui->textBoxLoginName->setToolTip( tr( "If more than one person will " "use this computer, you can create multiple " "accounts after installation." ) ); } @@ -177,12 +179,6 @@ UsersPage::isReady() return readyFields && m_readyRootPassword; } -QString -UsersPage::getHostname() const -{ - return ui->textBoxHostname->text(); -} - QString UsersPage::getRootPassword() const { @@ -206,7 +202,7 @@ UsersPage::getRootPassword() const QPair< QString, QString > UsersPage::getUserPassword() const { - return QPair< QString, QString >( ui->textBoxUsername->text(), ui->textBoxUserPassword->text() ); + return QPair< QString, QString >( m_config->loginName(), ui->textBoxUserPassword->text() ); } QList< Calamares::job_ptr > @@ -221,9 +217,9 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); Calamares::Job* j; - j = new CreateUserJob( ui->textBoxUsername->text(), - ui->textBoxFullName->text().isEmpty() ? ui->textBoxUsername->text() - : ui->textBoxFullName->text(), + j = new CreateUserJob( m_config->loginName(), + m_config->userName().isEmpty() ? m_config->loginName() + : m_config->userName(), ui->checkBoxAutoLogin->isChecked(), defaultGroupsList ); list.append( Calamares::job_ptr( j ) ); @@ -232,13 +228,13 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) { gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); } - gs->insert( "hostname", ui->textBoxHostname->text() ); + gs->insert( "hostname", m_config->hostName() ); if ( ui->checkBoxAutoLogin->isChecked() ) { - gs->insert( "autologinUser", ui->textBoxUsername->text() ); + gs->insert( "autologinUser", m_config->loginName() ); } - gs->insert( "username", ui->textBoxUsername->text() ); + gs->insert( "username", m_config->loginName() ); gs->insert( "password", CalamaresUtils::obscure( ui->textBoxUserPassword->text() ) ); return list; @@ -269,6 +265,7 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) { ui->labelFullNameError->clear(); ui->labelFullName->clear(); +#if 0 if ( !m_customUsername ) { ui->textBoxUsername->clear(); @@ -277,6 +274,7 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) { ui->textBoxHostname->clear(); } +#endif m_readyFullName = false; } else @@ -284,97 +282,10 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) ui->labelFullName->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, ui->labelFullName->size() ) ); m_readyFullName = true; - fillSuggestions(); } checkReady( isReady() ); } -/** @brief Guess the machine's name - * - * If there is DMI data, use that; otherwise, just call the machine "-pc". - * Reads the DMI data just once. - */ -static QString -guessProductName() -{ - static bool tried = false; - static QString dmiProduct; - - if ( !tried ) - { - // yes validateHostnameText() but these files can be a mess - QRegExp dmirx( "[^a-zA-Z0-9]", Qt::CaseInsensitive ); - QFile dmiFile( QStringLiteral( "/sys/devices/virtual/dmi/id/product_name" ) ); - - if ( dmiFile.exists() && dmiFile.open( QIODevice::ReadOnly ) ) - { - dmiProduct = QString::fromLocal8Bit( dmiFile.readAll().simplified().data() ) - .toLower() - .replace( dmirx, " " ) - .remove( ' ' ); - } - if ( dmiProduct.isEmpty() ) - { - dmiProduct = QStringLiteral( "-pc" ); - } - tried = true; - } - return dmiProduct; -} - -void -UsersPage::fillSuggestions() -{ - QString fullName = ui->textBoxFullName->text(); - QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive ); - QString cleanName = CalamaresUtils::removeDiacritics( fullName ).toLower().replace( rx, " " ).simplified(); - QStringList cleanParts = cleanName.split( ' ' ); - - if ( !m_customUsername ) - { - if ( !cleanParts.isEmpty() && !cleanParts.first().isEmpty() ) - { - QString usernameSuggestion = cleanParts.first(); - for ( int i = 1; i < cleanParts.length(); ++i ) - { - if ( !cleanParts.value( i ).isEmpty() ) - { - usernameSuggestion.append( cleanParts.value( i ).at( 0 ) ); - } - } - if ( USERNAME_RX.indexIn( usernameSuggestion ) != -1 ) - { - ui->textBoxUsername->setText( usernameSuggestion ); - validateUsernameText( usernameSuggestion ); - m_customUsername = false; - } - } - } - - if ( !m_customHostname ) - { - if ( !cleanParts.isEmpty() && !cleanParts.first().isEmpty() ) - { - QString hostnameSuggestion; - QString productName = guessProductName(); - hostnameSuggestion = QString( "%1-%2" ).arg( cleanParts.first() ).arg( productName ); - if ( HOSTNAME_RX.indexIn( hostnameSuggestion ) != -1 ) - { - ui->textBoxHostname->setText( hostnameSuggestion ); - validateHostnameText( hostnameSuggestion ); - m_customHostname = false; - } - } - } -} - - -void -UsersPage::onUsernameTextEdited( const QString& textRef ) -{ - m_customUsername = true; - validateUsernameText( textRef ); -} void @@ -427,14 +338,6 @@ UsersPage::validateUsernameText( const QString& textRef ) } -void -UsersPage::onHostnameTextEdited( const QString& textRef ) -{ - m_customHostname = true; - validateHostnameText( textRef ); -} - - void UsersPage::validateHostnameText( const QString& textRef ) { diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index a13886de6..ac5701b2d 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -65,8 +65,6 @@ public: */ void addPasswordCheck( const QString& key, const QVariant& value ); - ///@brief Hostname as entered / auto-filled - QString getHostname() const; ///@brief Root password, depends on settings, may be empty QString getRootPassword() const; ///@brief User name and password @@ -74,10 +72,7 @@ public: protected slots: void onFullNameTextEdited( const QString& ); - void fillSuggestions(); - void onUsernameTextEdited( const QString& ); void validateUsernameText( const QString& ); - void onHostnameTextEdited( const QString& ); void validateHostnameText( const QString& ); void onPasswordTextChanged( const QString& ); void onRootPasswordTextChanged( const QString& ); @@ -104,9 +99,7 @@ private: bool m_readyFullName; bool m_readyUsername; - bool m_customUsername; bool m_readyHostname; - bool m_customHostname; bool m_readyPassword; bool m_readyRootPassword; diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 745163c2c..be6d61878 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -153,7 +153,7 @@ UsersViewStep::onLeave() j = new SetPasswordJob( "root", m_widget->getRootPassword() ); m_jobs.append( Calamares::job_ptr( j ) ); - j = new SetHostNameJob( m_widget->getHostname(), m_actions ); + j = new SetHostNameJob( m_config->hostName(), m_actions ); m_jobs.append( Calamares::job_ptr( j ) ); } diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index b778647d8..4aefa9981 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -127,7 +127,7 @@ - + 0 @@ -226,7 +226,7 @@ - + 0 From 630a50804973d103f5ed70cfeb2d2a604bc0fa82 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 17:26:07 +0200 Subject: [PATCH 096/399] [users] Hack - create the widget anyway - since the configuration is in the UI parts, we need the widget still to load the whole configuration (until the config object is complete). Create the widget before doing configuration; this is wrong. But now we don't hit nullptr derefs all over. --- src/modules/users/UsersViewStep.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index be6d61878..03256d419 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -161,6 +161,8 @@ UsersViewStep::onLeave() void UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { + // Create the widget, after all .. as long as writing configuration to the UI is needed + (void)this->widget(); using CalamaresUtils::getBool; if ( configurationMap.contains( "defaultGroups" ) From d4a784f52186e5310440095a91506a9aae5ccf68 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 17:52:46 +0200 Subject: [PATCH 097/399] [users] Hook up full name to Config --- src/modules/users/Config.cpp | 20 +++++++++++++++---- src/modules/users/Config.h | 8 ++++---- src/modules/users/UsersPage.cpp | 34 +++++++++++---------------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 24b14faf1..d4fdb16c5 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -166,14 +166,26 @@ makeHostnameSuggestion( const QStringList& parts ) } void -Config::setUserName( const QString& name ) +Config::setFullName( const QString& name ) { - // TODO: handle "empty" case - // TODO: rename to "FullName" + if ( name.isEmpty() && !m_fullName.isEmpty() ) + { + if ( !m_customHostName ) + { + setHostName( name ); + } + if ( !m_customLoginName ) + { + setLoginName( name ); + } + m_fullName = name; + emit fullNameChanged( name ); + } + if ( name != m_fullName ) { m_fullName = name; - emit userNameChanged( name ); + emit fullNameChanged( name ); // Build login and hostname, if needed QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive ); diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 59f0e8d68..6a5ff0105 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -33,7 +33,7 @@ class Config : public QObject Q_PROPERTY( QString autologinGroup READ autologinGroup WRITE setAutologinGroup NOTIFY autologinGroupChanged ) Q_PROPERTY( QString sudoersGroup READ sudoersGroup WRITE setSudoersGroup NOTIFY sudoersGroupChanged ) - Q_PROPERTY( QString userName READ userName WRITE setUserName NOTIFY userNameChanged ) + Q_PROPERTY( QString fullName READ fullName WRITE setFullName NOTIFY fullNameChanged ) Q_PROPERTY( QString loginName READ loginName WRITE setLoginName NOTIFY loginNameChanged ) Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) @@ -57,7 +57,7 @@ public: QString sudoersGroup() const { return m_sudoersGroup; } /// The full (GECOS) name of the user - QString userName() const { return m_fullName; } + QString fullName() const { return m_fullName; } /// The login name of the user QString loginName() const { return m_loginName; } @@ -81,7 +81,7 @@ public Q_SLOTS: void setSudoersGroup( const QString& group ); /// Sets the full name, may guess a loginName - void setUserName( const QString& name ); + void setFullName( const QString& name ); /// Sets the login name (flags it as "custom") void setLoginName( const QString& login ); @@ -92,7 +92,7 @@ signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); void sudoersGroupChanged( const QString& ); - void userNameChanged( const QString& ); + void fullNameChanged( const QString& ); void loginNameChanged( const QString& ); void hostNameChanged( const QString& ); diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 60afa1bb3..ee2719091 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -92,7 +92,6 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) ui->setupUi( this ); // Connect signals and slots - connect( ui->textBoxFullName, &QLineEdit::textEdited, this, &UsersPage::onFullNameTextEdited ); connect( ui->textBoxUserPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxRootPassword, &QLineEdit::textChanged, this, &UsersPage::onRootPasswordTextChanged ); @@ -121,7 +120,10 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) checkReady( isReady() ); } ); - connect( ui->textBoxHostName, &QLineEdit::textEdited, config, &Config::setHostName); + connect( ui->textBoxFullName, &QLineEdit::textEdited, config, &Config::setFullName ); + connect( config, &Config::fullNameChanged, this, &UsersPage::onFullNameTextEdited ); + + connect( ui->textBoxHostName, &QLineEdit::textEdited, config, &Config::setHostName ); connect( config, &Config::hostNameChanged, ui->textBoxHostName, &QLineEdit::setText ); connect( config, &Config::hostNameChanged, this, &UsersPage::validateHostnameText ); @@ -150,14 +152,14 @@ UsersPage::retranslate() if ( Calamares::Settings::instance()->isSetupMode() ) { ui->textBoxLoginName->setToolTip( tr( "If more than one person will " - "use this computer, you can create multiple " - "accounts after setup." ) ); + "use this computer, you can create multiple " + "accounts after setup." ) ); } else { ui->textBoxLoginName->setToolTip( tr( "If more than one person will " - "use this computer, you can create multiple " - "accounts after installation." ) ); + "use this computer, you can create multiple " + "accounts after installation." ) ); } // Re-do password checks (with output messages) as well. // .. the password-checking methods get their values from the text boxes, @@ -218,8 +220,7 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) Calamares::Job* j; j = new CreateUserJob( m_config->loginName(), - m_config->userName().isEmpty() ? m_config->loginName() - : m_config->userName(), + m_config->fullName().isEmpty() ? m_config->loginName() : m_config->fullName(), ui->checkBoxAutoLogin->isChecked(), defaultGroupsList ); list.append( Calamares::job_ptr( j ) ); @@ -265,16 +266,6 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) { ui->labelFullNameError->clear(); ui->labelFullName->clear(); -#if 0 - if ( !m_customUsername ) - { - ui->textBoxUsername->clear(); - } - if ( !m_customHostname ) - { - ui->textBoxHostname->clear(); - } -#endif m_readyFullName = false; } else @@ -287,7 +278,6 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) } - void UsersPage::validateUsernameText( const QString& textRef ) { @@ -321,11 +311,9 @@ UsersPage::validateUsernameText( const QString& textRef ) tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ) ); m_readyUsername = false; } - else if ( 0 == QString::compare("root", text, Qt::CaseSensitive ) ) + else if ( 0 == QString::compare( "root", text, Qt::CaseSensitive ) ) { - labelError( ui->labelUsername, - ui->labelUsernameError, - tr( "'root' is not allowed as user name." ) ); + labelError( ui->labelUsername, ui->labelUsernameError, tr( "'root' is not allowed as user name." ) ); m_readyUsername = false; } else From a564d7a753bafd95037cf5f75f0ca4326f3acc31 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 27 Jul 2020 17:14:06 +0200 Subject: [PATCH 098/399] [users] Fix build on Linux --- src/modules/users/CreateUserJob.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index beb454ac0..a6812dd53 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -121,10 +121,10 @@ createUser( const QString& loginName, const QString& fullName, const QString& sh << "-U"; if ( !shell.isEmpty() ) { - useradd << "-s" << shell; + useraddCommand << "-s" << shell; } - useradd << "-c" << fullName; - useradd << loginName; + useraddCommand << "-c" << fullName; + useraddCommand << loginName; #endif auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useraddCommand ); From 40d7d1baac94703063d6ef57c4d515d17373fd68 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 10:21:23 +0200 Subject: [PATCH 099/399] [users] Move login validation to Config object - add a loginNameStatus which is a QString (empty if things are ok) stating what's wrong with the loginName, if anything. --- src/modules/users/Config.cpp | 58 ++++++++++++++++++++++++++++++--- src/modules/users/Config.h | 6 ++++ src/modules/users/UsersPage.cpp | 57 +++++++++----------------------- src/modules/users/UsersPage.h | 2 +- 4 files changed, 77 insertions(+), 46 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index d4fdb16c5..03ae60b2f 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -28,6 +28,10 @@ #include #include +#include + +static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); +static constexpr const int USERNAME_MAX_LENGTH = 31; Config::Config( QObject* parent ) : QObject( parent ) @@ -49,7 +53,7 @@ Config::setUserShell( const QString& shell ) } static inline void -setGS( const QString& key, const QString& group ) +insertInGlobalStorage( const QString& key, const QString& group ) { auto* gs = Calamares::JobQueue::instance()->globalStorage(); if ( !gs || group.isEmpty() ) @@ -62,14 +66,14 @@ setGS( const QString& key, const QString& group ) void Config::setAutologinGroup( const QString& group ) { - setGS( QStringLiteral( "autologinGroup" ), group ); + insertInGlobalStorage( QStringLiteral( "autologinGroup" ), group ); emit autologinGroupChanged( group ); } void Config::setSudoersGroup( const QString& group ) { - setGS( QStringLiteral( "sudoersGroup" ), group ); + insertInGlobalStorage( QStringLiteral( "sudoersGroup" ), group ); emit sudoersGroupChanged( group ); } @@ -82,9 +86,55 @@ Config::setLoginName( const QString& login ) m_customLoginName = !login.isEmpty(); m_loginName = login; emit loginNameChanged( login ); + emit loginNameStatusChanged( loginNameStatus() ); } } +const QStringList& +Config::forbiddenLoginNames() +{ + static QStringList forbidden { "root" }; + return forbidden; +} + +QString +Config::loginNameStatus() const +{ + // An empty login is "ok", even if it isn't really + if ( m_loginName.isEmpty() ) + { + return QString(); + } + + QRegExpValidator validateEntireLoginName( USERNAME_RX ); + QRegExpValidator validateFirstLetter( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator + int pos = -1; + + if ( m_loginName.length() > USERNAME_MAX_LENGTH ) + { + return tr( "Your username is too long." ); + } + QString login( m_loginName ); // make a copy because validate() doesn't take const& + if ( validateFirstLetter.validate( login, pos ) == QValidator::Invalid ) + { + return tr( "Your username must start with a lowercase letter or underscore." ); + } + if ( validateEntireLoginName.validate( login, pos ) == QValidator::Invalid ) + { + return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ); + } + + for ( const QString& badName : forbiddenLoginNames() ) + { + if ( 0 == QString::compare( badName, m_loginName, Qt::CaseSensitive ) ) + { + return tr( "'%1' is not allowed as user name." ).arg( badName ); + } + } + + return QString(); +} + void Config::setHostName( const QString& host ) { @@ -133,7 +183,6 @@ guessProductName() static QString makeLoginNameSuggestion( const QStringList& parts ) { - static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); if ( parts.isEmpty() || parts.first().isEmpty() ) { return QString(); @@ -199,6 +248,7 @@ Config::setFullName( const QString& name ) { m_loginName = login; emit loginNameChanged( login ); + emit loginNameStatusChanged( loginNameStatus() ); } } if ( !m_customHostName ) diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 6a5ff0105..91a494619 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -35,6 +35,7 @@ class Config : public QObject Q_PROPERTY( QString fullName READ fullName WRITE setFullName NOTIFY fullNameChanged ) Q_PROPERTY( QString loginName READ loginName WRITE setLoginName NOTIFY loginNameChanged ) + Q_PROPERTY( QString loginNameStatus READ loginNameStatus NOTIFY loginNameStatusChanged ) Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) @@ -60,10 +61,14 @@ public: QString fullName() const { return m_fullName; } /// The login name of the user QString loginName() const { return m_loginName; } + /// Status message about login -- empty for "ok" + QString loginNameStatus() const; /// The host name (name for the system) QString hostName() const { return m_hostName; } + static const QStringList& forbiddenLoginNames(); + public Q_SLOTS: /** @brief Sets the user's shell if possible * @@ -94,6 +99,7 @@ signals: void sudoersGroupChanged( const QString& ); void fullNameChanged( const QString& ); void loginNameChanged( const QString& ); + void loginNameStatusChanged( const QString& ); void hostNameChanged( const QString& ); private: diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index ee2719091..cc940502e 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -46,7 +46,6 @@ #include #include -static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); static constexpr const int USERNAME_MAX_LENGTH = 31; static constexpr const int HOSTNAME_MIN_LENGTH = 2; @@ -129,7 +128,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( ui->textBoxLoginName, &QLineEdit::textEdited, config, &Config::setLoginName ); connect( config, &Config::loginNameChanged, ui->textBoxLoginName, &QLineEdit::setText ); - connect( config, &Config::loginNameChanged, this, &UsersPage::validateUsernameText ); + connect( config, &Config::loginNameStatusChanged, this, &UsersPage::reportLoginNameStatus ); setWriteRootPassword( true ); ui->checkBoxReusePassword->setChecked( true ); @@ -277,55 +276,31 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) checkReady( isReady() ); } - void -UsersPage::validateUsernameText( const QString& textRef ) +UsersPage::reportLoginNameStatus( const QString& status ) { - QString text( textRef ); - QRegExpValidator val_whole( USERNAME_RX ); - QRegExpValidator val_start( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator - int pos = -1; - - if ( text.isEmpty() ) + if ( status.isEmpty() ) { - ui->labelUsernameError->clear(); - ui->labelUsername->clear(); - m_readyUsername = false; - } - else if ( text.length() > USERNAME_MAX_LENGTH ) - { - labelError( ui->labelUsername, ui->labelUsernameError, tr( "Your username is too long." ) ); - m_readyUsername = false; - } - else if ( val_start.validate( text, pos ) == QValidator::Invalid ) - { - labelError( ui->labelUsername, - ui->labelUsernameError, - tr( "Your username must start with a lowercase letter or underscore." ) ); - m_readyUsername = false; - } - else if ( val_whole.validate( text, pos ) == QValidator::Invalid ) - { - labelError( ui->labelUsername, - ui->labelUsernameError, - tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ) ); - m_readyUsername = false; - } - else if ( 0 == QString::compare( "root", text, Qt::CaseSensitive ) ) - { - labelError( ui->labelUsername, ui->labelUsernameError, tr( "'root' is not allowed as user name." ) ); - m_readyUsername = false; + if ( m_config->loginName().isEmpty() ) + { + ui->labelUsernameError->clear(); + ui->labelUsername->clear(); + m_readyUsername = false; + } + else + { + labelOk( ui->labelUsername, ui->labelUsernameError ); + m_readyUsername = true; + } } else { - labelOk( ui->labelUsername, ui->labelUsernameError ); - m_readyUsername = true; + labelError( ui->labelUsername, ui->labelUsernameError, status ); + m_readyUsername = false; } - emit checkReady( isReady() ); } - void UsersPage::validateHostnameText( const QString& textRef ) { diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index ac5701b2d..7cf83100c 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -72,7 +72,7 @@ public: protected slots: void onFullNameTextEdited( const QString& ); - void validateUsernameText( const QString& ); + void reportLoginNameStatus( const QString& ); void validateHostnameText( const QString& ); void onPasswordTextChanged( const QString& ); void onRootPasswordTextChanged( const QString& ); From 9018913af53b97acb3bc6eb1a749ec78448b84e9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 10:45:38 +0200 Subject: [PATCH 100/399] [users] Move hostname validation to Config --- src/modules/users/Config.cpp | 73 ++++++++++++++++++++++----- src/modules/users/Config.h | 5 ++ src/modules/users/UsersPage.cpp | 89 +++++++++++---------------------- src/modules/users/UsersPage.h | 2 +- 4 files changed, 97 insertions(+), 72 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 03ae60b2f..bc1113672 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -33,6 +33,10 @@ static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); static constexpr const int USERNAME_MAX_LENGTH = 31; +static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); +static constexpr const int HOSTNAME_MIN_LENGTH = 2; +static constexpr const int HOSTNAME_MAX_LENGTH = 63; + Config::Config( QObject* parent ) : QObject( parent ) { @@ -106,15 +110,22 @@ Config::loginNameStatus() const return QString(); } - QRegExpValidator validateEntireLoginName( USERNAME_RX ); - QRegExpValidator validateFirstLetter( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator - int pos = -1; - if ( m_loginName.length() > USERNAME_MAX_LENGTH ) { return tr( "Your username is too long." ); } + for ( const QString& badName : forbiddenLoginNames() ) + { + if ( 0 == QString::compare( badName, m_loginName, Qt::CaseSensitive ) ) + { + return tr( "'%1' is not allowed as username." ).arg( badName ); + } + } + QString login( m_loginName ); // make a copy because validate() doesn't take const& + QRegExpValidator validateEntireLoginName( USERNAME_RX ); + QRegExpValidator validateFirstLetter( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator + int pos = -1; if ( validateFirstLetter.validate( login, pos ) == QValidator::Invalid ) { return tr( "Your username must start with a lowercase letter or underscore." ); @@ -124,14 +135,6 @@ Config::loginNameStatus() const return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ); } - for ( const QString& badName : forbiddenLoginNames() ) - { - if ( 0 == QString::compare( badName, m_loginName, Qt::CaseSensitive ) ) - { - return tr( "'%1' is not allowed as user name." ).arg( badName ); - } - } - return QString(); } @@ -143,9 +146,54 @@ Config::setHostName( const QString& host ) m_customHostName = !host.isEmpty(); m_hostName = host; emit hostNameChanged( host ); + emit hostNameStatusChanged( hostNameStatus() ); } } +const QStringList& +Config::forbiddenHostNames() +{ + static QStringList forbidden { "localhost" }; + return forbidden; +} + +QString +Config::hostNameStatus() const +{ + // An empty hostname is "ok", even if it isn't really + if ( m_hostName.isEmpty() ) + { + return QString(); + } + + if ( m_hostName.length() < HOSTNAME_MIN_LENGTH ) + { + return tr( "Your hostname is too short." ); + } + if ( m_hostName.length() > HOSTNAME_MAX_LENGTH ) + { + return tr( "Your hostname is too long." ); + } + for ( const QString& badName : forbiddenHostNames() ) + { + if ( 0 == QString::compare( badName, m_hostName, Qt::CaseSensitive ) ) + { + return tr( "'%1' is not allowed as hostname." ).arg( badName ); + } + } + + QString text = m_hostName; + QRegExpValidator val( HOSTNAME_RX ); + int pos = -1; + + if ( val.validate( text, pos ) == QValidator::Invalid ) + { + return tr( "Only letters, numbers, underscore and hyphen are allowed." ); + } + + return QString(); +} + /** @brief Guess the machine's name * @@ -258,6 +306,7 @@ Config::setFullName( const QString& name ) { m_hostName = hostname; emit hostNameChanged( hostname ); + emit hostNameStatusChanged( hostNameStatus() ); } } } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 91a494619..824b70ba8 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -38,6 +38,7 @@ class Config : public QObject Q_PROPERTY( QString loginNameStatus READ loginNameStatus NOTIFY loginNameStatusChanged ) Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) + Q_PROPERTY( QString hostNameStatus READ hostNameStatus NOTIFY hostNameStatusChanged ) public: Config( QObject* parent = nullptr ); @@ -66,8 +67,11 @@ public: /// The host name (name for the system) QString hostName() const { return m_hostName; } + /// Status message about hostname -- empty for "ok" + QString hostNameStatus() const; static const QStringList& forbiddenLoginNames(); + static const QStringList& forbiddenHostNames(); public Q_SLOTS: /** @brief Sets the user's shell if possible @@ -101,6 +105,7 @@ signals: void loginNameChanged( const QString& ); void loginNameStatusChanged( const QString& ); void hostNameChanged( const QString& ); + void hostNameStatusChanged( const QString& ); private: QString m_userShell; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index cc940502e..7983e29ea 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -46,11 +46,6 @@ #include #include -static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); -static constexpr const int USERNAME_MAX_LENGTH = 31; -static constexpr const int HOSTNAME_MIN_LENGTH = 2; -static constexpr const int HOSTNAME_MAX_LENGTH = 63; - /** @brief How bad is the error for labelError() ? */ enum class Badness { @@ -77,6 +72,32 @@ labelOk( QLabel* pix, QLabel* label ) pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, label->size() ) ); } +/** Indicate error, update @p ok based on @p status */ +static inline void +labelStatus( QLabel* pix, QLabel* label, const QString& value, const QString& status, bool& ok ) +{ + if ( status.isEmpty() ) + { + if ( value.isEmpty() ) + { + // This is different from labelOK() because no checkmark is shown + label->clear(); + pix->clear(); + ok = false; + } + else + { + labelOk( pix, label ); + ok = true; + } + } + else + { + labelError( pix, label, status ); + ok = false; + } +} + UsersPage::UsersPage( Config* config, QWidget* parent ) : QWidget( parent ) , ui( new Ui::Page_UserSetup ) @@ -124,7 +145,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( ui->textBoxHostName, &QLineEdit::textEdited, config, &Config::setHostName ); connect( config, &Config::hostNameChanged, ui->textBoxHostName, &QLineEdit::setText ); - connect( config, &Config::hostNameChanged, this, &UsersPage::validateHostnameText ); + connect( config, &Config::hostNameStatusChanged, this, &UsersPage::reportHostNameStatus ); connect( ui->textBoxLoginName, &QLineEdit::textEdited, config, &Config::setLoginName ); connect( config, &Config::loginNameChanged, ui->textBoxLoginName, &QLineEdit::setText ); @@ -279,64 +300,14 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) void UsersPage::reportLoginNameStatus( const QString& status ) { - if ( status.isEmpty() ) - { - if ( m_config->loginName().isEmpty() ) - { - ui->labelUsernameError->clear(); - ui->labelUsername->clear(); - m_readyUsername = false; - } - else - { - labelOk( ui->labelUsername, ui->labelUsernameError ); - m_readyUsername = true; - } - } - else - { - labelError( ui->labelUsername, ui->labelUsernameError, status ); - m_readyUsername = false; - } + labelStatus( ui->labelUsername, ui->labelUsernameError, m_config->loginName(), status, m_readyUsername ); emit checkReady( isReady() ); } void -UsersPage::validateHostnameText( const QString& textRef ) +UsersPage::reportHostNameStatus( const QString& status ) { - QString text = textRef; - QRegExpValidator val( HOSTNAME_RX ); - int pos = -1; - - if ( text.isEmpty() ) - { - ui->labelHostnameError->clear(); - ui->labelHostname->clear(); - m_readyHostname = false; - } - else if ( text.length() < HOSTNAME_MIN_LENGTH ) - { - labelError( ui->labelHostname, ui->labelHostnameError, tr( "Your hostname is too short." ) ); - m_readyHostname = false; - } - else if ( text.length() > HOSTNAME_MAX_LENGTH ) - { - labelError( ui->labelHostname, ui->labelHostnameError, tr( "Your hostname is too long." ) ); - m_readyHostname = false; - } - else if ( val.validate( text, pos ) == QValidator::Invalid ) - { - labelError( ui->labelHostname, - ui->labelHostnameError, - tr( "Only letters, numbers, underscore and hyphen are allowed." ) ); - m_readyHostname = false; - } - else - { - labelOk( ui->labelHostname, ui->labelHostnameError ); - m_readyHostname = true; - } - + labelStatus( ui->labelHostname, ui->labelHostnameError, m_config->hostName(), status, m_readyHostname ); emit checkReady( isReady() ); } diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 7cf83100c..7e0830dc0 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -73,7 +73,7 @@ public: protected slots: void onFullNameTextEdited( const QString& ); void reportLoginNameStatus( const QString& ); - void validateHostnameText( const QString& ); + void reportHostNameStatus( const QString& ); void onPasswordTextChanged( const QString& ); void onRootPasswordTextChanged( const QString& ); From 0813ec33278381cf3bc4bcd0f3508a3514699001 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 10:49:12 +0200 Subject: [PATCH 101/399] [users] Misc cleanups - unused includes - avoid "my--pc" .. the dash is inserted by makeHostnameSuggestion() --- src/modules/users/Config.cpp | 2 +- src/modules/users/UsersPage.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index bc1113672..9a9ebe693 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -221,7 +221,7 @@ guessProductName() } if ( dmiProduct.isEmpty() ) { - dmiProduct = QStringLiteral( "-pc" ); + dmiProduct = QStringLiteral( "pc" ); } tried = true; } diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 7983e29ea..af5a1391e 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -43,8 +43,6 @@ #include #include #include -#include -#include /** @brief How bad is the error for labelError() ? */ enum class Badness From 6c930af5cbe760305fb559874043d6da4f7af02e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 11:18:07 +0200 Subject: [PATCH 102/399] [users] Use convenience method for labeling Full Name --- src/modules/users/UsersPage.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index af5a1391e..0877bf0e3 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -278,20 +278,9 @@ UsersPage::setWriteRootPassword( bool write ) void -UsersPage::onFullNameTextEdited( const QString& textRef ) +UsersPage::onFullNameTextEdited( const QString& fullName ) { - if ( textRef.isEmpty() ) - { - ui->labelFullNameError->clear(); - ui->labelFullName->clear(); - m_readyFullName = false; - } - else - { - ui->labelFullName->setPixmap( - CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, ui->labelFullName->size() ) ); - m_readyFullName = true; - } + labelStatus( ui->labelFullName, ui->labelFullNameError, fullName, QString(), m_readyFullName ); checkReady( isReady() ); } From 45b71c24e771d69d22699337bbd030590eb1ed4f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 11:41:52 +0200 Subject: [PATCH 103/399] [users] Move autologin setting to Config --- src/modules/users/Config.cpp | 12 ++++++++++++ src/modules/users/Config.h | 11 +++++++++++ src/modules/users/UsersPage.cpp | 16 +++++++--------- src/modules/users/UsersPage.h | 1 - src/modules/users/UsersViewStep.cpp | 1 - src/modules/users/page_usersetup.ui | 2 +- 6 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 9a9ebe693..f245aa866 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -312,6 +312,16 @@ Config::setFullName( const QString& name ) } } +void +Config::setAutoLogin( bool b ) +{ + if ( b != m_doAutoLogin ) + { + m_doAutoLogin = b; + emit autoLoginChanged( b ); + } +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { @@ -325,4 +335,6 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) setAutologinGroup( CalamaresUtils::getString( configurationMap, "autologinGroup" ) ); setSudoersGroup( CalamaresUtils::getString( configurationMap, "sudoersGroup" ) ); + + m_doAutoLogin = CalamaresUtils::getBool( configurationMap, "doAutologin", false ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 824b70ba8..e7ab8a736 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -33,6 +33,8 @@ class Config : public QObject Q_PROPERTY( QString autologinGroup READ autologinGroup WRITE setAutologinGroup NOTIFY autologinGroupChanged ) Q_PROPERTY( QString sudoersGroup READ sudoersGroup WRITE setSudoersGroup NOTIFY sudoersGroupChanged ) + Q_PROPERTY( bool doAutoLogin READ doAutoLogin WRITE setAutoLogin NOTIFY autoLoginChanged ) + Q_PROPERTY( QString fullName READ fullName WRITE setFullName NOTIFY fullNameChanged ) Q_PROPERTY( QString loginName READ loginName WRITE setLoginName NOTIFY loginNameChanged ) Q_PROPERTY( QString loginNameStatus READ loginNameStatus NOTIFY loginNameStatusChanged ) @@ -70,6 +72,9 @@ public: /// Status message about hostname -- empty for "ok" QString hostNameStatus() const; + /// Should the user be automatically logged-in? + bool doAutoLogin() const { return m_doAutoLogin; } + static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); @@ -97,6 +102,9 @@ public Q_SLOTS: /// Sets the host name (flags it as "custom") void setHostName( const QString& host ); + /// Sets the autologin flag + void setAutoLogin( bool b ); + signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); @@ -106,6 +114,7 @@ signals: void loginNameStatusChanged( const QString& ); void hostNameChanged( const QString& ); void hostNameStatusChanged( const QString& ); + void autoLoginChanged( bool ); private: QString m_userShell; @@ -114,6 +123,8 @@ private: QString m_fullName; QString m_loginName; QString m_hostName; + bool m_doAutoLogin = false; + bool m_customLoginName = false; bool m_customHostName = false; }; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 0877bf0e3..c9eb227e7 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -149,6 +149,11 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( config, &Config::loginNameChanged, ui->textBoxLoginName, &QLineEdit::setText ); connect( config, &Config::loginNameStatusChanged, this, &UsersPage::reportLoginNameStatus ); + connect( ui->checkBoxDoAutoLogin, &QCheckBox::stateChanged, this, [this]( int checked ) { + m_config->setAutoLogin( checked != Qt::Unchecked ); + } ); + connect( config, &Config::autoLoginChanged, ui->checkBoxDoAutoLogin, &QCheckBox::setChecked ); + setWriteRootPassword( true ); ui->checkBoxReusePassword->setChecked( true ); ui->checkBoxValidatePassword->setChecked( true ); @@ -239,7 +244,7 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) Calamares::Job* j; j = new CreateUserJob( m_config->loginName(), m_config->fullName().isEmpty() ? m_config->loginName() : m_config->fullName(), - ui->checkBoxAutoLogin->isChecked(), + m_config->doAutoLogin(), defaultGroupsList ); list.append( Calamares::job_ptr( j ) ); @@ -248,7 +253,7 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); } gs->insert( "hostname", m_config->hostName() ); - if ( ui->checkBoxAutoLogin->isChecked() ) + if ( m_config->doAutoLogin() ) { gs->insert( "autologinUser", m_config->loginName() ); } @@ -378,13 +383,6 @@ UsersPage::setValidatePasswordDefault( bool checked ) emit checkReady( isReady() ); } -void -UsersPage::setAutologinDefault( bool checked ) -{ - ui->checkBoxAutoLogin->setChecked( checked ); - emit checkReady( isReady() ); -} - void UsersPage::setReusePasswordDefault( bool checked ) { diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 7e0830dc0..7cd522498 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -54,7 +54,6 @@ public: void setWriteRootPassword( bool show ); void setPasswordCheckboxVisible( bool visible ); void setValidatePasswordDefault( bool checked ); - void setAutologinDefault( bool checked ); void setReusePasswordDefault( bool checked ); /** @brief Process entries in the passwordRequirements config entry diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 03256d419..0826b8a28 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -180,7 +180,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", setRootPassword ); m_widget->setWriteRootPassword( setRootPassword ); - m_widget->setAutologinDefault( getBool( configurationMap, "doAutologin", false ) ); m_widget->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) ); if ( configurationMap.contains( "passwordRequirements" ) diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index 4aefa9981..d880673b8 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -456,7 +456,7 @@ - + Log in automatically without asking for the password. From 6a03bcb25e19285b0aa8432857c8d6f11db1ab27 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 11:59:53 +0200 Subject: [PATCH 104/399] [users] Move setRootPassword to Config - this really controls whether a root password is written during installtion, so rename to writeRootPassword in the code. --- src/modules/users/Config.cpp | 3 +++ src/modules/users/Config.h | 3 +++ src/modules/users/UsersPage.cpp | 42 ++++++++++------------------- src/modules/users/UsersPage.h | 3 --- src/modules/users/UsersViewStep.cpp | 4 --- 5 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index f245aa866..1219c2a3c 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -337,4 +337,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) setSudoersGroup( CalamaresUtils::getString( configurationMap, "sudoersGroup" ) ); m_doAutoLogin = CalamaresUtils::getBool( configurationMap, "doAutologin", false ); + + m_writeRootPassword = CalamaresUtils::getBool( configurationMap, "setRootPassword", true ); + Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", m_writeRootPassword ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index e7ab8a736..d32ddc8f2 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -74,6 +74,8 @@ public: /// Should the user be automatically logged-in? bool doAutoLogin() const { return m_doAutoLogin; } + /// Should the root password be written (if false, no password is set and the root account is disabled for login) + bool writeRootPassword() const { return m_writeRootPassword; } static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); @@ -124,6 +126,7 @@ private: QString m_loginName; QString m_hostName; bool m_doAutoLogin = false; + bool m_writeRootPassword = true; bool m_customLoginName = false; bool m_customHostName = false; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index c9eb227e7..268e6099e 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -105,7 +105,6 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) , m_readyHostname( false ) , m_readyPassword( false ) , m_readyRootPassword( false ) - , m_writeRootPassword( true ) { ui->setupUi( this ); @@ -119,22 +118,19 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) onRootPasswordTextChanged( ui->textBoxRootPassword->text() ); checkReady( isReady() ); } ); - connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( const int checked ) { /* When "reuse" is checked, hide the fields for explicitly * entering the root password. However, if we're going to * disable the root password anyway, hide them all regardless of * the checkbox -- so when writeRoot is false, checked needs * to be true, to hide them all. */ - if ( !m_writeRootPassword ) - { - checked = true; - } - ui->labelChooseRootPassword->setVisible( !checked ); - ui->labelRootPassword->setVisible( !checked ); - ui->labelRootPasswordError->setVisible( !checked ); - ui->textBoxRootPassword->setVisible( !checked ); - ui->textBoxVerifiedRootPassword->setVisible( !checked ); + const bool visible = m_config->writeRootPassword() ? !checked : false; + ui->labelChooseRootPassword->setVisible( visible ); + ui->labelRootPassword->setVisible( visible ); + ui->labelRootPasswordError->setVisible( visible ); + ui->textBoxRootPassword->setVisible( visible ); + ui->textBoxVerifiedRootPassword->setVisible( visible ); checkReady( isReady() ); } ); @@ -154,7 +150,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) } ); connect( config, &Config::autoLoginChanged, ui->checkBoxDoAutoLogin, &QCheckBox::setChecked ); - setWriteRootPassword( true ); + ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); ui->checkBoxReusePassword->setChecked( true ); ui->checkBoxValidatePassword->setChecked( true ); @@ -196,18 +192,16 @@ bool UsersPage::isReady() { bool readyFields = m_readyFullName && m_readyHostname && m_readyPassword && m_readyUsername; - if ( !m_writeRootPassword || ui->checkBoxReusePassword->isChecked() ) - { - return readyFields; - } - - return readyFields && m_readyRootPassword; + // If we're going to write a root password, we need a valid one (or reuse the user's password) + readyFields + &= m_config->writeRootPassword() ? ( m_readyRootPassword || ui->checkBoxReusePassword->isChecked() ) : true; + return readyFields; } QString UsersPage::getRootPassword() const { - if ( m_writeRootPassword ) + if ( m_config->writeRootPassword() ) { if ( ui->checkBoxReusePassword->isChecked() ) { @@ -248,7 +242,7 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) defaultGroupsList ); list.append( Calamares::job_ptr( j ) ); - if ( m_writeRootPassword ) + if ( m_config->writeRootPassword() ) { gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); } @@ -274,14 +268,6 @@ UsersPage::onActivate() } -void -UsersPage::setWriteRootPassword( bool write ) -{ - m_writeRootPassword = write; - ui->checkBoxReusePassword->setVisible( write ); -} - - void UsersPage::onFullNameTextEdited( const QString& fullName ) { diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 7cd522498..35f7f0938 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -51,7 +51,6 @@ public: void onActivate(); - void setWriteRootPassword( bool show ); void setPasswordCheckboxVisible( bool visible ); void setValidatePasswordDefault( bool checked ); void setReusePasswordDefault( bool checked ); @@ -101,8 +100,6 @@ private: bool m_readyHostname; bool m_readyPassword; bool m_readyRootPassword; - - bool m_writeRootPassword; }; #endif // USERSPAGE_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 0826b8a28..713811246 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -176,10 +176,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_defaultGroups = QStringList { "lp", "video", "network", "storage", "wheel", "audio" }; } - bool setRootPassword = getBool( configurationMap, "setRootPassword", true ); - Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", setRootPassword ); - - m_widget->setWriteRootPassword( setRootPassword ); m_widget->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) ); if ( configurationMap.contains( "passwordRequirements" ) From cc2e3f79ff045cd577ebc28e8f89c19350aadd58 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 12:16:03 +0200 Subject: [PATCH 105/399] [users] Move job creation from widget to viewstep - This is a half-step: the ViewStep shouldn't do job creation either, eventually it needs to be the Config object, but this is better than asking the widget (UI) to create some jobs. - When updating login- or host-name, or the autologin setting, set it in GS as well. This is a minor improvement over doing it only when leaving the page. - Since the Config object isn't complete, there are leftovers in the widget, which has a fillGlobalStorage() for the not-jobs-related bits previously in createJobs(). --- src/modules/users/Config.cpp | 29 ++++++++++++++++++++++++++++ src/modules/users/UsersPage.cpp | 30 +++++------------------------ src/modules/users/UsersPage.h | 5 ++--- src/modules/users/UsersViewStep.cpp | 10 ++++++++-- 4 files changed, 44 insertions(+), 30 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 1219c2a3c..bb739cbd1 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -87,6 +87,16 @@ Config::setLoginName( const QString& login ) { if ( login != m_loginName ) { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( login.isEmpty() ) + { + gs->remove( "username" ); + } + else + { + gs->insert( "username", login ); + } + m_customLoginName = !login.isEmpty(); m_loginName = login; emit loginNameChanged( login ); @@ -143,6 +153,16 @@ Config::setHostName( const QString& host ) { if ( host != m_hostName ) { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( host.isEmpty() ) + { + gs->remove( "hostname" ); + } + else + { + gs->insert( "hostname", host ); + } + m_customHostName = !host.isEmpty(); m_hostName = host; emit hostNameChanged( host ); @@ -317,6 +337,15 @@ Config::setAutoLogin( bool b ) { if ( b != m_doAutoLogin ) { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( b ) + { + gs->insert( "autologinUser", loginName() ); + } + else + { + gs->remove( "autologinUser" ); + } m_doAutoLogin = b; emit autoLoginChanged( b ); } diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 268e6099e..c4502256a 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -24,12 +24,9 @@ */ #include "UsersPage.h" -#include "ui_page_usersetup.h" #include "Config.h" -#include "CreateUserJob.h" -#include "SetHostNameJob.h" -#include "SetPasswordJob.h" +#include "ui_page_usersetup.h" #include "GlobalStorage.h" #include "JobQueue.h" @@ -189,7 +186,7 @@ UsersPage::retranslate() bool -UsersPage::isReady() +UsersPage::isReady() const { bool readyFields = m_readyFullName && m_readyHostname && m_readyPassword && m_readyUsername; // If we're going to write a root password, we need a valid one (or reuse the user's password) @@ -224,38 +221,21 @@ UsersPage::getUserPassword() const return QPair< QString, QString >( m_config->loginName(), ui->textBoxUserPassword->text() ); } -QList< Calamares::job_ptr > -UsersPage::createJobs( const QStringList& defaultGroupsList ) +void +UsersPage::fillGlobalStorage() const { - QList< Calamares::job_ptr > list; if ( !isReady() ) { - return list; + return; } Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - Calamares::Job* j; - j = new CreateUserJob( m_config->loginName(), - m_config->fullName().isEmpty() ? m_config->loginName() : m_config->fullName(), - m_config->doAutoLogin(), - defaultGroupsList ); - list.append( Calamares::job_ptr( j ) ); - if ( m_config->writeRootPassword() ) { gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); } - gs->insert( "hostname", m_config->hostName() ); - if ( m_config->doAutoLogin() ) - { - gs->insert( "autologinUser", m_config->loginName() ); - } - - gs->insert( "username", m_config->loginName() ); gs->insert( "password", CalamaresUtils::obscure( ui->textBoxUserPassword->text() ) ); - - return list; } diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 35f7f0938..b8cb0f06a 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -25,7 +25,6 @@ #define USERSPAGE_H #include "CheckPWQuality.h" -#include "Job.h" #include @@ -45,9 +44,9 @@ public: explicit UsersPage( Config* config, QWidget* parent = nullptr ); virtual ~UsersPage(); - bool isReady(); + bool isReady() const; - Calamares::JobList createJobs( const QStringList& defaultGroupsList ); + void fillGlobalStorage() const; void onActivate(); diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 713811246..ddaf4837b 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -21,6 +21,7 @@ #include "UsersViewStep.h" #include "Config.h" +#include "CreateUserJob.h" #include "SetHostNameJob.h" #include "SetPasswordJob.h" #include "UsersPage.h" @@ -138,13 +139,16 @@ void UsersViewStep::onLeave() { m_jobs.clear(); - if ( !m_widget ) + if ( !m_widget || !m_widget->isReady() ) { return; } - m_jobs.append( m_widget->createJobs( m_defaultGroups ) ); Calamares::Job* j; + j = new CreateUserJob( m_config->loginName(), + m_config->fullName().isEmpty() ? m_config->loginName() : m_config->fullName(), + m_config->doAutoLogin(), + m_defaultGroups ); auto userPW = m_widget->getUserPassword(); j = new SetPasswordJob( userPW.first, userPW.second ); @@ -155,6 +159,8 @@ UsersViewStep::onLeave() j = new SetHostNameJob( m_config->hostName(), m_actions ); m_jobs.append( Calamares::job_ptr( j ) ); + + m_widget->fillGlobalStorage(); } From b06498194e177a3067cb2d7d22bda6e8c5a8eb5e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 14:46:56 +0200 Subject: [PATCH 106/399] [machineid] Fix up schema - schema didn't allow recent (2019) configuration entries - remove mention of deprecated key from example config --- src/modules/machineid/machineid.conf | 2 -- src/modules/machineid/machineid.schema.yaml | 10 +++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modules/machineid/machineid.conf b/src/modules/machineid/machineid.conf index 97bd10a06..fa42655fd 100644 --- a/src/modules/machineid/machineid.conf +++ b/src/modules/machineid/machineid.conf @@ -15,8 +15,6 @@ dbus: true # Whether /var/lib/dbus/machine-id should be a symlink to /etc/machine-id # (ignored if dbus is false, or if there is no /etc/machine-id to point to). dbus-symlink: true -# this is a deprecated form of *dbus-symlink* -symlink: true # Whether to create an entropy file entropy: false diff --git a/src/modules/machineid/machineid.schema.yaml b/src/modules/machineid/machineid.schema.yaml index 588a7fa4e..c5eb55b1b 100644 --- a/src/modules/machineid/machineid.schema.yaml +++ b/src/modules/machineid/machineid.schema.yaml @@ -4,6 +4,10 @@ $id: https://calamares.io/schemas/machineid additionalProperties: false type: object properties: - "systemd": { type: boolean, default: true } - "dbus": { type: boolean, default: true } - "symlink": { type: boolean, default: true } + systemd: { type: boolean, default: true } + dbus: { type: boolean, default: true } + "dbus-symlink": { type: boolean, default: true } + entropy: { type: boolean, default: false } + "entropy-copy": { type: boolean, default: false } + # Deprecated properties + symlink: { type: boolean, default: true } From 9568fc082ff8e76d56cd6cb8548a50cbb01fdc6f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 14:59:36 +0200 Subject: [PATCH 107/399] [calamares] Try to reduce compile-churn with version header - Very rarely do we need the full-git-version of Calamares, so split that into a separate header with a little trickery. - In the "normal" version header, drop the full-git-version values. --- CMakeLists.txt | 6 +++++- src/calamares/CalamaresVersion.h.in | 2 +- src/calamares/CalamaresVersionX.h.in | 13 +++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/calamares/CalamaresVersionX.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b6f03fea..43ca1bc56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -537,7 +537,11 @@ if( CALAMARES_VERSION_RC ) set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} ) endif() -# additional info for non-release builds +# Additional info for non-release builds. The "extended" version information +# with date and git information (commit, dirty status) is used only +# by CalamaresVersionX.h, which is included by consumers that need a full +# version number with all that information; normal consumers can include +# CalamaresVersion.h with more stable numbers. if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" ) include( CMakeDateStamp ) set( CALAMARES_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" ) diff --git a/src/calamares/CalamaresVersion.h.in b/src/calamares/CalamaresVersion.h.in index 4ac7ee1d1..54a44888a 100644 --- a/src/calamares/CalamaresVersion.h.in +++ b/src/calamares/CalamaresVersion.h.in @@ -4,7 +4,7 @@ #cmakedefine CALAMARES_ORGANIZATION_NAME "${CALAMARES_ORGANIZATION_NAME}" #cmakedefine CALAMARES_ORGANIZATION_DOMAIN "${CALAMARES_ORGANIZATION_DOMAIN}" #cmakedefine CALAMARES_APPLICATION_NAME "${CALAMARES_APPLICATION_NAME}" -#cmakedefine CALAMARES_VERSION "${CALAMARES_VERSION}" +#cmakedefine CALAMARES_VERSION "${CALAMARES_VERSION_SHORT}" #cmakedefine CALAMARES_VERSION_SHORT "${CALAMARES_VERSION_SHORT}" #cmakedefine CALAMARES_VERSION_MAJOR "${CALAMARES_VERSION_MAJOR}" diff --git a/src/calamares/CalamaresVersionX.h.in b/src/calamares/CalamaresVersionX.h.in new file mode 100644 index 000000000..75b124c11 --- /dev/null +++ b/src/calamares/CalamaresVersionX.h.in @@ -0,0 +1,13 @@ +// Same as CalamaresVersion.h, but with a full-git-extended VERSION +// rather than the short (vM.m.p) semantic version. +#ifndef CALAMARES_VERSION_H + +// On purpose, do not define the guard, but let CalamaresVersion.h do it +// #define CALAMARES_VERSION_H + +#include "CalamaresVersion.h" + +#undef CALAMARES_VERSION +#cmakedefine CALAMARES_VERSION "${CALAMARES_VERSION}" + +#endif // CALAMARES_VERSION_H From 38b347f8f2c1d36063db564c6fdf12dd9c0d557a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 14:58:43 +0200 Subject: [PATCH 108/399] [libcalamares] Take ownership of the versioning headers - The sources were in src/calamares but processed and generated in libcalamares, which is weird at best. - Generate an "extended" version header. - Use the extended version in the logger and nowhere else. - While here, minor coding style cleanups The overall change here means that after running CMake, only Logger.cpp needs to be rebuilt (if the extended version has changed) and not a handful of other files that don't need the full version number, but do happen to include CalamaresVersion.h --- src/libcalamares/CMakeLists.txt | 4 +++- .../CalamaresVersion.h.in | 0 .../CalamaresVersionX.h.in | 0 src/libcalamares/utils/Logger.cpp | 14 ++++++-------- 4 files changed, 9 insertions(+), 9 deletions(-) rename src/{calamares => libcalamares}/CalamaresVersion.h.in (100%) rename src/{calamares => libcalamares}/CalamaresVersionX.h.in (100%) diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 56bacb32a..8e209f8a3 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -27,8 +27,10 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CalamaresConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/CalamaresConfig.h ) -configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../calamares/CalamaresVersion.h.in +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CalamaresVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/CalamaresVersion.h ) +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CalamaresVersionX.h.in + ${CMAKE_CURRENT_BINARY_DIR}/CalamaresVersionX.h ) set( OPTIONAL_PRIVATE_LIBRARIES "" ) set( OPTIONAL_PUBLIC_LIBRARIES "" ) diff --git a/src/calamares/CalamaresVersion.h.in b/src/libcalamares/CalamaresVersion.h.in similarity index 100% rename from src/calamares/CalamaresVersion.h.in rename to src/libcalamares/CalamaresVersion.h.in diff --git a/src/calamares/CalamaresVersionX.h.in b/src/libcalamares/CalamaresVersionX.h.in similarity index 100% rename from src/calamares/CalamaresVersionX.h.in rename to src/libcalamares/CalamaresVersionX.h.in diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 72885d53f..5a2149f44 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -3,6 +3,7 @@ * SPDX-FileCopyrightText: 2010-2011 Christian Muehlhaeuser * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * * Calamares is free software: you can redistribute it and/or modify @@ -18,15 +19,12 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "Logger.h" -#include -#include +#include "CalamaresVersionX.h" +#include "utils/Dirs.h" #include #include @@ -35,10 +33,10 @@ #include #include -#include "CalamaresVersion.h" -#include "utils/Dirs.h" +#include +#include -#define LOGFILE_SIZE 1024 * 256 +static constexpr const int LOGFILE_SIZE = 1024 * 256; static std::ofstream logfile; static unsigned int s_threshold = From bfa1f618c7aade57bd2c51b11293ecf4931c765e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 28 Jul 2020 17:36:10 +0200 Subject: [PATCH 109/399] CMake: Improve RCC version-checking Previously, we check for RCC support every single time CMake runs. This is slightly wasteful, and it wasn't being done right anyway. But it's moot because: - Calamares supports back to Qt 5.9 - Qt 5.9's version of rcc (at least, 5.9.7) **does** support the command-line argument `--format-version 1` - Everything newer does too. Simplify translations a little, too: just use autorcc rather than building things by hand. --- CMakeModules/CalamaresAddTranslations.cmake | 36 ++------------------- src/calamares/CMakeLists.txt | 4 +-- 2 files changed, 4 insertions(+), 36 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index bb15fb122..88992faf5 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -22,46 +22,14 @@ include( CMakeParseArguments ) -if( NOT _rcc_version_support_checked ) - set( _rcc_version_support_checked TRUE ) - - # Extract the executable name - get_property( _rcc_executable - TARGET ${Qt5Core_RCC_EXECUTABLE} - PROPERTY IMPORTED_LOCATION - ) - if( NOT _rcc_executable ) - # Weird, probably now uses Qt5::rcc which is wrong too - set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} ) - endif() - - # Try an empty RCC file with explicit format-version - execute_process( - COMMAND echo "" - COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list - - RESULT_VARIABLE _rcc_version_rv - ERROR_VARIABLE _rcc_version_dump - ) - if ( _rcc_version_rv EQUAL 0 ) - # Supported: force to the reproducible version - set( _rcc_version_support --format-version 1 ) - else() - # Older Qt versions (5.7, 5.8) don't support setting the - # rcc format-version, so won't be reproducible if they - # default to version 2. - set( _rcc_version_support "" ) - endif() - unset( _rcc_version_rv ) - unset( _rcc_version_dump ) -endif() - - # Internal macro for adding the C++ / Qt translations to the # build and install tree. Should be called only once, from # src/calamares/CMakeLists.txt. macro(add_calamares_translations language) list( APPEND CALAMARES_LANGUAGES ${ARGV} ) + set( _rcc_version_support --format-version 1 ) + set( calamares_i18n_qrc_content "\n" ) # calamares and qt language files diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index b632567b8..ff91904e2 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -34,9 +34,8 @@ include_directories( # Translations include( CalamaresAddTranslations ) add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) -qt5_add_resources( calamaresRc calamares.qrc ) -add_executable( calamares_bin ${calamaresSources} ${calamaresRc} ${trans_outfile} ) +add_executable( calamares_bin ${calamaresSources} calamares.qrc ${trans_outfile} ) target_include_directories( calamares_bin PRIVATE ${CMAKE_SOURCE_DIR} ) set_target_properties(calamares_bin PROPERTIES @@ -45,6 +44,7 @@ set_target_properties(calamares_bin ) calamares_automoc( calamares_bin ) calamares_autouic( calamares_bin ) +calamares_autorcc( calamares_bin ) target_link_libraries( calamares_bin PRIVATE From afb0b36f586e262824ea9754300f903b0e93a808 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 10:01:49 +0200 Subject: [PATCH 110/399] CMake: simplify QRC generation Use configure_file() to avoid stomping on timestamps: if the list of translations doesn't change, we don't need to rebuild the translated QRC. --- CMakeModules/CalamaresAddTranslations.cmake | 25 +++++---------------- lang/calamares_i18n.qrc.in | 5 +++++ 2 files changed, 10 insertions(+), 20 deletions(-) create mode 100644 lang/calamares_i18n.qrc.in diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 88992faf5..5015301d2 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -28,12 +28,9 @@ include( CMakeParseArguments ) macro(add_calamares_translations language) list( APPEND CALAMARES_LANGUAGES ${ARGV} ) - set( _rcc_version_support --format-version 1 ) - - set( calamares_i18n_qrc_content "\n" ) + set( calamares_i18n_qrc_content "" ) # calamares and qt language files - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) foreach( lang ${CALAMARES_LANGUAGES} ) foreach( tlsource "calamares_${lang}" "tz_${lang}" ) if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) @@ -43,31 +40,19 @@ macro(add_calamares_translations language) endforeach() endforeach() - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) - - file( WRITE ${CMAKE_BINARY_DIR}/lang/calamares_i18n.qrc "${calamares_i18n_qrc_content}" ) - - qt5_add_translation(QM_FILES ${TS_FILES}) - - ## HACK HACK HACK - around rcc limitations to allow out of source-tree building set( trans_file calamares_i18n ) - set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) - # Copy the QRC file to the output directory - add_custom_command( - OUTPUT ${trans_infile} - COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile} - MAIN_DEPENDENCY ${trans_srcfile} - ) + configure_file( ${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY ) + + qt5_add_translation(QM_FILES ${TS_FILES}) # Run the resource compiler (rcc_options should already be set) add_custom_command( OUTPUT ${trans_outfile} COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} ${_rcc_version_support} -name ${trans_file} -o ${trans_outfile} ${trans_infile} + ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} ) diff --git a/lang/calamares_i18n.qrc.in b/lang/calamares_i18n.qrc.in new file mode 100644 index 000000000..1f0ac1604 --- /dev/null +++ b/lang/calamares_i18n.qrc.in @@ -0,0 +1,5 @@ + + +@calamares_i18n_qrc_content@ + + From 33eab6e8697ab91b23879ab50ed8337a86ee1af1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 10:58:07 +0200 Subject: [PATCH 111/399] CMake: improve validator dependency-checking The configvalidator has some extra Python dependencies. Cache the restults of checking the dependencies (convenient for developers), and also explain what's going on if the feature is switched off. --- CMakeLists.txt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43ca1bc56..3dec2e55f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -356,23 +356,33 @@ set_package_properties( URL "https://python.org" PURPOSE "Python 3 interpreter for certain tests." ) + +set( _schema_explanation "" ) if ( PYTHONINTERP_FOUND ) - message(STATUS "Found Python 3 interpreter ${PYTHON_EXECUTABLE}") if ( BUILD_SCHEMA_TESTING ) # The configuration validator script has some dependencies, # and if they are not installed, don't run. If errors out # with exit(1) on missing dependencies. - exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps ) + if ( CALAMARES_CONFIGVALIDATOR_CHECKED ) + set( _validator_deps ${CALAMARES_CONFIGVALIDATOR_RESULT} ) + else() + exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps ) + set( CALAMARES_CONFIGVALIDATOR_CHECKED TRUE CACHE INTERNAL "Dependencies for configvalidator checked" ) + set( CALAMARES_CONFIGVALIDATOR_RESULT ${_validator_deps} CACHE INTERNAL "Result of configvalidator dependency check" ) + endif() # It should never succeed, but only returns 1 when the imports fail if ( _validator_deps EQUAL 1 ) - message(STATUS "BUILD_SCHEMA_TESTING dependencies are missing." ) + set( _schema_explanation " Missing dependencies for configvalidator.py." ) set( BUILD_SCHEMA_TESTING OFF ) endif() endif() else() # Can't run schema tests without Python3. + set( _schema_explanation " Missing Python3." ) set( BUILD_SCHEMA_TESTING OFF ) endif() +add_feature_info( yaml-schema BUILD_SCHEMA_TESTING "Validate YAML (config files) with schema.${_schema_explanation}" ) + find_package( PythonLibs ${PYTHONLIBS_VERSION} ) set_package_properties( PythonLibs PROPERTIES From b9372ba4328af677b6f5c132b4c6ae7ac6fb9dfe Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 12:18:25 +0200 Subject: [PATCH 112/399] [users] Move default groups setting to Config - drop groups from the viewstep - note that the Config object should also be in charge of creating Jobs (but then the de-tangling needs to be completed) - add tests of default groups loading Doesn't compile because QRegExpValidator is a gui thing. --- src/modules/users/CMakeLists.txt | 1 + src/modules/users/Config.cpp | 16 +++++++ src/modules/users/Config.h | 3 ++ src/modules/users/CreateUserTests.cpp | 61 ++++++++++++++++++++++++++- src/modules/users/UsersViewStep.cpp | 14 +----- src/modules/users/UsersViewStep.h | 1 - 6 files changed, 81 insertions(+), 15 deletions(-) diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index bf93eb26a..e2d2e3117 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -55,6 +55,7 @@ calamares_add_test( SOURCES CreateUserTests.cpp CreateUserJob.cpp + Config.cpp ) calamares_add_test( diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index bb739cbd1..060600894 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -351,6 +351,21 @@ Config::setAutoLogin( bool b ) } } +STATICTEST inline void +setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ) +{ + // '#' is not a valid group name; use that to distinguish an empty-list + // in the configuration (which is a legitimate, if unusual, choice) + // from a bad or missing configuration value. + defaultGroups = CalamaresUtils::getStringList( map, QStringLiteral( "defaultGroups" ), QStringList { "#" } ); + if ( defaultGroups.contains( QStringLiteral( "#" ) ) ) + { + cWarning() << "Using fallback groups. Please check *defaultGroups* in users.conf"; + defaultGroups = QStringList { "lp", "video", "network", "storage", "wheel", "audio" }; + } +} + + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { @@ -365,6 +380,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) setAutologinGroup( CalamaresUtils::getString( configurationMap, "autologinGroup" ) ); setSudoersGroup( CalamaresUtils::getString( configurationMap, "sudoersGroup" ) ); + setConfigurationDefaultGroups( configurationMap, m_defaultGroups ); m_doAutoLogin = CalamaresUtils::getBool( configurationMap, "doAutologin", false ); m_writeRootPassword = CalamaresUtils::getBool( configurationMap, "setRootPassword", true ); diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index d32ddc8f2..b84dc5aaf 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -77,6 +77,8 @@ public: /// Should the root password be written (if false, no password is set and the root account is disabled for login) bool writeRootPassword() const { return m_writeRootPassword; } + const QStringList& defaultGroups() const { return m_defaultGroups; } + static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); @@ -119,6 +121,7 @@ signals: void autoLoginChanged( bool ); private: + QStringList m_defaultGroups; QString m_userShell; QString m_autologinGroup; QString m_sudoersGroup; diff --git a/src/modules/users/CreateUserTests.cpp b/src/modules/users/CreateUserTests.cpp index b351109b3..50592a384 100644 --- a/src/modules/users/CreateUserTests.cpp +++ b/src/modules/users/CreateUserTests.cpp @@ -17,6 +17,7 @@ * along with Calamares. If not, see . */ +#include "Config.h" #include "CreateUserJob.h" #include "utils/Logger.h" @@ -25,8 +26,8 @@ #include // Implementation details -extern QStringList groupsInTargetSystem( const QDir& targetRoot ); - +extern QStringList groupsInTargetSystem( const QDir& targetRoot ); // CreateUserJob +extern void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ); class CreateUserTests : public QObject { @@ -39,6 +40,7 @@ private Q_SLOTS: void initTestCase(); void testReadGroup(); + void testDefaultGroups(); }; CreateUserTests::CreateUserTests() {} @@ -73,6 +75,61 @@ CreateUserTests::testReadGroup() } } +void +CreateUserTests::testDefaultGroups() +{ + { + QStringList groups; + QVariantMap hweelGroup; + QVERIFY( groups.isEmpty() ); + hweelGroup.insert( "defaultGroups", QStringList { "hweel" } ); + setConfigurationDefaultGroups( hweelGroup, groups ); + QCOMPARE( groups.count(), 1 ); + QVERIFY( groups.contains( "hweel" ) ); + } + + { + QStringList desired { "wheel", "root", "operator" }; + QStringList groups; + QVariantMap threeGroup; + QVERIFY( groups.isEmpty() ); + threeGroup.insert( "defaultGroups", desired ); + setConfigurationDefaultGroups( threeGroup, groups ); + QCOMPARE( groups.count(), 3 ); + QVERIFY( !groups.contains( "hweel" ) ); + QCOMPARE( groups, desired ); + } + + { + QStringList groups; + QVariantMap explicitEmpty; + QVERIFY( groups.isEmpty() ); + explicitEmpty.insert( "defaultGroups", QStringList() ); + setConfigurationDefaultGroups( explicitEmpty, groups ); + QCOMPARE( groups.count(), 0 ); + } + + { + QStringList groups; + QVariantMap missing; + QVERIFY( groups.isEmpty() ); + setConfigurationDefaultGroups( missing, groups ); + QCOMPARE( groups.count(), 6 ); // because of fallback! + QVERIFY( groups.contains( "lp" ) ); + } + + { + QStringList groups; + QVariantMap typeMismatch; + QVERIFY( groups.isEmpty() ); + typeMismatch.insert( "defaultGroups", 1 ); + setConfigurationDefaultGroups( typeMismatch, groups ); + QCOMPARE( groups.count(), 6 ); // because of fallback! + QVERIFY( groups.contains( "lp" ) ); + } +} + + QTEST_GUILESS_MAIN( CreateUserTests ) #include "utils/moc-warnings.h" diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index ddaf4837b..b9ea3ae17 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -145,10 +145,11 @@ UsersViewStep::onLeave() } Calamares::Job* j; + // TODO: Config object should create jobs, like this one, that depend only on config values j = new CreateUserJob( m_config->loginName(), m_config->fullName().isEmpty() ? m_config->loginName() : m_config->fullName(), m_config->doAutoLogin(), - m_defaultGroups ); + m_config->defaultGroups() ); auto userPW = m_widget->getUserPassword(); j = new SetPasswordJob( userPW.first, userPW.second ); @@ -171,17 +172,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) (void)this->widget(); using CalamaresUtils::getBool; - if ( configurationMap.contains( "defaultGroups" ) - && configurationMap.value( "defaultGroups" ).type() == QVariant::List ) - { - m_defaultGroups = configurationMap.value( "defaultGroups" ).toStringList(); - } - else - { - cWarning() << "Using fallback groups. Please check defaultGroups in users.conf"; - m_defaultGroups = QStringList { "lp", "video", "network", "storage", "wheel", "audio" }; - } - m_widget->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) ); if ( configurationMap.contains( "passwordRequirements" ) diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index aacf11f2a..5c3674571 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -61,7 +61,6 @@ private: UsersPage* m_widget; QList< Calamares::job_ptr > m_jobs; - QStringList m_defaultGroups; SetHostNameJob::Actions m_actions; Config* m_config; From f75839340a0183873ee43214ba77e0428242d2c0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 12:27:56 +0200 Subject: [PATCH 113/399] [users] Drop QRegExpValidator - QREValidator is a GUI part, so to avoid a dependency on GUI for the (non-GUI) Config object, port to the simpler QRE (which we had available anyway) --- src/modules/users/Config.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 060600894..6c6bbe90a 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -28,7 +28,6 @@ #include #include -#include static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); static constexpr const int USERNAME_MAX_LENGTH = 31; @@ -132,15 +131,12 @@ Config::loginNameStatus() const } } - QString login( m_loginName ); // make a copy because validate() doesn't take const& - QRegExpValidator validateEntireLoginName( USERNAME_RX ); - QRegExpValidator validateFirstLetter( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator - int pos = -1; - if ( validateFirstLetter.validate( login, pos ) == QValidator::Invalid ) + QRegExp validateFirstLetter( "^[a-z_]" ); + if ( validateFirstLetter.indexIn( m_loginName ) != 0 ) { return tr( "Your username must start with a lowercase letter or underscore." ); } - if ( validateEntireLoginName.validate( login, pos ) == QValidator::Invalid ) + if ( !USERNAME_RX.exactMatch( m_loginName ) ) { return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ); } @@ -202,11 +198,7 @@ Config::hostNameStatus() const } } - QString text = m_hostName; - QRegExpValidator val( HOSTNAME_RX ); - int pos = -1; - - if ( val.validate( text, pos ) == QValidator::Invalid ) + if ( !HOSTNAME_RX.exactMatch( m_hostName ) ) { return tr( "Only letters, numbers, underscore and hyphen are allowed." ); } From cc1136fb0eb9d243a183c06b87c8aa4eb34cd07f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 13:23:41 +0200 Subject: [PATCH 114/399] [users] Untangle tests - name sources for tests consistently Test - chase some required source changes with the renaming - name test targets consistently too --- src/modules/users/CMakeLists.txt | 8 ++++---- .../users/{CreateUserTests.cpp => TestCreateUserJob.cpp} | 2 +- .../users/{PasswordTests.cpp => TestPasswordJob.cpp} | 2 +- src/modules/users/{PasswordTests.h => TestPasswordJob.h} | 0 src/modules/users/{Tests.cpp => TestSetHostNameJob.cpp} | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename src/modules/users/{CreateUserTests.cpp => TestCreateUserJob.cpp} (99%) rename src/modules/users/{PasswordTests.cpp => TestPasswordJob.cpp} (98%) rename src/modules/users/{PasswordTests.h => TestPasswordJob.h} (100%) rename src/modules/users/{Tests.cpp => TestSetHostNameJob.cpp} (99%) diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index e2d2e3117..a486e93c3 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -44,7 +44,7 @@ calamares_add_plugin( users calamares_add_test( userspasswordtest SOURCES - PasswordTests.cpp + TestPasswordJob.cpp SetPasswordJob.cpp LIBRARIES ${CRYPT_LIBRARIES} @@ -53,15 +53,15 @@ calamares_add_test( calamares_add_test( userscreatetest SOURCES - CreateUserTests.cpp + TestCreateUserJob.cpp CreateUserJob.cpp Config.cpp ) calamares_add_test( - userstest + usershostnametest SOURCES - Tests.cpp + TestSetHostNameJob.cpp SetHostNameJob.cpp LIBRARIES Qt5::DBus diff --git a/src/modules/users/CreateUserTests.cpp b/src/modules/users/TestCreateUserJob.cpp similarity index 99% rename from src/modules/users/CreateUserTests.cpp rename to src/modules/users/TestCreateUserJob.cpp index 50592a384..f8c28a235 100644 --- a/src/modules/users/CreateUserTests.cpp +++ b/src/modules/users/TestCreateUserJob.cpp @@ -134,4 +134,4 @@ QTEST_GUILESS_MAIN( CreateUserTests ) #include "utils/moc-warnings.h" -#include "CreateUserTests.moc" +#include "TestCreateUserJob.moc" diff --git a/src/modules/users/PasswordTests.cpp b/src/modules/users/TestPasswordJob.cpp similarity index 98% rename from src/modules/users/PasswordTests.cpp rename to src/modules/users/TestPasswordJob.cpp index 0c1b4bffc..7f38c109d 100644 --- a/src/modules/users/PasswordTests.cpp +++ b/src/modules/users/TestPasswordJob.cpp @@ -18,7 +18,7 @@ #include "SetPasswordJob.h" -#include "PasswordTests.h" +#include "TestPasswordJob.h" #include diff --git a/src/modules/users/PasswordTests.h b/src/modules/users/TestPasswordJob.h similarity index 100% rename from src/modules/users/PasswordTests.h rename to src/modules/users/TestPasswordJob.h diff --git a/src/modules/users/Tests.cpp b/src/modules/users/TestSetHostNameJob.cpp similarity index 99% rename from src/modules/users/Tests.cpp rename to src/modules/users/TestSetHostNameJob.cpp index 196fd9d68..9e08d4807 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/TestSetHostNameJob.cpp @@ -142,4 +142,4 @@ QTEST_GUILESS_MAIN( UsersTests ) #include "utils/moc-warnings.h" -#include "Tests.moc" +#include "TestSetHostNameJob.moc" From 892e9798f4dd9400e3d97c7da81d8ed01af4cc5d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 13:31:39 +0200 Subject: [PATCH 115/399] [users] Sanitize tests - move the testing of config-object methods to its own tests - simplify file structure for the password job tests --- src/modules/users/CMakeLists.txt | 8 +- src/modules/users/TestCreateUserJob.cpp | 58 ------------ src/modules/users/TestPasswordJob.cpp | 23 ++++- src/modules/users/TestPasswordJob.h | 36 -------- src/modules/users/TestSetHostNameJob.cpp | 3 +- src/modules/users/Tests.cpp | 113 +++++++++++++++++++++++ 6 files changed, 141 insertions(+), 100 deletions(-) delete mode 100644 src/modules/users/TestPasswordJob.h create mode 100644 src/modules/users/Tests.cpp diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index a486e93c3..5fafcd4f3 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -55,7 +55,6 @@ calamares_add_test( SOURCES TestCreateUserJob.cpp CreateUserJob.cpp - Config.cpp ) calamares_add_test( @@ -66,3 +65,10 @@ calamares_add_test( LIBRARIES Qt5::DBus ) + +calamares_add_test( + userstest + SOURCES + Tests.cpp + Config.cpp +) diff --git a/src/modules/users/TestCreateUserJob.cpp b/src/modules/users/TestCreateUserJob.cpp index f8c28a235..610f84eef 100644 --- a/src/modules/users/TestCreateUserJob.cpp +++ b/src/modules/users/TestCreateUserJob.cpp @@ -17,7 +17,6 @@ * along with Calamares. If not, see . */ -#include "Config.h" #include "CreateUserJob.h" #include "utils/Logger.h" @@ -27,7 +26,6 @@ // Implementation details extern QStringList groupsInTargetSystem( const QDir& targetRoot ); // CreateUserJob -extern void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ); class CreateUserTests : public QObject { @@ -40,7 +38,6 @@ private Q_SLOTS: void initTestCase(); void testReadGroup(); - void testDefaultGroups(); }; CreateUserTests::CreateUserTests() {} @@ -75,61 +72,6 @@ CreateUserTests::testReadGroup() } } -void -CreateUserTests::testDefaultGroups() -{ - { - QStringList groups; - QVariantMap hweelGroup; - QVERIFY( groups.isEmpty() ); - hweelGroup.insert( "defaultGroups", QStringList { "hweel" } ); - setConfigurationDefaultGroups( hweelGroup, groups ); - QCOMPARE( groups.count(), 1 ); - QVERIFY( groups.contains( "hweel" ) ); - } - - { - QStringList desired { "wheel", "root", "operator" }; - QStringList groups; - QVariantMap threeGroup; - QVERIFY( groups.isEmpty() ); - threeGroup.insert( "defaultGroups", desired ); - setConfigurationDefaultGroups( threeGroup, groups ); - QCOMPARE( groups.count(), 3 ); - QVERIFY( !groups.contains( "hweel" ) ); - QCOMPARE( groups, desired ); - } - - { - QStringList groups; - QVariantMap explicitEmpty; - QVERIFY( groups.isEmpty() ); - explicitEmpty.insert( "defaultGroups", QStringList() ); - setConfigurationDefaultGroups( explicitEmpty, groups ); - QCOMPARE( groups.count(), 0 ); - } - - { - QStringList groups; - QVariantMap missing; - QVERIFY( groups.isEmpty() ); - setConfigurationDefaultGroups( missing, groups ); - QCOMPARE( groups.count(), 6 ); // because of fallback! - QVERIFY( groups.contains( "lp" ) ); - } - - { - QStringList groups; - QVariantMap typeMismatch; - QVERIFY( groups.isEmpty() ); - typeMismatch.insert( "defaultGroups", 1 ); - setConfigurationDefaultGroups( typeMismatch, groups ); - QCOMPARE( groups.count(), 6 ); // because of fallback! - QVERIFY( groups.contains( "lp" ) ); - } -} - - QTEST_GUILESS_MAIN( CreateUserTests ) #include "utils/moc-warnings.h" diff --git a/src/modules/users/TestPasswordJob.cpp b/src/modules/users/TestPasswordJob.cpp index 7f38c109d..8677f88c2 100644 --- a/src/modules/users/TestPasswordJob.cpp +++ b/src/modules/users/TestPasswordJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,11 +19,19 @@ #include "SetPasswordJob.h" -#include "TestPasswordJob.h" - #include -QTEST_GUILESS_MAIN( PasswordTests ) +class PasswordTests : public QObject +{ + Q_OBJECT +public: + PasswordTests(); + ~PasswordTests() override; + +private Q_SLOTS: + void initTestCase(); + void testSalt(); +}; PasswordTests::PasswordTests() {} @@ -48,3 +57,9 @@ PasswordTests::testSalt() QVERIFY( s.endsWith( '$' ) ); qDebug() << "Obtained salt" << s; } + +QTEST_GUILESS_MAIN( PasswordTests ) + +#include "utils/moc-warnings.h" + +#include "TestPasswordJob.moc" diff --git a/src/modules/users/TestPasswordJob.h b/src/modules/users/TestPasswordJob.h deleted file mode 100644 index 3b4b5d201..000000000 --- a/src/modules/users/TestPasswordJob.h +++ /dev/null @@ -1,36 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2017, Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#ifndef PASSWORDTESTS_H -#define PASSWORDTESTS_H - -#include - -class PasswordTests : public QObject -{ - Q_OBJECT -public: - PasswordTests(); - ~PasswordTests() override; - -private Q_SLOTS: - void initTestCase(); - void testSalt(); -}; - -#endif diff --git a/src/modules/users/TestSetHostNameJob.cpp b/src/modules/users/TestSetHostNameJob.cpp index 9e08d4807..0e887a5f1 100644 --- a/src/modules/users/TestSetHostNameJob.cpp +++ b/src/modules/users/TestSetHostNameJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp new file mode 100644 index 000000000..a4ee45fe2 --- /dev/null +++ b/src/modules/users/Tests.cpp @@ -0,0 +1,113 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "Config.h" + +#include "utils/Logger.h" + +#include + +// Implementation details +extern void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ); + +/** @brief Test Config object methods and internals + * + */ +class UserTests : public QObject +{ + Q_OBJECT +public: + UserTests(); + virtual ~UserTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testDefaultGroups(); +}; + +UserTests::UserTests() {} + +void +UserTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << "Users test started."; +} + +void +UserTests::testDefaultGroups() +{ + { + QStringList groups; + QVariantMap hweelGroup; + QVERIFY( groups.isEmpty() ); + hweelGroup.insert( "defaultGroups", QStringList { "hweel" } ); + setConfigurationDefaultGroups( hweelGroup, groups ); + QCOMPARE( groups.count(), 1 ); + QVERIFY( groups.contains( "hweel" ) ); + } + + { + QStringList desired { "wheel", "root", "operator" }; + QStringList groups; + QVariantMap threeGroup; + QVERIFY( groups.isEmpty() ); + threeGroup.insert( "defaultGroups", desired ); + setConfigurationDefaultGroups( threeGroup, groups ); + QCOMPARE( groups.count(), 3 ); + QVERIFY( !groups.contains( "hweel" ) ); + QCOMPARE( groups, desired ); + } + + { + QStringList groups; + QVariantMap explicitEmpty; + QVERIFY( groups.isEmpty() ); + explicitEmpty.insert( "defaultGroups", QStringList() ); + setConfigurationDefaultGroups( explicitEmpty, groups ); + QCOMPARE( groups.count(), 0 ); + } + + { + QStringList groups; + QVariantMap missing; + QVERIFY( groups.isEmpty() ); + setConfigurationDefaultGroups( missing, groups ); + QCOMPARE( groups.count(), 6 ); // because of fallback! + QVERIFY( groups.contains( "lp" ) ); + } + + { + QStringList groups; + QVariantMap typeMismatch; + QVERIFY( groups.isEmpty() ); + typeMismatch.insert( "defaultGroups", 1 ); + setConfigurationDefaultGroups( typeMismatch, groups ); + QCOMPARE( groups.count(), 6 ); // because of fallback! + QVERIFY( groups.contains( "lp" ) ); + } +} + + +QTEST_GUILESS_MAIN( UserTests ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" From 43cd415d9adf3ea99216e2c6d709a41ac747fc9d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 13:42:56 +0200 Subject: [PATCH 116/399] [partition] Switch to 'modern' Error/ok icons --- src/modules/partition/gui/EncryptWidget.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 42a073db7..8fb9a7b30 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -141,15 +141,16 @@ EncryptWidget::onPassphraseEdited() m_ui->m_iconLabel->setToolTip( QString() ); if ( p1.isEmpty() && p2.isEmpty() ) { - m_ui->m_iconLabel->clear(); + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusWarning ); + m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); } else if ( p1 == p2 ) { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::Yes ); + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusOk ); } else { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::No ); + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusError ); m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); } From f1c4caba483c5ddadadfd85b72bdebb2f1857a5d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 13:59:06 +0200 Subject: [PATCH 117/399] [partition] Refactor checking next-enabled - move the calculations to an own method (so it can use early-return and log things to explain why next is disabled) --- src/modules/partition/gui/ChoicePage.cpp | 68 +++++++++++++++++------- src/modules/partition/gui/ChoicePage.h | 1 + 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 9e48e69ac..9f654b1bf 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1442,46 +1442,74 @@ ChoicePage::currentChoice() const return m_choice; } - -void -ChoicePage::updateNextEnabled() +bool +ChoicePage::calculateNextEnabled() const { bool enabled = false; - auto sm_p = m_beforePartitionBarsView ? m_beforePartitionBarsView->selectionModel() : nullptr; switch ( m_choice ) { case NoChoice: - enabled = false; - break; + cDebug() << "No partitioning choice"; + return false; case Replace: case Alongside: - enabled = sm_p && sm_p->currentIndex().isValid(); + if ( !( sm_p && sm_p->currentIndex().isValid() ) ) + { + cDebug() << "No partition selected"; + return false; + } break; case Erase: case Manual: enabled = true; } - if ( m_isEfi && - ( m_choice == Alongside || - m_choice == Replace ) ) + if (!enabled) { - if ( m_core->efiSystemPartitions().count() == 0 ) - enabled = false; + cDebug() << "No valid choice made"; + return false; } - if ( m_choice != Manual && - m_encryptWidget->isVisible() && - m_encryptWidget->state() == EncryptWidget::Encryption::Unconfirmed ) - enabled = false; - if ( enabled == m_nextEnabled ) - return; + if ( m_isEfi && ( m_choice == Alongside || m_choice == Replace ) ) + { + if ( m_core->efiSystemPartitions().count() == 0 ) + { + cDebug() << "No EFI partition for alongside or replace"; + return false; + } + } - m_nextEnabled = enabled; - emit nextStatusChanged( enabled ); + if ( m_choice != Manual && m_encryptWidget->isVisible() ) + { + switch ( m_encryptWidget->state() ) + { + case EncryptWidget::Encryption::Unconfirmed: + cDebug() << "No passphrase provided"; + return false; + case EncryptWidget::Encryption::Disabled: + case EncryptWidget::Encryption::Confirmed: + // Checkbox not checked, **or** passphrases match + break; + } + } + + return true; +} + + +void +ChoicePage::updateNextEnabled() +{ + bool enabled = calculateNextEnabled(); + + if ( enabled != m_nextEnabled ) + { + m_nextEnabled = enabled; + emit nextStatusChanged( enabled ); + } } void diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 1ff8f0d40..a28892011 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -126,6 +126,7 @@ private slots: void onEraseSwapChoiceChanged(); private: + bool calculateNextEnabled() const; void updateNextEnabled(); void setupChoices(); QComboBox* createBootloaderComboBox( QWidget* parentButton ); From 0eb1f002db2d61ea2414cc80736c2e53de818b13 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 14:13:43 +0200 Subject: [PATCH 118/399] [partition] defuse is-next-enabled Both the KPMCore and the ChoicePage -- asynchronously -- were connected to the nextStatusChanged() signal. So if the core said next was true, that could end up communicated to the ViewManager, enabling the *next* button in the UI. Changing to the *erase* page generally triggers a KPMCore reload, which later emits a `hasRootMountPointChanged()` signal, once the layout is applied and the disk gets a root mount point. So we'd get a `true` from KPMCore, which -- because it was connected directly to the signal to the VM -- would override any other considerations. Hook up both signals to an intermediate slot that just recalculates whether the next button should be enabled, based on the state both of the Choice page and whatever else. --- src/modules/partition/gui/PartitionViewStep.cpp | 9 +++++++-- src/modules/partition/gui/PartitionViewStep.h | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index b0142a82a..900d10e57 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -107,8 +107,8 @@ PartitionViewStep::continueLoading() m_waitingWidget->deleteLater(); m_waitingWidget = nullptr; - connect( m_core, &PartitionCoreModule::hasRootMountPointChanged, this, &PartitionViewStep::nextStatusChanged ); - connect( m_choicePage, &ChoicePage::nextStatusChanged, this, &PartitionViewStep::nextStatusChanged ); + connect( m_core, &PartitionCoreModule::hasRootMountPointChanged, this, &PartitionViewStep::nextPossiblyChanged ); + connect( m_choicePage, &ChoicePage::nextStatusChanged, this, &PartitionViewStep::nextPossiblyChanged ); } @@ -348,6 +348,11 @@ PartitionViewStep::isNextEnabled() const return false; } +void +PartitionViewStep::nextPossiblyChanged(bool) +{ + emit nextStatusChanged( isNextEnabled() ); +} bool PartitionViewStep::isBackEnabled() const diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index 63d11c816..47479a135 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -78,6 +78,9 @@ private: void initPartitionCoreModule(); void continueLoading(); + /// "slot" for changes to next-status from the KPMCore and ChoicePage + void nextPossiblyChanged( bool ); + PartitionCoreModule* m_core; QStackedWidget* m_widget; ChoicePage* m_choicePage; From ef4c2666e1d964f2c42fd39ea365029289c44770 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 14:46:07 +0200 Subject: [PATCH 119/399] [partition] Update icons on all state changes The encryption widget (passphrase for disk encryption) should show ok / warning / error whenever the state changes; this avoids it showing up first with **no** icon (it should show a warning when both passphrases are empty). --- src/modules/partition/gui/EncryptWidget.cpp | 57 +++++++++++---------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 8fb9a7b30..5e44c15fd 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -91,9 +91,39 @@ EncryptWidget::retranslate() } +///@brief Give @p label the @p pixmap from the standard-pixmaps +static void +applyPixmap( QLabel* label, CalamaresUtils::ImageType pixmap ) +{ + label->setFixedWidth( label->height() ); + label->setPixmap( CalamaresUtils::defaultPixmap( pixmap, CalamaresUtils::Original, label->size() ) ); +} + void EncryptWidget::updateState() { + if ( m_ui->m_passphraseLineEdit->isVisible() ) + { + QString p1 = m_ui->m_passphraseLineEdit->text(); + QString p2 = m_ui->m_confirmLineEdit->text(); + + if ( p1.isEmpty() && p2.isEmpty() ) + { + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusWarning ); + m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); + } + else if ( p1 == p2 ) + { + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusOk ); + m_ui->m_iconLabel->setToolTip( QString() ); + } + else + { + applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusError ); + m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); + } + } + Encryption newState; if ( m_ui->m_encryptCheckBox->isChecked() ) { @@ -119,14 +149,6 @@ EncryptWidget::updateState() } } -///@brief Give @p label the @p pixmap from the standard-pixmaps -static void -applyPixmap( QLabel* label, CalamaresUtils::ImageType pixmap ) -{ - label->setFixedWidth( label->height() ); - label->setPixmap( CalamaresUtils::defaultPixmap( pixmap, CalamaresUtils::Original, label->size() ) ); -} - void EncryptWidget::onPassphraseEdited() { @@ -135,25 +157,6 @@ EncryptWidget::onPassphraseEdited() m_ui->m_iconLabel->show(); } - QString p1 = m_ui->m_passphraseLineEdit->text(); - QString p2 = m_ui->m_confirmLineEdit->text(); - - m_ui->m_iconLabel->setToolTip( QString() ); - if ( p1.isEmpty() && p2.isEmpty() ) - { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusWarning ); - m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); - } - else if ( p1 == p2 ) - { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusOk ); - } - else - { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::StatusError ); - m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); - } - updateState(); } From 33fd5a1fad30b4d44c236335d8732923fbd2d12b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 17:56:30 +0200 Subject: [PATCH 120/399] [partition] Report a valid choice if a partition is selected --- src/modules/partition/gui/ChoicePage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 9f654b1bf..1d0c96623 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1460,6 +1460,7 @@ ChoicePage::calculateNextEnabled() const cDebug() << "No partition selected"; return false; } + enabled = true; break; case Erase: case Manual: From 14df0328031dd020d693e16cb669ee402bdf7b59 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 29 Jul 2020 22:32:52 +0200 Subject: [PATCH 121/399] CI: build verbose the first time, too --- ci/travis-continuous.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/travis-continuous.sh b/ci/travis-continuous.sh index aefaca6f8..567a55d3d 100755 --- a/ci/travis-continuous.sh +++ b/ci/travis-continuous.sh @@ -24,7 +24,7 @@ section "cmake $CMAKE_ARGS $SRCDIR" cmake $CMAKE_ARGS $SRCDIR || { echo "! CMake failed" ; exit 1 ; } section "make" -make -j2 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; } +make -j2 VERBOSE=1 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; } section "make install" From d103c42091542a60be2204db7fd12af04e024718 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 30 Jul 2020 10:26:58 +0200 Subject: [PATCH 122/399] [partition] Fix build now swapChoices lives in config --- src/modules/partition/core/Config.cpp | 3 ++- src/modules/partition/core/Config.h | 6 ++++-- src/modules/partition/gui/PartitionViewStep.cpp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index d3b5a0310..aaf9cb906 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index c18506f7b..f6823e640 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,9 +34,10 @@ public: virtual ~Config() = default; void setConfigurationMap( const QVariantMap& ); - void updateGlobalStorage() const; + PartitionActions::Choices::SwapChoiceSet swapChoices() const { return m_swapChoices; } + private: PartitionActions::Choices::SwapChoiceSet m_swapChoices; qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index ef43e0584..04f14dd84 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -94,7 +94,7 @@ void PartitionViewStep::continueLoading() { Q_ASSERT( !m_choicePage ); - m_choicePage = new ChoicePage( m_swapChoices ); + m_choicePage = new ChoicePage( m_config->swapChoices() ); m_choicePage->init( m_core ); m_widget->addWidget( m_choicePage ); From 824dac62d8fab29decefb6d03364fdcbb8b20f60 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 30 Jul 2020 10:44:10 +0200 Subject: [PATCH 123/399] [partition] ChoicePage to use Config object --- src/modules/partition/gui/ChoicePage.cpp | 23 ++++++++++--------- src/modules/partition/gui/ChoicePage.h | 6 +++-- .../partition/gui/PartitionViewStep.cpp | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 4640315c8..055595ba0 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -20,7 +20,15 @@ #include "ChoicePage.h" +#include "BootInfoWidget.h" +#include "DeviceInfoWidget.h" +#include "PartitionBarsView.h" +#include "PartitionLabelsView.h" +#include "PartitionSplitterWidget.h" +#include "ReplaceWidget.h" +#include "ScanningDialog.h" #include "core/BootLoaderModel.h" +#include "core/Config.h" #include "core/DeviceModel.h" #include "core/KPMHelpers.h" #include "core/OsproberEntry.h" @@ -30,14 +38,6 @@ #include "core/PartitionInfo.h" #include "core/PartitionModel.h" -#include "BootInfoWidget.h" -#include "DeviceInfoWidget.h" -#include "PartitionBarsView.h" -#include "PartitionLabelsView.h" -#include "PartitionSplitterWidget.h" -#include "ReplaceWidget.h" -#include "ScanningDialog.h" - #include "Branding.h" #include "GlobalStorage.h" #include "JobQueue.h" @@ -75,8 +75,9 @@ using Calamares::PrettyRadioButton; * the module loading code path. * @param parent the QWidget parent. */ -ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent ) +ChoicePage::ChoicePage( Config* config, QWidget* parent ) : QWidget( parent ) + , m_config( config ) , m_nextEnabled( false ) , m_core( nullptr ) , m_choice( NoChoice ) @@ -93,8 +94,8 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent ) , m_bootloaderComboBox( nullptr ) , m_lastSelectedDeviceIndex( -1 ) , m_enableEncryptionWidget( true ) - , m_availableSwapChoices( swapChoices ) - , m_eraseSwapChoice( PartitionActions::Choices::pickOne( swapChoices ) ) + , m_availableSwapChoices( config->swapChoices() ) + , m_eraseSwapChoice( PartitionActions::Choices::pickOne( m_availableSwapChoices ) ) , m_allowManualPartitioning( true ) { setupUi( this ); diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index a28892011..f985178d5 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -42,11 +42,12 @@ namespace Calamares class PrettyRadioButton; } +class Config; +class DeviceInfoWidget; class PartitionBarsView; class PartitionSplitterWidget; class PartitionLabelsView; class PartitionCoreModule; -class DeviceInfoWidget; class Device; @@ -70,7 +71,7 @@ public: Manual }; - explicit ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent = nullptr ); + explicit ChoicePage( Config* config, QWidget* parent = nullptr ); virtual ~ChoicePage(); /** @@ -147,6 +148,7 @@ private: // Translations support void updateSwapChoicesTr( QComboBox* box ); + Config* m_config; bool m_nextEnabled; PartitionCoreModule* m_core; diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 04f14dd84..999c94505 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -94,7 +94,7 @@ void PartitionViewStep::continueLoading() { Q_ASSERT( !m_choicePage ); - m_choicePage = new ChoicePage( m_config->swapChoices() ); + m_choicePage = new ChoicePage( m_config ); m_choicePage->init( m_core ); m_widget->addWidget( m_choicePage ); From fec8361ed5640ee5c7ae47ae7652655d4201cac0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 30 Jul 2020 10:51:48 +0200 Subject: [PATCH 124/399] [partition] Drop "convenience" functions - the functions are used just once - thin wrappers for named-enum methods that are just as convenient --- src/modules/partition/core/Config.cpp | 5 +++-- src/modules/partition/core/PartitionActions.cpp | 17 ++--------------- src/modules/partition/core/PartitionActions.h | 7 ++++--- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index aaf9cb906..7af004942 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -64,7 +64,7 @@ getSwapChoices( const QVariantMap& configurationMap ) for ( const auto& item : l ) { bool ok = false; - auto v = PartitionActions::Choices::nameToChoice( item, ok ); + auto v = PartitionActions::Choices::swapChoiceNames().find( item, ok ); if ( ok ) { choices.insert( v ); @@ -105,7 +105,8 @@ getSwapChoices( const QVariantMap& configurationMap ) #define COMPLAIN_UNSUPPORTED( x ) \ if ( choices.contains( x ) ) \ { \ - cWarning() << unsupportedSetting << PartitionActions::Choices::choiceToName( x ); \ + bool bogus = false; \ + cWarning() << unsupportedSetting << PartitionActions::Choices::swapChoiceNames().find( x, bogus ); \ choices.remove( x ); \ } diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 0c7ed6e6d..dc4d4eeb4 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -257,8 +257,8 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition namespace Choices { -static const NamedEnumTable< SwapChoice >& -nameTable() +const NamedEnumTable< SwapChoice >& +swapChoiceNames() { static const NamedEnumTable< SwapChoice > names { { QStringLiteral( "none" ), SwapChoice::NoSwap }, { QStringLiteral( "small" ), SwapChoice::SmallSwap }, @@ -269,19 +269,6 @@ nameTable() return names; } -SwapChoice -nameToChoice( QString name, bool& ok ) -{ - return nameTable().find( name, ok ); -} - -QString -choiceToName( SwapChoice c ) -{ - bool ok = false; - return nameTable().find( c, ok ); -} - SwapChoice pickOne( const SwapChoiceSet& s ) { diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index 558ccb4b9..706fbaea3 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -19,6 +19,8 @@ #ifndef PARTITIONACTIONS_H #define PARTITIONACTIONS_H +#include "utils/NamedEnum.h" + #include #include @@ -34,7 +36,7 @@ namespace PartitionActions */ namespace Choices { -/** @brief Ccchoice of swap (size and type) */ +/** @brief Choice of swap (size and type) */ enum SwapChoice { NoSwap, // don't create any swap, don't use any @@ -45,8 +47,7 @@ enum SwapChoice }; using SwapChoiceSet = QSet< SwapChoice >; -SwapChoice nameToChoice( QString name, bool& ok ); -QString choiceToName( SwapChoice ); +const NamedEnumTable< SwapChoice >& swapChoiceNames(); /** @brief Given a set of swap choices, return a sensible value from it. * From 42889b5d7fd8c4953a74edee012965e2e23dfb47 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 09:52:06 +0200 Subject: [PATCH 125/399] [users] Perhaps triggers the build failure - This is the only use of STATICTEST together with , and is the only one failing to link. --- src/modules/users/Config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 6c6bbe90a..e0174e74e 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -343,7 +343,7 @@ Config::setAutoLogin( bool b ) } } -STATICTEST inline void +STATICTEST void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ) { // '#' is not a valid group name; use that to distinguish an empty-list From c6235d03e7b5deb4d5edb2c62d52682bb35ebda7 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 31 Jul 2020 10:29:02 +0200 Subject: [PATCH 126/399] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ar.ts | 463 ++++++------ lang/calamares_as.ts | 463 ++++++------ lang/calamares_ast.ts | 463 ++++++------ lang/calamares_az.ts | 466 ++++++------ lang/calamares_az_AZ.ts | 466 ++++++------ lang/calamares_be.ts | 463 ++++++------ lang/calamares_bg.ts | 463 ++++++------ lang/calamares_bn.ts | 461 ++++++------ lang/calamares_ca.ts | 465 ++++++------ lang/calamares_ca@valencia.ts | 461 ++++++------ lang/calamares_cs_CZ.ts | 463 ++++++------ lang/calamares_da.ts | 466 ++++++------ lang/calamares_de.ts | 469 ++++++------ lang/calamares_el.ts | 463 ++++++------ lang/calamares_en.ts | 465 ++++++------ lang/calamares_en_GB.ts | 463 ++++++------ lang/calamares_eo.ts | 463 ++++++------ lang/calamares_es.ts | 463 ++++++------ lang/calamares_es_MX.ts | 463 ++++++------ lang/calamares_es_PR.ts | 461 ++++++------ lang/calamares_et.ts | 463 ++++++------ lang/calamares_eu.ts | 463 ++++++------ lang/calamares_fa.ts | 463 ++++++------ lang/calamares_fi_FI.ts | 465 ++++++------ lang/calamares_fr.ts | 463 ++++++------ lang/calamares_fr_CH.ts | 461 ++++++------ lang/calamares_gl.ts | 463 ++++++------ lang/calamares_gu.ts | 461 ++++++------ lang/calamares_he.ts | 465 ++++++------ lang/calamares_hi.ts | 466 ++++++------ lang/calamares_hr.ts | 465 ++++++------ lang/calamares_hu.ts | 463 ++++++------ lang/calamares_id.ts | 463 ++++++------ lang/calamares_ie.ts | 987 +++++++++++++------------ lang/calamares_is.ts | 463 ++++++------ lang/calamares_it_IT.ts | 463 ++++++------ lang/calamares_ja.ts | 466 ++++++------ lang/calamares_kk.ts | 461 ++++++------ lang/calamares_kn.ts | 461 ++++++------ lang/calamares_ko.ts | 463 ++++++------ lang/calamares_lo.ts | 461 ++++++------ lang/calamares_lt.ts | 463 ++++++------ lang/calamares_lv.ts | 461 ++++++------ lang/calamares_mk.ts | 461 ++++++------ lang/calamares_ml.ts | 463 ++++++------ lang/calamares_mr.ts | 461 ++++++------ lang/calamares_nb.ts | 463 ++++++------ lang/calamares_ne_NP.ts | 461 ++++++------ lang/calamares_nl.ts | 807 ++++++++++----------- lang/calamares_pl.ts | 463 ++++++------ lang/calamares_pt_BR.ts | 467 ++++++------ lang/calamares_pt_PT.ts | 463 ++++++------ lang/calamares_ro.ts | 463 ++++++------ lang/calamares_ru.ts | 498 ++++++------- lang/calamares_sk.ts | 463 ++++++------ lang/calamares_sl.ts | 461 ++++++------ lang/calamares_sq.ts | 465 ++++++------ lang/calamares_sr.ts | 463 ++++++------ lang/calamares_sr@latin.ts | 461 ++++++------ lang/calamares_sv.ts | 463 ++++++------ lang/calamares_tg.ts | 1275 +++++++++++++++++---------------- lang/calamares_th.ts | 463 ++++++------ lang/calamares_tr_TR.ts | 467 ++++++------ lang/calamares_uk.ts | 465 ++++++------ lang/calamares_ur.ts | 461 ++++++------ lang/calamares_uz.ts | 461 ++++++------ lang/calamares_zh_CN.ts | 463 ++++++------ lang/calamares_zh_TW.ts | 465 ++++++------ 68 files changed, 15788 insertions(+), 17424 deletions(-) diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 2e3960701..0ecfd7d4c 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -220,7 +220,7 @@
- + Loading failed. @@ -265,171 +265,171 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed فشل التثبيت - + Would you like to paste the install log to the web? - + Error خطأ - - + + &Yes &نعم - - + + &No &لا - + &Close &اغلاق - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? الإستمرار في التثبيت؟ - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> مثبّت %1 على وشك بإجراء تعديلات على قرصك لتثبيت %2.<br/><strong>لن تستطيع التّراجع عن هذا.</strong> - + &Set up now - + &Install now &ثبت الأن - + Go &back &إرجع - + &Set up - + &Install &ثبت - + Setup is complete. Close the setup program. اكتمل الإعداد. أغلق برنامج الإعداد. - + The installation is complete. Close the installer. اكتمل التثبيت , اغلق المثبِت - + Cancel setup without changing the system. - + Cancel installation without changing the system. الغاء الـ تثبيت من دون احداث تغيير في النظام - + &Next &التالي - + &Back &رجوع - + &Done - + &Cancel &إلغاء - + Cancel setup? إلغاء الإعداد؟ - + Cancel installation? إلغاء التثبيت؟ - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. هل تريد حقًا إلغاء عملية الإعداد الحالية؟ سيتم إنهاء برنامج الإعداد وسيتم فقد جميع التغييرات. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. أتريد إلغاء عمليّة التّثبيت الحاليّة؟ @@ -491,12 +491,12 @@ The installer will quit and all changes will be lost. &إلغاء - + %1 Setup Program - + %1 Installer %1 المثبت @@ -523,9 +523,9 @@ The installer will quit and all changes will be lost.
- - - + + + Current: الحاليّ: @@ -536,115 +536,115 @@ The installer will quit and all changes will be lost.
- <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>تقسيم يدويّ</strong><br/>يمكنك إنشاء أو تغيير حجم الأقسام بنفسك. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>اختر قسمًا لتقليصه، ثمّ اسحب الشّريط السّفليّ لتغيير حجمه </strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: مكان محمّل الإقلاع: - + <strong>Select a partition to install on</strong> <strong>اختر القسم حيث سيكون التّثبيت عليه</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. تعذّر إيجاد قسم النّظام EFI في أيّ مكان. فضلًا ارجع واستخدم التّقسيم اليدويّ لإعداد %1. - + The EFI system partition at %1 will be used for starting %2. قسم النّظام EFI على %1 سيُستخدم لبدء %2. - + EFI system partition: قسم نظام EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. لا يبدو أن في جهاز التّخزين أيّ نظام تشغيل. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>مسح القرص</strong><br/>هذا س<font color="red">يمسح</font> كلّ البيانات الموجودة في جهاز التّخزين المحدّد. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>ثبّت جنبًا إلى جنب</strong><br/>سيقلّص المثبّت قسمًا لتفريغ مساحة لِ‍ %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>استبدل قسمًا</strong><br/>يستبدل قسمًا مع %1 . - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. على جهاز التّخزين %1. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. على جهاز التّخزين هذا نظام تشغيل ذأصلًا. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. على جهاز التّخزين هذا عدّة أنظمة تشغيل. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -652,17 +652,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -670,22 +670,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -712,30 +712,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> اضبط طراز لوحة المفتاتيح ليكون %1.<br/> - + Set keyboard layout to %1/%2. اضبط تخطيط لوحة المفاتيح إلى %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - اضبط المنطقة الزّمنيّة إلى %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -801,6 +801,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + اسم المستخدم طويل جدًّا. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + اسم المضيف قصير جدًّا. + + + + Your hostname is too long. + اسم المضيف طويل جدًّا. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -965,40 +1005,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 أنشئ المستخدم %1 - + Create user <strong>%1</strong>. أنشئ المستخدم <strong>%1</strong>. - + Creating user %1. ينشئ المستخدم %1. - - Sudoers dir is not writable. - دليل Sudoers لا يمكن الكتابة فيه. - - - + Cannot create sudoers file for writing. تعذّر إنشاء ملفّ sudoers للكتابة. - + Cannot chmod sudoers file. تعذّر تغيير صلاحيّات ملفّ sudores. - - - Cannot open groups file for reading. - تعذّر فتح ملفّ groups للقراءة. - CreateVolumeGroupDialog @@ -1236,37 +1266,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information اضبط معلومات القسم - + Install %1 on <strong>new</strong> %2 system partition. ثبّت %1 على قسم نظام %2 <strong>جديد</strong>. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. اضطب قسم %2 <strong>جديد</strong> بنقطة الضّمّ <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. ثبّت %2 على قسم النّظام %3 ‏<strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. اضبط القسم %3 <strong>%1</strong> بنقطة الضّمّ <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. ثبّت محمّل الإقلاع على <strong>%1</strong>. - + Setting up mount points. يضبط نقاط الضّمّ. @@ -1517,12 +1547,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> اضبط طراز لوحة المفتاتيح ليكون %1.<br/> - + Set keyboard layout to %1/%2. اضبط تخطيط لوحة المفاتيح إلى %1/%2. @@ -1579,32 +1609,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. أقبل الشّروط والأحكام أعلاه. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1680,41 +1710,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: المنطقة: - + Zone: المجال: - - + + &Change... &غيّر... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - اضبط المنطقة الزّمنيّة إلى %1/%2.<br/> - LocaleQmlViewStep - + Location الموقع @@ -1722,7 +1737,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location الموقع @@ -1784,7 +1799,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2185,7 +2200,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2524,112 +2539,112 @@ The installer will quit and all changes will be lost. جاري جمع معلومات عن النظام... - + Partitions الأقسام - + Install %1 <strong>alongside</strong> another operating system. ثبّت %1 <strong>جنبًا إلى جنب</strong> مع نظام تشغيل آخر. - + <strong>Erase</strong> disk and install %1. <strong>امسح</strong> القرص وثبّت %1. - + <strong>Replace</strong> a partition with %1. <strong>استبدل</strong> قسمًا ب‍ %1. - + <strong>Manual</strong> partitioning. تقسيم <strong>يدويّ</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>امسح</strong> القرص <strong>%2</strong> (%3) وثبّت %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>استبدل</strong> قسمًا على القرص <strong>%2</strong> (%3) ب‍ %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: الحاليّ: - + After: بعد: - + No EFI system partition configured لم يُضبط أيّ قسم نظام EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set راية قسم نظام EFI غير مضبوطة - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2677,17 +2692,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3167,29 +3182,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 اضبك طراز لوحة المفتايح إلى %1، والتّخطيط إلى %2-%3 - + Failed to write keyboard configuration for the virtual console. فشلت كتابة ضبط لوحة المفاتيح للطرفيّة الوهميّة. - - - + + + Failed to write to %1 فشلت الكتابة إلى %1 - + Failed to write keyboard configuration for X11. فشلت كتابة ضبط لوحة المفاتيح ل‍ X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3422,28 +3437,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3451,28 +3466,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3531,47 +3546,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - اسم المستخدم طويل جدًّا. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - اسم المضيف قصير جدًّا. - - - - Your hostname is too long. - اسم المضيف طويل جدًّا. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! لا يوجد تطابق في كلمات السر! @@ -3579,7 +3564,7 @@ Output: UsersViewStep - + Users المستخدمين @@ -3792,19 +3777,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3812,44 +3797,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3857,17 +3842,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_as.ts b/lang/calamares_as.ts index f7c0f1af0..b087c0ba3 100644 --- a/lang/calamares_as.ts +++ b/lang/calamares_as.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed চেত্ আপ বিফল হ'ল - + Installation Failed ইনস্তলেচন বিফল হ'ল - + Would you like to paste the install log to the web? আপুনি ৱেবত ইণ্স্টল ল'গ পেস্ট কৰিব বিচাৰে নেকি? - + Error ত্ৰুটি - - + + &Yes হয় (&Y) - - + + &No নহয় (&N) - + &Close বন্ধ (&C) - + Install Log Paste URL ইনস্তল​ ল'গ পেস্ট URL - + The upload was unsuccessful. No web-paste was done. আপলোড বিফল হৈছিল। কোনো ৱেব-পেস্ট কৰা হোৱা নাছিল। - + Calamares Initialization Failed কেলামাৰেচৰ আৰম্ভণি বিফল হ'ল - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 ইনস্তল কৰিব পৰা নগ'ল। কেলামাৰেচে সকলোবোৰ সংৰূপ দিয়া মডিউল লোড্ কৰাত সফল নহ'ল। এইটো এটা আপোনাৰ ডিষ্ট্ৰিবিউচনে কি ধৰণে কেলামাৰেচ ব্যৱহাৰ কৰিছে, সেই সম্বন্ধীয় সমস্যা। - + <br/>The following modules could not be loaded: <br/>নিম্নোক্ত মডিউলবোৰ লোড্ কৰিৱ পৰা নগ'ল: - + Continue with setup? চেত্ আপ অব্যাহত ৰাখিব? - + Continue with installation? ইন্স্তলেচন অব্যাহত ৰাখিব? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 চেত্ আপ প্ৰগ্ৰেমটোৱে %2 চেত্ আপ কৰিবলৈ আপোনাৰ ডিস্কত সালসলনি কৰিব।<br/><strong>আপুনি এইবোৰ পিছত পূৰ্বলৈ সলনি কৰিব নোৱাৰিব।</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 ইনস্তলাৰটোৱে %2 ইনস্তল কৰিবলৈ আপোনাৰ ডিস্কত সালসলনি কৰিব।<br/><strong>আপুনি এইবোৰ পিছত পূৰ্বলৈ সলনি কৰিব নোৱাৰিব।</strong> - + &Set up now এতিয়া চেত্ আপ কৰক (&S) - + &Install now এতিয়া ইনস্তল কৰক (&I) - + Go &back উভতি যাওক (&b) - + &Set up চেত্ আপ কৰক (&S) - + &Install ইনস্তল (&I) - + Setup is complete. Close the setup program. চেত্ আপ সম্পূৰ্ণ হ'ল। প্ৰোগ্ৰেম বন্ধ কৰক। - + The installation is complete. Close the installer. ইনস্তলেচন সম্পূৰ্ণ হ'ল। ইন্স্তলাৰ বন্ধ কৰক। - + Cancel setup without changing the system. চিছ্তেম সলনি নকৰাকৈ চেত্ আপ বাতিল কৰক। - + Cancel installation without changing the system. চিছ্তেম সলনি নকৰাকৈ ইনস্তলেচন বাতিল কৰক। - + &Next পৰবর্তী (&N) - + &Back পাছলৈ (&B) - + &Done হৈ গ'ল (&D) - + &Cancel বাতিল কৰক (&C) - + Cancel setup? চেত্ আপ বাতিল কৰিব? - + Cancel installation? ইনস্তলেছন বাতিল কৰিব? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. সচাকৈয়ে চলিত চেত্ আপ প্ৰক্ৰিয়া বাতিল কৰিব বিচাৰে নেকি? চেত্ আপ প্ৰোগ্ৰেম বন্ধ হ'ব আৰু গোটেই সলনিবোৰ নোহোৱা হৈ যাব। - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. সচাকৈয়ে চলিত ইনস্তল প্ৰক্ৰিয়া বাতিল কৰিব বিচাৰে নেকি? @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. বাতিল কৰক (&C) - + %1 Setup Program %1 চেত্ আপ প্ৰোগ্ৰেম - + %1 Installer %1 ইনস্তলাৰ @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: বর্তমান: @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>মেনুৱেল বিভাজন</strong><br/>আপুনি নিজে বিভাজন বনাব বা বিভজনৰ আয়তন সলনি কৰিব পাৰে। - + Reuse %1 as home partition for %2. %1ক %2ৰ গৃহ বিভাজন হিচাপে পুনৰ ব্যৱহাৰ কৰক। - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>আয়তন সলনি কৰিবলৈ বিভাজন বাচনি কৰক, তাৰ পিছত তলৰ "বাৰ্" ডালৰ সহায়ত আয়তন চেত্ কৰক</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 বিভজনক সৰু কৰি %2MiB কৰা হ'ব আৰু %4ৰ বাবে %3MiBৰ নতুন বিভজন বনোৱা হ'ব। - + Boot loader location: বুত্ লোডাৰৰ অৱস্থান: - + <strong>Select a partition to install on</strong> <strong>ইনস্তল​ কৰিবলৈ এখন বিভাজন চয়ন কৰক</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. এই চিছটেমত এখনো EFI চিছটেম বিভাজন কতো পোৱা নগ'ল। অনুগ্ৰহ কৰি উভতি যাওক আৰু মেনুৱেল বিভাজন প্ৰক্ৰিয়া দ্বাৰা %1 চেত্ আপ কৰক। - + The EFI system partition at %1 will be used for starting %2. %1ত থকা EFI চিছটেম বিভাজনটো %2ক আৰম্ভ কৰাৰ বাবে ব্যৱহাৰ কৰা হ'ব। - + EFI system partition: EFI চিছটেম বিভাজন: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. এইটো ষ্টোৰেজ ডিভাইচত কোনো অপাৰেটিং চিছটেম নাই যেন লাগে। আপুনি কি কৰিব বিচাৰে?<br/>আপুনি ষ্টোৰেজ ডিভাইচটোত কিবা সলনি কৰাৰ আগতে পুনৰীক্ষণ আৰু চয়ন নিশ্চিত কৰিব পাৰিব। - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>ডিস্কত থকা গোটেই ডাটা আতৰাওক।</strong><br/> ইয়াৰ দ্ৱাৰা ষ্টোৰেজ ডিভাইছত বৰ্তমান থকা সকলো ডাটা <font color="red">বিলোপ</font> কৰা হ'ব। - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>সমান্তৰালভাৱে ইনস্তল কৰক</strong><br/> ইনস্তলাৰটোৱে %1ক ইনস্তল​ কৰাৰ বাবে এখন বিভাজন সৰু কৰি দিব। - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>বিভাজন সলনি কৰক</strong> <br/>এখন বিভাজনক % ৰ্ সৈতে সলনি কৰক। - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. এইটো ষ্টোৰেজ ডিভাইচত %1 আছে। <br/> আপুনি কি কৰিব বিচাৰে? ষ্টোৰেজ ডিভাইচটোত যিকোনো সলনি কৰাৰ আগত আপুনি পুনৰীক্ষণ আৰু সলনি কৰিব পাৰিব। - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. এইটো ষ্টোৰেজ ডিভাইচত ইতিমধ্যে এটা অপাৰেটিং চিছটেম আছে। আপুনি কি কৰিব বিচাৰে? <br/>ষ্টোৰেজ ডিভাইচটোত যিকোনো সলনি কৰাৰ আগত আপুনি পুনৰীক্ষণ আৰু সলনি কৰিব পাৰিব। - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. এইটো ষ্টোৰেজ ডিভাইচত একাধিক এটা অপাৰেটিং চিছটেম আছে। আপুনি কি কৰিব বিচাৰে? 1ষ্টোৰেজ ডিভাইচটোত যিকোনো সলনি কৰাৰ আগত আপুনি পুনৰীক্ষণ আৰু সলনি কৰিব পাৰিব। - + No Swap কোনো স্ৱেপ নাই - + Reuse Swap স্ৱেপ পুনৰ ব্যৱহাৰ কৰক - + Swap (no Hibernate) স্ৱেপ (হাইবাৰনেট নোহোৱাকৈ) - + Swap (with Hibernate) স্ৱোআপ (হাইবাৰনেটৰ সৈতে) - + Swap to file ফাইললৈ স্ৱোআপ কৰক। @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1ত বিভাজন কৰ্য্যৰ বাবে মাউণ্ট্ আতৰাওক - + Clearing mounts for partitioning operations on %1. %1ত বিভাজন কৰ্য্যৰ বাবে মাউণ্ট্ আতৰ কৰি আছে। - + Cleared all mounts for %1 %1ৰ গোটেই মাউন্ত আতৰোৱা হ'ল @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. গোটেই অস্থায়ী মাউন্ত আঁতৰাওক। - + Clearing all temporary mounts. গোটেই অস্থায়ী মাউন্ত আঁতৰোৱা হৈ আছে। - + Cannot get list of temporary mounts. অস্থায়ী মাউন্তৰ সূচী পোৱা নগ'ল। - + Cleared all temporary mounts. গোটেই অস্থায়ী মাউন্ত আঁতৰোৱা হ'ল। @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> কিবোৰ্ডৰ মডেল %1ত চেট্ কৰক।<br/> - + Set keyboard layout to %1/%2. কিবোৰ্ডৰ লেআউট %1/%2 চেট্ কৰক। - + + Set timezone to %1/%2. + + + + The system language will be set to %1. চিছটেমৰ ভাষা %1লৈ সলনি কৰা হ'ব। - + The numbers and dates locale will be set to %1. সংখ্যা আৰু তাৰিখ স্থানীয় %1লৈ সলনি কৰা হ'ব। - - - Set timezone to %1/%2.<br/> - সময় জ'ন  %1/%2লৈ সলনি কৰা হ'ল।<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + আপোনাৰ ইউজাৰ নাম বহুত দীঘল। + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + আপোনাৰ ব্যৱহাৰকাৰী নাম lowercase বৰ্ণ বা underscoreৰে আৰম্ভ হ'ব লাগিব। + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + কেৱল lowercase বৰ্ণ, সংখ্যা, underscore আৰু hyphenৰ হে মাত্ৰ অনুমতি আছে। + + + + Your hostname is too short. + আপোনাৰ হ'স্ট্ নাম বহুত ছুটি। + + + + Your hostname is too long. + আপোনাৰ হ'স্ট্ নাম বহুত দীঘল। + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + কেৱল বৰ্ণ, সংখ্যা, underscore আৰু hyphenৰ হে মাত্ৰ অনুমতি আছে। + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 %1 ব্যৱহাৰকৰ্তা বনাওক - + Create user <strong>%1</strong>. <strong>%1</strong> ব্যৱহাৰকৰ্তা বনাওক। - + Creating user %1. %1 ব্যৱহাৰকৰ্তা বনোৱা হৈ আছে। - - Sudoers dir is not writable. - Sudoers ডিৰেক্টৰি লিখনযোগ্য নহয়। - - - + Cannot create sudoers file for writing. লিখাৰ বাবে sudoers ফাইল বনাব পৰা নগ'ল। - + Cannot chmod sudoers file. sudoers ফাইলত chmod কৰিব পৰা নগ'ল। - - - Cannot open groups file for reading. - পঢ়াৰ বাবে groups ফাইল খুলিব পৰা নগ'ল। - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information বিভাজন তথ্য চেত্ কৰক - + Install %1 on <strong>new</strong> %2 system partition. <strong>নতুন</strong> %2 চিছটেম বিভাজনত %1 ইনস্তল কৰক। - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. <strong>%1</strong> মাউন্ট পইন্টৰ সৈতে <strong>নতুন</strong> %2 বিভজন স্থাপন কৰক। - + Install %2 on %3 system partition <strong>%1</strong>. %3 চিছটেম বিভাজনত <strong>%1</strong>ত %2 ইনস্তল কৰক। - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 বিভাজন <strong>%1</strong> <strong>%2</strong>ৰ সৈতে স্থাপন কৰক। - + Install boot loader on <strong>%1</strong>. <strong>1%ত</strong> বুত্ লোডাৰ ইনস্তল কৰক। - + Setting up mount points. মাউন্ট পইন্ট চেত্ আপ হৈ আছে। @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> কিবোৰ্ডৰ মডেল %1ত চেট্ কৰক।<br/> - + Set keyboard layout to %1/%2. কিবোৰ্ডৰ লেআউট %1/%2 চেট্ কৰক। @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. <h1>অনুজ্ঞা-পত্ৰ চুক্তি</h1> - + I accept the terms and conditions above. মই ওপৰোক্ত চৰ্তাৱলী গ্ৰহণ কৰিছোঁ। - + Please review the End User License Agreements (EULAs). অনুগ্ৰহ কৰি ব্যৱহাৰকৰ্তাৰ অনুজ্ঞা-পত্ৰ চুক্তি (EULA) সমূহ ভালদৰে নিৰীক্ষণ কৰক। - + This setup procedure will install proprietary software that is subject to licensing terms. এই চেচ্ আপ প্ৰক্ৰিয়াই মালিকানা চফটৱেৰ ইনস্তল কৰিব যিটো অনুজ্ঞা-পত্ৰৰ চৰ্তৰ অধীন বিষয় হ'ব। - + If you do not agree with the terms, the setup procedure cannot continue. যদি আপুনি চৰ্তাৱলী গ্ৰহণ নকৰে, চেত্ আপ প্ৰক্ৰিয়া চলাই যাব নোৱাৰিব। - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. এই চেত্ আপ প্ৰক্ৰিয়াই অতিৰিক্ত বৈশিষ্ট্য থকা সঁজুলি প্ৰদান কৰি ব্যৱহাৰকৰ্তাৰ অভিজ্ঞতা সংবৰ্দ্ধন কৰাৰ বাবে মালিকানা চফটৱেৰ ইনস্তল কৰিব যিটো অনুজ্ঞা-পত্ৰৰ চৰ্তৰ অধীন বিষয় হ'ব। - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. যাদি আপুনি চৰ্তাৱলী নামানে, মালিকিস্ৱত্ত থকা চফ্টৱেৰ ইনস্তল নহব আৰু মুকলি উৎস বিকল্প ব্যৱহাৰ হ'ব। @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: ক্ষেত্ৰ: - + Zone: মন্ডল: - - + + &Change... সলনি... (&C) - - - The system language will be set to %1. - চিছটেমৰ ভাষা %1লৈ সলনি কৰা হ'ব। - - - - The numbers and dates locale will be set to %1. - সংখ্যা আৰু তাৰিখ স্থানীয় %1লৈ সলনি কৰা হ'ব। - - - - Set timezone to %1/%2.<br/> - সময় জ'ন  %1/%2লৈ সলনি কৰা হ'ল।<br/> - LocaleQmlViewStep - + Location অৱস্থান @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location অৱস্থান @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2178,7 +2193,7 @@ The installer will quit and all changes will be lost. অজ্ঞাত ক্ৰুটি - + Password is empty খালী পাছৱৰ্ড @@ -2517,112 +2532,112 @@ The installer will quit and all changes will be lost. চিছটেম তথ্য সংগ্ৰহ কৰা হৈ আছে। - + Partitions বিভাজনসমুহ - + Install %1 <strong>alongside</strong> another operating system. %1ক বেলেগ এটা অপাৰেটিং চিছটেমৰ <strong>লগত </strong>ইনস্তল কৰক। - + <strong>Erase</strong> disk and install %1. ডিস্কত থকা সকলো ডাটা <strong>আতৰাওক</strong> আৰু %1 ইনস্তল কৰক। - + <strong>Replace</strong> a partition with %1. এখন বিভাজন %1ৰ লগত <strong>সলনি</strong> কৰক। - + <strong>Manual</strong> partitioning. <strong>মেনুৱেল</strong> বিভাজন। - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1ক <strong>%2</strong>(%3)ত ডিস্কত থকা বেলেগ অপাৰেটিং চিছটেমৰ <strong>লগত</strong> ইনস্তল কৰক। - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3)ডিস্কত থকা সকলো ডাটা <strong>আতৰাওক</strong> আৰু %1 ইনস্তল কৰক। - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) ডিস্কত এখন বিভাজন %1ৰ লগত <strong>সলনি</strong> কৰক। - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) ডিস্কত <strong>মেনুৱেল</strong> বিভাজন। - + Disk <strong>%1</strong> (%2) ডিস্ক্ <strong>%1</strong> (%2) - + Current: বর্তমান: - + After: পিছত: - + No EFI system partition configured কোনো EFI চিছটেম বিভাজন কনফিগাৰ কৰা হোৱা নাই - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI চিছটেম বিভাজনত ফ্লেগ চেট কৰা নাই - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted বুত্ বিভাজন এনক্ৰিপ্ত্ নহয় - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. এনক্ৰিপ্তেড ৰুট বিভাজনৰ সৈতে এটা বেলেগ বুট বিভাজন চেত্ আপ কৰা হৈছিল, কিন্তু বুট বিভাজন এনক্ৰিপ্তেড কৰা হোৱা নাই। <br/><br/>এইধৰণৰ চেত্ আপ সুৰক্ষিত নহয় কাৰণ গুৰুত্ব্পুৰ্ণ চিছটেম ফাইল আন্এনক্ৰিপ্তেড বিভাজনত ৰখা হয়। <br/>আপুনি বিচাৰিলে চলাই থাকিব পাৰে কিন্তু পিছ্ত চিছটেম আৰম্ভৰ সময়ত ফাইল চিছটেম খোলা যাব। <br/>বুট বিভাজন এনক্ৰিপ্ত্ কৰিবলৈ উভতি যাওক আৰু বিভাজন বনোৱা windowত <strong>Encrypt</strong> বাচনি কৰি আকৌ বনাওক। - + has at least one disk device available. অতি কমেও এখন ডিস্ক্ উপলব্ধ আছে। - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... ফাইল পিছৰ বাবে জমা কৰি আছে ... - + No files configured to save for later. পিছলৈ জমা ৰাখিব কোনো ফাইল কন্ফিগাৰ কৰা হোৱা নাই। - + Not all of the configured files could be preserved. কন্ফিগাৰ কৰা গোটেই ফাইল জমা ৰাখিব নোৱৰি। @@ -3163,29 +3178,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 কিবোৰ্ডৰ মডেল %1 চেত্ কৰক, বিন্যাস %2-%3 - + Failed to write keyboard configuration for the virtual console. ভাৰচুৱেল কনচ'লৰ বাবে কিবোৰ্ড কনফিগাৰেচন লিখাত বিফল হ'ল। - - - + + + Failed to write to %1 %1 ত লিখাত বিফল হ'ল - + Failed to write keyboard configuration for X11. X11ৰ বাবে কিবোৰ্ড কনফিগাৰেচন লিখাত বিফল হ'ল। - + Failed to write keyboard configuration to existing /etc/default directory. উপস্থিত থকা /etc/default ডিৰেক্টৰিত কিবোৰ্ড কনফিগাৰেচন লিখাত বিফল হ'ল। @@ -3418,28 +3433,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3447,28 +3462,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback মেচিন সম্বন্ধীয় প্ৰতিক্ৰীয়া - + Configuring machine feedback. মেচিন সম্বন্ধীয় প্ৰতিক্ৰীয়া কনফিগাৰ কৰি আছে‌। - - + + Error in machine feedback configuration. মেচিনত ফিডবেক কনফিগাৰেচনৰ ক্ৰুটি। - + Could not configure machine feedback correctly, script error %1. মেচিনৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, লিপি ক্ৰুটি %1। - + Could not configure machine feedback correctly, Calamares error %1. মেচিনৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, কেলামাৰেচ ক্ৰুটি %1। @@ -3527,47 +3542,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>যদি এটাতকৈ বেছি ব্যক্তিয়ে এইটো কম্পিউটাৰ ব্যৱহাৰ কৰে, আপুনি চেত্ আপৰ পিছত বহুতো একাউন্ট বনাব পাৰে।</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>যদি এটাতকৈ বেছি ব্যক্তিয়ে এইটো কম্পিউটাৰ ব্যৱহাৰ কৰে, আপুনি ইনস্তলচেন​ৰ পিছত বহুতো একাউন্ট বনাব পাৰে।</small> - - Your username is too long. - আপোনাৰ ইউজাৰ নাম বহুত দীঘল। - - - - Your username must start with a lowercase letter or underscore. - আপোনাৰ ব্যৱহাৰকাৰী নাম lowercase বৰ্ণ বা underscoreৰে আৰম্ভ হ'ব লাগিব। - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - কেৱল lowercase বৰ্ণ, সংখ্যা, underscore আৰু hyphenৰ হে মাত্ৰ অনুমতি আছে। - - - - Your hostname is too short. - আপোনাৰ হ'স্ট্ নাম বহুত ছুটি। - - - - Your hostname is too long. - আপোনাৰ হ'স্ট্ নাম বহুত দীঘল। - - - - Only letters, numbers, underscore and hyphen are allowed. - কেৱল বৰ্ণ, সংখ্যা, underscore আৰু hyphenৰ হে মাত্ৰ অনুমতি আছে। - - - + Your passwords do not match! আপোনাৰ পাছৱৰ্ডকেইটাৰ মিল নাই! @@ -3575,7 +3560,7 @@ Output: UsersViewStep - + Users ব্যৱহাৰকাৰীসকল @@ -3788,19 +3773,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3808,44 +3793,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3853,17 +3838,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index 4b17a8a11..fb9402c5c 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -220,7 +220,7 @@ - + Loading failed. Falló la carga. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Falló la configuración - + Installation Failed Falló la instalación - + Would you like to paste the install log to the web? - + Error Fallu - - + + &Yes &Sí - - + + &No &Non - + &Close &Zarrar - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Falló l'aniciu de Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 nun pue instalase. Calamares nun foi a cargar tolos módulos configuraos. Esto ye un problema col mou nel que la distribución usa Calamares. - + <br/>The following modules could not be loaded: <br/>Nun pudieron cargase los módulos de darréu: - + Continue with setup? ¿Siguir cola instalación? - + Continue with installation? ¿Siguir cola instalación? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> El programa d'instalación de %1 ta a piques de facer cambeos nel discu pa configurar %2.<br/><strong>Nun vas ser a desfacer estos cambeos.<strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instalador de %1 ta a piques de facer cambeos nel discu pa instalar %2.<br/><strong>Nun vas ser a desfacer esos cambeos.</strong> - + &Set up now &Configurar agora - + &Install now &Instalar agora - + Go &back Dir p'&atrás - + &Set up &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. Completóse la configuración. Zarra'l programa de configuración. - + The installation is complete. Close the installer. Completóse la instalación. Zarra l'instalador. - + Cancel setup without changing the system. Encaboxa la configuración ensin camudar el sistema. - + Cancel installation without changing the system. Encaboxa la instalación ensin camudar el sistema. - + &Next &Siguiente - + &Back &Atrás - + &Done &Fecho - + &Cancel &Encaboxar - + Cancel setup? ¿Encaboxar la configuración? - + Cancel installation? ¿Encaboxar la instalación? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. ¿De xuru que quies encaboxar el procesu actual de configuración? El programa de configuración va colar y van perdese tolos cambeos. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿De xuru que quies encaboxar el procesu actual d'instalación? @@ -483,12 +483,12 @@ L'instalador va colar y van perdese tolos cambeos. &Encaboxar - + %1 Setup Program Programa de configuración de %1 - + %1 Installer Instalador de %1 @@ -515,9 +515,9 @@ L'instalador va colar y van perdese tolos cambeos. - - - + + + Current: Anguaño: @@ -528,115 +528,115 @@ L'instalador va colar y van perdese tolos cambeos. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionáu manual</strong><br/>Vas poder crear o redimensionar particiones. - + Reuse %1 as home partition for %2. Reusu de %s como partición d'aniciu pa %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Esbilla una partición a redimensionar, dempués arrastra la barra baxera pa facelo</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 va redimensionase a %2MB y va crease una partición de %3MB pa %4. - + Boot loader location: Allugamientu del xestor d'arrinque: - + <strong>Select a partition to install on</strong> <strong>Esbilla una partición na qu'instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nun pudo alcontrase per nenyures una partición del sistema EFI. Volvi p'atrás y usa'l particionáu manual pa configurar %1, por favor. - + The EFI system partition at %1 will be used for starting %2. La partición del sistema EFI en %1 va usase p'aniciar %2. - + EFI system partition: Partición del sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu nun paez que tenga un sistema operativu nelli. ¿Qué te prestaría facer?<br/>Vas ser a revisar y confirmar lo qu'escueyas enantes de que se faiga cualesquier cambéu nel preséu d'almacenamientu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Desaniciu d'un discu</strong><br/>Esto va <font color="red">desaniciar</font> tolos datos presentes nel preséu d'almacenamientu esbilláu. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalación anexa</strong><br/>L'instalador va redimensionar una partición pa dexar sitiu a %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Troquéu d'una partición</strong><br/>Troca una parción con %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu tien %1 nelli. ¿Qué te prestaría facer?<br/>Vas ser a revisar y confirmar lo qu'escueyas enantes de que se faiga cualesquier cambéu nel preséu d'almacenamientu. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu yá tien un sistema operativu nelli. ¿Qué te prestaría facer?<br/>Vas ser a revisar y confirmar lo qu'escueyas enantes de que se faiga cualesquier cambéu nel preséu d'almacenamientu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu tien varios sistemes operativos nelli. ¿Qué te prestaría facer?<br/>Vas ser a revisar y confirmar lo qu'escueyas enantes de que se faiga cualesquier cambéu nel preséu d'almacenamientu. - + No Swap Ensin intercambéu - + Reuse Swap Reusar un intercambéu - + Swap (no Hibernate) Intercambéu (ensin ivernación) - + Swap (with Hibernate) Intercambéu (con ivernación) - + Swap to file Intercambéu nun ficheru @@ -644,17 +644,17 @@ L'instalador va colar y van perdese tolos cambeos. ClearMountsJob - + Clear mounts for partitioning operations on %1 Llimpieza de los montaxes pa les operaciones de particionáu en %1. - + Clearing mounts for partitioning operations on %1. Llimpiando los montaxes pa les operaciones de particionáu en %1. - + Cleared all mounts for %1 Llimpiáronse tolos montaxes de %1 @@ -662,22 +662,22 @@ L'instalador va colar y van perdese tolos cambeos. ClearTempMountsJob - + Clear all temporary mounts. Llimpieza de tolos montaxes temporales. - + Clearing all temporary mounts. Llimpiando tolos montaxes temporales. - + Cannot get list of temporary mounts. Nun pue consiguise la llista de montaxes temporales. - + Cleared all temporary mounts. Llimpiáronse tolos puntos de montaxe. @@ -704,30 +704,30 @@ L'instalador va colar y van perdese tolos cambeos. Config - + Set keyboard model to %1.<br/> Va afitase'l modelu del tecláu a %1.<br/> - + Set keyboard layout to %1/%2. Va afitase la distrubución del tecláu a %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. La llingua del sistema va afitase a %1. - + The numbers and dates locale will be set to %1. La númberación y data van afitase en %1. - - - Set timezone to %1/%2.<br/> - Va afitase'l fusu horariu a %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ L'instalador va colar y van perdese tolos cambeos. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + El nome d'usuariu ye perllargu. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + El nome d'agospiu ye percurtiu. + + + + Your hostname is too long. + El nome d'agospiu ye perllargu. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -957,40 +997,30 @@ L'instalador va colar y van perdese tolos cambeos. CreateUserJob - + Create user %1 Creación del usuariu %1 - + Create user <strong>%1</strong>. Va crease l'usuariu <strong>%1</strong>. - + Creating user %1. Creando l'usuariu %1. - - Sudoers dir is not writable. - El direutoriu de sudoers nun ye escribible. - - - + Cannot create sudoers file for writing. Nun pue crease'l ficheru sudoers pa la escritura. - + Cannot chmod sudoers file. Nun pue facese chmod al ficheru sudoers. - - - Cannot open groups file for reading. - Nun pue abrise pa la llectura'l ficheru de grupos. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ L'instalador va colar y van perdese tolos cambeos. FillGlobalStorageJob - + Set partition information Afitamientu de la información de les particiones - + Install %1 on <strong>new</strong> %2 system partition. Va instalase %1 na partición %2 <strong>nueva</strong> del sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Va configurase una partición %2 <strong>nueva</strong> col puntu de montaxe <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Va instalase %2 na partición %3 del sistema de <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Va configurase la partición %3 de <strong>%1</strong> col puntu de montaxe <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Va instalase'l xestor d'arrinque en <strong>%1</strong>. - + Setting up mount points. Configurando los puntos de montaxe. @@ -1509,12 +1539,12 @@ L'instalador va colar y van perdese tolos cambeos. KeyboardPage - + Set keyboard model to %1.<br/> Va afitase'l modelu del tecláu a %1.<br/> - + Set keyboard layout to %1/%2. Va afitase la distrubución del tecláu a %1/%2. @@ -1571,32 +1601,32 @@ L'instalador va colar y van perdese tolos cambeos. - + I accept the terms and conditions above. Aceuto los términos y condiciones d'enriba. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. Esti procedimientu va instalar software privativu que ta suxetu a términos de llicencia. - + If you do not agree with the terms, the setup procedure cannot continue. Si nun aceutes los términos, el procedimientu de configuración nun pue siguir. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Esti procedimientu de configuración pue instalar software privativu que ta suxetu a términos de llicencia pa fornir carauterístiques adicionales y ameyorar la esperiencia d'usuariu. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si nun aceutes los términos, el software privativu nun va instalase y van usase les alternatives de códigu abiertu. @@ -1672,41 +1702,26 @@ L'instalador va colar y van perdese tolos cambeos. LocalePage - + Region: Rexón: - + Zone: Zona: - - + + &Change... &Camudar... - - - The system language will be set to %1. - La llingua del sistema va afitase a %1. - - - - The numbers and dates locale will be set to %1. - La númberación y data van afitase en %1. - - - - Set timezone to %1/%2.<br/> - Va afitase'l fusu horariu a %1/%2.<br/> - LocaleQmlViewStep - + Location Allugamientu @@ -1714,7 +1729,7 @@ L'instalador va colar y van perdese tolos cambeos. LocaleViewStep - + Location Allugamientu @@ -1776,7 +1791,7 @@ L'instalador va colar y van perdese tolos cambeos. Map - + 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. @@ -2177,7 +2192,7 @@ L'instalador va colar y van perdese tolos cambeos. Desconozse'l fallu - + Password is empty La contraseña ta balera @@ -2516,112 +2531,112 @@ L'instalador va colar y van perdese tolos cambeos. Recoyendo la información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Va instalase %1 <strong>xunto a</strong> otru sistema operativu. - + <strong>Erase</strong> disk and install %1. <strong>Va desaniciase</strong>'l discu y va instalase %1. - + <strong>Replace</strong> a partition with %1. <strong>Va trocase</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionáu <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Va instalase %1 <strong>xunto a</strong> otru sistema operativu nel discu <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Va desaniciase</strong>'l discu <strong>%2</strong> (%3) y va instalase %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Va trocase</strong> una partición nel discu <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionáu <strong>manual</strong> nel discu <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discu <strong>%1</strong> (%2) - + Current: Anguaño: - + After: Dempués: - + No EFI system partition configured Nun se configuró nenguna partición del sistema EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Nun s'afitó la bandera del sistema EFI - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted La partición d'arrinque nun ta cifrada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Configuróse una partición d'arrinque xunto con una partición raigañu cifrada pero la partición d'arrinque nun ta cifrada.<br/><br/>Hai problemes de seguranza con esta triba de configuración porque los ficheros importantes del sistema caltiénense nuna partición ensin cifrar.<br/>Podríes siguir si quixeres pero'l desbloquéu del sistema de ficheros va asoceder más sero nel aniciu del sistema.<br/>Pa cifrar la partición raigañu, volvi p'atrás y recreala esbillando <strong>Cifrar</strong> na ventana de creación de particiones. - + has at least one disk device available. tien polo menos un preséu disponible d'almacenamientu - + There are no partitions to install on. Nun hai particiones nes qu'instalar. @@ -2669,17 +2684,17 @@ L'instalador va colar y van perdese tolos cambeos. PreserveFiles - + Saving files for later ... Guardando ficheros pa dempués... - + No files configured to save for later. Nun se configuraron ficheros pa guardar dempués. - + Not all of the configured files could be preserved. Nun pudieron caltenese tolos ficheros configuraos. @@ -3162,29 +3177,29 @@ Salida: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Afitamientu del modelu del tecláu a %1, distribución %2-%3 - + Failed to write keyboard configuration for the virtual console. Fallu al escribir la configuración del tecláu pa la consola virtual. - - - + + + Failed to write to %1 Fallu al escribir en %1 - + Failed to write keyboard configuration for X11. Fallu al escribir la configuración del tecláu pa X11. - + Failed to write keyboard configuration to existing /etc/default directory. Fallu al escribir la configuración del tecláu nel direutoriu esistente de /etc/default . @@ -3417,28 +3432,28 @@ Salida: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Salida: TrackingMachineUpdateManagerJob - + Machine feedback Siguimientu de la máquina - + Configuring machine feedback. Configurando'l siguimientu de la máquina. - - + + Error in machine feedback configuration. Fallu na configuración del siguimientu de la máquina. - + Could not configure machine feedback correctly, script error %1. Nun pudo configurase afayadizamente'l siguimientu de la máquina, fallu del script %1. - + Could not configure machine feedback correctly, Calamares error %1. Nun pudo configurase afayadizamente'l siguimientu de la máquina, fallu de Calamares %1. @@ -3526,47 +3541,17 @@ Salida: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Si va usar l'ordenador más d'una persona, pues crear más cuentes tres la configuración.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Si va usar l'ordenador más d'una persona, pues crear más cuentes tres la instalación.</small> - - Your username is too long. - El nome d'usuariu ye perllargu. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - El nome d'agospiu ye percurtiu. - - - - Your hostname is too long. - El nome d'agospiu ye perllargu. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! ¡Les contraseñes nun concasen! @@ -3574,7 +3559,7 @@ Salida: UsersViewStep - + Users Usuarios @@ -3787,19 +3772,19 @@ Salida: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3807,44 +3792,44 @@ Salida: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware Escueyi'l modelu que prefieras o usa'l predetermináu según el hardware deteutáu - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models Modelos - + Variants Variantes - + Test your keyboard @@ -3852,17 +3837,7 @@ Salida: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_az.ts b/lang/calamares_az.ts index bfc079749..4656531e5 100644 --- a/lang/calamares_az.ts +++ b/lang/calamares_az.ts @@ -220,7 +220,7 @@ QML addımı <i>%1</i>. - + Loading failed. Yüklənmə alınmadı. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Quraşdırılma xətası - + Installation Failed Quraşdırılma alınmadı - + Would you like to paste the install log to the web? Quraşdırma jurnalını vebdə yerləşdirmək istəyirsinizmi? - + Error Xəta - - + + &Yes &Bəli - - + + &No &Xeyr - + &Close &Bağlamaq - + Install Log Paste URL Jurnal yerləşdirmə URL-nu daxil etmək - + The upload was unsuccessful. No web-paste was done. Yükləmə uğursuz oldu. Heç nə vebdə daxil edilmədi. - + Calamares Initialization Failed Calamares işə salına bilmədi - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i, sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir. - + <br/>The following modules could not be loaded: <br/>Yüklənə bilməyən modullar aşağıdakılardır: - + Continue with setup? Quraşdırılma davam etdirilsin? - + Continue with installation? Quraşdırılma davam etdirilsin? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 quraşdırıcı proqramı %2 quraşdırmaq üçün Sizin diskdə dəyişiklik etməyə hazırdır.<br/><strong>Bu dəyişikliyi ləğv etmək mümkün olmayacaq.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 quraşdırıcı proqramı %2 quraşdırmaq üçün Sizin diskdə dəyişiklik etməyə hazırdır.<br/><strong>Bu dəyişikliyi ləğv etmək mümkün olmayacaq.</strong> - + &Set up now &İndi ayarlamaq - + &Install now Q&uraşdırmağa başlamaq - + Go &back &Geriyə - + &Set up A&yarlamaq - + &Install Qu&raşdırmaq - + Setup is complete. Close the setup program. Quraşdırma başa çatdı. Quraşdırma proqramını bağlayın. - + The installation is complete. Close the installer. Quraşdırma başa çatdı. Quraşdırıcını bağlayın. - + Cancel setup without changing the system. Sistemi dəyişdirmədən quraşdırmanı ləğv etmək. - + Cancel installation without changing the system. Sistemə dəyişiklik etmədən quraşdırmadan imtina etmək. - + &Next İ&rəli - + &Back &Geriyə - + &Done &Hazır - + &Cancel İm&tina etmək - + Cancel setup? Quraşdırılmadan imtina edilsin? - + Cancel installation? Yüklənmədən imtina edilsin? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Siz doğrudanmı hazırkı quraşdırmadan imtina etmək istəyirsiniz? Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Siz doğrudanmı hazırkı yüklənmədən imtina etmək istəyirsiniz? @@ -484,12 +484,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.&İmtina etmək - + %1 Setup Program %1 Quraşdırıcı proqram - + %1 Installer %1 Quraşdırıcı @@ -516,9 +516,9 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - - - + + + Current: Cari: @@ -529,115 +529,115 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Əl ilə bölmək</strong><br/>Siz disk sahəsini özünüz bölə və ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli və <strong>fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir</strong>, ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + - + Reuse %1 as home partition for %2. %1 Ev bölməsi olaraq %2 üçün istifadə edilsin. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Kiçiltmək üçün bir bölmə seçərək altdakı çübüğü sürüşdürərək ölçüsünü verin</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 %2MB-a qədər azalacaq və %4 üçün yeni bölmə %3MB disk bölməsi yaradılacaq. - + Boot loader location: Ön yükləyici (boot) yeri: - + <strong>Select a partition to install on</strong> <strong>Quraşdırılacaq disk bölməsini seçin</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI sistem bölməsi tapılmadı. Geriyə qayıdın və %1 bölməsini əllə yaradın. - + The EFI system partition at %1 will be used for starting %2. %1 EFI sistemi %2 başlatmaq üçün istifadə olunacaqdır. - + EFI system partition: EFI sistem bölməsi: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazıda əməliyyat sistemi görünmür. Nə etmək istəyərdiniz?<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Diski təmizləmək</strong><br/> <font color="red">Silmək</font>seçimi hal-hazırda, seçilmiş diskdəki bütün verilənləri siləcəkdir. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Yanına quraşdırın</strong><br/>Quraşdırıcı, bölməni kiçildərək %1 üçün boş disk sahəsi yaradacaqdır. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Bölməni başqası ilə əvəzləmək</strong><br/>Bölməni %1 ilə əvəzləyir. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda %1 var. Nə etmək istəyirsiniz?<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda artıq bir əməliyyat sistemi var. Nə etmək istərdiniz?.<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda bir neçə əməliyyat sistemi mövcuddur. Nə etmək istərdiniz? Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + No Swap Mübadilə bölməsi olmadan - + Reuse Swap Mövcud mübadilə bölməsini istifadə etmək - + Swap (no Hibernate) Mübadilə bölməsi (yuxu rejimi olmadan) - + Swap (with Hibernate) Mübadilə bölməsi (yuxu rejimi ilə) - + Swap to file Mübadilə faylı @@ -645,17 +645,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1-də bölmə əməliyyatı üçün qoşulma nöqtələrini silmək - + Clearing mounts for partitioning operations on %1. %1-də bölmə əməliyyatı üçün qoşulma nöqtələrini silinir. - + Cleared all mounts for %1 %1 üçün bütün qoşulma nöqtələri silindi @@ -663,22 +663,22 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. ClearTempMountsJob - + Clear all temporary mounts. Bütün müvəqqəti qoşulma nöqtələrini ləğv etmək. - + Clearing all temporary mounts. Bütün müvəqqəti qoşulma nöqtələri ləğv edilir. - + Cannot get list of temporary mounts. Müvəqqəti qoşulma nöqtələrinin siyahısı alına bilmədi. - + Cleared all temporary mounts. Bütün müvəqqəti qoşulma nöqtələri ləğv edildi. @@ -705,30 +705,30 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Config - + Set keyboard model to %1.<br/> Klaviatura modelini %1 olaraq təyin etmək.<br/> - + Set keyboard layout to %1/%2. Klaviatura qatını %1/%2 olaraq təyin etmək. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Sistem dili %1 təyin ediləcək. - + The numbers and dates locale will be set to %1. Yerli say və tarix formatı %1 təyin olunacaq. - - - Set timezone to %1/%2.<br/> - Saat Qurşağını %1/%2 təyin etmək.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.<h1>Welcome to the %1 installer</h1> <h1>%1 quraşdırıcısına xoş gəldiniz</h1> + + + Your username is too long. + İstifadəçi adınız çox uzundur. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + İstifadəçi adınız yalnız kiçik və ya alt cizgili hərflərdən ibarət olmalıdır. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Yalnız kiçik hərflərdən, simvollardan, alt cizgidən və defisdən istifadə oluna bilər. + + + + Your hostname is too short. + Host adınız çox qısadır. + + + + Your hostname is too long. + Host adınız çox uzundur. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Yalnız kiçik hərflərdən, saylardan, alt cizgidən və defisdən istifadə oluna bilər. + ContextualProcessJob @@ -958,40 +998,30 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. CreateUserJob - + Create user %1 %1 İstifadəçi hesabı yaratmaq - + Create user <strong>%1</strong>. <strong>%1</strong> istifadəçi hesabı yaratmaq. - + Creating user %1. %1 istifadəçi hesabı yaradılır. - - Sudoers dir is not writable. - Sudoers qovluğu yazıla bilən deyil. - - - + Cannot create sudoers file for writing. Sudoers faylını yazmaq mümkün olmadı. - + Cannot chmod sudoers file. Sudoers faylına chmod tətbiq etmək mümkün olmadı. - - - Cannot open groups file for reading. - Groups faylını oxumaq üçün açmaq mümkün olmadı. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. FillGlobalStorageJob - + Set partition information Bölmə məlumatlarını ayarlamaq - + Install %1 on <strong>new</strong> %2 system partition. %2 <strong>yeni</strong> sistem diskinə %1 quraşdırmaq. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. %2 <strong>yeni</strong> bölməsini <strong>%1</strong> qoşulma nöqtəsi ilə ayarlamaq. - + Install %2 on %3 system partition <strong>%1</strong>. %3dəki <strong>%1</strong> sistem bölməsinə %2 quraşdırmaq. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 bölməsinə <strong>%1</strong> ilə <strong>%2</strong> qoşulma nöqtəsi ayarlamaq. - + Install boot loader on <strong>%1</strong>. Ön yükləyicini <strong>%1</strong>də quraşdırmaq. - + Setting up mount points. Qoşulma nöqtəsini ayarlamaq. @@ -1510,12 +1540,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. KeyboardPage - + Set keyboard model to %1.<br/> Klaviatura modelini %1 olaraq təyin etmək.<br/> - + Set keyboard layout to %1/%2. Klaviatura qatını %1/%2 olaraq təyin etmək. @@ -1572,32 +1602,32 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.<h1>Lisenziya razılaşması</h1> - + I accept the terms and conditions above. Mən yuxarıda göstərilən şərtləri qəbul edirəm. - + Please review the End User License Agreements (EULAs). Lütfən lisenziya razılaşması (EULA) ilə tanış olun. - + This setup procedure will install proprietary software that is subject to licensing terms. Bu quraşdırma proseduru lisenziya şərtlərinə tabe olan xüsusi proqram təminatını quraşdıracaqdır. - + If you do not agree with the terms, the setup procedure cannot continue. Lisenziya razılaşmalarını qəbul etməsəniz quraşdırılma davam etdirilə bilməz. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Bu quraşdırma proseduru, əlavə xüsusiyyətlər təmin etmək və istifadəçi təcrübəsini artırmaq üçün lisenziyalaşdırma şərtlərinə tabe olan xüsusi proqram təminatını quraşdıra bilər. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Şərtlərlə razılaşmasanız, xüsusi proqram quraşdırılmayacaq və bunun əvəzinə açıq mənbə kodu ilə alternativlər istifadə ediləcəkdir. @@ -1673,41 +1703,26 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocalePage - + Region: Məkan: - + Zone: Saat qurşağı: - - + + &Change... &Dəyişmək... - - - The system language will be set to %1. - Sistem dili %1 təyin ediləcək. - - - - The numbers and dates locale will be set to %1. - Yerli nömrə və tarix formatı %1 təyin olunacaq. - - - - Set timezone to %1/%2.<br/> - Saat Qurşağını %1/%2 təyin etmək.<br/> - LocaleQmlViewStep - + Location Məkan @@ -1715,7 +1730,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocaleViewStep - + Location Məkan @@ -1777,7 +1792,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Map - + 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. @@ -2180,7 +2195,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Naməlum xəta - + Password is empty Şifrə böşdur @@ -2520,112 +2535,112 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril Sistem məlumatları toplanır ... - + Partitions Bölmələr - + Install %1 <strong>alongside</strong> another operating system. Digər əməliyyat sistemini %1 <strong>yanına</strong> quraşdırmaq. - + <strong>Erase</strong> disk and install %1. Diski <strong>çıxarmaq</strong> və %1 quraşdırmaq. - + <strong>Replace</strong> a partition with %1. Bölməni %1 ilə <strong>əvəzləmək</strong>. - + <strong>Manual</strong> partitioning. <strong>Əl ilə</strong> bölüşdürmə. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). <strong>%2</strong> (%3) diskində başqa əməliyyat sistemini %1 <strong>yanında</strong> quraşdırmaq. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3) diskini <strong>çıxartmaq</strong> və %1 quraşdırmaq. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) diskində bölməni %1 ilə <strong>əvəzləmək</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) diskində <strong>əl ilə</strong> bölüşdürmə. - + Disk <strong>%1</strong> (%2) <strong>%1</strong> (%2) diski - + Current: Cari: - + After: Sonra: - + No EFI system partition configured EFI sistemi bölməsi tənzimlənməyib - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFİ sistemi bölməsi, %1 başlatmaq üçün vacibdir. <br/><br/>EFİ sistemi bölməsini yaratmaq üçün geriyə qayıdın və aktiv edilmiş<strong>%3</strong> bayrağı və <strong>%2</strong> qoşulma nöqtəsi ilə FAT32 fayl sistemi seçin və ya yaradın.<br/><br/>Siz EFİ sistemi bölməsi yaratmadan da davam edə bilərsiniz, lakin bu halda sisteminiz açılmaya bilər. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 başlatmaq üçün EFİ sistem bölməsi vacibdir.<br/><br/>Bölmə <strong>%2</strong> qoşulma nöqtəsi ilə yaradılıb, lakin onun <strong>%3</strong> bayrağı seçilməyib.<br/>Bayrağı seçmək üçün geriyə qayıdın və bölməyə süzəliş edin.<br/><br/>Siz bayrağı seçmədən də davam edə bilərsiniz, lakin bu halda sisteminiz açılmaya bilər. - + EFI system partition flag not set EFİ sistem bölməsi bayraqı seçilməyib - + Option to use GPT on BIOS BIOS-da GPT istifadəsi seçimi - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT bölmə cədvəli bütün sistemlər üçün yaxşıdır. Bu quraşdırıcı BIOS sistemləri üçün də belə bir quruluşu dəstəkləyir.<br/><br/>BİOS-da GPT bölmələr cədvəlini ayarlamaq üçün (əgər bu edilməyibsə) geriyə qayıdın və bölmələr cədvəlini GPT-yə qurun, sonra isə <strong>bios_grub</strong> bayrağı seçilmiş 8 MB-lıq formatlanmamış bölmə yaradın.<br/><br/>8 MB-lıq formatlanmamış bölmə GPT ilə BİOS sistemində %1 başlatmaq üçün lazımdır. - + Boot partition not encrypted Ön yükləyici bölməsi çifrələnməyib - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Şifrəli bir kök bölməsi ilə birlikdə ayrı bir ön yükləyici bölməsi qurulub, ancaq ön yükləyici bölməsi şifrələnməyib.<br/><br/>Bu cür quraşdırma ilə bağlı təhlükəsizlik problemləri olur, çünki vacib sistem sənədləri şifrəsiz bölmədə saxlanılır.<br/>İstəyirsinizsə davam edə bilərsiniz, lakin, fayl sisteminin kilidi, sistem başladıldıqdan daha sonra açılacaqdır.<br/>Yükləmə hissəsini şifrələmək üçün geri qayıdın və bölmə yaratma pəncərəsində <strong>Şifrələmə</strong> menyusunu seçərək onu yenidən yaradın. - + has at least one disk device available. ən az bir disk qurğusu mövcuddur. - + There are no partitions to install on. Quraşdırmaq üçün bölmə yoxdur. @@ -2673,17 +2688,17 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril PreserveFiles - + Saving files for later ... Fayllar daha sonra saxlanılır... - + No files configured to save for later. Sonra saxlamaq üçün heç bir ayarlanan fayl yoxdur. - + Not all of the configured files could be preserved. Ayarlanan faylların hamısı saxlanıla bilməz. @@ -3169,29 +3184,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Klaviatura modeliini %1, qatını isə %2-%3 təyin etmək - + Failed to write keyboard configuration for the virtual console. Virtual konsol üçün klaviatura tənzimləmələrini yazmaq mümkün olmadı. - - - + + + Failed to write to %1 %1-ə yazmaq mümkün olmadı - + Failed to write keyboard configuration for X11. X11 üçün klaviatura tənzimləmələrini yazmaq mümükün olmadı. - + Failed to write keyboard configuration to existing /etc/default directory. Klaviatura tənzimləmələri möcvcud /etc/default qovluğuna yazıla bilmədi. @@ -3424,28 +3439,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback KDE istifadəçi hesabatı - + Configuring KDE user feedback. KDE istifadəçi hesabatının tənzimlənməsi. - - + + Error in KDE user feedback configuration. KDE istifadəçi hesabatının tənzimlənməsində xəta. - + Could not configure KDE user feedback correctly, script error %1. KDE istifadəçi hesabatı düzgün tənzimlənmədi, əmr xətası %1. - + Could not configure KDE user feedback correctly, Calamares error %1. KDE istifadəçi hesabatı düzgün tənzimlənmədi, Calamares xətası %1. @@ -3453,28 +3468,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Kompyuter hesabatı - + Configuring machine feedback. kompyuter hesabatının tənzimlənməsi. - - + + Error in machine feedback configuration. Kompyuter hesabatının tənzimlənməsində xəta. - + Could not configure machine feedback correctly, script error %1. Kompyuter hesabatı düzgün tənzimlənmədi, əmr xətası %1. - + Could not configure machine feedback correctly, Calamares error %1. Kompyuter hesabatı düzgün tənzimlənmədi, Calamares xətası %1. @@ -3533,47 +3548,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Əgər bu kompyuteri sizdən başqa şəxs istifadə edəcəkdirsə o zaman ayarlandıqdan sonra bir neçə istifadəçi hesabı yarada bilərsiniz.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Əgər bu kompyuteri sizdən başqa şəxs istifadə edəcəkdirsə o zaman quraşdırıldıqdan sonra bir neçə istifadəçi hesabı yarada bilərsiniz.</small> - - Your username is too long. - İstifadəçi adınız çox uzundur. - - - - Your username must start with a lowercase letter or underscore. - İstifadəçi adınız yalnız kiçik və ya alt cizgili hərflərdən ibarət olmalıdır. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Yalnız kiçik hərflərdən, simvollardan, alt cizgidən və defisdən istifadə oluna bilər. - - - - Your hostname is too short. - Host adınız çox qısadır. - - - - Your hostname is too long. - Host adınız çox uzundur. - - - - Only letters, numbers, underscore and hyphen are allowed. - Yalnız kiçik hərflərdən, saylardan, alt cizgidən və defisdən istifadə oluna bilər. - - - + Your passwords do not match! Şifrənizin təkrarı eyni deyil! @@ -3581,7 +3566,7 @@ Output: UsersViewStep - + Users İstifadəçilər @@ -3805,21 +3790,20 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Dillər</h1> </br> Sistemin yer ayarları bəzi istifadəçi interfeysi elementləri əmrlər sətri üçün dil və simvolların ayarlanmasına təsir edir. Cari ayar: <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>Yerlər</h1> </br> - Sistemin yer ayarları bəzi istifadəçi interfeysi elementləri əmrlər sətri üçün dil və simvolların ayarlanmasına təsir edir. Cari ayar: <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + - + Back Geriyə @@ -3827,44 +3811,44 @@ Output: keyboardq - + Keyboard Model Klaviatura Modeli - + Pick your preferred keyboard model or use the default one based on the detected hardware Üstünlük verdiyiniz klaviatura modelini seçin və ya avadanlığın özündə aşkar edilmiş standart klaviatura modelindən istifadə edin - + Refresh Yeniləmək - - + + Layouts Qatlar - - + + Keyboard Layout Klaviatura Qatları - + Models Modellər - + Variants Variantlar - + Test your keyboard Klaviaturanızı yoxlayın @@ -3872,17 +3856,7 @@ Output: localeq - - System language set to %1 - Sistem dilini %1 qurmaq - - - - Numbers and dates locale set to %1 - Yerli say və tarix formatlarını %1 qurmaq - - - + Change Dəyişdirmək diff --git a/lang/calamares_az_AZ.ts b/lang/calamares_az_AZ.ts index 3368ce761..9bc6e2aab 100644 --- a/lang/calamares_az_AZ.ts +++ b/lang/calamares_az_AZ.ts @@ -220,7 +220,7 @@ QML addımı <i>%1</i>. - + Loading failed. Yüklənmə alınmadı. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Quraşdırılma xətası - + Installation Failed Quraşdırılma alınmadı - + Would you like to paste the install log to the web? Quraşdırma jurnalını vebdə yerləşdirmək istəyirsinizmi? - + Error Xəta - - + + &Yes &Bəli - - + + &No &Xeyr - + &Close &Bağlamaq - + Install Log Paste URL Jurnal yerləşdirmə URL-nu daxil etmək - + The upload was unsuccessful. No web-paste was done. Yükləmə uğursuz oldu. Heç nə vebdə daxil edilmədi. - + Calamares Initialization Failed Calamares işə salına bilmədi - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 quraşdırılmadı. Calamares konfiqurasiya edilmiş modulların hamısını yükləyə bilmədi. Bu Calamares'i, sizin distribütör tərəfindən necə istifadə edilməsindən asılı olan bir problemdir. - + <br/>The following modules could not be loaded: <br/>Yüklənə bilməyən modullar aşağıdakılardır: - + Continue with setup? Quraşdırılma davam etdirilsin? - + Continue with installation? Quraşdırılma davam etdirilsin? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 quraşdırıcı proqramı %2 quraşdırmaq üçün Sizin diskdə dəyişiklik etməyə hazırdır.<br/><strong>Bu dəyişikliyi ləğv etmək mümkün olmayacaq.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 quraşdırıcı proqramı %2 quraşdırmaq üçün Sizin diskdə dəyişiklik etməyə hazırdır.<br/><strong>Bu dəyişikliyi ləğv etmək mümkün olmayacaq.</strong> - + &Set up now &İndi ayarlamaq - + &Install now Q&uraşdırmağa başlamaq - + Go &back &Geriyə - + &Set up A&yarlamaq - + &Install Qu&raşdırmaq - + Setup is complete. Close the setup program. Quraşdırma başa çatdı. Quraşdırma proqramını bağlayın. - + The installation is complete. Close the installer. Quraşdırma başa çatdı. Quraşdırıcını bağlayın. - + Cancel setup without changing the system. Sistemi dəyişdirmədən quraşdırmanı ləğv etmək. - + Cancel installation without changing the system. Sistemə dəyişiklik etmədən quraşdırmadan imtina etmək. - + &Next İ&rəli - + &Back &Geriyə - + &Done &Hazır - + &Cancel İm&tina etmək - + Cancel setup? Quraşdırılmadan imtina edilsin? - + Cancel installation? Yüklənmədən imtina edilsin? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Siz doğrudanmı hazırkı quraşdırmadan imtina etmək istəyirsiniz? Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Siz doğrudanmı hazırkı yüklənmədən imtina etmək istəyirsiniz? @@ -484,12 +484,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.&İmtina etmək - + %1 Setup Program %1 Quraşdırıcı proqram - + %1 Installer %1 Quraşdırıcı @@ -516,9 +516,9 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - - - + + + Current: Cari: @@ -529,115 +529,115 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Əl ilə bölmək</strong><br/>Siz disk sahəsini özünüz bölə və ölçülərini təyin edə bilərsiniz. GPT disk bölmələri cədvəli və <strong>fat32 512Mb /boot bölməsi UEFI sistemi üçün vacibdir</strong>, ya da mövcud bir bölmə varsa onu istifadə edin, və ya başqa birini yaradın. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + - + Reuse %1 as home partition for %2. %1 Ev bölməsi olaraq %2 üçün istifadə edilsin. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Kiçiltmək üçün bir bölmə seçərək altdakı çübüğü sürüşdürərək ölçüsünü verin</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 %2MB-a qədər azalacaq və %4 üçün yeni bölmə %3MB disk bölməsi yaradılacaq. - + Boot loader location: Ön yükləyici (boot) yeri: - + <strong>Select a partition to install on</strong> <strong>Quraşdırılacaq disk bölməsini seçin</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI sistem bölməsi tapılmadı. Geriyə qayıdın və %1 bölməsini əllə yaradın. - + The EFI system partition at %1 will be used for starting %2. %1 EFI sistemi %2 başlatmaq üçün istifadə olunacaqdır. - + EFI system partition: EFI sistem bölməsi: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazıda əməliyyat sistemi görünmür. Nə etmək istəyərdiniz?<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Diski təmizləmək</strong><br/> <font color="red">Silmək</font>seçimi hal-hazırda, seçilmiş diskdəki bütün verilənləri siləcəkdir. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Yanına quraşdırın</strong><br/>Quraşdırıcı, bölməni kiçildərək %1 üçün boş disk sahəsi yaradacaqdır. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Bölməni başqası ilə əvəzləmək</strong><br/>Bölməni %1 ilə əvəzləyir. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda %1 var. Nə etmək istəyirsiniz?<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda artıq bir əməliyyat sistemi var. Nə etmək istərdiniz?.<br/>Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu cihazda bir neçə əməliyyat sistemi mövcuddur. Nə etmək istərdiniz? Bu cihazda dəyişiklik etmədən öncə siz seçiminizi dəqiqləşdirə, dəyişə və təsdiq edə bilərsiniz. - + No Swap Mübadilə bölməsi olmadan - + Reuse Swap Mövcud mübadilə bölməsini istifadə etmək - + Swap (no Hibernate) Mübadilə bölməsi (yuxu rejimi olmadan) - + Swap (with Hibernate) Mübadilə bölməsi (yuxu rejimi ilə) - + Swap to file Mübadilə faylı @@ -645,17 +645,17 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1-də bölmə əməliyyatı üçün qoşulma nöqtələrini silmək - + Clearing mounts for partitioning operations on %1. %1-də bölmə əməliyyatı üçün qoşulma nöqtələrini silinir. - + Cleared all mounts for %1 %1 üçün bütün qoşulma nöqtələri silindi @@ -663,22 +663,22 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. ClearTempMountsJob - + Clear all temporary mounts. Bütün müvəqqəti qoşulma nöqtələrini ləğv etmək. - + Clearing all temporary mounts. Bütün müvəqqəti qoşulma nöqtələri ləğv edilir. - + Cannot get list of temporary mounts. Müvəqqəti qoşulma nöqtələrinin siyahısı alına bilmədi. - + Cleared all temporary mounts. Bütün müvəqqəti qoşulma nöqtələri ləğv edildi. @@ -705,30 +705,30 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Config - + Set keyboard model to %1.<br/> Klaviatura modelini %1 olaraq təyin etmək.<br/> - + Set keyboard layout to %1/%2. Klaviatura qatını %1/%2 olaraq təyin etmək. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Sistem dili %1 təyin ediləcək. - + The numbers and dates locale will be set to %1. Yerli say və tarix formatı %1 təyin olunacaq. - - - Set timezone to %1/%2.<br/> - Saat Qurşağını %1/%2 təyin etmək.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.<h1>Welcome to the %1 installer</h1> <h1>%1 quraşdırıcısına xoş gəldiniz</h1> + + + Your username is too long. + İstifadəçi adınız çox uzundur. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + İstifadəçi adınız yalnız kiçik və ya alt cizgili hərflərdən ibarət olmalıdır. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Yalnız kiçik hərflərdən, simvollardan, alt cizgidən və defisdən istifadə oluna bilər. + + + + Your hostname is too short. + Host adınız çox qısadır. + + + + Your hostname is too long. + Host adınız çox uzundur. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Yalnız kiçik hərflərdən, saylardan, alt cizgidən və defisdən istifadə oluna bilər. + ContextualProcessJob @@ -958,40 +998,30 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. CreateUserJob - + Create user %1 %1 İstifadəçi hesabı yaratmaq - + Create user <strong>%1</strong>. <strong>%1</strong> istifadəçi hesabı yaratmaq. - + Creating user %1. %1 istifadəçi hesabı yaradılır. - - Sudoers dir is not writable. - Sudoers qovluğu yazıla bilən deyil. - - - + Cannot create sudoers file for writing. Sudoers faylını yazmaq mümkün olmadı. - + Cannot chmod sudoers file. Sudoers faylına chmod tətbiq etmək mümkün olmadı. - - - Cannot open groups file for reading. - Groups faylını oxumaq üçün açmaq mümkün olmadı. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. FillGlobalStorageJob - + Set partition information Bölmə məlumatlarını ayarlamaq - + Install %1 on <strong>new</strong> %2 system partition. %2 <strong>yeni</strong> sistem diskinə %1 quraşdırmaq. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. %2 <strong>yeni</strong> bölməsini <strong>%1</strong> qoşulma nöqtəsi ilə ayarlamaq. - + Install %2 on %3 system partition <strong>%1</strong>. %3dəki <strong>%1</strong> sistem bölməsinə %2 quraşdırmaq. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 bölməsinə <strong>%1</strong> ilə <strong>%2</strong> qoşulma nöqtəsi ayarlamaq. - + Install boot loader on <strong>%1</strong>. Ön yükləyicini <strong>%1</strong>də quraşdırmaq. - + Setting up mount points. Qoşulma nöqtəsini ayarlamaq. @@ -1510,12 +1540,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. KeyboardPage - + Set keyboard model to %1.<br/> Klaviatura modelini %1 olaraq təyin etmək.<br/> - + Set keyboard layout to %1/%2. Klaviatura qatını %1/%2 olaraq təyin etmək. @@ -1572,32 +1602,32 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.<h1>Lisenziya razılaşması</h1> - + I accept the terms and conditions above. Mən yuxarıda göstərilən şərtləri qəbul edirəm. - + Please review the End User License Agreements (EULAs). Lütfən lisenziya razılaşması (EULA) ilə tanış olun. - + This setup procedure will install proprietary software that is subject to licensing terms. Bu quraşdırma proseduru lisenziya şərtlərinə tabe olan xüsusi proqram təminatını quraşdıracaqdır. - + If you do not agree with the terms, the setup procedure cannot continue. Lisenziya razılaşmalarını qəbul etməsəniz quraşdırılma davam etdirilə bilməz. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Bu quraşdırma proseduru, əlavə xüsusiyyətlər təmin etmək və istifadəçi təcrübəsini artırmaq üçün lisenziyalaşdırma şərtlərinə tabe olan xüsusi proqram təminatını quraşdıra bilər. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Şərtlərlə razılaşmasanız, xüsusi proqram quraşdırılmayacaq və bunun əvəzinə açıq mənbə kodu ilə alternativlər istifadə ediləcəkdir. @@ -1673,41 +1703,26 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocalePage - + Region: Məkan: - + Zone: Saat qurşağı: - - + + &Change... &Dəyişmək... - - - The system language will be set to %1. - Sistem dili %1 təyin ediləcək. - - - - The numbers and dates locale will be set to %1. - Yerli nömrə və tarix formatı %1 təyin olunacaq. - - - - Set timezone to %1/%2.<br/> - Saat Qurşağını %1/%2 təyin etmək.<br/> - LocaleQmlViewStep - + Location Məkan @@ -1715,7 +1730,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocaleViewStep - + Location Məkan @@ -1777,7 +1792,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Map - + 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. @@ -2180,7 +2195,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Naməlum xəta - + Password is empty Şifrə böşdur @@ -2520,112 +2535,112 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril Sistem məlumatları toplanır ... - + Partitions Bölmələr - + Install %1 <strong>alongside</strong> another operating system. Digər əməliyyat sistemini %1 <strong>yanına</strong> quraşdırmaq. - + <strong>Erase</strong> disk and install %1. Diski <strong>çıxarmaq</strong> və %1 quraşdırmaq. - + <strong>Replace</strong> a partition with %1. Bölməni %1 ilə <strong>əvəzləmək</strong>. - + <strong>Manual</strong> partitioning. <strong>Əl ilə</strong> bölüşdürmə. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). <strong>%2</strong> (%3) diskində başqa əməliyyat sistemini %1 <strong>yanında</strong> quraşdırmaq. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3) diskini <strong>çıxartmaq</strong> və %1 quraşdırmaq. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) diskində bölməni %1 ilə <strong>əvəzləmək</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) diskində <strong>əl ilə</strong> bölüşdürmə. - + Disk <strong>%1</strong> (%2) <strong>%1</strong> (%2) diski - + Current: Cari: - + After: Sonra: - + No EFI system partition configured EFI sistemi bölməsi tənzimlənməyib - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFİ sistemi bölməsi, %1 başlatmaq üçün vacibdir. <br/><br/>EFİ sistemi bölməsini yaratmaq üçün geriyə qayıdın və aktiv edilmiş<strong>%3</strong> bayrağı və <strong>%2</strong> qoşulma nöqtəsi ilə FAT32 fayl sistemi seçin və ya yaradın.<br/><br/>Siz EFİ sistemi bölməsi yaratmadan da davam edə bilərsiniz, lakin bu halda sisteminiz açılmaya bilər. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 başlatmaq üçün EFİ sistem bölməsi vacibdir.<br/><br/>Bölmə <strong>%2</strong> qoşulma nöqtəsi ilə yaradılıb, lakin onun <strong>%3</strong> bayrağı seçilməyib.<br/>Bayrağı seçmək üçün geriyə qayıdın və bölməyə süzəliş edin.<br/><br/>Siz bayrağı seçmədən də davam edə bilərsiniz, lakin bu halda sisteminiz açılmaya bilər. - + EFI system partition flag not set EFİ sistem bölməsi bayraqı seçilməyib - + Option to use GPT on BIOS BIOS-da GPT istifadəsi seçimi - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT bölmə cədvəli bütün sistemlər üçün yaxşıdır. Bu quraşdırıcı BIOS sistemləri üçün də belə bir quruluşu dəstəkləyir.<br/><br/>BİOS-da GPT bölmələr cədvəlini ayarlamaq üçün (əgər bu edilməyibsə) geriyə qayıdın və bölmələr cədvəlini GPT-yə qurun, sonra isə <strong>bios_grub</strong> bayrağı seçilmiş 8 MB-lıq formatlanmamış bölmə yaradın.<br/><br/>8 MB-lıq formatlanmamış bölmə GPT ilə BİOS sistemində %1 başlatmaq üçün lazımdır. - + Boot partition not encrypted Ön yükləyici bölməsi çifrələnməyib - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Şifrəli bir kök bölməsi ilə birlikdə ayrı bir ön yükləyici bölməsi qurulub, ancaq ön yükləyici bölməsi şifrələnməyib.<br/><br/>Bu cür quraşdırma ilə bağlı təhlükəsizlik problemləri olur, çünki vacib sistem sənədləri şifrəsiz bölmədə saxlanılır.<br/>İstəyirsinizsə davam edə bilərsiniz, lakin, fayl sisteminin kilidi, sistem başladıldıqdan daha sonra açılacaqdır.<br/>Yükləmə hissəsini şifrələmək üçün geri qayıdın və bölmə yaratma pəncərəsində <strong>Şifrələmə</strong> menyusunu seçərək onu yenidən yaradın. - + has at least one disk device available. ən az bir disk qurğusu mövcuddur. - + There are no partitions to install on. Quraşdırmaq üçün bölmə yoxdur. @@ -2673,17 +2688,17 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril PreserveFiles - + Saving files for later ... Fayllar daha sonra saxlanılır... - + No files configured to save for later. Sonra saxlamaq üçün heç bir ayarlanan fayl yoxdur. - + Not all of the configured files could be preserved. Ayarlanan faylların hamısı saxlanıla bilməz. @@ -3169,29 +3184,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Klaviatura modeliini %1, qatını isə %2-%3 təyin etmək - + Failed to write keyboard configuration for the virtual console. Virtual konsol üçün klaviatura tənzimləmələrini yazmaq mümkün olmadı. - - - + + + Failed to write to %1 %1-ə yazmaq mümkün olmadı - + Failed to write keyboard configuration for X11. X11 üçün klaviatura tənzimləmələrini yazmaq mümükün olmadı. - + Failed to write keyboard configuration to existing /etc/default directory. Klaviatura tənzimləmələri möcvcud /etc/default qovluğuna yazıla bilmədi. @@ -3424,28 +3439,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback KDE istifadəçi hesabatı - + Configuring KDE user feedback. KDE istifadəçi hesabatının tənzimlənməsi. - - + + Error in KDE user feedback configuration. KDE istifadəçi hesabatının tənzimlənməsində xəta. - + Could not configure KDE user feedback correctly, script error %1. KDE istifadəçi hesabatı düzgün tənzimlənmədi, əmr xətası %1. - + Could not configure KDE user feedback correctly, Calamares error %1. KDE istifadəçi hesabatı düzgün tənzimlənmədi, Calamares xətası %1. @@ -3453,28 +3468,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Kompyuter hesabatı - + Configuring machine feedback. kompyuter hesabatının tənzimlənməsi. - - + + Error in machine feedback configuration. Kompyuter hesabatının tənzimlənməsində xəta. - + Could not configure machine feedback correctly, script error %1. Kompyuter hesabatı düzgün tənzimlənmədi, əmr xətası %1. - + Could not configure machine feedback correctly, Calamares error %1. Kompyuter hesabatı düzgün tənzimlənmədi, Calamares xətası %1. @@ -3533,47 +3548,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Əgər bu kompyuteri sizdən başqa şəxs istifadə edəcəkdirsə o zaman ayarlandıqdan sonra bir neçə istifadəçi hesabı yarada bilərsiniz.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Əgər bu kompyuteri sizdən başqa şəxs istifadə edəcəkdirsə o zaman quraşdırıldıqdan sonra bir neçə istifadəçi hesabı yarada bilərsiniz.</small> - - Your username is too long. - İstifadəçi adınız çox uzundur. - - - - Your username must start with a lowercase letter or underscore. - İstifadəçi adınız yalnız kiçik və ya alt cizgili hərflərdən ibarət olmalıdır. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Yalnız kiçik hərflərdən, simvollardan, alt cizgidən və defisdən istifadə oluna bilər. - - - - Your hostname is too short. - Host adınız çox qısadır. - - - - Your hostname is too long. - Host adınız çox uzundur. - - - - Only letters, numbers, underscore and hyphen are allowed. - Yalnız kiçik hərflərdən, saylardan, alt cizgidən və defisdən istifadə oluna bilər. - - - + Your passwords do not match! Şifrənizin təkrarı eyni deyil! @@ -3581,7 +3566,7 @@ Output: UsersViewStep - + Users İstifadəçilər @@ -3805,21 +3790,20 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Dillər</h1> </br> Sistemin yer ayarları bəzi istifadəçi interfeysi elementləri əmrlər sətri üçün dil və simvolların ayarlanmasına təsir edir. Cari ayar: <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>Yerlər</h1> </br> - Sistemin yer ayarları bəzi istifadəçi interfeysi elementləri əmrlər sətri üçün dil və simvolların ayarlanmasına təsir edir. Cari ayar: <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + - + Back Geriyə @@ -3827,44 +3811,44 @@ Output: keyboardq - + Keyboard Model Klaviatura Modeli - + Pick your preferred keyboard model or use the default one based on the detected hardware Üstünlük verdiyiniz klaviatura modelini seçin və ya avadanlığın özündə aşkar edilmiş standart klaviatura modelindən istifadə edin - + Refresh Yeniləmək - - + + Layouts Qatlar - - + + Keyboard Layout Klaviatura Qatları - + Models Modellər - + Variants Variantlar - + Test your keyboard Klaviaturanızı yoxlayın @@ -3872,17 +3856,7 @@ Output: localeq - - System language set to %1 - Sistem dilini %1 qurmaq - - - - Numbers and dates locale set to %1 - Yerli say və tarix formatlarını %1 qurmaq - - - + Change Dəyişdirmək diff --git a/lang/calamares_be.ts b/lang/calamares_be.ts index 15b4bc2b8..46febf1b4 100644 --- a/lang/calamares_be.ts +++ b/lang/calamares_be.ts @@ -220,7 +220,7 @@ Крок QML <i>%1</i>. - + Loading failed. Не атрымалася загрузіць. @@ -261,170 +261,170 @@ Calamares::ViewManager - + Setup Failed Усталёўка схібіла - + Installation Failed Не атрымалася ўсталяваць - + Would you like to paste the install log to the web? Сапраўды хочаце ўставіць журнал усталёўкі па сеціўным адрасе? - + Error Памылка - - + + &Yes &Так - - + + &No &Не - + &Close &Закрыць - + Install Log Paste URL Уставіць журнал усталёўкі па URL - + The upload was unsuccessful. No web-paste was done. Запампаваць не атрымалася. - + Calamares Initialization Failed Не атрымалася ініцыялізаваць Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. Не атрымалася ўсталяваць %1. У Calamares не атрымалася загрузіць усе падрыхтаваныя модулі. Гэтая праблема ўзнікла праз асаблівасці выкарыстання Calamares вашым дыстрыбутывам. - + <br/>The following modules could not be loaded: <br/>Не атрымалася загрузіць наступныя модулі: - + Continue with setup? Працягнуць усталёўку? - + Continue with installation? Працягнуць усталёўку? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Праграма ўсталёўкі %1 гатовая ўнесці змены на ваш дыск, каб усталяваць %2.<br/><strong>Скасаваць змены будзе немагчыма.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Праграма ўсталёўкі %1 гатовая ўнесці змены на ваш дыск, каб усталяваць %2.<br/><strong>Адрабіць змены будзе немагчыма.</strong> - + &Set up now &Усталяваць - + &Install now &Усталяваць - + Go &back &Назад - + &Set up &Усталяваць - + &Install &Усталяваць - + Setup is complete. Close the setup program. Усталёўка завершаная. Закрыйце праграму ўсталёўкі. - + The installation is complete. Close the installer. Усталёўка завершаная. Закрыйце праграму. - + Cancel setup without changing the system. Скасаваць усталёўку без змены сістэмы. - + Cancel installation without changing the system. Скасаваць усталёўку без змены сістэмы. - + &Next &Далей - + &Back &Назад - + &Done &Завершана - + &Cancel &Скасаваць - + Cancel setup? Скасаваць усталёўку? - + Cancel installation? Скасаваць усталёўку? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Сапраўды хочаце скасаваць працэс усталёўкі? Праграма спыніць працу, а ўсе змены страцяцца. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Сапраўды хочаце скасаваць працэс усталёўкі? Усталёўшчык спыніць працу, а ўсе змены страцяцца. @@ -486,12 +486,12 @@ The installer will quit and all changes will be lost. &Скасаваць - + %1 Setup Program Праграма ўсталёўкі %1 - + %1 Installer Праграма ўсталёўкі %1 @@ -518,9 +518,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Бягучы: @@ -531,115 +531,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Уласнаручная разметка</strong><br/>Вы можаце самастойна ствараць альбо змяняць памеры раздзелаў. Наяўнасць табліцы раздзелаў GPT і <strong>загрузачнага раздзела фс fat32 памерам 512Mb і сцягам /boot з’яўляюцца абавязковымі ўмовамі для ўсталёўкі UEFI</strong>, таму выкарыстайце існы раздзел без фарматавання, альбо стварыце новы. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + - + Reuse %1 as home partition for %2. Выкарыстаць %1 як хатні раздзел для %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Абярыце раздзел для памяншэння і цягніце паўзунок, каб змяніць памер</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 будзе паменшаны да %2MiB і новы раздзел %3MiB будзе створаны для %4. - + Boot loader location: Размяшчэнне загрузчыка: - + <strong>Select a partition to install on</strong> <strong>Абярыце раздзел для ўсталёўкі </strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Не выяўлена сістэмнага раздзела EFI. Калі ласка, вярніцеся назад і зрабіце разметку %1. - + The EFI system partition at %1 will be used for starting %2. Сістэмны раздзел EFI на %1 будзе выкарыстаны для запуску %2. - + EFI system partition: Сістэмны раздзел EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Здаецца, на гэтай прыладзе няма аперацыйнай сістэмы. Што будзеце рабіць?<br/>Вы зможаце змяніць альбо пацвердзіць свой выбар да таго як на прыладзе ўжывуцца змены. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Сцерці дыск</strong><br/>Гэта <font color="red">выдаліць</font> усе даныя на абранай прыладзе. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Усталяваць побач</strong><br/>Праграма ўсталёўкі паменшыць раздзел, каб вызваліць месца для %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Замяніць раздзел </strong><br/>Заменіць раздзел на %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На гэтай прыладзе ёсць %1. Што будзеце рабіць?<br/>Вы зможаце змяніць альбо пацвердзіць свой выбар да таго як на прыладзе ўжывуцца змены. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На гэтай прыладзе ўжо ёсць аперацыйная сістэма. Што будзеце рабіць?<br/>Вы зможаце змяніць альбо пацвердзіць свой выбар да таго як на прыладзе ўжывуцца змены. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На гэтай прыладзе ўжо ёсць некалькі аперацыйных сістэм. Што будзеце рабіць?<br/>Вы зможаце змяніць альбо пацвердзіць свой выбар да таго як на прыладзе ўжывуцца змены. - + No Swap Без раздзела падпампоўкі - + Reuse Swap Выкарыстаць існы раздзел падпампоўкі - + Swap (no Hibernate) Раздзел падпампоўкі (без усыплення) - + Swap (with Hibernate) Раздзел падпампоўкі (з усыпленнем) - + Swap to file Раздзел падпампоўкі ў файле @@ -647,17 +647,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Ачысціць пункты мантавання для выканання разметкі на %1 - + Clearing mounts for partitioning operations on %1. Ачыстка пунктаў мантавання для выканання разметкі на %1. - + Cleared all mounts for %1 Усе пункты мантавання ачышчаныя для %1 @@ -665,22 +665,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Ачысціць усе часовыя пункты мантавання. - + Clearing all temporary mounts. Ачышчаюцца ўсе часовыя пункты мантавання. - + Cannot get list of temporary mounts. Не ўдалося атрымаць спіс часовых пунктаў мантавання. - + Cleared all temporary mounts. Усе часовыя пункты мантавання ачышчаныя. @@ -707,30 +707,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Вызначыць мадэль клавіятуры %1.<br/> - + Set keyboard layout to %1/%2. Вызначыць раскладку клавіятуры %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Сістэмнай мовай будзе зроблена %1. - + The numbers and dates locale will be set to %1. Рэгіянальным фарматам лічбаў і датаў будзе %1. - - - Set timezone to %1/%2.<br/> - Вызначыць часавы пояс %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -796,6 +796,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Імя карыстальніка занадта доўгае. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Імя карыстальніка павінна пачынацца з малой літары альбо сімвала падкрэслівання. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Дазваляюцца толькі літары, лічбы, знакі падкрэслівання, працяжнікі. + + + + Your hostname is too short. + Назва вашага камп’ютара занадта кароткая. + + + + Your hostname is too long. + Назва вашага камп’ютара занадта доўгая. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Толькі літары, лічбы, знакі падкрэслівання, працяжнікі. + ContextualProcessJob @@ -960,40 +1000,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Стварыць карыстальніка %1 - + Create user <strong>%1</strong>. Стварыць карыстальніка <strong>%1</strong>. - + Creating user %1. Стварэнне карыстальніка %1. - - Sudoers dir is not writable. - Каталог sudoers недаступны для запісу. - - - + Cannot create sudoers file for writing. Не атрымалася запісаць файл sudoers. - + Cannot chmod sudoers file. Не атрымалася ўжыць chmod да файла sudoers. - - - Cannot open groups file for reading. - Не атрымалася адкрыць файл groups для чытання. - CreateVolumeGroupDialog @@ -1231,37 +1261,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Вызначыць звесткі пра раздзел - + Install %1 on <strong>new</strong> %2 system partition. Усталяваць %1 на <strong>новы</strong> %2 сістэмны раздзел. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Наладзіць <strong>новы</strong> %2 раздзел з пунктам мантавання <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Усталяваць %2 на %3 сістэмны раздзел <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Наладзіць %3 раздзел <strong>%1</strong> з пунктам мантавання <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Усталяваць загрузчык на <strong>%1</strong>. - + Setting up mount points. Наладка пунктаў мантавання. @@ -1512,12 +1542,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Прызначыць мадэль клавіятуры %1.<br/> - + Set keyboard layout to %1/%2. Прызначыць раскладку клавіятуры %1/%2. @@ -1574,32 +1604,32 @@ The installer will quit and all changes will be lost. <h1>Ліцэнзійнае пагадненне</h1> - + I accept the terms and conditions above. Я пагаджаюся з пададзенымі вышэй умовамі. - + Please review the End User License Agreements (EULAs). Калі ласка, паглядзіце ліцэнзійную дамову з канчатковым карыстальнікам (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Падчас гэтай працэдуры ўсталюецца прапрыетарнае праграмнае забеспячэнне, на якое распаўсюджваюцца ўмовы ліцэнзавання. - + If you do not agree with the terms, the setup procedure cannot continue. Калі вы не згодныя з умовамі, то працягнуць усталёўку не атрымаецца. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Падчас гэтай працэдуры ўсталюецца прапрыетарнае праграмнае забеспячэнне, на якое распаўсюджваюцца ўмовы ліцэнзавання. Гэтае апраграмаванне патрабуецца для забеспячэння дадатковых функцый і паляпшэння ўзаемадзеяння з карыстальнікам. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Калі вы не згодныя з умовамі, то прапрыетарнае апраграмаванне не будзе ўсталявана. Замест яго будуць выкарыстоўвацца свабодныя альтэрнатывы. @@ -1675,41 +1705,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Рэгіён: - + Zone: Зона: - - + + &Change... &Змяніць... - - - The system language will be set to %1. - Сістэмнай мовай будзе %1. - - - - The numbers and dates locale will be set to %1. - Рэгіянальным фарматам лічбаў і датаў будзе %1. - - - - Set timezone to %1/%2.<br/> - Вызначыць часавы пояс %1/%2.<br/> - LocaleQmlViewStep - + Location Размяшчэнне @@ -1717,7 +1732,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Месцазнаходжанне @@ -1779,7 +1794,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2180,7 +2195,7 @@ The installer will quit and all changes will be lost. Невядомая памылка - + Password is empty Пароль пусты @@ -2519,112 +2534,112 @@ The installer will quit and all changes will be lost. Збор інфармацыі пра сістэму... - + Partitions Раздзелы - + Install %1 <strong>alongside</strong> another operating system. Усталяваць %1 <strong>побач</strong> з іншай аперацыйнай сістэмай. - + <strong>Erase</strong> disk and install %1. <strong>Ачысціць</strong> дыск і ўсталяваць %1. - + <strong>Replace</strong> a partition with %1. <strong>Замяніць</strong> раздзел на %1. - + <strong>Manual</strong> partitioning. <strong>Уласнаручная</strong> разметка. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Усталяваць %1 <strong>побач</strong> з іншай аперацыйнай сістэмай на дыск<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Ачысціць</strong> дыск <strong>%2</strong> (%3) і ўсталяваць %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замяніць</strong> раздзел на дыску <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Уласнаручная</strong> разметка дыска<strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Дыск <strong>%1</strong> (%2) - + Current: Бягучы: - + After: Пасля: - + No EFI system partition configured Няма наладжанага сістэмнага раздзела EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Не вызначаны сцяг сістэмнага раздзела EFI - + Option to use GPT on BIOS Параметр для выкарыстання GPT у BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Табліца раздзелаў GPT - найлепшы варыянт для ўсіх сістэм. Гэтая праграма ўсталёўкі таксама падтрымлівае гэты варыянт і для BIOS.<br/><br/>Каб наладзіць GPT для BIOS (калі гэта яшчэ не зроблена), вярніцеся назад і абярыце табліцу раздзелаў GPT, пасля стварыце нефарматаваны раздзел памерам 8 МБ са сцягам <strong>bios_grub</strong>.<br/><br/>Гэты раздзел патрэбны для запуску %1 у BIOS з GPT. - + Boot partition not encrypted Загрузачны раздзел не зашыфраваны - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Уключана шыфраванне каранёвага раздзела, але выкарыстаны асобны загрузачны раздзел без шыфравання.<br/><br/>Пры такой канфігурацыі могуць узнікнуць праблемы з бяспекай, бо важныя сістэмныя даныя будуць захоўвацца на раздзеле без шыфравання.<br/>Вы можаце працягнуць, але файлавая сістэма разблакуецца падчас запуску сістэмы.<br/>Каб уключыць шыфраванне загрузачнага раздзела, вярніцеся назад і стварыце яго нанова, адзначыўшы <strong>Шыфраваць</strong> у акне стварэння раздзела. - + has at least one disk device available. ёсць прынамсі адна даступная дыскавая прылада. - + There are no partitions to install on. Няма раздзелаў для ўсталёўкі. @@ -2672,17 +2687,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... Захаванне файлаў на будучыню... - + No files configured to save for later. Няма файлаў канфігурацыі, каб захаваць іх на будучыню. - + Not all of the configured files could be preserved. Не ўсе наладжаныя файлы можна захаваць. @@ -3165,29 +3180,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Прызначыць мадэль клавіятуры %1, раскладку %2-%3 - + Failed to write keyboard configuration for the virtual console. Не атрымалася запісаць канфігурацыю клавіятуры для віртуальнай кансолі. - - - + + + Failed to write to %1 Не атрымалася запісаць у %1 - + Failed to write keyboard configuration for X11. Не атрымалася запісаць канфігурацыю клавіятуры для X11. - + Failed to write keyboard configuration to existing /etc/default directory. Не атрымалася запісаць параметры клавіятуры ў існы каталог /etc/default. @@ -3420,28 +3435,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3449,28 +3464,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Сістэма зваротнай сувязі - + Configuring machine feedback. Наладка сістэмы зваротнай сувязі. - - + + Error in machine feedback configuration. Памылка ў канфігурацыі сістэмы зваротнай сувязі. - + Could not configure machine feedback correctly, script error %1. Не атрымалася наладзіць сістэму зваротнай сувязі, памылка скрыпта %1. - + Could not configure machine feedback correctly, Calamares error %1. Не атрымалася наладзіць сістэму зваротнай сувязі, памылка Calamares %1. @@ -3529,47 +3544,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Калі камп’ютарам карыстаецца некалькі чалавек, то вы можаце стварыць для іх акаўнты пасля завяршэння ўсталёўкі.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Калі камп’ютарам карыстаецца некалькі чалавек, то вы можаце стварыць для іх акаўнты пасля завяршэння ўсталёўкі.</small> - - Your username is too long. - Імя карыстальніка занадта доўгае. - - - - Your username must start with a lowercase letter or underscore. - Імя карыстальніка павінна пачынацца з малой літары альбо сімвала падкрэслівання. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Дазваляюцца толькі літары, лічбы, знакі падкрэслівання, працяжнікі. - - - - Your hostname is too short. - Назва вашага камп’ютара занадта кароткая. - - - - Your hostname is too long. - Назва вашага камп’ютара занадта доўгая. - - - - Only letters, numbers, underscore and hyphen are allowed. - Толькі літары, лічбы, знакі падкрэслівання, працяжнікі. - - - + Your passwords do not match! Вашыя паролі не супадаюць! @@ -3577,7 +3562,7 @@ Output: UsersViewStep - + Users Карыстальнікі @@ -3800,19 +3785,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Назад @@ -3820,44 +3805,44 @@ Output: keyboardq - + Keyboard Model Мадэль клавіятуры - + Pick your preferred keyboard model or use the default one based on the detected hardware Абярыце пераважную мадэль клавіятуры альбо выкарыстоўвайце прадвызначаную - + Refresh Абнавіць - - + + Layouts Раскладкі - - + + Keyboard Layout Раскладка клавіятуры - + Models Мадэлі - + Variants Варыянты - + Test your keyboard Пратэстуйце сваю клавіятуру @@ -3865,17 +3850,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 17c13fd90..0a16314c4 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Неуспешна инсталация - + Would you like to paste the install log to the web? - + Error Грешка - - + + &Yes &Да - - + + &No &Не - + &Close &Затвори - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Инициализацията на Calamares се провали - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 не може да се инсталира. Calamares не можа да зареди всичките конфигурирани модули. Това е проблем с начина, по който Calamares е използван от дистрибуцията. - + <br/>The following modules could not be loaded: <br/>Следните модули не могат да се заредят: - + Continue with setup? Продължаване? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Инсталатора на %1 ще направи промени по вашия диск за да инсталира %2. <br><strong>Промените ще бъдат окончателни.</strong> - + &Set up now - + &Install now &Инсталирай сега - + Go &back В&ръщане - + &Set up - + &Install &Инсталирай - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Инсталацията е завършена. Затворете инсталаторa. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Отказ от инсталацията без промяна на системата. - + &Next &Напред - + &Back &Назад - + &Done &Готово - + &Cancel &Отказ - + Cancel setup? - + Cancel installation? Отмяна на инсталацията? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Наистина ли искате да отмените текущият процес на инсталиране? @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. &Отказ - + %1 Setup Program - + %1 Installer %1 Инсталатор @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Сегашен: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Самостоятелно поделяне</strong><br/>Можете да създадете или преоразмерите дяловете сами. - + Reuse %1 as home partition for %2. Използване на %1 като домашен дял за %2 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Изберете дял за смаляване, после влачете долната лента за преоразмеряване</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Локация на програмата за начално зареждане: - + <strong>Select a partition to install on</strong> <strong>Изберете дял за инсталацията</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI системен дял не е намерен. Моля, опитайте пак като използвате ръчно поделяне за %1. - + The EFI system partition at %1 will be used for starting %2. EFI системен дял в %1 ще бъде използван за стартиране на %2. - + EFI system partition: EFI системен дял: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Това устройство за съхранение няма инсталирана операционна система. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Изтриване на диска</strong><br/>Това ще <font color="red">изтрие</font> всички данни върху устройството за съхранение. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Инсталирайте покрай</strong><br/>Инсталатора ще раздроби дяла за да направи място за %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Замени дял</strong><br/>Заменя този дял с %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Това устройство за съхранение има инсталиран %1. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Това устройство за съхранение има инсталирана операционна система. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Това устройство за съхранение има инсталирани операционни системи. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Разчисти монтиранията за операциите на подялбата на %1 - + Clearing mounts for partitioning operations on %1. Разчистване на монтиранията за операциите на подялбата на %1 - + Cleared all mounts for %1 Разчистени всички монтирания за %1 @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Разчисти всички временни монтирания. - + Clearing all temporary mounts. Разчистване на всички временни монтирания. - + Cannot get list of temporary mounts. Не може да се вземе лист от временни монтирания. - + Cleared all temporary mounts. Разчистени всички временни монтирания. @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Постави модел на клавиатурата на %1.<br/> - + Set keyboard layout to %1/%2. Постави оформлението на клавиатурата на %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Системният език ще бъде %1. - + The numbers and dates locale will be set to %1. Форматът на цифрите и датата ще бъде %1. - - - Set timezone to %1/%2.<br/> - Постави часовата зона на %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Вашето потребителско име е твърде дълго. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Вашето име на хоста е твърде кратко. + + + + Your hostname is too long. + Вашето име на хоста е твърде дълго. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -957,40 +997,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Създай потребител %1 - + Create user <strong>%1</strong>. Създай потребител <strong>%1</strong>. - + Creating user %1. Създаване на потребител %1. - - Sudoers dir is not writable. - Директорията sudoers е незаписваема. - - - + Cannot create sudoers file for writing. Не може да се създаде sudoers файл за записване. - + Cannot chmod sudoers file. Не може да се изпълни chmod върху sudoers файла. - - - Cannot open groups file for reading. - Не може да се отвори файла на групите за четене. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Постави информация за дял - + Install %1 on <strong>new</strong> %2 system partition. Инсталирай %1 на <strong>нов</strong> %2 системен дял. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Създай <strong>нов</strong> %2 дял със точка на монтиране <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Инсталирай %2 на %3 системен дял <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Създай %3 дял <strong>%1</strong> с точка на монтиране <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Инсталиране на зареждач върху <strong>%1</strong>. - + Setting up mount points. Настройка на точките за монтиране. @@ -1509,12 +1539,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Постави модел на клавиатурата на %1.<br/> - + Set keyboard layout to %1/%2. Постави оформлението на клавиатурата на %1/%2. @@ -1571,32 +1601,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. Приемам лицензионните условия. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1672,41 +1702,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Регион: - + Zone: Зона: - - + + &Change... &Промени... - - - The system language will be set to %1. - Системният език ще бъде %1. - - - - The numbers and dates locale will be set to %1. - Форматът на цифрите и датата ще бъде %1. - - - - Set timezone to %1/%2.<br/> - Постави часовата зона на %1/%2.<br/> - LocaleQmlViewStep - + Location Местоположение @@ -1714,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Местоположение @@ -1776,7 +1791,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2177,7 +2192,7 @@ The installer will quit and all changes will be lost. Неизвестна грешка - + Password is empty @@ -2516,112 +2531,112 @@ The installer will quit and all changes will be lost. Събиране на системна информация... - + Partitions Дялове - + Install %1 <strong>alongside</strong> another operating system. Инсталирай %1 <strong>заедно</strong> с друга операционна система. - + <strong>Erase</strong> disk and install %1. <strong>Изтрий</strong> диска и инсталирай %1. - + <strong>Replace</strong> a partition with %1. <strong>Замени</strong> дял с %1. - + <strong>Manual</strong> partitioning. <strong>Ръчно</strong> поделяне. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Инсталирай %1 <strong>заедно</strong> с друга операционна система на диск <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Изтрий</strong> диск <strong>%2</strong> (%3) и инсталирай %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замени</strong> дял на диск <strong>%2</strong> (%3) с %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ръчно</strong> поделяне на диск <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Сегашен: - + After: След: - + No EFI system partition configured Няма конфигуриран EFI системен дял - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Не е зададен флаг на EFI системен дял - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Липсва криптиране на дял за начално зареждане - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2669,17 +2684,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3162,29 +3177,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Постави модела на клавиатурата на %1, оформлението на %2-%3 - + Failed to write keyboard configuration for the virtual console. Неуспешно записването на клавиатурна конфигурация за виртуалната конзола. - - - + + + Failed to write to %1 Неуспешно записване върху %1 - + Failed to write keyboard configuration for X11. Неуспешно записване на клавиатурна конфигурация за X11. - + Failed to write keyboard configuration to existing /etc/default directory. Неуспешно записване на клавиатурна конфигурация в съществуващата директория /etc/default. @@ -3417,28 +3432,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3526,47 +3541,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Вашето потребителско име е твърде дълго. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Вашето име на хоста е твърде кратко. - - - - Your hostname is too long. - Вашето име на хоста е твърде дълго. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Паролите Ви не съвпадат! @@ -3574,7 +3559,7 @@ Output: UsersViewStep - + Users Потребители @@ -3787,19 +3772,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3807,44 +3792,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3852,17 +3837,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_bn.ts b/lang/calamares_bn.ts index bd1c887c2..aec314a22 100644 --- a/lang/calamares_bn.ts +++ b/lang/calamares_bn.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed ইনস্টলেশন ব্যর্থ হয়েছে - + Would you like to paste the install log to the web? - + Error ত্রুটি - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next এবং পরবর্তী - + &Back এবং পেছনে - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer 1% ইনস্টল @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 66f10c019..94cf93a99 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -220,7 +220,7 @@ Pas QML <i>%1</i>. - + Loading failed. Ha fallat la càrrega. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Ha fallat la configuració. - + Installation Failed La instal·lació ha fallat. - + Would you like to paste the install log to the web? Voleu enganxar el registre d'instal·lació a la xarxa? - + Error Error - - + + &Yes &Sí - - + + &No &No - + &Close Tan&ca - + Install Log Paste URL URL de publicació del registre d'instal·lació - + The upload was unsuccessful. No web-paste was done. La càrrega no s'ha fet correctament. No s'ha enganxat res a la xarxa. - + Calamares Initialization Failed Ha fallat la inicialització de Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. No es pot instal·lar %1. El Calamares no ha pogut carregar tots els mòduls configurats. Aquest és un problema amb la manera com el Calamares és utilitzat per la distribució. - + <br/>The following modules could not be loaded: <br/>No s'han pogut carregar els mòduls següents: - + Continue with setup? Voleu continuar la configuració? - + Continue with installation? Voleu continuar la instal·lació? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> El programa de configuració %1 està a punt de fer canvis al disc per tal de configurar %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instal·lador per a %1 està a punt de fer canvis al disc per tal d'instal·lar-hi %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + &Set up now Con&figura-ho ara - + &Install now &Instal·la'l ara - + Go &back Ves &enrere - + &Set up Con&figura-ho - + &Install &Instal·la - + Setup is complete. Close the setup program. La configuració s'ha acabat. Tanqueu el programa de configuració. - + The installation is complete. Close the installer. La instal·lació s'ha acabat. Tanqueu l'instal·lador. - + Cancel setup without changing the system. Cancel·la la configuració sense canviar el sistema. - + Cancel installation without changing the system. Cancel·leu la instal·lació sense canviar el sistema. - + &Next &Següent - + &Back &Enrere - + &Done &Fet - + &Cancel &Cancel·la - + Cancel setup? Voleu cancel·lar la configuració? - + Cancel installation? Voleu cancel·lar la instal·lació? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Realment voleu cancel·lar el procés de configuració actual? El programa de configuració es tancarà i es perdran tots els canvis. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voleu cancel·lar el procés d'instal·lació actual? @@ -484,12 +484,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Cancel·la - + %1 Setup Program Programa de configuració %1 - + %1 Installer Instal·lador de %1 @@ -516,9 +516,9 @@ L'instal·lador es tancarà i tots els canvis es perdran. - - - + + + Current: Actual: @@ -529,115 +529,115 @@ L'instal·lador es tancarà i tots els canvis es perdran. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Particons manuals</strong><br/>Podeu crear o canviar de mida les particions manualment. Cal tenir una taula de particions GPT i <strong>una partició /boot de fat32 i 512 Mb per a instal·lacions amb UEFI</strong>. O bé n'useu una d'existent sense formatar-la o bé en creeu una. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particions manuals</strong><br/>Podeu crear o canviar la mida de les particions vosaltres mateixos. - + Reuse %1 as home partition for %2. Reutilitza %1 com a partició de l'usuari per a %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Seleccioneu una partició per encongir i arrossegueu-la per redimensinar-la</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 s'encongirà a %2 MiB i es crearà una partició nova de %3 MB per a %4. - + Boot loader location: Ubicació del gestor d'arrencada: - + <strong>Select a partition to install on</strong> <strong>Seleccioneu una partició per fer-hi la instal·lació.</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i use les particions manuals per configurar %1. - + The EFI system partition at %1 will be used for starting %2. La partició EFI de sistema a %1 s'usarà per iniciar %2. - + EFI system partition: Partició EFI del sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge no sembla que tingui un sistema operatiu. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Esborra el disc</strong><br/>Això <font color="red">suprimirà</font> totes les dades del dispositiu seleccionat. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instal·la'l al costat</strong><br/>L'instal·lador reduirà una partició per fer espai per a %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Reemplaça una partició</strong><br/>Reemplaça una partició per %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge té %1. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge ja té un sistema operatiu. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge ja múltiples sistemes operatius. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - + No Swap Sense intercanvi - + Reuse Swap Reutilitza l'intercanvi - + Swap (no Hibernate) Intercanvi (sense hibernació) - + Swap (with Hibernate) Intercanvi (amb hibernació) - + Swap to file Intercanvi en fitxer @@ -645,17 +645,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. ClearMountsJob - + Clear mounts for partitioning operations on %1 Neteja els muntatges per les operacions de partició a %1 - + Clearing mounts for partitioning operations on %1. Es netegen els muntatges per a les operacions de les particions a %1. - + Cleared all mounts for %1 S'han netejat tots els muntatges de %1 @@ -663,22 +663,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. ClearTempMountsJob - + Clear all temporary mounts. Neteja tots els muntatges temporals. - + Clearing all temporary mounts. Es netegen tots els muntatges temporals. - + Cannot get list of temporary mounts. No es pot obtenir la llista dels muntatges temporals. - + Cleared all temporary mounts. S'han netejat tots els muntatges temporals. @@ -705,30 +705,30 @@ L'instal·lador es tancarà i tots els canvis es perdran. Config - + Set keyboard model to %1.<br/> Establirà el model del teclat a %1.<br/> - + Set keyboard layout to %1/%2. Establirà la distribució del teclat a %1/%2. - + + Set timezone to %1/%2. + Estableix la zona horària a %1/%2. + + + The system language will be set to %1. La llengua del sistema s'establirà a %1. - + The numbers and dates locale will be set to %1. Els números i les dates de la configuració local s'establiran a %1. - - - Set timezone to %1/%2.<br/> - Establirà la zona horària a %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ L'instal·lador es tancarà i tots els canvis es perdran. <h1>Welcome to the %1 installer</h1> <h1>Benvingut/da a l'instal·lador per a %1</h1> + + + Your username is too long. + El nom d'usuari és massa llarg. + + + + '%1' is not allowed as username. + No es permet %1 com a nom d'usuari. + + + + Your username must start with a lowercase letter or underscore. + El nom d'usuari ha de començar amb una lletra en minúscula o una ratlla baixa. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Només es permeten lletres en minúscula, números, ratlles baixes i guions. + + + + Your hostname is too short. + El nom d'amfitrió és massa curt. + + + + Your hostname is too long. + El nom d'amfitrió és massa llarg. + + + + '%1' is not allowed as hostname. + No es permet %1 com a nom d'amfitrió. + + + + Only letters, numbers, underscore and hyphen are allowed. + Només es permeten lletres, números, ratlles baixes i guions. + ContextualProcessJob @@ -958,40 +998,30 @@ L'instal·lador es tancarà i tots els canvis es perdran. CreateUserJob - + Create user %1 Crea l'usuari %1 - + Create user <strong>%1</strong>. Crea l'usuari <strong>%1</strong>. - + Creating user %1. Es crea l'usuari %1. - - Sudoers dir is not writable. - El directori de sudoers no té permisos d'escriptura. - - - + Cannot create sudoers file for writing. No es pot crear el fitxer sudoers a escriure. - + Cannot chmod sudoers file. No es pot fer chmod al fitxer sudoers. - - - Cannot open groups file for reading. - No es pot obrir el fitxer groups per ser llegit. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ L'instal·lador es tancarà i tots els canvis es perdran. FillGlobalStorageJob - + Set partition information Estableix la informació de la partició - + Install %1 on <strong>new</strong> %2 system partition. Instal·la %1 a la partició de sistema <strong>nova</strong> %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Estableix la partició <strong>nova</strong> %2 amb el punt de muntatge <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instal·la %2 a la partició de sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Estableix la partició %3 <strong>%1</strong> amb el punt de muntatge <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instal·la el gestor d'arrencada a <strong>%1</strong>. - + Setting up mount points. S'estableixen els punts de muntatge. @@ -1510,12 +1540,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. KeyboardPage - + Set keyboard model to %1.<br/> Establirà el model del teclat a %1.<br/> - + Set keyboard layout to %1/%2. Establirà la distribució del teclat a %1/%2. @@ -1572,32 +1602,32 @@ L'instal·lador es tancarà i tots els canvis es perdran. <h1>Acord de llicència</h1> - + I accept the terms and conditions above. Accepto els termes i les condicions anteriors. - + Please review the End User License Agreements (EULAs). Si us plau, consulteu els acords de llicència d'usuari final (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Aquest procediment de configuració instal·larà programari de propietat subjecte a termes de llicència. - + If you do not agree with the terms, the setup procedure cannot continue. Si no esteu d’acord en els termes, el procediment de configuració no pot continuar. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Aquest procediment de configuració instal·larà programari de propietat subjecte a termes de llicència per tal de proporcionar característiques addicionals i millorar l'experiència de l'usuari. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si no esteu d'acord en els termes, no s'instal·larà el programari de propietat i es faran servir les alternatives de codi lliure. @@ -1673,41 +1703,26 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocalePage - + Region: Regió: - + Zone: Zona: - - + + &Change... &Canvia... - - - The system language will be set to %1. - La llengua del sistema s'establirà a %1. - - - - The numbers and dates locale will be set to %1. - Els números i les dates de la configuració local s'establiran a %1. - - - - Set timezone to %1/%2.<br/> - Establirà la zona horària a %1/%2.<br/> - LocaleQmlViewStep - + Location Ubicació @@ -1715,7 +1730,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocaleViewStep - + Location Ubicació @@ -1777,7 +1792,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Map - + 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. @@ -2180,7 +2195,7 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé Error desconegut - + Password is empty La contrasenya és buida. @@ -2519,112 +2534,112 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé Es recopila informació del sistema... - + Partitions Particions - + Install %1 <strong>alongside</strong> another operating system. Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu. - + <strong>Erase</strong> disk and install %1. <strong>Esborra</strong> el disc i instal·la-hi %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplaça</strong> una partició amb %1. - + <strong>Manual</strong> partitioning. Particions <strong>manuals</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu al disc <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Esborra</strong> el disc <strong>%2</strong> (%3) i instal·la-hi %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplaça</strong> una partició del disc <strong>%2</strong> (%3) amb %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particions <strong>manuals</strong> del disc <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disc <strong>%1</strong> (%2) - + Current: Actual: - + After: Després: - + No EFI system partition configured No hi ha cap partició EFI de sistema configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/>Per configurar una partició EFI de sistema, torneu enrere i seleccioneu o creeu un sistema de fitxers FAT32 amb la bandera <strong>%3</strong> habilitada i el punt de muntatge <strong>%2</strong>. <br/><br/>Podeu continuar sense la creació d'una partició EFI de sistema, però el sistema podria no iniciar-se. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/> Ja s'ha configurat una partició amb el punt de muntatge <strong>%2</strong> però no se n'ha establert la bandera <strong>%3</strong>. <br/>Per establir-la-hi, torneu enrere i editeu la partició. <br/><br/>Podeu continuar sense establir la bandera, però el sistema podria no iniciar-se. - + EFI system partition flag not set No s'ha establert la bandera de la partició EFI del sistema - + Option to use GPT on BIOS Opció per usar GPT amb BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. La millor opció per a tots els sistemes és una taula de particions GPT. Aquest instal·lador també admet aquesta configuració per a sistemes BIOS.<br/><br/>Per configurar una taula de particions GPT en un sistema BIOS, (si no s'ha fet ja) torneu enrere i establiu la taula de particions a GPT, després creeu una partició sense formatar de 8 MB amb la bandera <strong>bios_grub</strong> habilitada.<br/><br/>Cal una partició sense format de 8 MB per iniciar %1 en un sistema BIOS amb GPT. - + Boot partition not encrypted Partició d'arrencada sense encriptar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. S'ha establert una partició d'arrencada separada conjuntament amb una partició d'arrel encriptada, però la partició d'arrencada no està encriptada.<br/><br/>Hi ha assumptes de seguretat amb aquest tipus de configuració, perquè hi ha fitxers del sistema importants en una partició no encriptada.<br/>Podeu continuar, si així ho desitgeu, però el desbloqueig del sistema de fitxers succeirà després, durant l'inici del sistema.<br/>Per encriptar la partició d'arrencada, torneu enrere i torneu-la a crear seleccionant <strong>Encripta</strong> a la finestra de creació de la partició. - + has at least one disk device available. tingui com a mínim un dispositiu de disc disponible. - + There are no partitions to install on. No hi ha particions per fer-hi una instal·lació. @@ -2672,17 +2687,17 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé PreserveFiles - + Saving files for later ... Es desen fitxers per a més tard... - + No files configured to save for later. No s'ha configurat cap fitxer per desar per a més tard. - + Not all of the configured files could be preserved. No s'han pogut conservar tots els fitxers configurats. @@ -3168,29 +3183,29 @@ La configuració pot continuar, però algunes característiques podrien estar in SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Canvia el model de teclat a %1, la disposició de teclat a %2-%3 - + Failed to write keyboard configuration for the virtual console. No s'ha pogut escriure la configuració del teclat per a la consola virtual. - - - + + + Failed to write to %1 No s'ha pogut escriure a %1 - + Failed to write keyboard configuration for X11. No s'ha pogut escriure la configuració del teclat per X11. - + Failed to write keyboard configuration to existing /etc/default directory. Ha fallat escriure la configuració del teclat al directori existent /etc/default. @@ -3423,28 +3438,28 @@ La configuració pot continuar, però algunes característiques podrien estar in TrackingKUserFeedbackJob - + KDE user feedback Informació de retorn d'usuaris de KDE - + Configuring KDE user feedback. Es configura la informació de retorn dels usuaris de KDE. - - + + Error in KDE user feedback configuration. Error de configuració de la informació de retorn dels usuaris de KDE. - + Could not configure KDE user feedback correctly, script error %1. No s'ha pogut configurar la informació de retorn dels usuaris de KDE correctament. Error d'script %1. - + Could not configure KDE user feedback correctly, Calamares error %1. No s'ha pogut configurar la informació de retorn dels usuaris de KDE correctament. Error del Calamares %1. @@ -3452,28 +3467,28 @@ La configuració pot continuar, però algunes característiques podrien estar in TrackingMachineUpdateManagerJob - + Machine feedback Informació de retorn de la màquina - + Configuring machine feedback. Es configura la informació de retorn de la màquina. - - + + Error in machine feedback configuration. Error a la configuració de la informació de retorn de la màquina. - + Could not configure machine feedback correctly, script error %1. No s'ha pogut configurar la informació de retorn de la màquina correctament. Error d'script %1. - + Could not configure machine feedback correctly, Calamares error %1. No s'ha pogut configurar la informació de retorn de la màquina correctament. Error del Calamares %1. @@ -3532,47 +3547,17 @@ La configuració pot continuar, però algunes característiques podrien estar in UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Si més d'una persona usarà aquest ordinador, podeu crear diversos comptes després de la configuració.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Si més d'una persona usarà aquest ordinador, podeu crear diversos comptes després de la instal·lació.</small> - - Your username is too long. - El nom d'usuari és massa llarg. - - - - Your username must start with a lowercase letter or underscore. - El nom d'usuari ha de començar amb una lletra en minúscula o una ratlla baixa. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Només es permeten lletres en minúscula, números, ratlles baixes i guions. - - - - Your hostname is too short. - El nom d'amfitrió és massa curt. - - - - Your hostname is too long. - El nom d'amfitrió és massa llarg. - - - - Only letters, numbers, underscore and hyphen are allowed. - Només es permeten lletres, números, ratlles baixes i guions. - - - + Your passwords do not match! Les contrasenyes no coincideixen! @@ -3580,7 +3565,7 @@ La configuració pot continuar, però algunes característiques podrien estar in UsersViewStep - + Users Usuaris @@ -3804,21 +3789,21 @@ La configuració pot continuar, però algunes característiques podrien estar in i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Llengües</h1> </br> La configuració local del sistema afecta la llengua i el joc de caràcters d'alguns elements de la interfície de línia d'ordres. La configuració actual és <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Configuració local</h1> </br> - La configuració local del sistema afecta la llengua i el joc de caràcters d'alguns elements de la interfície de línia d'ordres. La configuració actual és <strong>%1</strong>. + La configuració local del sistema afecta el format de números i dates. La configuració actual és <strong>%1</strong>. - + Back Enrere @@ -3826,44 +3811,44 @@ La configuració pot continuar, però algunes característiques podrien estar in keyboardq - + Keyboard Model Model del teclat - + Pick your preferred keyboard model or use the default one based on the detected hardware Trieu el model de teclat preferit o useu el predeterminat basat en el maquinari detectat. - + Refresh Actualitza-ho - - + + Layouts Disposicions - - + + Keyboard Layout Disposició del teclat - + Models Models - + Variants Variants - + Test your keyboard Proveu el teclat. @@ -3871,17 +3856,7 @@ La configuració pot continuar, però algunes característiques podrien estar in localeq - - System language set to %1 - Llengua del sistema establerta a %1 - - - - Numbers and dates locale set to %1 - Llengua dels números i dates establerta a %1 - - - + Change Canvia-ho diff --git a/lang/calamares_ca@valencia.ts b/lang/calamares_ca@valencia.ts index 0b8747b2e..d372b5bb7 100644 --- a/lang/calamares_ca@valencia.ts +++ b/lang/calamares_ca@valencia.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index e1a62eb13..10f269b9b 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -220,7 +220,7 @@ QML Step <i>%1</i>. - + Loading failed. Načítání se nezdařilo. @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed Nastavení se nezdařilo - + Installation Failed Instalace se nezdařila - + Would you like to paste the install log to the web? Chcete vyvěsit záznam událostí při instalaci na web? - + Error Chyba - - + + &Yes &Ano - - + + &No &Ne - + &Close &Zavřít - + Install Log Paste URL URL pro vložení záznamu událostí při instalaci - + The upload was unsuccessful. No web-paste was done. Nahrání se nezdařilo. Na web nebylo nic vloženo. - + Calamares Initialization Failed Inicializace Calamares se nezdařila - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 nemůže být nainstalováno. Calamares se nepodařilo načíst všechny nastavené moduly. Toto je problém způsobu použití Calamares ve vámi používané distribuci. - + <br/>The following modules could not be loaded: <br/> Následující moduly se nepodařilo načíst: - + Continue with setup? Pokračovat s instalací? - + Continue with installation? Pokračovat v instalaci? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Instalátor %1 provede změny na datovém úložišti, aby bylo nainstalováno %2.<br/><strong>Změny nebude možné vrátit zpět.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalátor %1 provede změny na datovém úložišti, aby bylo nainstalováno %2.<br/><strong>Změny nebude možné vrátit zpět.</strong> - + &Set up now Na&stavit nyní - + &Install now &Spustit instalaci - + Go &back Jít &zpět - + &Set up Na&stavit - + &Install Na&instalovat - + Setup is complete. Close the setup program. Nastavení je dokončeno. Ukončete nastavovací program. - + The installation is complete. Close the installer. Instalace je dokončena. Ukončete instalátor. - + Cancel setup without changing the system. Zrušit nastavení bez změny v systému. - + Cancel installation without changing the system. Zrušení instalace bez provedení změn systému. - + &Next &Další - + &Back &Zpět - + &Done &Hotovo - + &Cancel &Storno - + Cancel setup? Zrušit nastavování? - + Cancel installation? Přerušit instalaci? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Opravdu chcete přerušit instalaci? Instalační program bude ukončen a všechny změny ztraceny. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Opravdu chcete instalaci přerušit? @@ -488,12 +488,12 @@ Instalační program bude ukončen a všechny změny ztraceny. &Storno - + %1 Setup Program Instalátor %1 - + %1 Installer %1 instalátor @@ -520,9 +520,9 @@ Instalační program bude ukončen a všechny změny ztraceny. - - - + + + Current: Stávající: @@ -533,115 +533,115 @@ Instalační program bude ukončen a všechny změny ztraceny. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Ruční rozdělení</strong><br/>Můžete si sami vytvořit nebo změnit velikost oddílů. Pro UEFI instalace je zapotřebí mít GPT tabulku oddílů a <strong>512 MB oddíl /boot se souborovým systémem FAT32</strong> – buď nevytvářejte znovu a použijte existující, nebo takovou vytvořte. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ruční rozdělení datového úložiště</strong><br/>Sami si můžete vytvořit vytvořit nebo zvětšit/zmenšit oddíly. - + Reuse %1 as home partition for %2. Zrecyklovat %1 na oddíl pro domovské složky %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Vyberte oddíl, který chcete zmenšit, poté posouváním na spodní liště změňte jeho velikost.</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 bude zmenšen na %2MiB a nový %3MiB oddíl pro %4 bude vytvořen. - + Boot loader location: Umístění zavaděče: - + <strong>Select a partition to install on</strong> <strong>Vyberte oddíl na který nainstalovat</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nebyl nalezen žádný EFI systémový oddíl. Vraťte se zpět a nastavte %1 pomocí ručního rozdělení. - + The EFI system partition at %1 will be used for starting %2. Pro zavedení %2 se využije EFI systémový oddíl %1. - + EFI system partition: EFI systémový oddíl: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Zdá se, že na tomto úložném zařízení není žádný operační systém. Jak chcete postupovat?<br/>Než budou provedeny jakékoli změny na úložných zařízeních, bude zobrazen jejich přehled a budete požádáni o jejich potvrzení. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Vymazat datové úložiště</strong><br/>Touto volbou budou <font color="red">smazána</font> všechna data, která se na něm nyní nacházejí. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Nainstalovat vedle</strong><br/>Instalátor zmenší oddíl a vytvoří místo pro %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Nahradit oddíl</strong><br/>Původní oddíl bude nahrazen %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení bylo nalezeno %1. Jak chcete postupovat?<br/>Než budou provedeny jakékoli změny na úložných zařízeních, bude zobrazen jejich přehled a budete požádáni o jejich potvrzení. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení se už nachází operační systém. Jak chcete postupovat?<br/>Než budou provedeny jakékoli změny na úložných zařízeních, bude zobrazen jejich přehled a budete požádáni o jejich potvrzení. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení se už nachází několik operačních systémů. Jak chcete postupovat?<br/>Než budou provedeny jakékoli změny na úložných zařízeních, bude zobrazen jejich přehled změn a budete požádáni o jejich potvrzení. - + No Swap Žádný odkládací prostor (swap) - + Reuse Swap Použít existující odkládací prostor - + Swap (no Hibernate) Odkládací prostor (bez uspávání na disk) - + Swap (with Hibernate) Odkládací prostor (s uspáváním na disk) - + Swap to file Odkládat do souboru @@ -649,17 +649,17 @@ Instalační program bude ukončen a všechny změny ztraceny. ClearMountsJob - + Clear mounts for partitioning operations on %1 Odpojit souborové systémy před zahájením dělení %1 na oddíly - + Clearing mounts for partitioning operations on %1. Odpojují se souborové systémy před zahájením dělení %1 na oddíly - + Cleared all mounts for %1 Všechny souborové systémy na %1 odpojeny @@ -667,22 +667,22 @@ Instalační program bude ukončen a všechny změny ztraceny. ClearTempMountsJob - + Clear all temporary mounts. Odpojit všechny dočasné přípojné body. - + Clearing all temporary mounts. Odpojují se všechny dočasné přípojné body. - + Cannot get list of temporary mounts. Nepodařilo získat seznam dočasných přípojných bodů. - + Cleared all temporary mounts. Všechny přípojné body odpojeny. @@ -709,30 +709,30 @@ Instalační program bude ukončen a všechny změny ztraceny. Config - + Set keyboard model to %1.<br/> Nastavit model klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavit rozložení klávesnice na %1/%2. - + + Set timezone to %1/%2. + Nastavit časové pásmo na %1/%2. + + + The system language will be set to %1. Jazyk systému bude nastaven na %1. - + The numbers and dates locale will be set to %1. Formát zobrazení čísel, data a času bude nastaven dle národního prostředí %1. - - - Set timezone to %1/%2.<br/> - Nastavit časové pásmo na %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -798,6 +798,46 @@ Instalační program bude ukončen a všechny změny ztraceny. <h1>Welcome to the %1 installer</h1> <h1>Vítejte v instalátoru %1.</h1> + + + Your username is too long. + Vaše uživatelské jméno je příliš dlouhé. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Je třeba, aby uživatelské jméno začínalo na malé písmeno nebo podtržítko. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Je možné použít pouze malá písmena, číslice, podtržítko a spojovník. + + + + Your hostname is too short. + Název stroje je příliš krátký. + + + + Your hostname is too long. + Název stroje je příliš dlouhý. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Je možné použít pouze písmena, číslice, podtržítko a spojovník. + ContextualProcessJob @@ -962,40 +1002,30 @@ Instalační program bude ukončen a všechny změny ztraceny. CreateUserJob - + Create user %1 Vytvořit uživatele %1 - + Create user <strong>%1</strong>. Vytvořit uživatele <strong>%1</strong>. - + Creating user %1. Vytváří se účet pro uživatele %1. - - Sudoers dir is not writable. - Nedaří se zapsat do složky sudoers.d. - - - + Cannot create sudoers file for writing. Nepodařilo se vytvořit soubor pro sudoers tak, aby do něj šlo zapsat. - + Cannot chmod sudoers file. Nepodařilo se změnit přístupová práva (chmod) na souboru se sudoers. - - - Cannot open groups file for reading. - Nepodařilo se otevřít soubor groups pro čtení. - CreateVolumeGroupDialog @@ -1233,37 +1263,37 @@ Instalační program bude ukončen a všechny změny ztraceny. FillGlobalStorageJob - + Set partition information Nastavit informace o oddílu - + Install %1 on <strong>new</strong> %2 system partition. Nainstalovat %1 na <strong>nový</strong> %2 systémový oddíl. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Nastavit <strong>nový</strong> %2 oddíl s přípojným bodem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Nainstalovat %2 na %3 systémový oddíl <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Nastavit %3 oddíl <strong>%1</strong> s přípojným bodem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Nainstalovat zavaděč do <strong>%1</strong>. - + Setting up mount points. Nastavují se přípojné body. @@ -1514,12 +1544,12 @@ Instalační program bude ukončen a všechny změny ztraceny. KeyboardPage - + Set keyboard model to %1.<br/> Nastavit model klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavit rozložení klávesnice na %1/%2. @@ -1576,32 +1606,32 @@ Instalační program bude ukončen a všechny změny ztraceny. <h1>Licenční ujednání</h1> - + I accept the terms and conditions above. Souhlasím s výše uvedenými podmínkami. - + Please review the End User License Agreements (EULAs). Pročtěte si Smlouvy s koncovými uživatelem (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Tato nastavovací procedura nainstaluje proprietární software, který je předmětem licenčních podmínek. - + If you do not agree with the terms, the setup procedure cannot continue. Pokud s podmínkami nesouhlasíte, instalační procedura nemůže pokračovat. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Pro poskytování dalších funkcí a vylepšení pro uživatele, tato nastavovací procedura nainstaluje i proprietární software, který je předmětem licenčních podmínek. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Pokud nesouhlasíte s podmínkami, proprietární software nebude nainstalován a namísto toho budou použity opensource alternativy. @@ -1677,41 +1707,26 @@ Instalační program bude ukončen a všechny změny ztraceny. LocalePage - + Region: Oblast: - + Zone: Pásmo: - - + + &Change... &Změnit… - - - The system language will be set to %1. - Jazyk systému bude nastaven na %1. - - - - The numbers and dates locale will be set to %1. - Formát zobrazení čísel, data a času bude nastaven dle národního prostředí %1. - - - - Set timezone to %1/%2.<br/> - Nastavit časové pásmo na %1/%2.<br/> - LocaleQmlViewStep - + Location Poloha @@ -1719,7 +1734,7 @@ Instalační program bude ukončen a všechny změny ztraceny. LocaleViewStep - + Location Poloha @@ -1781,7 +1796,7 @@ Instalační program bude ukončen a všechny změny ztraceny. Map - + 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. @@ -2182,7 +2197,7 @@ Instalační program bude ukončen a všechny změny ztraceny. Neznámá chyba - + Password is empty Heslo není vyplněné @@ -2521,112 +2536,112 @@ Instalační program bude ukončen a všechny změny ztraceny. Shromažďování informací o systému… - + Partitions Oddíly - + Install %1 <strong>alongside</strong> another operating system. Nainstalovat %1 <strong>vedle</strong> dalšího operačního systému. - + <strong>Erase</strong> disk and install %1. <strong>Smazat</strong> obsah jednotky a nainstalovat %1. - + <strong>Replace</strong> a partition with %1. <strong>Nahradit</strong> oddíl %1. - + <strong>Manual</strong> partitioning. <strong>Ruční</strong> dělení úložiště. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Nainstalovat %1 <strong>vedle</strong> dalšího operačního systému na disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Vymazat</strong> obsah jednotky <strong>%2</strong> (%3) a nainstalovat %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Nahradit</strong> oddíl na jednotce <strong>%2</strong> (%3) %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ruční</strong> dělení jednotky <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Jednotka <strong>%1</strong> (%2) - + Current: Stávající: - + After: Potom: - + No EFI system partition configured Není nastavený žádný EFI systémový oddíl - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Pro spuštění %1 je potřeba EFI systémový oddíl.<br/><br/>Pro nastavení EFI systémového oddílu se vraťte zpět a vyberte nebo vytvořte oddíl typu FAT32 s příznakem <strong>%3</strong> a přípojným bodem <strong>%2</strong>.<br/><br/>Je možné pokračovat bez nastavení EFI systémového oddílu, ale systém nemusí jít spustit. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Pro spuštění %1 je potřeba EFI systémový oddíl.<br/><br/>Byl nastaven oddíl s přípojným bodem <strong>%2</strong> ale nemá nastaven příznak <strong>%3</strong>.<br/>Pro nastavení příznaku se vraťte zpět a upravte oddíl.<br/><br/>Je možné pokračovat bez nastavení příznaku, ale systém nemusí jít spustit. - + EFI system partition flag not set Příznak EFI systémového oddílu není nastavený - + Option to use GPT on BIOS Volba použít GPT i pro BIOS zavádění (MBR) - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT tabulka oddílů je nejlepší volbou pro všechny systémy. Tento instalátor podporuje takové uspořádání i pro zavádění v režimu BIOS firmware.<br/><br/>Pro nastavení GPT tabulky oddílů v případě BIOS, (pokud už není provedeno) jděte zpět a nastavte tabulku oddílů na, dále vytvořte 8 MB oddíl (bez souborového systému s příznakem <strong>bios_grub</strong>.<br/><br/>Tento oddíl je zapotřebí pro spuštění %1 na systému s BIOS firmware/režimem a GPT. - + Boot partition not encrypted Zaváděcí oddíl není šifrován - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kromě šifrovaného kořenového oddílu byl vytvořen i nešifrovaný oddíl zavaděče.<br/><br/>To by mohl být bezpečnostní problém, protože na nešifrovaném oddílu jsou důležité soubory systému.<br/>Pokud chcete, můžete pokračovat, ale odemykání souborového systému bude probíhat později při startu systému.<br/>Pro zašifrování oddílu zavaděče se vraťte a vytvořte ho vybráním možnosti <strong>Šifrovat</strong> v okně při vytváření oddílu. - + has at least one disk device available. má k dispozici alespoň jedno zařízení pro ukládání dat. - + There are no partitions to install on. Nejsou zde žádné oddíly na které by se dalo nainstalovat. @@ -2674,17 +2689,17 @@ Instalační program bude ukončen a všechny změny ztraceny. PreserveFiles - + Saving files for later ... Ukládání souborů pro pozdější využití… - + No files configured to save for later. U žádných souborů nebylo nastaveno, že mají být uloženy pro pozdější využití. - + Not all of the configured files could be preserved. Ne všechny nastavené soubory bylo možné zachovat. @@ -3167,29 +3182,29 @@ Výstup: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Nastavit model klávesnice na %1, rozložení na %2-%3 - + Failed to write keyboard configuration for the virtual console. Zápis nastavení klávesnice pro virtuální konzoli se nezdařil. - - - + + + Failed to write to %1 Zápis do %1 se nezdařil - + Failed to write keyboard configuration for X11. Zápis nastavení klávesnice pro grafický server X11 se nezdařil. - + Failed to write keyboard configuration to existing /etc/default directory. Zápis nastavení klávesnice do existující složky /etc/default se nezdařil. @@ -3422,28 +3437,28 @@ Výstup: TrackingKUserFeedbackJob - + KDE user feedback Zpětná vazba uživatele KDE - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Nepodařilo se správně nastavit zpětnou vazbu KDE uživatele, chyba Calamares %1. @@ -3451,28 +3466,28 @@ Výstup: TrackingMachineUpdateManagerJob - + Machine feedback Zpětná vazba stroje - + Configuring machine feedback. Nastavování zpětné vazby stroje - - + + Error in machine feedback configuration. Chyba v nastavení zpětné vazby stroje. - + Could not configure machine feedback correctly, script error %1. Nepodařilo se správně nastavit zpětnou vazbu stroje, chyba skriptu %1. - + Could not configure machine feedback correctly, Calamares error %1. Nepodařilo se správně nastavit zpětnou vazbu stroje, chyba Calamares %1. @@ -3531,47 +3546,17 @@ Výstup: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Pokud bude tento počítač používat více lidí, můžete přidat uživatelské účty po dokončení instalace.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Pokud bude tento počítač používat více lidí, můžete přidat uživatelské účty po dokončení instalace.</small> - - Your username is too long. - Vaše uživatelské jméno je příliš dlouhé. - - - - Your username must start with a lowercase letter or underscore. - Je třeba, aby uživatelské jméno začínalo na malé písmeno nebo podtržítko. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Je možné použít pouze malá písmena, číslice, podtržítko a spojovník. - - - - Your hostname is too short. - Název stroje je příliš krátký. - - - - Your hostname is too long. - Název stroje je příliš dlouhý. - - - - Only letters, numbers, underscore and hyphen are allowed. - Je možné použít pouze písmena, číslice, podtržítko a spojovník. - - - + Your passwords do not match! Zadání hesla se neshodují! @@ -3579,7 +3564,7 @@ Výstup: UsersViewStep - + Users Uživatelé @@ -3792,19 +3777,19 @@ Výstup: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Zpět @@ -3812,44 +3797,44 @@ Výstup: keyboardq - + Keyboard Model Model klávesnice - + Pick your preferred keyboard model or use the default one based on the detected hardware Vyberte vámi upřednostňovaný model klávesnice nebo použijte ten výchozí, založený na zjištěném hardware - + Refresh Načíst znovu - - + + Layouts Rovzržení - - + + Keyboard Layout Rozvržení klávesnice - + Models Modely - + Variants Varianty - + Test your keyboard Vyzkoušejte si svou klávesnici @@ -3857,17 +3842,7 @@ Výstup: localeq - - System language set to %1 - Jazyk systému nastaven na %1 - - - - Numbers and dates locale set to %1 - Místní formát čísel a data nastaven na %1 - - - + Change Změnit diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index e9b9ed1d0..31f66bd32 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -220,7 +220,7 @@ QML-trin <i>%1</i>. - + Loading failed. Indlæsning mislykkedes. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Opsætningen mislykkedes - + Installation Failed Installation mislykkedes - + Would you like to paste the install log to the web? Vil du indsætte installationsloggen på webbet? - + Error Fejl - - + + &Yes &Ja - - + + &No &Nej - + &Close &Luk - + Install Log Paste URL Indsættelses-URL for installationslog - + The upload was unsuccessful. No web-paste was done. Uploaden lykkedes ikke. Der blev ikke foretaget nogen webindsættelse. - + Calamares Initialization Failed Initiering af Calamares mislykkedes - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 kan ikke installeres. Calamares kunne ikke indlæse alle de konfigurerede moduler. Det er et problem med den måde Calamares bruges på af distributionen. - + <br/>The following modules could not be loaded: <br/>Følgende moduler kunne ikke indlæses: - + Continue with setup? Fortsæt med opsætningen? - + Continue with installation? Fortsæt installationen? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1-opsætningsprogrammet er ved at foretage ændringer til din disk for at opsætte %2.<br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installationsprogrammet er ved at foretage ændringer til din disk for at installere %2.<br/><strong>Det vil ikke være muligt at fortryde ændringerne.</strong> - + &Set up now &Sæt op nu - + &Install now &Installér nu - + Go &back Gå &tilbage - + &Set up &Sæt op - + &Install &Installér - + Setup is complete. Close the setup program. Opsætningen er fuldført. Luk opsætningsprogrammet. - + The installation is complete. Close the installer. Installationen er fuldført. Luk installationsprogrammet. - + Cancel setup without changing the system. Annullér opsætningen uden at ændre systemet. - + Cancel installation without changing the system. Annullér installation uden at ændre systemet. - + &Next &Næste - + &Back &Tilbage - + &Done &Færdig - + &Cancel &Annullér - + Cancel setup? Annullér opsætningen? - + Cancel installation? Annullér installationen? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Vil du virkelig annullere den igangværende opsætningsproces? Opsætningsprogrammet vil stoppe og alle ændringer vil gå tabt. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig annullere den igangværende installationsproces? @@ -484,12 +484,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Annullér - + %1 Setup Program %1-opsætningsprogram - + %1 Installer %1-installationsprogram @@ -516,9 +516,9 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - - - + + + Current: Nuværende: @@ -529,115 +529,115 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manuel partitionering</strong><br/>Du kan selv oprette eller ændre størrelsen på partitioner. Ved UEFI-installationer er det et must at have en GPT-partitionstabel og <strong>fat32 512Mb /boot-partition</strong>, brug enten en eksisterende formatering eller opret en. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuel partitionering</strong><br/>Du kan selv oprette og ændre størrelse på partitioner. - + Reuse %1 as home partition for %2. Genbrug %1 som hjemmepartition til %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Vælg en partition der skal mindskes, træk herefter den nederste bjælke for at ændre størrelsen</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 vil blive skrumpet til %2 MiB og en ny %3 MiB partition vil blive oprettet for %4. - + Boot loader location: Placering af bootloader: - + <strong>Select a partition to install on</strong> <strong>Vælg en partition at installere på</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. En EFI-partition blev ikke fundet på systemet. Gå venligst tilbage og brug manuel partitionering til at opsætte %1. - + The EFI system partition at %1 will be used for starting %2. EFI-systempartitionen ved %1 vil blive brugt til at starte %2. - + EFI system partition: EFI-systempartition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Lagerenheden ser ikke ud til at indeholde et styresystem. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Slet disk</strong><br/>Det vil <font color="red">slette</font> alt data på den valgte lagerenhed. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installér ved siden af</strong><br/>Installationsprogrammet vil mindske en partition for at gøre plads til %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Erstat en partition</strong><br/>Erstatter en partition med %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Lagerenheden har %1 på sig. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før det sker ændringer til lagerenheden. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Lagerenheden indeholder allerede et styresystem. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Lagerenheden indeholder flere styresystemer. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. - + No Swap Ingen swap - + Reuse Swap Genbrug swap - + Swap (no Hibernate) Swap (ingen dvale) - + Swap (with Hibernate) Swap (med dvale) - + Swap to file Swap til fil @@ -645,17 +645,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ClearMountsJob - + Clear mounts for partitioning operations on %1 Ryd monteringspunkter for partitioneringshandlinger på %1 - + Clearing mounts for partitioning operations on %1. Rydder monteringspunkter for partitioneringshandlinger på %1. - + Cleared all mounts for %1 Ryddede alle monteringspunkter til %1 @@ -663,22 +663,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ClearTempMountsJob - + Clear all temporary mounts. Ryd alle midlertidige monteringspunkter. - + Clearing all temporary mounts. Rydder alle midlertidige monteringspunkter. - + Cannot get list of temporary mounts. Kan ikke få liste over midlertidige monteringspunkter. - + Cleared all temporary mounts. Rydder alle midlertidige monteringspunkter. @@ -705,30 +705,30 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Config - + Set keyboard model to %1.<br/> Sæt tastaturmodel til %1.<br/> - + Set keyboard layout to %1/%2. Sæt tastaturlayout til %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Systemsproget vil blive sat til %1. - + The numbers and dates locale will be set to %1. Lokalitet for tal og datoer vil blive sat til %1. - - - Set timezone to %1/%2.<br/> - Sæt tidszone til %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.<h1>Welcome to the %1 installer</h1> <h1>Velkommen til %1-installationsprogrammet</h1> + + + Your username is too long. + Dit brugernavn er for langt. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Dit brugernavn skal begynde med et bogstav med småt eller understregning. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Det er kun tilladt at bruge bogstaver med småt, tal, understregning og bindestreg. + + + + Your hostname is too short. + Dit værtsnavn er for kort. + + + + Your hostname is too long. + Dit værtsnavn er for langt. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Det er kun tilladt at bruge bogstaver, tal, understregning og bindestreg. + ContextualProcessJob @@ -958,40 +998,30 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CreateUserJob - + Create user %1 Opret bruger %1 - + Create user <strong>%1</strong>. Opret bruger <strong>%1</strong>. - + Creating user %1. Opretter bruger %1. - - Sudoers dir is not writable. - Sudoers mappe er skrivebeskyttet. - - - + Cannot create sudoers file for writing. Kan ikke oprette sudoers fil til skrivning. - + Cannot chmod sudoers file. Kan ikke chmod sudoers fil. - - - Cannot open groups file for reading. - Kan ikke åbne gruppernes fil til læsning. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. FillGlobalStorageJob - + Set partition information Sæt partitionsinformation - + Install %1 on <strong>new</strong> %2 system partition. Installér %1 på <strong>ny</strong> %2-systempartition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Opsæt den <strong>nye</strong> %2 partition med monteringspunkt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installér %2 på %3-systempartition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Opsæt %3 partition <strong>%1</strong> med monteringspunkt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installér bootloader på <strong>%1</strong>. - + Setting up mount points. Opsætter monteringspunkter. @@ -1510,12 +1540,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. KeyboardPage - + Set keyboard model to %1.<br/> Sæt tastaturmodel til %1.<br/> - + Set keyboard layout to %1/%2. Sæt tastaturlayout til %1/%2. @@ -1572,32 +1602,32 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.<h1>Licensaftale</h1> - + I accept the terms and conditions above. Jeg accepterer de ovenstående vilkår og betingelser. - + Please review the End User License Agreements (EULAs). Gennemse venligst slutbrugerlicensaftalerne (EULA'erne). - + This setup procedure will install proprietary software that is subject to licensing terms. Opsætningsproceduren installerer proprietær software der er underlagt licenseringsvilkår. - + If you do not agree with the terms, the setup procedure cannot continue. Hvis du ikke er enig i vilkårne, kan opsætningsproceduren ikke fortsætte. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Opsætningsproceduren kan installere proprietær software der er underlagt licenseringsvilkår, for at kunne tilbyde yderligere funktionaliteter og forbedre brugeroplevelsen. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Hvis du ikke er enig i vilkårne vil der ikke blive installeret proprietær software, og open source-alternativer vil blive brugt i stedet. @@ -1673,41 +1703,26 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocalePage - + Region: Region: - + Zone: Zone: - - + + &Change... &Skift ... - - - The system language will be set to %1. - Systemsproget vil blive sat til %1. - - - - The numbers and dates locale will be set to %1. - Lokalitet for tal og datoer vil blive sat til %1. - - - - Set timezone to %1/%2.<br/> - Sæt tidszone til %1/%2.<br/> - LocaleQmlViewStep - + Location Placering @@ -1715,7 +1730,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocaleViewStep - + Location Placering @@ -1777,7 +1792,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Map - + 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. @@ -2180,7 +2195,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Ukendt fejl - + Password is empty Adgangskoden er tom @@ -2519,112 +2534,112 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Indsamler systeminformation ... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installér %1 <strong>ved siden af</strong> et andet styresystem. - + <strong>Erase</strong> disk and install %1. <strong>Slet</strong> disk og installér %1. - + <strong>Replace</strong> a partition with %1. <strong>Erstat</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installér %1 <strong>ved siden af</strong> et andet styresystem på disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Slet</strong> disk <strong>%2</strong> (%3) og installér %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Erstat</strong> en partition på disk <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuel</strong> partitionering på disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Nuværende: - + After: Efter: - + No EFI system partition configured Der er ikke konfigureret nogen EFI-systempartition - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. En EFI-systempartition er nødvendig for at starte %1.<br/><br/>For at konfigurere en EFI-systempartition skal du gå tilbage og vælge eller oprette et FAT32-filsystem med <strong>%3</strong>-flaget aktiveret og monteringspunkt <strong>%2</strong>.<br/><br/>Du kan fortsætte uden at opsætte en EFI-systempartition, men dit system vil muligvis ikke kunne starte. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. En EFI-systempartition er nødvendig for at starte %1.<br/><br/>En partition var konfigureret med monteringspunkt <strong>%2</strong>, men dens <strong>%3</strong>-flag var ikke sat.<br/>For at sætte flaget skal du gå tilbage og redigere partitionen.<br/><br/>Du kan fortsætte uden at konfigurere flaget, men dit system vil muligvis ikke kunne starte. - + EFI system partition flag not set EFI-systempartitionsflag ikke sat - + Option to use GPT on BIOS Valgmulighed til at bruge GPT på BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. En GPT-partitionstabel er den bedste valgmulighed til alle systemer. Installationsprogrammet understøtter også sådan en opsætning for BIOS-systemer.<br/><br/>Konfigurer en GPT-partitionstabel på BIOS, (hvis det ikke allerede er gjort) ved at gå tilbage og indstil partitionstabellen til GPT, opret herefter en 8 MB uformateret partition med <strong>bios_grub</strong>-flaget aktiveret.<br/><br/>En uformateret 8 MB partition er nødvendig for at starte %1 på et BIOS-system med GPT. - + Boot partition not encrypted Bootpartition ikke krypteret - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. En separat bootpartition blev opsat sammen med en krypteret rodpartition, men bootpartitionen er ikke krypteret.<br/><br/>Der er sikkerhedsmæssige bekymringer med denne slags opsætning, da vigtige systemfiler er gemt på en ikke-krypteret partition.<br/>Du kan fortsætte hvis du vil, men oplåsning af filsystemet sker senere under systemets opstart.<br/>For at kryptere bootpartitionen skal du gå tilbage og oprette den igen, vælge <strong>Kryptér</strong> i partitionsoprettelsesvinduet. - + has at least one disk device available. har mindst én tilgængelig diskenhed. - + There are no partitions to install on. Der er ikke nogen partitioner at installere på. @@ -2672,17 +2687,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PreserveFiles - + Saving files for later ... Gemmer filer til senere ... - + No files configured to save for later. Der er ikke konfigureret nogen filer til at blive gemt til senere. - + Not all of the configured files could be preserved. Kunne ikke bevare alle de konfigurerede filer. @@ -3170,29 +3185,29 @@ setting SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Sæt tastaturmodel til %1, layout til %2-%3 - + Failed to write keyboard configuration for the virtual console. Kunne ikke skrive tastaturkonfiguration for den virtuelle konsol. - - - + + + Failed to write to %1 Kunne ikke skrive til %1 - + Failed to write keyboard configuration for X11. Kunne ikke skrive tastaturkonfiguration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. Kunne ikke skrive tastaturkonfiguration til eksisterende /etc/default-mappe. @@ -3425,28 +3440,28 @@ setting TrackingKUserFeedbackJob - + KDE user feedback KDE-brugerfeedback - + Configuring KDE user feedback. Konfigurer KDE-brugerfeedback. - - + + Error in KDE user feedback configuration. Fejl i konfiguration af KDE-brugerfeedback. - + Could not configure KDE user feedback correctly, script error %1. Kunne ikke konfigurere KDE-brugerfeedback korrekt, fejl i script %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Kunne ikke konfigurere KDE-brugerfeedback korrekt, fejl i Calamares %1. @@ -3454,28 +3469,28 @@ setting TrackingMachineUpdateManagerJob - + Machine feedback Maskinfeedback - + Configuring machine feedback. Konfigurer maskinfeedback. - - + + Error in machine feedback configuration. Fejl i maskinfeedback-konfiguration. - + Could not configure machine feedback correctly, script error %1. Kunne ikke konfigurere maskinfeedback korrekt, skript-fejl %1. - + Could not configure machine feedback correctly, Calamares error %1. Kunne ikke konfigurere maskinfeedback korrekt, Calamares-fejl %1. @@ -3534,47 +3549,17 @@ setting UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Hvis mere end én person bruger computeren, kan du oprette flere konti efter opsætningen.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Hvis mere end én person bruger computeren, kan du oprette flere konti efter installationen.</small> - - Your username is too long. - Dit brugernavn er for langt. - - - - Your username must start with a lowercase letter or underscore. - Dit brugernavn skal begynde med et bogstav med småt eller understregning. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Det er kun tilladt at bruge bogstaver med småt, tal, understregning og bindestreg. - - - - Your hostname is too short. - Dit værtsnavn er for kort. - - - - Your hostname is too long. - Dit værtsnavn er for langt. - - - - Only letters, numbers, underscore and hyphen are allowed. - Det er kun tilladt at bruge bogstaver, tal, understregning og bindestreg. - - - + Your passwords do not match! Dine adgangskoder er ikke ens! @@ -3582,7 +3567,7 @@ setting UsersViewStep - + Users Brugere @@ -3806,21 +3791,20 @@ setting i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Sprog</h1></br> Systemets lokalitetsindstilling har indflydelse på sproget og tegnsættet for nogle brugerfladeelementer i kommandolinjen. Den nuværende indstilling er <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>Lokaliteter</h1></br> - Systemets lokalitetsindstilling har indflydelse på sproget og tegnsættet for nogle brugerfladeelementer i kommandolinjen. Den nuværende indstilling er <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + - + Back Tilbage @@ -3828,44 +3812,44 @@ setting keyboardq - + Keyboard Model Tastaturmodel - + Pick your preferred keyboard model or use the default one based on the detected hardware Vælg din foretrukne tastaturmodel eller brug den som er standard i det registrerede hardware - + Refresh Opdater - - + + Layouts Layouts - - + + Keyboard Layout Tastaturlayout - + Models Modeller - + Variants Varianter - + Test your keyboard Test dit tastatur @@ -3873,17 +3857,7 @@ setting localeq - - System language set to %1 - Systemsproget indstillet til %1. - - - - Numbers and dates locale set to %1 - Lokalitet for tal og datoer sat til %1 - - - + Change Skift diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index c0d0cadaf..909d390b8 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -220,7 +220,7 @@ QML Schritt <i>%1</i>. - + Loading failed. Laden fehlgeschlagen. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Setup fehlgeschlagen - + Installation Failed Installation gescheitert - + Would you like to paste the install log to the web? Möchten Sie das Installationsprotokoll an eine Internetadresse senden? - + Error Fehler - - + + &Yes &Ja - - + + &No &Nein - + &Close &Schließen - + Install Log Paste URL Internetadresse für das Senden des Installationsprotokolls - + The upload was unsuccessful. No web-paste was done. Das Hochladen ist fehlgeschlagen. Es wurde nichts an eine Internetadresse gesendet. - + Calamares Initialization Failed Initialisierung von Calamares fehlgeschlagen - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 kann nicht installiert werden. Calamares war nicht in der Lage, alle konfigurierten Module zu laden. Dieses Problem hängt mit der Art und Weise zusammen, wie Calamares von der jeweiligen Distribution eingesetzt wird. - + <br/>The following modules could not be loaded: <br/>Die folgenden Module konnten nicht geladen werden: - + Continue with setup? Setup fortsetzen? - + Continue with installation? Installation fortsetzen? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Das %1 Installationsprogramm ist dabei, Änderungen an Ihrer Festplatte vorzunehmen, um %2 einzurichten.<br/><strong> Sie werden diese Änderungen nicht rückgängig machen können.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Das %1 Installationsprogramm wird Änderungen an Ihrer Festplatte vornehmen, um %2 zu installieren.<br/><strong>Diese Änderungen können nicht rückgängig gemacht werden.</strong> - + &Set up now &Jetzt einrichten - + &Install now Jetzt &installieren - + Go &back Gehe &zurück - + &Set up &Einrichten - + &Install &Installieren - + Setup is complete. Close the setup program. Setup ist abgeschlossen. Schließe das Installationsprogramm. - + The installation is complete. Close the installer. Die Installation ist abgeschlossen. Schließe das Installationsprogramm. - + Cancel setup without changing the system. Installation abbrechen ohne das System zu verändern. - + Cancel installation without changing the system. Installation abbrechen, ohne das System zu verändern. - + &Next &Weiter - + &Back &Zurück - + &Done &Erledigt - + &Cancel &Abbrechen - + Cancel setup? Installation abbrechen? - + Cancel installation? Installation abbrechen? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Wollen Sie die Installation wirklich abbrechen? Dadurch wird das Installationsprogramm beendet und alle Änderungen gehen verloren. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wollen Sie wirklich die aktuelle Installation abbrechen? @@ -484,12 +484,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. &Abbrechen - + %1 Setup Program %1 Installationsprogramm - + %1 Installer %1 Installationsprogramm @@ -516,9 +516,9 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - - - + + + Current: Aktuell: @@ -529,115 +529,115 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manuelle Partitionierung</strong><br/>Sie können selbst Partitionen erstellen oder in der Größe verändern. Eine GPT-Partitionstabelle und eine <strong>fat32 512Mb /boot-Partition ist ein Muss für UEFI-Installationen</strong>, entweder eine vorhandene ohne Formatierung verwenden oder eine Neue erstellen. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuelle Partitionierung</strong><br/>Sie können Partitionen eigenhändig erstellen oder in der Grösse verändern. - + Reuse %1 as home partition for %2. %1 als Home-Partition für %2 wiederverwenden. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Wählen Sie die zu verkleinernde Partition, dann ziehen Sie den Regler, um die Größe zu ändern</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 wird auf %2MiB verkleinert und eine neue Partition mit einer Größe von %3MiB wird für %4 erstellt werden. - + Boot loader location: Installationsziel des Bootloaders: - + <strong>Select a partition to install on</strong> <strong>Wählen Sie eine Partition für die Installation</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Es wurde keine EFI-Systempartition auf diesem System gefunden. Bitte gehen Sie zurück und nutzen Sie die manuelle Partitionierung für das Einrichten von %1. - + The EFI system partition at %1 will be used for starting %2. Die EFI-Systempartition %1 wird benutzt, um %2 zu starten. - + EFI system partition: EFI-Systempartition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium scheint kein Betriebssystem installiert zu sein. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen auf diesem Speichermedium vorgenommen werden. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Festplatte löschen</strong><br/>Dies wird alle vorhandenen Daten auf dem gewählten Speichermedium <font color="red">löschen</font>. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Parallel dazu installieren</strong><br/>Das Installationsprogramm wird eine Partition verkleinern, um Platz für %1 zu schaffen. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ersetze eine Partition</strong><br/>Ersetzt eine Partition durch %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium ist %1 installiert. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen werden. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dieses Speichermedium enthält bereits ein Betriebssystem. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen wird. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium sind mehrere Betriebssysteme installiert. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen werden. - + No Swap Kein Swap - + Reuse Swap Swap wiederverwenden - + Swap (no Hibernate) Swap (ohne Ruhezustand) - + Swap (with Hibernate) Swap (mit Ruhezustand) - + Swap to file Auslagerungsdatei verwenden @@ -645,17 +645,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ClearMountsJob - + Clear mounts for partitioning operations on %1 Leere Mount-Points für Partitioning-Operation auf %1 - + Clearing mounts for partitioning operations on %1. Löse eingehängte Laufwerke für die Partitionierung von %1 - + Cleared all mounts for %1 Alle Mount-Points für %1 geleert @@ -663,22 +663,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ClearTempMountsJob - + Clear all temporary mounts. Alle temporären Mount-Points leeren. - + Clearing all temporary mounts. Löse alle temporär eingehängten Laufwerke. - + Cannot get list of temporary mounts. Konnte keine Liste von temporären Mount-Points einlesen. - + Cleared all temporary mounts. Alle temporären Mount-Points geleert. @@ -705,30 +705,30 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Config - + Set keyboard model to %1.<br/> Setze Tastaturmodell auf %1.<br/> - + Set keyboard layout to %1/%2. Setze Tastaturbelegung auf %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Die Systemsprache wird auf %1 gestellt. - + The numbers and dates locale will be set to %1. Das Format für Zahlen und Datum wird auf %1 gesetzt. - - - Set timezone to %1/%2.<br/> - Setze Zeitzone auf %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <h1>Welcome to the %1 installer</h1> <h1>Willkommen zum %1 Installationsprogramm</h1> + + + Your username is too long. + Ihr Nutzername ist zu lang. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Ihr Benutzername muss mit einem Kleinbuchstaben oder Unterstrich beginnen. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Es sind nur Kleinbuchstaben, Zahlen, Unterstrich und Bindestrich erlaubt. + + + + Your hostname is too short. + Ihr Computername ist zu kurz. + + + + Your hostname is too long. + Ihr Computername ist zu lang. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Es sind nur Buchstaben, Zahlen, Unter- und Bindestriche erlaubt. + ContextualProcessJob @@ -958,40 +998,30 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CreateUserJob - + Create user %1 Erstelle Benutzer %1 - + Create user <strong>%1</strong>. Erstelle Benutzer <strong>%1</strong>. - + Creating user %1. Erstelle Benutzer %1. - - Sudoers dir is not writable. - Sudoers-Verzeichnis ist nicht beschreibbar. - - - + Cannot create sudoers file for writing. Kann sudoers-Datei nicht zum Schreiben erstellen. - + Cannot chmod sudoers file. Kann chmod nicht auf sudoers-Datei anwenden. - - - Cannot open groups file for reading. - Kann groups-Datei nicht zum Lesen öffnen. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. FillGlobalStorageJob - + Set partition information Setze Partitionsinformationen - + Install %1 on <strong>new</strong> %2 system partition. Installiere %1 auf <strong>neuer</strong> %2 Systempartition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Erstelle <strong>neue</strong> %2 Partition mit Einhängepunkt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installiere %2 auf %3 Systempartition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Erstelle %3 Partition <strong>%1</strong> mit Einhängepunkt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installiere Bootloader auf <strong>%1</strong>. - + Setting up mount points. Richte Einhängepunkte ein. @@ -1510,12 +1540,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. KeyboardPage - + Set keyboard model to %1.<br/> Setze Tastaturmodell auf %1.<br/> - + Set keyboard layout to %1/%2. Setze Tastaturbelegung auf %1/%2. @@ -1572,32 +1602,32 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <h1>Lizenzvereinbarung</h1> - + I accept the terms and conditions above. Ich akzeptiere die obigen Allgemeinen Geschäftsbedingungen. - + Please review the End User License Agreements (EULAs). Bitte lesen Sie die Lizenzvereinbarungen für Endanwender (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. Diese Installationsroutine wird proprietäre Software installieren, die Lizenzbedingungen unterliegt. - + If you do not agree with the terms, the setup procedure cannot continue. Wenn Sie diesen Bedingungen nicht zustimmen, kann die Installation nicht fortgesetzt werden. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Um zusätzliche Funktionen bereitzustellen und das Benutzererlebnis zu verbessern, kann diese Installationsroutine proprietäre Software installieren, die Lizenzbedingungen unterliegt. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Wenn Sie diesen Bedingungen nicht zustimmen, wird keine proprietäre Software installiert, stattdessen werden Open-Source-Alternativen verwendet. @@ -1673,41 +1703,26 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocalePage - + Region: Region: - + Zone: Zeitzone: - - + + &Change... &Ändern... - - - The system language will be set to %1. - Die Systemsprache wird auf %1 gestellt. - - - - The numbers and dates locale will be set to %1. - Das Format für Zahlen und Datum wird auf %1 gesetzt. - - - - Set timezone to %1/%2.<br/> - Setze Zeitzone auf %1/%2.<br/> - LocaleQmlViewStep - + Location Standort @@ -1715,7 +1730,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocaleViewStep - + Location Standort @@ -1777,11 +1792,13 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Map - + 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. - + Bitte wählen Sie Ihren Standort auf der Karte, damit das Installationsprogramm Einstellungen zu Regionalschema + und Zeitzone vorschlagen kann. Diese können unten bearbeitet werden. Navigieren Sie auf der Karte, indem Sie diese mit dem Finger bewegen + und benutzen Sie die Tasten +/- oder das Mausrad für das Hinein- und Hinauszoomen. @@ -1932,7 +1949,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + Stellen Sie eine Verbindung mit dem Internet her, um eine Zeitzone auszuwählen, und starten Sie das Installationsprogramm gegebenenfalls neu. Sprache und Regionalschema können unten angepasst werden. @@ -2178,7 +2195,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Unbekannter Fehler - + Password is empty Passwort nicht vergeben @@ -2517,112 +2534,112 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Sammle Systeminformationen... - + Partitions Partitionen - + Install %1 <strong>alongside</strong> another operating system. Installiere %1 <strong>neben</strong> einem anderen Betriebssystem. - + <strong>Erase</strong> disk and install %1. <strong>Lösche</strong> Festplatte und installiere %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersetze</strong> eine Partition durch %1. - + <strong>Manual</strong> partitioning. <strong>Manuelle</strong> Partitionierung. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 <strong>parallel</strong> zu einem anderen Betriebssystem auf der Festplatte <strong>%2</strong> (%3) installieren. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. Festplatte <strong>%2</strong> <strong>löschen</strong> (%3) und %1 installieren. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. Eine Partition auf Festplatte <strong>%2</strong> (%3) durch %1 <strong>ersetzen</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuelle</strong> Partitionierung auf Festplatte <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Festplatte <strong>%1</strong> (%2) - + Current: Aktuell: - + After: Nachher: - + No EFI system partition configured Keine EFI-Systempartition konfiguriert - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Eine EFI Systempartition wird benötigt, um %1 zu starten.<br/><br/>Um eine EFI Systempartition einzurichten, gehen Sie zurück und wählen oder erstellen Sie ein FAT32-Dateisystem mit einer aktivierten <strong>%3</strong> Markierung sowie <strong>%2</strong> als Einhängepunkt .<br/><br/>Sie können ohne die Einrichtung einer EFI-Systempartition fortfahren, aber ihr System wird unter Umständen nicht starten können. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Eine EFI Systempartition wird benötigt, um %1 zu starten.<br/><br/>Eine Partition mit dem Einhängepunkt <strong>%2</strong> wurde eingerichtet, jedoch wurde dort keine <strong>%3</strong> Markierung gesetzt.<br/>Um diese Markierung zu setzen, gehen Sie zurück und bearbeiten Sie die Partition.<br/><br/>Sie können ohne diese Markierung fortfahren, aber ihr System wird unter Umständen nicht starten können. - + EFI system partition flag not set Die Markierung als EFI-Systempartition wurde nicht gesetzt - + Option to use GPT on BIOS Option zur Verwendung von GPT im BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Eine GPT-Partitionstabelle ist die beste Option für alle Systeme. Dieses Installationsprogramm unterstützt ein solches Setup auch für BIOS-Systeme.<br/><br/>Um eine GPT-Partitionstabelle im BIOS zu konfigurieren, gehen Sie (falls noch nicht geschehen) zurück und setzen Sie die Partitionstabelle auf GPT, als nächstes erstellen Sie eine 8 MB große unformatierte Partition mit aktiviertem <strong>bios_grub</strong>-Markierung.<br/><br/>Eine unformatierte 8 MB große Partition ist erforderlich, um %1 auf einem BIOS-System mit GPT zu starten. - + Boot partition not encrypted Bootpartition nicht verschlüsselt - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Eine separate Bootpartition wurde zusammen mit einer verschlüsselten Rootpartition erstellt, die Bootpartition ist aber unverschlüsselt.<br/><br/> Dies ist sicherheitstechnisch nicht optimal, da wichtige Systemdateien auf der unverschlüsselten Bootpartition gespeichert werden.<br/>Wenn Sie wollen, können Sie fortfahren, aber das Entschlüsseln des Dateisystems wird erst später während des Systemstarts erfolgen.<br/>Um die Bootpartition zu verschlüsseln, gehen Sie zurück und erstellen Sie diese neu, indem Sie bei der Partitionierung <strong>Verschlüsseln</strong> wählen. - + has at least one disk device available. mindestens eine Festplatte zur Verfügung hat - + There are no partitions to install on. Keine Partitionen für die Installation verfügbar. @@ -2670,17 +2687,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PreserveFiles - + Saving files for later ... Speichere Dateien für später ... - + No files configured to save for later. Keine Dateien für das Speichern zur späteren Verwendung konfiguriert. - + Not all of the configured files could be preserved. Nicht alle konfigurierten Dateien konnten erhalten werden. @@ -3163,29 +3180,29 @@ Ausgabe: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definiere Tastaturmodel zu %1, Layout zu %2-%3 - + Failed to write keyboard configuration for the virtual console. Konnte keine Tastatur-Konfiguration für die virtuelle Konsole schreiben. - - - + + + Failed to write to %1 Konnte nicht auf %1 schreiben - + Failed to write keyboard configuration for X11. Konnte keine Tastatur-Konfiguration für X11 schreiben. - + Failed to write keyboard configuration to existing /etc/default directory. Die Konfiguration der Tastatur konnte nicht in das bereits existierende Verzeichnis /etc/default geschrieben werden. @@ -3418,28 +3435,28 @@ Ausgabe: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3447,28 +3464,28 @@ Ausgabe: TrackingMachineUpdateManagerJob - + Machine feedback Rückinformationen zum Computer - + Configuring machine feedback. Konfiguriere Rückmeldungen zum Computer. - - + + Error in machine feedback configuration. Fehler bei der Konfiguration der Rückmeldungen zum Computer - + Could not configure machine feedback correctly, script error %1. Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Skriptfehler %1. - + Could not configure machine feedback correctly, Calamares error %1. Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Calamares-Fehler %1. @@ -3527,47 +3544,17 @@ Ausgabe: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Falls dieser Computer von mehr als einer Person benutzt werden soll, können weitere Benutzerkonten nach der Installation eingerichtet werden.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Falls dieser Computer von mehr als einer Person benutzt werden soll, können weitere Benutzerkonten nach der Installation eingerichtet werden.</small> - - Your username is too long. - Ihr Nutzername ist zu lang. - - - - Your username must start with a lowercase letter or underscore. - Ihr Benutzername muss mit einem Kleinbuchstaben oder Unterstrich beginnen. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Es sind nur Kleinbuchstaben, Zahlen, Unterstrich und Bindestrich erlaubt. - - - - Your hostname is too short. - Ihr Computername ist zu kurz. - - - - Your hostname is too long. - Ihr Computername ist zu lang. - - - - Only letters, numbers, underscore and hyphen are allowed. - Es sind nur Buchstaben, Zahlen, Unter- und Bindestriche erlaubt. - - - + Your passwords do not match! Ihre Passwörter stimmen nicht überein! @@ -3575,7 +3562,7 @@ Ausgabe: UsersViewStep - + Users Benutzer @@ -3799,19 +3786,19 @@ Liberating Software. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Zurück @@ -3819,44 +3806,44 @@ Liberating Software. keyboardq - + Keyboard Model Tastaturmodell - + Pick your preferred keyboard model or use the default one based on the detected hardware Wählen Sie Ihr bevorzugtes Tastaturmodell oder verwenden Sie das Standardmodell auf Grundlage der erkannten Hardware - + Refresh Aktualisieren - - + + Layouts Layouts - - + + Keyboard Layout Tastaturlayout - + Models Modelle - + Variants Varianten - + Test your keyboard Testen Sie Ihre Tastatur @@ -3864,17 +3851,7 @@ Liberating Software. localeq - - System language set to %1 - Systemsprache eingestellt auf %1 - - - - Numbers and dates locale set to %1 - Zahlen- und Datumsformat eingestellt auf %1 - - - + Change Ändern diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 2d16ba3ac..b888cfa0b 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Η εγκατάσταση απέτυχε - + Would you like to paste the install log to the web? - + Error Σφάλμα - - + + &Yes &Ναι - - + + &No &Όχι - + &Close &Κλείσιμο - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Η αρχικοποίηση του Calamares απέτυχε - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? Συνέχεια με την εγκατάσταση; - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Το πρόγραμμα εγκατάστασης %1 θα κάνει αλλαγές στον δίσκο για να εγκαταστήσετε το %2.<br/><strong>Δεν θα είστε σε θέση να αναιρέσετε τις αλλαγές.</strong> - + &Set up now - + &Install now &Εγκατάσταση τώρα - + Go &back Μετάβαση &πίσω - + &Set up - + &Install &Εγκατάσταση - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Η εγκτάσταση ολοκληρώθηκε. Κλείστε το πρόγραμμα εγκατάστασης. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Ακύρωση της εγκατάστασης χωρίς αλλαγές στο σύστημα. - + &Next &Επόμενο - + &Back &Προηγούμενο - + &Done &Ολοκληρώθηκε - + &Cancel &Ακύρωση - + Cancel setup? - + Cancel installation? Ακύρωση της εγκατάστασης; - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Θέλετε πραγματικά να ακυρώσετε τη διαδικασία εγκατάστασης; @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. &Ακύρωση - + %1 Setup Program - + %1 Installer Εφαρμογή εγκατάστασης του %1 @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Τρέχον: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Χειροκίνητη τμηματοποίηση</strong><br/>Μπορείτε να δημιουργήσετε κατατμήσεις ή να αλλάξετε το μέγεθός τους μόνοι σας. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Επιλέξτε ένα διαμέρισμα για σμίκρυνση, και μετά σύρετε το κάτω τμήμα της μπάρας για αλλαγή του μεγέθους</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Τοποθεσία προγράμματος εκκίνησης: - + <strong>Select a partition to install on</strong> <strong>Επιλέξτε διαμέρισμα για την εγκατάσταση</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Πουθενά στο σύστημα δεν μπορεί να ανιχθευθεί μία κατάτμηση EFI. Παρακαλώ επιστρέψτε πίσω και χρησιμοποιήστε τη χειροκίνητη τμηματοποίηση για την εγκατάσταση του %1. - + The EFI system partition at %1 will be used for starting %2. Η κατάτμηση συστήματος EFI στο %1 θα χρησιμοποιηθεί για την εκκίνηση του %2. - + EFI system partition: Κατάτμηση συστήματος EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Η συσκευή αποθήκευσης δεν φαίνεται να διαθέτει κάποιο λειτουργικό σύστημα. Τί θα ήθελες να κάνεις;<br/>Θα έχεις την δυνατότητα να επιβεβαιώσεις και αναθεωρήσεις τις αλλαγές πριν γίνει οποιαδήποτε αλλαγή στην συσκευή αποθήκευσης. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Διαγραφή του δίσκου</strong><br/>Αυτό θα <font color="red">διαγράψει</font> όλα τα αρχεία στην επιλεγμένη συσκευή αποθήκευσης. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Εγκατάσταση σε επαλληλία</strong><br/>Η εγκατάσταση θα συρρικνώσει μία κατάτμηση για να κάνει χώρο για το %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Αντικατάσταση μίας κατάτμησης</strong><br/>Αντικαθιστά μία κατάτμηση με το %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Καθαρίστηκαν όλες οι προσαρτήσεις για %1 @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Καθάρισε όλες τις προσωρινές προσαρτήσεις. - + Clearing all temporary mounts. Καθάρισμα όλων των προσωρινών προσαρτήσεων. - + Cannot get list of temporary mounts. Η λίστα των προσωρινών προσαρτήσεων δεν μπορεί να ληφθεί. - + Cleared all temporary mounts. Καθαρίστηκαν όλες οι προσωρινές προσαρτήσεις. @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Ορισμός του μοντέλου πληκτρολογίου σε %1.<br/> - + Set keyboard layout to %1/%2. Ορισμός της διάταξης πληκτρολογίου σε %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Η τοπική γλώσσα του συστήματος έχει οριστεί σε %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Ορισμός της ζώνης ώρας σε %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Το όνομα χρήστη είναι πολύ μακρύ. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Το όνομα υπολογιστή είναι πολύ σύντομο. + + + + Your hostname is too long. + Το όνομα υπολογιστή είναι πολύ μακρύ. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Δημιουργία χρήστη %1 - + Create user <strong>%1</strong>. Δημιουργία χρήστη <strong>%1</strong>. - + Creating user %1. Δημιουργείται ο χρήστης %1. - - Sudoers dir is not writable. - Ο κατάλογος sudoers δεν είναι εγγράψιμος. - - - + Cannot create sudoers file for writing. Δεν είναι δυνατή η δημιουργία του αρχείου sudoers για εγγραφή. - + Cannot chmod sudoers file. Δεν είναι δυνατό το chmod στο αρχείο sudoers. - - - Cannot open groups file for reading. - Δεν είναι δυνατό το άνοιγμα του αρχείου ομάδων για ανάγνωση. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Ορισμός πληροφοριών κατάτμησης - + Install %1 on <strong>new</strong> %2 system partition. Εγκατάσταση %1 στο <strong>νέο</strong> %2 διαμέρισμα συστήματος. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Εγκατάσταση φορτωτή εκκίνησης στο <strong>%1</strong>. - + Setting up mount points. @@ -1508,12 +1538,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Ορισμός του μοντέλου πληκτρολογίου σε %1.<br/> - + Set keyboard layout to %1/%2. Ορισμός της διάταξης πληκτρολογίου σε %1/%2. @@ -1570,32 +1600,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. Δέχομαι τους παραπάνω όρους και προϋποθέσεις. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Περιοχή: - + Zone: Ζώνη: - - + + &Change... &Αλλαγή... - - - The system language will be set to %1. - Η τοπική γλώσσα του συστήματος έχει οριστεί σε %1. - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - Ορισμός της ζώνης ώρας σε %1/%2.<br/> - LocaleQmlViewStep - + Location Τοποθεσία @@ -1713,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Τοποθεσία @@ -1775,7 +1790,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2176,7 +2191,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2515,112 +2530,112 @@ The installer will quit and all changes will be lost. Συλλογή πληροφοριών συστήματος... - + Partitions Κατατμήσεις - + Install %1 <strong>alongside</strong> another operating system. Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο. - + <strong>Erase</strong> disk and install %1. <strong>Διαγραφή</strong> του δίσκου και εγκατάσταση του %1. - + <strong>Replace</strong> a partition with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης με το %1. - + <strong>Manual</strong> partitioning. <strong>Χειροκίνητη</strong> τμηματοποίηση. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Διαγραφή</strong> του δίσκου <strong>%2</strong> (%3) και εγκατάσταση του %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης στον δίσκο <strong>%2</strong> (%3) με το %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Χειροκίνητη</strong> τμηματοποίηση του δίσκου <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Δίσκος <strong>%1</strong> (%2) - + Current: Τρέχον: - + After: Μετά: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3158,29 +3173,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 Αδυναμία εγγραφής στο %1 - + Failed to write keyboard configuration for X11. Αδυναμία εγγραφής στοιχείων διαμόρφωσης πληκτρολογίου για Χ11 - + Failed to write keyboard configuration to existing /etc/default directory. Αδυναμία εγγραφής στοιχείων διαμόρφωσης πληκτρολογίου στον υπάρχων κατάλογο /etc/default @@ -3413,28 +3428,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3442,28 +3457,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3522,47 +3537,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Το όνομα χρήστη είναι πολύ μακρύ. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Το όνομα υπολογιστή είναι πολύ σύντομο. - - - - Your hostname is too long. - Το όνομα υπολογιστή είναι πολύ μακρύ. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Οι κωδικοί πρόσβασης δεν ταιριάζουν! @@ -3570,7 +3555,7 @@ Output: UsersViewStep - + Users Χρήστες @@ -3783,19 +3768,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3803,44 +3788,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3848,17 +3833,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 807863cf5..e6e44b274 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -220,7 +220,7 @@ QML Step <i>%1</i>. - + Loading failed. Loading failed. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Setup Failed - + Installation Failed Installation Failed - + Would you like to paste the install log to the web? Would you like to paste the install log to the web? - + Error Error - - + + &Yes &Yes - - + + &No &No - + &Close &Close - + Install Log Paste URL Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: <br/>The following modules could not be loaded: - + Continue with setup? Continue with setup? - + Continue with installation? Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now &Set up now - + &Install now &Install now - + Go &back Go &back - + &Set up &Set up - + &Install &Install - + Setup is complete. Close the setup program. Setup is complete. Close the setup program. - + The installation is complete. Close the installer. The installation is complete. Close the installer. - + Cancel setup without changing the system. Cancel setup without changing the system. - + Cancel installation without changing the system. Cancel installation without changing the system. - + &Next &Next - + &Back &Back - + &Done &Done - + &Cancel &Cancel - + Cancel setup? Cancel setup? - + Cancel installation? Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. &Cancel - + %1 Setup Program %1 Setup Program - + %1 Installer %1 Installer @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Current: @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Boot loader location: - + <strong>Select a partition to install on</strong> <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap No Swap - + Reuse Swap Reuse Swap - + Swap (no Hibernate) Swap (no Hibernate) - + Swap (with Hibernate) Swap (with Hibernate) - + Swap to file Swap to file @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Clear all temporary mounts. - + Clearing all temporary mounts. Clearing all temporary mounts. - + Cannot get list of temporary mounts. Cannot get list of temporary mounts. - + Cleared all temporary mounts. Cleared all temporary mounts. @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + Set timezone to %1/%2. + + + The system language will be set to %1. The system language will be set to %1. - + The numbers and dates locale will be set to %1. The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Set timezone to %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Your username is too long. + + + + '%1' is not allowed as username. + '%1' is not allowed as username. + + + + Your username must start with a lowercase letter or underscore. + Your username must start with a lowercase letter or underscore. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. + Your hostname is too short. + + + + Your hostname is too long. + Your hostname is too long. + + + + '%1' is not allowed as hostname. + '%1' is not allowed as hostname. + + + + Only letters, numbers, underscore and hyphen are allowed. + Only letters, numbers, underscore and hyphen are allowed. + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. Create user <strong>%1</strong>. - + Creating user %1. Creating user %1. - - Sudoers dir is not writable. - Sudoers dir is not writable. - - - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - - - Cannot open groups file for reading. - Cannot open groups file for reading. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Set partition information - + Install %1 on <strong>new</strong> %2 system partition. Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Install boot loader on <strong>%1</strong>. - + Setting up mount points. Setting up mount points. @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. <h1>License Agreement</h1> - + I accept the terms and conditions above. I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Region: - + Zone: Zone: - - + + &Change... &Change... - - - The system language will be set to %1. - The system language will be set to %1. - - - - The numbers and dates locale will be set to %1. - The numbers and dates locale will be set to %1. - - - - Set timezone to %1/%2.<br/> - Set timezone to %1/%2.<br/> - LocaleQmlViewStep - + Location Location @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Location @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2180,7 +2195,7 @@ The installer will quit and all changes will be lost. Unknown error - + Password is empty Password is empty @@ -2519,112 +2534,112 @@ The installer will quit and all changes will be lost. Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Current: - + After: After: - + No EFI system partition configured No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI system partition flag not set - + Option to use GPT on BIOS Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. has at least one disk device available. - + There are no partitions to install on. There are no partitions to install on. @@ -2672,17 +2687,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... Saving files for later ... - + No files configured to save for later. No files configured to save for later. - + Not all of the configured files could be preserved. Not all of the configured files could be preserved. @@ -3168,29 +3183,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 Failed to write to %1 - + Failed to write keyboard configuration for X11. Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. Failed to write keyboard configuration to existing /etc/default directory. @@ -3423,28 +3438,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback KDE user feedback - + Configuring KDE user feedback. Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Could not configure KDE user feedback correctly, Calamares error %1. @@ -3452,28 +3467,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Machine feedback - + Configuring machine feedback. Configuring machine feedback. - - + + Error in machine feedback configuration. Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. Could not configure machine feedback correctly, Calamares error %1. @@ -3532,47 +3547,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Your username is too long. - - - - Your username must start with a lowercase letter or underscore. - Your username must start with a lowercase letter or underscore. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - Your hostname is too short. - Your hostname is too short. - - - - Your hostname is too long. - Your hostname is too long. - - - - Only letters, numbers, underscore and hyphen are allowed. - Only letters, numbers, underscore and hyphen are allowed. - - - + Your passwords do not match! Your passwords do not match! @@ -3580,7 +3565,7 @@ Output: UsersViewStep - + Users Users @@ -3804,21 +3789,21 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Back @@ -3826,44 +3811,44 @@ Output: keyboardq - + Keyboard Model Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh Refresh - - + + Layouts Layouts - - + + Keyboard Layout Keyboard Layout - + Models Models - + Variants Variants - + Test your keyboard Test your keyboard @@ -3871,17 +3856,7 @@ Output: localeq - - System language set to %1 - System language set to %1 - - - - Numbers and dates locale set to %1 - Numbers and dates locale set to %1 - - - + Change Change diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index 4f5d4603c..9ab551aa1 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Installation Failed - + Would you like to paste the install log to the web? - + Error Error - - + + &Yes &Yes - - + + &No &No - + &Close &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Calamares Initialisation Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: <br/>The following modules could not be loaded: - + Continue with setup? Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now &Install now - + Go &back Go &back - + &Set up - + &Install &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Cancel installation without changing the system. - + &Next &Next - + &Back &Back - + &Done &Done - + &Cancel &Cancel - + Cancel setup? - + Cancel installation? Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. &Cancel - + %1 Setup Program - + %1 Installer %1 Installer @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Current: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Boot loader location: - + <strong>Select a partition to install on</strong> <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Clear all temporary mounts. - + Clearing all temporary mounts. Clearing all temporary mounts. - + Cannot get list of temporary mounts. Cannot get list of temporary mounts. - + Cleared all temporary mounts. Cleared all temporary mounts. @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. The system language will be set to %1. - + The numbers and dates locale will be set to %1. The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Set timezone to %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Your username is too long. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Your hostname is too short. + + + + Your hostname is too long. + Your hostname is too long. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. Create user <strong>%1</strong>. - + Creating user %1. Creating user %1. - - Sudoers dir is not writable. - Sudoers dir is not writable. - - - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - - - Cannot open groups file for reading. - Cannot open groups file for reading. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Set partition information - + Install %1 on <strong>new</strong> %2 system partition. Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Install boot loader on <strong>%1</strong>. - + Setting up mount points. Setting up mount points. @@ -1508,12 +1538,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1570,32 +1600,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Region: - + Zone: Zone: - - + + &Change... &Change... - - - The system language will be set to %1. - The system language will be set to %1. - - - - The numbers and dates locale will be set to %1. - The numbers and dates locale will be set to %1. - - - - Set timezone to %1/%2.<br/> - Set timezone to %1/%2.<br/> - LocaleQmlViewStep - + Location Location @@ -1713,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Location @@ -1775,7 +1790,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2176,7 +2191,7 @@ The installer will quit and all changes will be lost. Unknown error - + Password is empty @@ -2515,112 +2530,112 @@ The installer will quit and all changes will be lost. Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Current: - + After: After: - + No EFI system partition configured No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... Saving files for later... - + No files configured to save for later. No files configured to save for later. - + Not all of the configured files could be preserved. Not all of the configured files could be preserved. @@ -3161,29 +3176,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 Failed to write to %1 - + Failed to write keyboard configuration for X11. Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. Failed to write keyboard configuration to existing /etc/default directory. @@ -3416,28 +3431,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3445,28 +3460,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Machine feedback - + Configuring machine feedback. Configuring machine feedback. - - + + Error in machine feedback configuration. Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. Could not configure machine feedback correctly, Calamares error %1. @@ -3525,47 +3540,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Your username is too long. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Your hostname is too short. - - - - Your hostname is too long. - Your hostname is too long. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Your passwords do not match! @@ -3573,7 +3558,7 @@ Output: UsersViewStep - + Users Users @@ -3786,19 +3771,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3806,44 +3791,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3851,17 +3836,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index dedcbbc29..95dd4e9a9 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error Eraro - - + + &Yes &Jes - - + + &No &Ne - + &Close &Fermi - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now &Aranĝu nun - + &Install now &Instali nun - + Go &back Iru &Reen - + &Set up &Aranĝu - + &Install &Instali - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Nuligi instalado sen ŝanĝante la sistemo. - + &Next &Sekva - + &Back &Reen - + &Done &Finita - + &Cancel &Nuligi - + Cancel setup? - + Cancel installation? Nuligi instalado? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ĉu vi vere volas nuligi la instalan procedon? @@ -482,12 +482,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. &Nuligi - + %1 Setup Program - + %1 Installer %1 Instalilo @@ -514,9 +514,9 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - - - + + + Current: Nune: @@ -527,115 +527,115 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manan aranĝaĵon de subdisko</strong><br/>Vi povas kreii aŭ regrandigi subdiskon ajne. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Allokigo de la Praŝargilo: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -661,22 +661,22 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -703,30 +703,30 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1508,12 +1538,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1570,32 +1600,32 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LocalePage - + Region: - + Zone: - - + + &Change... &Ŝanĝu... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1713,7 +1728,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LocaleViewStep - + Location @@ -1775,7 +1790,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Map - + 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. @@ -2176,7 +2191,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Password is empty @@ -2515,112 +2530,112 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Nune: - + After: Poste: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3158,29 +3173,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3413,28 +3428,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3442,28 +3457,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3522,47 +3537,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3570,7 +3555,7 @@ Output: UsersViewStep - + Users @@ -3783,19 +3768,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3803,44 +3788,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3848,17 +3833,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 793795034..20cd61c16 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -221,7 +221,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Paso QML <i>%1</i>. - + Loading failed. La carga ha fallado. @@ -258,170 +258,170 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ViewManager - + Setup Failed Configuración Fallida - + Installation Failed Error en la Instalación - + Would you like to paste the install log to the web? ¿Desea pegar el registro de instalación en la web? - + Error Error - - + + &Yes &Sí - - + + &No &No - + &Close &Cerrar - + Install Log Paste URL Pegar URL Registro de Instalación - + The upload was unsuccessful. No web-paste was done. La carga no tuvo éxito. No se realizó pegado web. - + Calamares Initialization Failed La inicialización de Calamares falló - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 no se pudo instalar. Calamares no fue capaz de cargar todos los módulos configurados. Esto es un problema con la forma en que Calamares es usado por la distribución - + <br/>The following modules could not be loaded: Los siguientes módulos no se pudieron cargar: - + Continue with setup? ¿Continuar con la configuración? - + Continue with installation? Continuar con la instalación? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> El programa de instalación %1 está a punto de hacer cambios en el disco con el fin de configurar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Set up now &Configurar ahora - + &Install now &Instalar ahora - + Go &back Regresar - + &Set up &Instalar - + &Install &Instalar - + Setup is complete. Close the setup program. La instalación se ha completado. Cierre el instalador. - + The installation is complete. Close the installer. La instalación se ha completado. Cierre el instalador. - + Cancel setup without changing the system. Cancelar instalación sin cambiar el sistema. - + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + &Next &Siguiente - + &Back &Atrás - + &Done &Hecho - + &Cancel &Cancelar - + Cancel setup? ¿Cancelar la instalación? - + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente quiere cancelar el proceso de instalación? @@ -483,12 +483,12 @@ Saldrá del instalador y se perderán todos los cambios. &Cancelar - + %1 Setup Program - + %1 Installer %1 Instalador @@ -515,9 +515,9 @@ Saldrá del instalador y se perderán todos los cambios. - - - + + + Current: Actual: @@ -528,115 +528,115 @@ Saldrá del instalador y se perderán todos los cambios. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionado manual </strong><br/> Usted puede crear o cambiar el tamaño de las particiones usted mismo. - + Reuse %1 as home partition for %2. Volver a usar %1 como partición home para %2 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Seleccione una partición para reducir el tamaño, a continuación, arrastre la barra inferior para cambiar el tamaño</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Ubicación del cargador de arranque: - + <strong>Select a partition to install on</strong> <strong>Seleccione una partición para instalar en</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. No se puede encontrar una partición de sistema EFI en ningún lugar de este sistema. Por favor, vuelva y use el particionamiento manual para establecer %1. - + The EFI system partition at %1 will be used for starting %2. La partición de sistema EFI en %1 se usará para iniciar %2. - + EFI system partition: Partición del sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento no parece tener un sistema operativo en él. ¿Qué quiere hacer?<br/>Podrá revisar y confirmar sus elecciones antes de que se haga cualquier cambio en el dispositivo de almacenamiento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Borrar disco</strong><br/>Esto <font color="red">borrará</font> todos los datos presentes actualmente en el dispositivo de almacenamiento. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar junto al otro SO</strong><br/>El instalador reducirá la partición del SO existente para tener espacio para instalar %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Reemplazar una partición</strong><br/>Reemplazar una partición con %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. %1 se encuentra instalado en este dispositivo de almacenamiento. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento parece que ya tiene un sistema operativo instalado en él. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento contiene múltiples sistemas operativos instalados en él. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. - + No Swap Sin Swap - + Reuse Swap Reusar Swap - + Swap (no Hibernate) Swap (sin hibernación) - + Swap (with Hibernate) Swap (con hibernación) - + Swap to file Swap a archivo @@ -644,17 +644,17 @@ Saldrá del instalador y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpiar puntos de montaje para operaciones de particionamiento en %1 - + Clearing mounts for partitioning operations on %1. Limpiando puntos de montaje para operaciones de particionamiento en %1. - + Cleared all mounts for %1 Limpiados todos los puntos de montaje para %1 @@ -662,22 +662,22 @@ Saldrá del instalador y se perderán todos los cambios. ClearTempMountsJob - + Clear all temporary mounts. Limpiar todos los puntos de montaje temporales. - + Clearing all temporary mounts. Limpiando todos los puntos de montaje temporales. - + Cannot get list of temporary mounts. No se puede obtener la lista de puntos de montaje temporales. - + Cleared all temporary mounts. Limpiado todos los puntos de montaje temporales. @@ -704,30 +704,30 @@ Saldrá del instalador y se perderán todos los cambios. Config - + Set keyboard model to %1.<br/> Establecer el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Configurar la disposición de teclado a %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. El idioma del sistema se establecerá a %1. - + The numbers and dates locale will be set to %1. La localización de números y fechas se establecerá a %1. - - - Set timezone to %1/%2.<br/> - Configurar zona horaria a %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ Saldrá del instalador y se perderán todos los cambios. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Su nombre de usuario es demasiado largo. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + El nombre del Host es demasiado corto. + + + + Your hostname is too long. + El nombre del Host es demasiado largo. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -957,40 +997,30 @@ Saldrá del instalador y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando usuario %1. - - Sudoers dir is not writable. - El directorio de sudoers no dispone de permisos de escritura. - - - + Cannot create sudoers file for writing. No es posible crear el archivo de escritura para sudoers. - + Cannot chmod sudoers file. No es posible modificar los permisos de sudoers. - - - Cannot open groups file for reading. - No es posible abrir el archivo de grupos del sistema. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ Saldrá del instalador y se perderán todos los cambios. FillGlobalStorageJob - + Set partition information Establecer la información de la partición - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 en <strong>nuevo</strong> %2 partición del sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurar <strong>nueva</strong> %2 partición con punto de montaje <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 en %3 partición del sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurar %3 partición <strong>%1</strong> con punto de montaje <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar gestor de arranque en <strong>%1</strong>. - + Setting up mount points. Configurando puntos de montaje. @@ -1509,12 +1539,12 @@ Saldrá del instalador y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Establecer el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Configurar la disposición de teclado a %1/%2. @@ -1571,32 +1601,32 @@ Saldrá del instalador y se perderán todos los cambios. <h1>Contrato de licencia</h1> - + I accept the terms and conditions above. Acepto los términos y condiciones anteriores. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1672,41 +1702,26 @@ Saldrá del instalador y se perderán todos los cambios. LocalePage - + Region: Región: - + Zone: Zona: - - + + &Change... &Cambiar... - - - The system language will be set to %1. - El idioma del sistema se establecerá a %1. - - - - The numbers and dates locale will be set to %1. - La localización de números y fechas se establecerá a %1. - - - - Set timezone to %1/%2.<br/> - Configurar zona horaria a %1/%2.<br/> - LocaleQmlViewStep - + Location Ubicación @@ -1714,7 +1729,7 @@ Saldrá del instalador y se perderán todos los cambios. LocaleViewStep - + Location Ubicación @@ -1776,7 +1791,7 @@ Saldrá del instalador y se perderán todos los cambios. Map - + 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. @@ -2177,7 +2192,7 @@ Saldrá del instalador y se perderán todos los cambios. Error desconocido - + Password is empty La contraseña vacia @@ -2516,112 +2531,112 @@ Saldrá del instalador y se perderán todos los cambios. Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto a</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto a</strong> otro sistema operativo en disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una partición en disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamiento <strong>manual</strong> en disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1<strong> (%2) - + Current: Corriente - + After: Despúes: - + No EFI system partition configured No hay una partición del sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Bandera EFI no establecida en la partición del sistema - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partición de arranque no cifrada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Se estableció una partición de arranque aparte junto con una partición raíz cifrada, pero la partición de arranque no está cifrada.<br/><br/>Hay consideraciones de seguridad con esta clase de instalación, porque los ficheros de sistema importantes se mantienen en una partición no cifrada.<br/>Puede continuar si lo desea, pero el desbloqueo del sistema de ficheros ocurrirá más tarde durante el arranque del sistema.<br/>Para cifrar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Cifrar</strong> en la ventana de creación de la partición. - + has at least one disk device available. - + There are no partitions to install on. @@ -2669,17 +2684,17 @@ Saldrá del instalador y se perderán todos los cambios. PreserveFiles - + Saving files for later ... Guardando archivos para después ... - + No files configured to save for later. No hay archivos configurados para guardarlos para después. - + Not all of the configured files could be preserved. No todos los archivos de configuración se pudieron preservar. @@ -3162,29 +3177,29 @@ Salida: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurar modelo de teclado a %1, distribución a %2-%3 - + Failed to write keyboard configuration for the virtual console. Hubo un fallo al escribir la configuración del teclado para la consola virtual. - - - + + + Failed to write to %1 No se puede escribir en %1 - + Failed to write keyboard configuration for X11. Hubo un fallo al escribir la configuración del teclado para X11. - + Failed to write keyboard configuration to existing /etc/default directory. No se pudo escribir la configuración de teclado en el directorio /etc/default existente. @@ -3417,28 +3432,28 @@ Salida: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Salida: TrackingMachineUpdateManagerJob - + Machine feedback Respuesta de la máquina - + Configuring machine feedback. Configurando respuesta de la máquina. - - + + Error in machine feedback configuration. Error en la configuración de la respuesta de la máquina. - + Could not configure machine feedback correctly, script error %1. No se pudo configurar correctamente la respuesta de la máquina, error de script %1. - + Could not configure machine feedback correctly, Calamares error %1. No se pudo configurar correctamente la respuesta de la máquina, error de Calamares %1. @@ -3526,47 +3541,17 @@ Salida: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Su nombre de usuario es demasiado largo. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - El nombre del Host es demasiado corto. - - - - Your hostname is too long. - El nombre del Host es demasiado largo. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! ¡Sus contraseñas no coinciden! @@ -3574,7 +3559,7 @@ Salida: UsersViewStep - + Users Usuarios @@ -3787,19 +3772,19 @@ Salida: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3807,44 +3792,44 @@ Salida: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3852,17 +3837,7 @@ Salida: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index fdb2793bf..01307b9e4 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Fallo en la configuración. - + Installation Failed Instalación Fallida - + Would you like to paste the install log to the web? - + Error Error - - + + &Yes &Si - - + + &No &No - + &Close &Cerrar - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed La inicialización de Calamares ha fallado - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 no pudo ser instalado. Calamares no pudo cargar todos los módulos configurados. Este es un problema con la forma en que Calamares esta siendo usada por la distribución. - + <br/>The following modules could not be loaded: <br/>Los siguientes módulos no pudieron ser cargados: - + Continue with setup? ¿Continuar con la instalación? - + Continue with installation? ¿Continuar con la instalación? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> El %1 programa de instalación esta a punto de realizar cambios a su disco con el fin de establecer %2.<br/><strong>Usted no podrá deshacer estos cambios.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Set up now &Configurar ahora - + &Install now &Instalar ahora - + Go &back &Regresar - + &Set up &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. Configuración completa. Cierre el programa de instalación. - + The installation is complete. Close the installer. Instalación completa. Cierre el instalador. - + Cancel setup without changing the system. Cancelar la configuración sin cambiar el sistema. - + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + &Next &Siguiente - + &Back &Atrás - + &Done &Hecho - + &Cancel &Cancelar - + Cancel setup? ¿Cancelar la configuración? - + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. ¿Realmente desea cancelar el actual proceso de configuración? El programa de instalación se cerrará y todos los cambios se perderán. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente desea cancelar el proceso de instalación actual? @@ -483,12 +483,12 @@ El instalador terminará y se perderán todos los cambios. &Cancelar - + %1 Setup Program %1 Programa de instalación - + %1 Installer %1 Instalador @@ -515,9 +515,9 @@ El instalador terminará y se perderán todos los cambios. - - - + + + Current: Actual: @@ -528,116 +528,116 @@ El instalador terminará y se perderán todos los cambios. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionado manual </strong><br/> Puede crear o cambiar el tamaño de las particiones usted mismo. - + Reuse %1 as home partition for %2. Reuse %1 como partición home para %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Seleccione una partición para reducir el tamaño, a continuación, arrastre la barra inferior para redimencinar</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 será reducido a %2MiB y una nueva %3MiB partición se creará para %4. - + Boot loader location: Ubicación del cargador de arranque: - + <strong>Select a partition to install on</strong> <strong>Seleccione una partición para instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. No se puede encontrar en el sistema una partición EFI. Por favor vuelva atrás y use el particionamiento manual para configurar %1. - + The EFI system partition at %1 will be used for starting %2. La partición EFI en %1 será usada para iniciar %2. - + EFI system partition: Partición de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento parece no tener un sistema operativo en el. ¿que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Borrar disco</strong> <br/>Esto <font color="red">borrará</font> todos los datos presentes actualmente en el dispositivo de almacenamiento seleccionado. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar junto a</strong> <br/>El instalador reducirá una partición con el fin de hacer espacio para %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Reemplazar una partición</strong> <br/>Reemplaza una partición con %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento tiene %1 en el. ¿Que le gustaría hacer? <br/>Usted podrá revisar y confirmar sus elecciones antes de que cualquier cambio se realice al dispositivo de almacenamiento. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento ya tiene un sistema operativo en el. ¿Que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de almacenamiento tiene múltiples sistemas operativos en el. ¿Que le gustaria hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. - + No Swap Sin Swap - + Reuse Swap Reutilizar Swap - + Swap (no Hibernate) Swap (sin hibernación) - + Swap (with Hibernate) Swap (con hibernación) - + Swap to file Swap a archivo @@ -645,17 +645,17 @@ El instalador terminará y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Borrar puntos de montaje para operaciones de particionamiento en %1 - + Clearing mounts for partitioning operations on %1. Borrando puntos de montaje para operaciones de particionamiento en %1. - + Cleared all mounts for %1 Puntos de montaje despejados para %1 @@ -663,22 +663,22 @@ El instalador terminará y se perderán todos los cambios. ClearTempMountsJob - + Clear all temporary mounts. Despejar todos los puntos de montaje temporales. - + Clearing all temporary mounts. Despejando todos los puntos de montaje temporales. - + Cannot get list of temporary mounts. No se puede obtener la lista de puntos de montaje temporales. - + Cleared all temporary mounts. Todos los puntos de montaje temporales despejados. @@ -705,30 +705,30 @@ El instalador terminará y se perderán todos los cambios. Config - + Set keyboard model to %1.<br/> Ajustar el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Ajustar teclado a %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. El lenguaje del sistema será establecido a %1. - + The numbers and dates locale will be set to %1. Los números y datos locales serán establecidos a %1. - - - Set timezone to %1/%2.<br/> - Definir la zona horaria como %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ El instalador terminará y se perderán todos los cambios. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Tu nombre de usuario es demasiado largo. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + El nombre de tu equipo es demasiado corto. + + + + Your hostname is too long. + El nombre de tu equipo es demasiado largo. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ El instalador terminará y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando cuenta de susuario %1. - - Sudoers dir is not writable. - El directorio "Sudoers" no es editable. - - - + Cannot create sudoers file for writing. No se puede crear el archivo sudoers para editarlo. - + Cannot chmod sudoers file. No se puede aplicar chmod al archivo sudoers. - - - Cannot open groups file for reading. - No se puede abrir el archivo groups para lectura. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ El instalador terminará y se perderán todos los cambios. FillGlobalStorageJob - + Set partition information Fijar información de la partición. - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 en <strong>nueva</strong> %2 partición de sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurar <strong>nueva</strong> %2 partición con punto de montaje <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 en %3 partición del sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurar %3 partición <strong>%1</strong> con punto de montaje <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar el cargador de arranque en <strong>%1</strong>. - + Setting up mount points. Configurando puntos de montaje. @@ -1510,12 +1540,12 @@ El instalador terminará y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Ajustar el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Ajustar teclado a %1/%2. @@ -1572,32 +1602,32 @@ El instalador terminará y se perderán todos los cambios. - + I accept the terms and conditions above. Acepto los terminos y condiciones anteriores. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ El instalador terminará y se perderán todos los cambios. LocalePage - + Region: Región: - + Zone: Zona: - - + + &Change... &Cambiar... - - - The system language will be set to %1. - El lenguaje del sistema será establecido a %1. - - - - The numbers and dates locale will be set to %1. - Los números y datos locales serán establecidos a %1. - - - - Set timezone to %1/%2.<br/> - Definir la zona horaria como %1/%2.<br/> - LocaleQmlViewStep - + Location Ubicación @@ -1715,7 +1730,7 @@ El instalador terminará y se perderán todos los cambios. LocaleViewStep - + Location Ubicación @@ -1777,7 +1792,7 @@ El instalador terminará y se perderán todos los cambios. Map - + 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. @@ -2178,7 +2193,7 @@ El instalador terminará y se perderán todos los cambios. Error desconocido - + Password is empty @@ -2517,112 +2532,112 @@ El instalador terminará y se perderán todos los cambios. Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto con</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> el disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una parición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto con</strong> otro sistema operativo en el disco <strong>%2</strong>(%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una parición en el disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionar <strong>manualmente</strong> el disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Actual: - + After: Después: - + No EFI system partition configured Sistema de partición EFI no configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Indicador de partición del sistema EFI no configurado - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partición de arranque no encriptada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Se creó una partición de arranque separada junto con una partición raíz cifrada, pero la partición de arranque no está encriptada.<br/><br/> Existen problemas de seguridad con este tipo de configuración, ya que los archivos importantes del sistema se guardan en una partición no encriptada. <br/>Puede continuar si lo desea, pero el desbloqueo del sistema de archivos ocurrirá más tarde durante el inicio del sistema. <br/>Para encriptar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Encriptar</strong> en la ventana de creación de la partición. - + has at least one disk device available. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ El instalador terminará y se perderán todos los cambios. PreserveFiles - + Saving files for later ... Guardando archivos para más tarde ... - + No files configured to save for later. No hay archivos configurados para guardar más tarde. - + Not all of the configured files could be preserved. No todos los archivos configurados podrían conservarse. @@ -3164,29 +3179,29 @@ Salida SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Establecer el modelo de teclado %1, a una disposición %2-%3 - + Failed to write keyboard configuration for the virtual console. No se ha podido guardar la configuración de teclado para la consola virtual. - - - + + + Failed to write to %1 No se ha podido escribir en %1 - + Failed to write keyboard configuration for X11. No se ha podido guardar la configuración del teclado de X11. - + Failed to write keyboard configuration to existing /etc/default directory. Fallo al escribir la configuración del teclado en el directorio /etc/default existente. @@ -3419,28 +3434,28 @@ Salida TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3448,28 +3463,28 @@ Salida TrackingMachineUpdateManagerJob - + Machine feedback Retroalimentación de la maquina - + Configuring machine feedback. Configurando la retroalimentación de la maquina. - - + + Error in machine feedback configuration. Error en la configuración de retroalimentación de la máquina. - + Could not configure machine feedback correctly, script error %1. No se pudo configurar correctamente la retroalimentación de la máquina, error de script% 1. - + Could not configure machine feedback correctly, Calamares error %1. No se pudo configurar la retroalimentación de la máquina correctamente, Calamares error% 1. @@ -3528,47 +3543,17 @@ Salida UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Si más de una persona usará esta computadora, puede crear múltiples cuentas después de la configuración</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Si más de una persona usará esta computadora, puede crear varias cuentas después de la instalación.</small> - - Your username is too long. - Tu nombre de usuario es demasiado largo. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - El nombre de tu equipo es demasiado corto. - - - - Your hostname is too long. - El nombre de tu equipo es demasiado largo. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Las contraseñas no coinciden! @@ -3576,7 +3561,7 @@ Salida UsersViewStep - + Users Usuarios @@ -3789,19 +3774,19 @@ Salida i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3809,44 +3794,44 @@ Salida keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3854,17 +3839,7 @@ Salida localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index be87e9323..caf71cc4b 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Falló la instalación - + Would you like to paste the install log to the web? - + Error Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Próximo - + &Back &Atrás - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location Ubicación @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Ubicación @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index f9104cb0a..c70e80636 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Paigaldamine ebaõnnestus - + Would you like to paste the install log to the web? - + Error Viga - - + + &Yes &Jah - - + + &No &Ei - + &Close &Sulge - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Calamarese alglaadimine ebaõnnestus - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 ei saa paigaldada. Calamares ei saanud laadida kõiki konfigureeritud mooduleid. See on distributsiooni põhjustatud Calamarese kasutamise viga. - + <br/>The following modules could not be loaded: <br/>Järgnevaid mooduleid ei saanud laadida: - + Continue with setup? Jätka seadistusega? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 paigaldaja on tegemas muudatusi sinu kettale, et paigaldada %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> - + &Set up now &Seadista kohe - + &Install now &Paigalda kohe - + Go &back Mine &tagasi - + &Set up &Seadista - + &Install &Paigalda - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Paigaldamine on lõpetatud. Sulge paigaldaja. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Tühista paigaldamine ilma süsteemi muutmata. - + &Next &Edasi - + &Back &Tagasi - + &Done &Valmis - + &Cancel &Tühista - + Cancel setup? - + Cancel installation? Tühista paigaldamine? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Kas sa tõesti soovid tühistada praeguse paigaldusprotsessi? @@ -482,12 +482,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. &Tühista - + %1 Setup Program - + %1 Installer %1 paigaldaja @@ -514,9 +514,9 @@ Paigaldaja sulgub ning kõik muutused kaovad. - - - + + + Current: Hetkel: @@ -527,115 +527,115 @@ Paigaldaja sulgub ning kõik muutused kaovad. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Käsitsi partitsioneerimine</strong><br/>Sa võid ise partitsioone luua või nende suurust muuta. - + Reuse %1 as home partition for %2. Taaskasuta %1 %2 kodupartitsioonina. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Vali vähendatav partitsioon, seejärel sikuta alumist riba suuruse muutmiseks</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Käivituslaaduri asukoht: - + <strong>Select a partition to install on</strong> <strong>Vali partitsioon, kuhu paigaldada</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI süsteemipartitsiooni ei leitud sellest süsteemist. Palun mine tagasi ja kasuta käsitsi partitsioonimist, et seadistada %1. - + The EFI system partition at %1 will be used for starting %2. EFI süsteemipartitsioon asukohas %1 kasutatakse %2 käivitamiseks. - + EFI system partition: EFI süsteemipartitsioon: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Sellel mäluseadmel ei paista olevat operatsioonisüsteemi peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Tühjenda ketas</strong><br/>See <font color="red">kustutab</font> kõik valitud mäluseadmel olevad andmed. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Paigalda kõrvale</strong><br/>Paigaldaja vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Asenda partitsioon</strong><br/>Asendab partitsiooni operatsioonisüsteemiga %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Sellel mäluseadmel on peal %1. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Sellel mäluseadmel on juba operatsioonisüsteem peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Sellel mäluseadmel on mitu operatsioonisüsteemi peal. Mida soovid teha?<br/>Sa saad oma valikud üle vaadata ja kinnitada enne kui mistahes muudatus saab mäluseadmele teostatud. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ Paigaldaja sulgub ning kõik muutused kaovad. ClearMountsJob - + Clear mounts for partitioning operations on %1 Tühjenda monteeringud partitsioneerimistegevustes %1 juures - + Clearing mounts for partitioning operations on %1. Tühjendan monteeringud partitsioneerimistegevustes %1 juures. - + Cleared all mounts for %1 Kõik monteeringud tühjendatud %1 jaoks @@ -661,22 +661,22 @@ Paigaldaja sulgub ning kõik muutused kaovad. ClearTempMountsJob - + Clear all temporary mounts. Tühjenda kõik ajutised monteeringud. - + Clearing all temporary mounts. Tühjendan kõik ajutised monteeringud. - + Cannot get list of temporary mounts. Ajutiste monteeringute nimekirja ei saa hankida. - + Cleared all temporary mounts. Kõik ajutised monteeringud tühjendatud. @@ -703,30 +703,30 @@ Paigaldaja sulgub ning kõik muutused kaovad. Config - + Set keyboard model to %1.<br/> Sea klaviatuurimudeliks %1.<br/> - + Set keyboard layout to %1/%2. Sea klaviatuuripaigutuseks %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Süsteemikeeleks määratakse %1. - + The numbers and dates locale will be set to %1. Arvude ja kuupäevade lokaaliks seatakse %1. - - - Set timezone to %1/%2.<br/> - Määra ajatsooniks %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ Paigaldaja sulgub ning kõik muutused kaovad. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Sinu kasutajanimi on liiga pikk. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Sinu hostinimi on liiga lühike. + + + + Your hostname is too long. + Sinu hostinimi on liiga pikk. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ Paigaldaja sulgub ning kõik muutused kaovad. CreateUserJob - + Create user %1 Loo kasutaja %1 - + Create user <strong>%1</strong>. Loo kasutaja <strong>%1</strong>. - + Creating user %1. Loon kasutajat %1. - - Sudoers dir is not writable. - Sudoja tee ei ole kirjutatav. - - - + Cannot create sudoers file for writing. Sudoja faili ei saa kirjutamiseks luua. - + Cannot chmod sudoers file. Sudoja faili ei saa chmod-ida. - - - Cannot open groups file for reading. - Grupifaili ei saa lugemiseks avada. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ Paigaldaja sulgub ning kõik muutused kaovad. FillGlobalStorageJob - + Set partition information Sea partitsiooni teave - + Install %1 on <strong>new</strong> %2 system partition. Paigalda %1 <strong>uude</strong> %2 süsteemipartitsiooni. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Seadista <strong>uus</strong> %2 partitsioon monteerimiskohaga <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Paigalda %2 %3 süsteemipartitsioonile <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Seadista %3 partitsioon <strong>%1</strong> monteerimiskohaga <strong>%2</strong> - + Install boot loader on <strong>%1</strong>. Paigalda käivituslaadur kohta <strong>%1</strong>. - + Setting up mount points. Seadistan monteerimispunkte. @@ -1508,12 +1538,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. KeyboardPage - + Set keyboard model to %1.<br/> Sea klaviatuurimudeliks %1.<br/> - + Set keyboard layout to %1/%2. Sea klaviatuuripaigutuseks %1/%2. @@ -1570,32 +1600,32 @@ Paigaldaja sulgub ning kõik muutused kaovad. - + I accept the terms and conditions above. Ma nõustun alljärgevate tingimustega. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ Paigaldaja sulgub ning kõik muutused kaovad. LocalePage - + Region: Regioon: - + Zone: Tsoon: - - + + &Change... &Muuda... - - - The system language will be set to %1. - Süsteemikeeleks määratakse %1. - - - - The numbers and dates locale will be set to %1. - Arvude ja kuupäevade lokaaliks seatakse %1. - - - - Set timezone to %1/%2.<br/> - Määra ajatsooniks %1/%2.<br/> - LocaleQmlViewStep - + Location Asukoht @@ -1713,7 +1728,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. LocaleViewStep - + Location Asukoht @@ -1775,7 +1790,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. Map - + 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. @@ -2176,7 +2191,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. Tundmatu viga - + Password is empty @@ -2515,112 +2530,112 @@ Paigaldaja sulgub ning kõik muutused kaovad. Hangin süsteemiteavet... - + Partitions Partitsioonid - + Install %1 <strong>alongside</strong> another operating system. Paigalda %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> - + <strong>Erase</strong> disk and install %1. <strong>Tühjenda</strong> ketas ja paigalda %1. - + <strong>Replace</strong> a partition with %1. <strong>Asenda</strong> partitsioon operatsioonisüsteemiga %1. - + <strong>Manual</strong> partitioning. <strong>Käsitsi</strong> partitsioneerimine. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Paigalda %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja paigalda %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Asenda</strong> partitsioon kettal <strong>%2</strong> (%3) operatsioonisüsteemiga %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Käsitsi</strong> partitsioneerimine kettal <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Ketas <strong>%1</strong> (%2). - + Current: Hetkel: - + After: Pärast: - + No EFI system partition configured EFI süsteemipartitsiooni pole seadistatud - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI süsteemipartitsiooni silt pole määratud - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Käivituspartitsioon pole krüptitud - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Eraldi käivituspartitsioon seadistati koos krüptitud juurpartitsiooniga, aga käivituspartitsioon ise ei ole krüptitud.<br/><br/>Selle seadistusega kaasnevad turvaprobleemid, sest tähtsad süsteemifailid hoitakse krüptimata partitsioonil.<br/>Sa võid soovi korral jätkata, aga failisüsteemi lukust lahti tegemine toimub hiljem süsteemi käivitusel.<br/>Et krüpteerida käivituspartisiooni, mine tagasi ja taasloo see, valides <strong>Krüpteeri</strong> partitsiooni loomise aknas. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ Paigaldaja sulgub ning kõik muutused kaovad. PreserveFiles - + Saving files for later ... Salvestan faile hiljemaks... - + No files configured to save for later. Ühtegi faili ei konfigureeritud hiljemaks salvestamiseks. - + Not all of the configured files could be preserved. Ühtegi konfigureeritud faili ei suudetud säilitada. @@ -3161,29 +3176,29 @@ Väljund: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Klaviatuurimudeliks on seatud %1, paigutuseks %2-%3 - + Failed to write keyboard configuration for the virtual console. Klaviatuurikonfiguratsiooni kirjutamine virtuaalkonsooli ebaõnnestus. - - - + + + Failed to write to %1 Kohta %1 kirjutamine ebaõnnestus - + Failed to write keyboard configuration for X11. Klaviatuurikonsooli kirjutamine X11-le ebaõnnestus. - + Failed to write keyboard configuration to existing /etc/default directory. Klaviatuurikonfiguratsiooni kirjutamine olemasolevale /etc/default kaustateele ebaõnnestus. @@ -3416,28 +3431,28 @@ Väljund: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3445,28 +3460,28 @@ Väljund: TrackingMachineUpdateManagerJob - + Machine feedback Seadme tagasiside - + Configuring machine feedback. Seadistan seadme tagasisidet. - - + + Error in machine feedback configuration. Masina tagasiside konfiguratsioonis esines viga. - + Could not configure machine feedback correctly, script error %1. Masina tagasisidet ei suudetud korralikult konfigureerida, skripti viga %1. - + Could not configure machine feedback correctly, Calamares error %1. Masina tagasisidet ei suudetud korralikult konfigureerida, Calamares'e viga %1. @@ -3525,47 +3540,17 @@ Väljund: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Sinu kasutajanimi on liiga pikk. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Sinu hostinimi on liiga lühike. - - - - Your hostname is too long. - Sinu hostinimi on liiga pikk. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Sinu paroolid ei ühti! @@ -3573,7 +3558,7 @@ Väljund: UsersViewStep - + Users Kasutajad @@ -3786,19 +3771,19 @@ Väljund: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3806,44 +3791,44 @@ Väljund: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3851,17 +3836,7 @@ Väljund: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index ea7e41226..23a422924 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -220,7 +220,7 @@ - + Loading failed. Kargatzeak huts egin du. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Instalazioak huts egin du - + Would you like to paste the install log to the web? - + Error Akatsa - - + + &Yes &Bai - - + + &No &Ez - + &Close &Itxi - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Calamares instalazioak huts egin du - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 ezin da instalatu. Calamares ez da gai konfiguratutako modulu guztiak kargatzeko. Arazao hau banaketak Calamares erabiltzen duen eragatik da. - + <br/>The following modules could not be loaded: <br/> Ondorengo moduluak ezin izan dira kargatu: - + Continue with setup? Ezarpenarekin jarraitu? - + Continue with installation? Instalazioarekin jarraitu? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 instalatzailea zure diskoan aldaketak egitera doa %2 instalatzeko.<br/><strong>Ezingo dituzu desegin aldaketa hauek.</strong> - + &Set up now - + &Install now &Instalatu orain - + Go &back &Atzera - + &Set up - + &Install &Instalatu - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Instalazioa burutu da. Itxi instalatzailea. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Instalazioa bertan behera utsi da sisteman aldaketarik gabe. - + &Next &Hurrengoa - + &Back &Atzera - + &Done E&ginda - + &Cancel &Utzi - + Cancel setup? - + Cancel installation? Bertan behera utzi instalazioa? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ziur uneko instalazio prozesua bertan behera utzi nahi duzula? @@ -482,12 +482,12 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. &Utzi - + %1 Setup Program - + %1 Installer %1 Instalatzailea @@ -514,9 +514,9 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - - - + + + Current: Unekoa: @@ -527,115 +527,115 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Eskuz partizioak landu</strong><br/>Zure kasa sortu edo tamainaz alda dezakezu partizioak. - + Reuse %1 as home partition for %2. Berrerabili %1 home partizio bezala %2rentzat. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Aukeratu partizioa txikitzeko eta gero arrastatu azpiko-barra tamaina aldatzeko</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Abio kargatzaile kokapena: - + <strong>Select a partition to install on</strong> <strong>aukeratu partizioa instalatzeko</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Ezin da inon aurkitu EFI sistemako partiziorik sistema honetan. Mesedez joan atzera eta erabili eskuz partizioak lantzea %1 ezartzeko. - + The EFI system partition at %1 will be used for starting %2. %1eko EFI partizio sistema erabiliko da abiarazteko %2. - + EFI system partition: EFI sistema-partizioa: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Biltegiratze-gailuak badirudi ez duela sistema eragilerik. Zer egin nahiko zenuke? <br/>Zure aukerak berrikusteko eta berresteko aukera izango duzu aldaketak gauzatu aurretik biltegiratze-gailuan - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Diskoa ezabatu</strong><br/>Honek orain dauden datu guztiak <font color="red">ezabatuko</font> ditu biltegiratze-gailutik. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalatu alboan</strong><br/>Instalatzaileak partizioa txikituko du lekua egiteko %1-(r)i. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ordeztu partizioa</strong><br/>ordezkatu partizioa %1-(e)kin. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Biltegiratze-gailuak %1 dauka. Zer egin nahiko zenuke? <br/>Zure aukerak berrikusteko eta berresteko aukera izango duzu aldaketak gauzatu aurretik biltegiratze-gailuan - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Biltegiragailu honetan badaude jadanik eragile sistema bat. Zer gustatuko litzaizuke egin?<br/>Biltegiragailuan aldaketarik egin baino lehen zure aukerak aztertu eta konfirmatu ahal izango duzu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Biltegiragailu honetan badaude jadanik eragile sistema batzuk. Zer gustatuko litzaizuke egin?<br/>Biltegiragailuan aldaketarik egin baino lehen zure aukerak aztertu eta konfirmatu ahal izango duzu. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. ClearMountsJob - + Clear mounts for partitioning operations on %1 Garbitu muntaketa puntuak partizioak egiteko %1 -(e)an. - + Clearing mounts for partitioning operations on %1. Garbitzen muntaketa puntuak partizio eragiketak egiteko %1 -(e)an. - + Cleared all mounts for %1 Muntaketa puntu guztiak garbitu dira %1 -(e)an @@ -661,22 +661,22 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. ClearTempMountsJob - + Clear all temporary mounts. Garbitu aldi-baterako muntaketa puntu guztiak. - + Clearing all temporary mounts. Garbitzen aldi-baterako muntaketa puntu guztiak. - + Cannot get list of temporary mounts. Ezin izan da aldi-baterako muntaketa puntu guztien zerrenda lortu. - + Cleared all temporary mounts. Garbitu dira aldi-baterako muntaketa puntu guztiak. @@ -703,30 +703,30 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Config - + Set keyboard model to %1.<br/> Ezarri teklatu mota %1ra.<br/> - + Set keyboard layout to %1/%2. Ezarri teklatu diseinua %1%2ra. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. %1 ezarriko da sistemako hizkuntza bezala. - + The numbers and dates locale will be set to %1. Zenbaki eta daten eskualdea %1-(e)ra ezarri da. - - - Set timezone to %1/%2.<br/> - Ordu-zonaldea %1%2-ra ezarri da.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Zure erabiltzaile-izena luzeegia da. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Zure ostalari-izena laburregia da. + + + + Your hostname is too long. + Zure ostalari-izena luzeegia da. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. CreateUserJob - + Create user %1 Sortu %1 erabiltzailea - + Create user <strong>%1</strong>. Sortu <strong>%1</strong> erabiltzailea - + Creating user %1. %1 erabiltzailea sortzen. - - Sudoers dir is not writable. - Ezin da sudoers direktorioan idatzi. - - - + Cannot create sudoers file for writing. Ezin da sudoers fitxategia sortu bertan idazteko. - + Cannot chmod sudoers file. Ezin zaio chmod egin sudoers fitxategiari. - - - Cannot open groups file for reading. - Ezin da groups fitxategia ireki berau irakurtzeko. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. FillGlobalStorageJob - + Set partition information Ezarri partizioaren informazioa - + Install %1 on <strong>new</strong> %2 system partition. Instalatu %1 sistemako %2 partizio <strong>berrian</strong>. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Ezarri %2 partizio <strong>berria</strong> <strong>%1</strong> muntatze puntuarekin. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Ezarri %3 partizioa <strong>%1</strong> <strong>%2</strong> muntatze puntuarekin. - + Install boot loader on <strong>%1</strong>. Instalatu abio kargatzailea <strong>%1</strong>-(e)n. - + Setting up mount points. Muntatze puntuak ezartzen. @@ -1508,12 +1538,12 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. KeyboardPage - + Set keyboard model to %1.<br/> Ezarri teklatu mota %1ra.<br/> - + Set keyboard layout to %1/%2. Ezarri teklatu diseinua %1%2ra. @@ -1570,32 +1600,32 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - + I accept the terms and conditions above. Goiko baldintzak onartzen ditut. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LocalePage - + Region: Eskualdea: - + Zone: Zonaldea: - - + + &Change... &Aldatu... - - - The system language will be set to %1. - %1 ezarriko da sistemako hizkuntza bezala. - - - - The numbers and dates locale will be set to %1. - Zenbaki eta daten eskualdea %1-(e)ra ezarri da. - - - - Set timezone to %1/%2.<br/> - Ordu-zonaldea %1%2-ra ezarri da.<br/> - LocaleQmlViewStep - + Location Kokapena @@ -1713,7 +1728,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LocaleViewStep - + Location Kokapena @@ -1775,7 +1790,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Map - + 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. @@ -2176,7 +2191,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Hutsegite ezezaguna - + Password is empty @@ -2515,112 +2530,112 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Sistemaren informazioa eskuratzen... - + Partitions Partizioak - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Unekoa: - + After: Ondoren: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. PreserveFiles - + Saving files for later ... Fitxategiak geroko gordetzen... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3160,29 +3175,29 @@ Irteera: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 Ezin izan da %1 partizioan idatzi - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3415,28 +3430,28 @@ Irteera: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3444,28 +3459,28 @@ Irteera: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3524,47 +3539,17 @@ Irteera: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Zure erabiltzaile-izena luzeegia da. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Zure ostalari-izena laburregia da. - - - - Your hostname is too long. - Zure ostalari-izena luzeegia da. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Pasahitzak ez datoz bat! @@ -3572,7 +3557,7 @@ Irteera: UsersViewStep - + Users Erabiltzaileak @@ -3785,19 +3770,19 @@ Irteera: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Atzera @@ -3805,44 +3790,44 @@ Irteera: keyboardq - + Keyboard Model Teklatu modeloa - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard Frogatu zure teklatua @@ -3850,17 +3835,7 @@ Irteera: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 06f58e00a..136c3d194 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -220,7 +220,7 @@ مرحله QML <i>%1</i>. - + Loading failed. بارگذاری شکست خورد. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed راه‌اندازی شکست خورد. - + Installation Failed نصب شکست خورد - + Would you like to paste the install log to the web? آیا مایلید که گزارش‌ها در وب الصاق شوند؟ - + Error خطا - - + + &Yes &بله - - + + &No &خیر - + &Close &بسته - + Install Log Paste URL Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed راه اندازی کالاماریس شکست خورد. - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 نمی‌تواند نصب شود. کالاماریس نمی‌تواند همه ماژول‌های پیکربندی را بالا بیاورد. این یک مشکل در نحوه استفاده کالاماریس توسط توزیع است. - + <br/>The following modules could not be loaded: <br/>این ماژول نمی‌تواند بالا بیاید: - + Continue with setup? ادامهٔ برپایی؟ - + Continue with installation? نصب ادامه یابد؟ - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> برنامه نصب %1 در شرف ایجاد تغییرات در دیسک شما به منظور راه‌اندازی %2 است. <br/><strong>شما قادر نخواهید بود تا این تغییرات را برگردانید.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> نصب‌کنندهٔ %1 می‌خواهد برای نصب %2 تغییراتی در دیسکتان بدهد. <br/><strong>نخواهید توانست این تغییرات را برگردانید.</strong> - + &Set up now &همین حالا راه‌انداری کنید - + &Install now &اکنون نصب شود - + Go &back &بازگشت - + &Set up &راه‌اندازی - + &Install &نصب - + Setup is complete. Close the setup program. نصب انجام شد. برنامه نصب را ببندید. - + The installation is complete. Close the installer. نصب انجام شد. نصاب را ببندید. - + Cancel setup without changing the system. لغو راه‌اندازی بدون تغییر سیستم. - + Cancel installation without changing the system. لغو نصب بدون تغییر کردن سیستم. - + &Next &بعدی - + &Back &پیشین - + &Done &انجام شد - + &Cancel &لغو - + Cancel setup? لغو راه‌اندازی؟ - + Cancel installation? لغو نصب؟ - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. آیا واقعا می‌خواهید روند راه‌اندازی فعلی رو لغو کنید؟ برنامه راه اندازی ترک می شود و همه تغییرات از بین می روند. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. واقعاً می خواهید فرایند نصب فعلی را لغو کنید؟ @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. &لغو - + %1 Setup Program %1 برنامه راه‌اندازی - + %1 Installer نصب‌کنندهٔ %1 @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: فعلی: @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>پارتیشن‌بندی دستی</strong><br/>شما می‌توانید خودتان پارتیشن‌ها را بسازید و یا تغییر سایز دهید. با داشتن یک جدول پارتیشن GPT و <strong>پارتیشن /boot با اندازه 512 مگابیتی fat32 برای نصب‌های UEFI الزامی است</strong>، چه با استفاده از نمونه موجود آن بدون قالب‌بندی یا ساخت آن. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + - + Reuse %1 as home partition for %2. استفاده مجدد از %1 به عنوان پارتیشن خانه برای %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>انتخاب یک پارتیشن برای کوجک کردن و ایجاد پارتیشن جدید از آن، سپس نوار دکمه را بکشید تا تغییر اندازه دهد</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 تغییر سایز خواهد داد به %2 مبی‌بایت و یک پارتیشن %3 مبی‌بایتی برای %4 ساخته خواهد شد. - + Boot loader location: مکان بالاآورنده بوت: - + <strong>Select a partition to install on</strong> <strong>یک پارتیشن را برای نصب بر روی آن، انتخاب کنید</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. پارتیشن سیستم ای.اف.آی نمی‌تواند در هیچ جایی از این سیستم یافت شود. لطفا برگردید و از پارتیشن بندی دستی استفاده کنید تا %1 را راه‌اندازی کنید. - + The EFI system partition at %1 will be used for starting %2. پارتیشن سیستم ای.اف.آی در %1 برای شروع %2 استفاده خواهد شد. - + EFI system partition: پارتیشن سیستم ای.اف.آی - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. به نظر می‌رسد در دستگاه ذخیره‌سازی هیچ سیستم‌عاملی وجود ندارد. تمایل به انجام چه کاری دارید؟<br/>شما می‌توانید انتخاب‌هایتان را قبل از اعمال هر تغییری در دستگاه ذخیره‌سازی، مرور و تأیید نمایید. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>پاک کردن دیسک</strong><br/>این کار تمام داده‌های موجود بر روی دستگاه ذخیره‌سازی انتخاب شده را <font color="red">حذف می‌کند</font>. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>نصب در امتداد</strong><br/>این نصاب از یک پارتیشن برای ساخت یک اتاق برای %1 استفاده می‌کند. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>جایگزینی یک افراز</strong><br/>افرازی را با %1 جایگزین می‌کند. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap بدون Swap - + Reuse Swap باز استفاده از مبادله - + Swap (no Hibernate) مبادله (بدون خواب‌زمستانی) - + Swap (with Hibernate) مبادله (با خواب‌زمستانی) - + Swap to file مبادله به پرونده @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 پاک‌سازی اتّصال‌ها برای عملبات افراز روی %1 - + Clearing mounts for partitioning operations on %1. در حال پاک‌سازی اتّصال‌ها برای عملبات افراز روی %1 - + Cleared all mounts for %1 همهٔ اتّصال‌ها برای %1 پاک‌‌سازی شدند @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. پاک‌سازی همهٔ اتّصال‌های موقّتی. - + Clearing all temporary mounts. در حال پاک‌سازی همهٔ اتّصال‌های موقّتی. - + Cannot get list of temporary mounts. نمی‌توان فهرست اتّصال‌های موقّتی را گرفت. - + Cleared all temporary mounts. همهٔ اتّصال‌های موقّتی پاک‌سازی شدند. @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> تنظیم مدل صفحه‌کلید به %1.<br/> - + Set keyboard layout to %1/%2. تنظیم چینش صفحه‌کلید به %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. زبان سامانه به %1 تنظیم خواهد شد. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - تنظیم منطقهٔ زمانی به %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + نام کاربریتان بیش از حد بلند است. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + نام میزبانتان بیش از حد کوتاه است. + + + + Your hostname is too long. + نام میزبانتان بیش از حد بلند است. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 ایجاد کاربر %1 - + Create user <strong>%1</strong>. ایجاد کاربر <strong>%</strong>1. - + Creating user %1. در حال ایجاد کاربر %1. - - Sudoers dir is not writable. - شاخهٔ sudoers قابل نوشتن نیست. - - - + Cannot create sudoers file for writing. نمی‌توان پروندهٔ sudoers را برای نوشتن ایجاد کرد. - + Cannot chmod sudoers file. نمی‌توان مالک پروندهٔ sudoers را تغییر داد. - - - Cannot open groups file for reading. - نمی‌توان پروندهٔ groups را برای خواندن گشود. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information تنظیم اطّلاعات افراز - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. برپایی نقطه‌های اتّصال @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> تنظیم مدل صفحه‌کلید به %1.<br/> - + Set keyboard layout to %1/%2. تنظیم چینش صفحه‌کلید به %1/%2. @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. <h1>توافق پروانه</h1> - + I accept the terms and conditions above. شرایط و ضوابط فوق را می‌پذیرم. - + Please review the End User License Agreements (EULAs). لطفاً توافق پروانهٔ کاربر نهایی (EULAs) را بازبینی کنید. - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: ناحیه: - + Zone: منطقه: - - + + &Change... &تغییر… - - - The system language will be set to %1. - زبان سامانه به %1 تنظیم خواهد شد. - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - تنظیم منطقهٔ زمانی به %1/%2.<br/> - LocaleQmlViewStep - + Location موقعیت @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location موقعیت @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2178,7 +2193,7 @@ The installer will quit and all changes will be lost. خطای ناشناخته - + Password is empty گذرواژه خالی است @@ -2517,112 +2532,112 @@ The installer will quit and all changes will be lost. جمع‌آوری اطّلاعات سامانه… - + Partitions افرازها - + Install %1 <strong>alongside</strong> another operating system. نصب %1 <strong>در امتداد</strong> سیستم عامل دیگر. - + <strong>Erase</strong> disk and install %1. <strong>پاک کردن</strong> دیسک و نصب %1. - + <strong>Replace</strong> a partition with %1. <strong>جایگزینی</strong> یک پارتیشن و با %1 - + <strong>Manual</strong> partitioning. <strong>پارتیشن‌بندی</strong> دستی. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) دیسک <strong>%1</strong> (%2) - + Current: فعلی: - + After: بعد از: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted پارتیشن بوت رمزشده نیست - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. هیچ پارتیشنی برای نصب وجود ندارد @@ -2670,17 +2685,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... ذخیرهٔ پرونده‌ها برای بعد - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3160,29 +3175,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3415,28 +3430,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3444,28 +3459,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3524,47 +3539,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - نام کاربریتان بیش از حد بلند است. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - نام میزبانتان بیش از حد کوتاه است. - - - - Your hostname is too long. - نام میزبانتان بیش از حد بلند است. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! گذرواژه‌هایتان مطابق نیستند! @@ -3572,7 +3557,7 @@ Output: UsersViewStep - + Users کاربران @@ -3785,19 +3770,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back بازگشت @@ -3805,44 +3790,44 @@ Output: keyboardq - + Keyboard Model مدل صفحه‌کلید - + Pick your preferred keyboard model or use the default one based on the detected hardware برمبنای سخت‌افزار شناخته‌شده، مدل صفحه‌کلید دلخواهتان را برگزیده یا از مدل پیش‌گزیده استفاده کنید. - + Refresh تازه‌سازی - - + + Layouts چینش‌ها - - + + Keyboard Layout چینش صفحه‌کلید - + Models مدل‌ها - + Variants دگرگونه‌ها - + Test your keyboard صفحه‌کلیدتان را بیازمایید @@ -3850,17 +3835,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index ec44e74f7..0eef96c83 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -220,7 +220,7 @@ QML-vaihe <i>%1</i>. - + Loading failed. Lataus epäonnistui. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Asennus epäonnistui - + Installation Failed Asennus Epäonnistui - + Would you like to paste the install log to the web? Haluatko liittää asennuslokin verkkoon? - + Error Virhe - - + + &Yes &Kyllä - - + + &No &Ei - + &Close &Sulje - + Install Log Paste URL Asenna lokitiedon URL-osoite - + The upload was unsuccessful. No web-paste was done. Lähettäminen epäonnistui. Web-liittämistä ei tehty. - + Calamares Initialization Failed Calamares-alustustaminen epäonnistui - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 ei voida asentaa. Calamares ei voinut ladata kaikkia määritettyjä moduuleja. Ongelma on siinä, miten jakelu käyttää Calamaresia. - + <br/>The following modules could not be loaded: <br/>Seuraavia moduuleja ei voitu ladata: - + Continue with setup? Jatka asennusta? - + Continue with installation? Jatka asennusta? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 asennusohjelma on aikeissa tehdä muutoksia levylle, jotta voit määrittää kohteen %2.<br/><strong>Et voi kumota näitä muutoksia.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Asennus ohjelman %1 on tehtävä muutoksia levylle, jotta %2 voidaan asentaa.<br/><strong>Et voi kumota näitä muutoksia.</strong> - + &Set up now &Määritä nyt - + &Install now &Asenna nyt - + Go &back Mene &takaisin - + &Set up &Määritä - + &Install &Asenna - + Setup is complete. Close the setup program. Asennus on valmis. Sulje asennusohjelma. - + The installation is complete. Close the installer. Asennus on valmis. Sulje asennusohjelma. - + Cancel setup without changing the system. Peruuta asennus muuttamatta järjestelmää. - + Cancel installation without changing the system. Peruuta asennus tekemättä muutoksia järjestelmään. - + &Next &Seuraava - + &Back &Takaisin - + &Done &Valmis - + &Cancel &Peruuta - + Cancel setup? Peruuta asennus? - + Cancel installation? Peruuta asennus? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Haluatko todella peruuttaa nykyisen asennuksen? Asennusohjelma lopetetaan ja kaikki muutokset menetetään. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Oletko varma että haluat peruuttaa käynnissä olevan asennusprosessin? @@ -484,12 +484,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. &Peruuta - + %1 Setup Program %1 Asennusohjelma - + %1 Installer %1 Asennusohjelma @@ -516,9 +516,9 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - - - + + + Current: Nykyinen: @@ -529,115 +529,115 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manuaalinen osiointi</strong><br/>Voit luoda osioita tai muuttaa itse sen kokoa. Gpt-osiotaulu ja <strong>fat32 512Mb /boot osio on välttämätön UEFI asennuksessa</strong>, käytä aiemmin luotua tai luo sellainen. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuaalinen osiointi </strong><br/>Voit luoda tai muuttaa osioita itse. - + Reuse %1 as home partition for %2. Käytä %1 uudelleen kotiosiona kohteelle %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Valitse supistettava osio ja säädä alarivillä kokoa vetämällä</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 supistetaan %2Mib:iin ja uusi %3MiB-osio luodaan kohteelle %4. - + Boot loader location: Käynnistyksen lataajan sijainti: - + <strong>Select a partition to install on</strong> <strong>Valitse asennettava osio</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI-osiota ei löydy mistään tässä järjestelmässä. Siirry takaisin ja käytä manuaalista osiointia, kun haluat määrittää %1 - + The EFI system partition at %1 will be used for starting %2. EFI-järjestelmän osiota %1 käytetään käynnistettäessä %2. - + EFI system partition: EFI järjestelmäosio - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tällä tallennuslaitteella ei näytä olevan käyttöjärjestelmää. Mitä haluat tehdä?<br/>Voit tarkistaa ja vahvistaa valintasi ennen kuin tallennuslaitteeseen tehdään muutoksia. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Tyhjennä levy</strong><br/>Tämä <font color="red">poistaa</font> kaikki tiedot valitussa tallennuslaitteessa. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Asenna nykyisen rinnalle</strong><br/>Asennus ohjelma supistaa osion tehdäkseen tilaa kohteelle %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Osion korvaaminen</strong><br/>korvaa osion %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tässä tallennuslaitteessa on %1 dataa. Mitä haluat tehdä?<br/>Voit tarkistaa ja vahvistaa valintasi ennen kuin tallennuslaitteeseen tehdään muutoksia. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tämä tallennuslaite sisältää jo käyttöjärjestelmän. Mitä haluaisit tehdä?<br/>Voit tarkistaa ja vahvistaa valintasi, ennen kuin tallennuslaitteeseen tehdään muutoksia. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tämä tallennuslaite sisältää jo useita käyttöjärjestelmiä. Mitä haluaisit tehdä?<br/>Voit tarkistaa ja vahvistaa valintasi, ennen kuin tallennuslaitteeseen tehdään muutoksia. - + No Swap Ei välimuistia - + Reuse Swap Kierrätä välimuistia - + Swap (no Hibernate) Välimuisti (ei lepotilaa) - + Swap (with Hibernate) Välimuisti (lepotilan kanssa) - + Swap to file Välimuisti tiedostona @@ -645,17 +645,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ClearMountsJob - + Clear mounts for partitioning operations on %1 Poista osiointitoimenpiteitä varten tehdyt liitokset kohteesta %1 - + Clearing mounts for partitioning operations on %1. Tyhjennät kiinnitys osiointitoiminnoille %1. - + Cleared all mounts for %1 Kaikki liitokset poistettu kohteesta %1 @@ -663,22 +663,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ClearTempMountsJob - + Clear all temporary mounts. Poista kaikki väliaikaiset liitokset. - + Clearing all temporary mounts. Kaikki tilapäiset kiinnitykset tyhjennetään. - + Cannot get list of temporary mounts. Väliaikaisten kiinnitysten luetteloa ei voi hakea. - + Cleared all temporary mounts. Poistettu kaikki väliaikaiset liitokset. @@ -705,30 +705,30 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Config - + Set keyboard model to %1.<br/> Aseta näppäimiston malli %1.<br/> - + Set keyboard layout to %1/%2. Aseta näppäimiston asetelmaksi %1/%2. - + + Set timezone to %1/%2. + Aseta aikavyöhykkeeksi %1/%2. + + + The system language will be set to %1. Järjestelmän kielen asetuksena on %1. - + The numbers and dates locale will be set to %1. Numerot ja päivämäärät, paikallinen asetus on %1. - - - Set timezone to %1/%2.<br/> - Aseta aikavyöhyke %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -795,6 +795,46 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.<h1>Welcome to the %1 installer</h1> <h1>Tervetuloa %1 -asennusohjelmaan</h1> + + + Your username is too long. + Käyttäjänimesi on liian pitkä. + + + + '%1' is not allowed as username. + '%1' ei ole sallittu käyttäjänimenä. + + + + Your username must start with a lowercase letter or underscore. + Käyttäjätunnuksesi täytyy alkaa pienillä kirjaimilla tai alaviivoilla. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Vain pienet kirjaimet, numerot, alaviivat ja tavuviivat ovat sallittuja. + + + + Your hostname is too short. + Isäntänimesi on liian lyhyt. + + + + Your hostname is too long. + Isäntänimesi on liian pitkä. + + + + '%1' is not allowed as hostname. + '%1' ei ole sallittu koneen nimenä. + + + + Only letters, numbers, underscore and hyphen are allowed. + Vain kirjaimet, numerot, alaviivat ja tavuviivat ovat sallittuja. + ContextualProcessJob @@ -959,40 +999,30 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. CreateUserJob - + Create user %1 Luo käyttäjä %1 - + Create user <strong>%1</strong>. Luo käyttäjä <strong>%1</strong>. - + Creating user %1. Luodaan käyttäjä %1. - - Sudoers dir is not writable. - Ei voitu kirjoittaa Sudoers -hakemistoon. - - - + Cannot create sudoers file for writing. Ei voida luoda sudoers -tiedostoa kirjoitettavaksi. - + Cannot chmod sudoers file. Ei voida tehdä käyttöoikeuden muutosta sudoers -tiedostolle. - - - Cannot open groups file for reading. - Ei voida avata ryhmätiedostoa luettavaksi. - CreateVolumeGroupDialog @@ -1230,37 +1260,37 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. FillGlobalStorageJob - + Set partition information Aseta osion tiedot - + Install %1 on <strong>new</strong> %2 system partition. Asenna %1 <strong>uusi</strong> %2 järjestelmä osio. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Määritä <strong>uusi</strong> %2 -osio liitepisteellä<strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Asenna %2 - %3 -järjestelmän osioon <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Määritä %3 osio <strong>%1</strong> jossa on liitäntäpiste <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Asenna käynnistyslatain <strong>%1</strong>. - + Setting up mount points. Liitosten määrittäminen. @@ -1511,12 +1541,12 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. KeyboardPage - + Set keyboard model to %1.<br/> Aseta näppäimiston malli %1.<br/> - + Set keyboard layout to %1/%2. Aseta näppäimiston asetelmaksi %1/%2. @@ -1573,32 +1603,32 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.<h1>Lisenssisopimus</h1> - + I accept the terms and conditions above. Hyväksyn yllä olevat ehdot ja edellytykset. - + Please review the End User License Agreements (EULAs). Ole hyvä ja tarkista loppukäyttäjän lisenssisopimus (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Tämä asennusohjelma asentaa patentoidun ohjelmiston, johon sovelletaan lisenssiehtoja. - + If you do not agree with the terms, the setup procedure cannot continue. Jos et hyväksy ehtoja, asennusta ei voida jatkaa. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Tämä asennus voi asentaa patentoidun ohjelmiston, johon sovelletaan lisenssiehtoja lisäominaisuuksien tarjoamiseksi ja käyttökokemuksen parantamiseksi. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Jos et hyväksy ehtoja, omaa ohjelmistoa ei asenneta, vaan sen sijaan käytetään avoimen lähdekoodin vaihtoehtoja. @@ -1674,41 +1704,26 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. LocalePage - + Region: Alue: - + Zone: Vyöhyke: - - + + &Change... &Vaihda... - - - The system language will be set to %1. - Järjestelmän kielen asetuksena on %1. - - - - The numbers and dates locale will be set to %1. - Numerot ja päivämäärät, paikallinen asetus on %1. - - - - Set timezone to %1/%2.<br/> - Aseta aikavyöhyke %1/%2.<br/> - LocaleQmlViewStep - + Location Sijainti @@ -1716,7 +1731,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. LocaleViewStep - + Location Sijainti @@ -1778,7 +1793,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. Map - + 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. @@ -2181,7 +2196,7 @@ hiiren vieritystä skaalaamiseen. Tuntematon virhe - + Password is empty Salasana on tyhjä @@ -2520,112 +2535,112 @@ hiiren vieritystä skaalaamiseen. Kerätään järjestelmän tietoja... - + Partitions Osiot - + Install %1 <strong>alongside</strong> another operating system. Asenna toisen käyttöjärjestelmän %1 <strong>rinnalle</strong>. - + <strong>Erase</strong> disk and install %1. <strong>Tyhjennä</strong> levy ja asenna %1. - + <strong>Replace</strong> a partition with %1. <strong>Vaihda</strong> osio jolla on %1. - + <strong>Manual</strong> partitioning. <strong>Manuaalinen</strong> osointi. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Asenna toisen käyttöjärjestelmän %1 <strong>rinnalle</strong> levylle <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Tyhjennä</strong> levy <strong>%2</strong> (%3) ja asenna %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Korvaa</strong> levyn osio <strong>%2</strong> (%3) jolla on %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuaalinen</strong> osiointi levyllä <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Levy <strong>%1</strong> (%2) - + Current: Nykyinen: - + After: Jälkeen: - + No EFI system partition configured EFI-järjestelmäosiota ei ole määritetty - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI-järjestelmän osio on välttämätön käynnistyksessä %1.<br/><br/>Jos haluat tehdä EFI-järjestelmän osion, mene takaisin ja luo FAT32-tiedostojärjestelmä, jossa<strong>%3</strong> lippu on käytössä ja liityntäkohta. <strong>%2</strong>.<br/><br/>Voit jatkaa ilman EFI-järjestelmäosiota, mutta järjestelmä ei ehkä käynnisty. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI-järjestelmän osio on välttämätön käynnistyksessä %1.<br/><br/>Osio on määritetty liityntäkohdan kanssa, <strong>%2</strong> mutta sen <strong>%3</strong> lippua ei ole asetettu.<br/>Jos haluat asettaa lipun, palaa takaisin ja muokkaa osiota.<br/><br/>Voit jatkaa lippua asettamatta, mutta järjestelmä ei ehkä käynnisty. - + EFI system partition flag not set EFI-järjestelmäosion lippua ei ole asetettu - + Option to use GPT on BIOS BIOS:ssa mahdollisuus käyttää GPT:tä - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT-osiotaulukko on paras vaihtoehto kaikille järjestelmille. Tämä asennusohjelma tukee asennusta myös BIOS:n järjestelmään.<br/><br/>Jos haluat määrittää GPT-osiotaulukon BIOS:ssa (jos sitä ei ole jo tehty) palaa takaisin ja aseta osiotaulukkoksi GPT. Luo seuraavaksi 8 Mb alustamaton osio <strong>bios_grub</strong> lipulla käyttöön.<br/><br/>Alustamaton 8 Mb osio on tarpeen %1:n käynnistämiseksi BIOS-järjestelmässä GPT:llä. - + Boot partition not encrypted Käynnistysosiota ei ole salattu - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Erillinen käynnistysosio perustettiin yhdessä salatun juuriosion kanssa, mutta käynnistysosio ei ole salattu.<br/><br/>Tällaisissa asetuksissa on tietoturvaongelmia, koska tärkeät järjestelmätiedostot pidetään salaamattomassa osiossa.<br/>Voit jatkaa, jos haluat, mutta tiedostojärjestelmän lukituksen avaaminen tapahtuu myöhemmin järjestelmän käynnistyksen aikana.<br/>Käynnistysosion salaamiseksi siirry takaisin ja luo se uudelleen valitsemalla <strong>Salaa</strong> osion luominen -ikkunassa. - + has at least one disk device available. on vähintään yksi levy käytettävissä. - + There are no partitions to install on. Asennettavia osioita ei ole. @@ -2673,17 +2688,17 @@ hiiren vieritystä skaalaamiseen. PreserveFiles - + Saving files for later ... Tiedostojen tallentaminen myöhemmin ... - + No files configured to save for later. Ei tiedostoja, joita olisi määritetty tallentamaan myöhemmin. - + Not all of the configured files could be preserved. Kaikkia määritettyjä tiedostoja ei voitu säilyttää. @@ -3170,29 +3185,29 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Aseta näppäimistön malliksi %1, asetelmaksi %2-%3 - + Failed to write keyboard configuration for the virtual console. Virtuaalikonsolin näppäimistöasetuksen tallentaminen epäonnistui. - - - + + + Failed to write to %1 Kirjoittaminen epäonnistui kohteeseen %1 - + Failed to write keyboard configuration for X11. X11 näppäimistöasetuksen tallentaminen epäonnistui. - + Failed to write keyboard configuration to existing /etc/default directory. Näppäimistöasetusten kirjoittaminen epäonnistui olemassa olevaan /etc/default hakemistoon. @@ -3425,28 +3440,28 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. TrackingKUserFeedbackJob - + KDE user feedback KDE käyttäjän palaute - + Configuring KDE user feedback. Määritä KDE käyttäjän palaute. - - + + Error in KDE user feedback configuration. Virhe KDE:n käyttäjän palautteen määrityksissä. - + Could not configure KDE user feedback correctly, script error %1. KDE käyttäjän palautetta ei voitu määrittää oikein, komentosarjassa virhe %1. - + Could not configure KDE user feedback correctly, Calamares error %1. KDE käyttäjän palautetta ei voitu määrittää oikein, Calamares virhe %1. @@ -3454,28 +3469,28 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. TrackingMachineUpdateManagerJob - + Machine feedback Koneen palaute - + Configuring machine feedback. Konekohtaisen palautteen määrittäminen. - - + + Error in machine feedback configuration. Virhe koneen palautteen määrityksessä. - + Could not configure machine feedback correctly, script error %1. Konekohtaista palautetta ei voitu määrittää oikein, komentosarjan virhe %1. - + Could not configure machine feedback correctly, Calamares error %1. Koneen palautetta ei voitu määrittää oikein, Calamares-virhe %1. @@ -3534,47 +3549,17 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Jos useampi kuin yksi henkilö käyttää tätä tietokonetta, voit luoda useita tilejä asennuksen jälkeen.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Jos useampi kuin yksi henkilö käyttää tätä tietokonetta, voit luoda useita tilejä asennuksen jälkeen.</small> - - Your username is too long. - Käyttäjänimesi on liian pitkä. - - - - Your username must start with a lowercase letter or underscore. - Käyttäjätunnuksesi täytyy alkaa pienillä kirjaimilla tai alaviivoilla. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Vain pienet kirjaimet, numerot, alaviivat ja tavuviivat ovat sallittuja. - - - - Your hostname is too short. - Isäntänimesi on liian lyhyt. - - - - Your hostname is too long. - Isäntänimesi on liian pitkä. - - - - Only letters, numbers, underscore and hyphen are allowed. - Vain kirjaimet, numerot, alaviivat ja tavuviivat ovat sallittuja. - - - + Your passwords do not match! Salasanasi eivät täsmää! @@ -3582,7 +3567,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. UsersViewStep - + Users Käyttäjät @@ -3806,21 +3791,21 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Kielet</h1> </br> Järjestelmän sijaintiasetukset vaikuttaa joidenkin komentorivin käyttöliittymän elementtien kieliin ja merkistöihin. Nykyinen asetus on <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Sijainti</h1> </br> - Järjestelmän sijaintiasetukset vaikuttaa joidenkin komentorivin käyttöliittymän elementtien kieliin ja merkistöihin. Nykyinen asetus on <strong>%1</strong>. + Järjestelmän kieliasetus vaikuttaa numeroihin ja päivämääriin. Nykyinen asetus on <strong>%1</strong>. - + Back Takaisin @@ -3828,44 +3813,44 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. keyboardq - + Keyboard Model Näppäimistön malli - + Pick your preferred keyboard model or use the default one based on the detected hardware Valitse haluamasi näppäimistömalli tai käytä oletusmallia havaitun laitteiston perusteella - + Refresh Virkistä - - + + Layouts Asettelut - - + + Keyboard Layout Näppäimistöasettelu - + Models Mallit - + Variants Vaihtoehdot - + Test your keyboard Näppäimistön testaaminen @@ -3873,17 +3858,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. localeq - - System language set to %1 - Järjestelmän kieleksi asetettu %1 - - - - Numbers and dates locale set to %1 - Numerot ja päivämäärät asetettu arvoon %1 - - - + Change Vaihda diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index 076fe8a39..2e48c4634 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -220,7 +220,7 @@ - + Loading failed. Échec de chargement @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Échec de la configuration - + Installation Failed L'installation a échoué - + Would you like to paste the install log to the web? Voulez-vous copier le journal d'installation sur le Web ? - + Error Erreur - - + + &Yes &Oui - - + + &No &Non - + &Close &Fermer - + Install Log Paste URL URL de copie du journal d'installation - + The upload was unsuccessful. No web-paste was done. L'envoi a échoué. La copie sur le web n'a pas été effectuée. - + Calamares Initialization Failed L'initialisation de Calamares a échoué - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 n'a pas pu être installé. Calamares n'a pas pu charger tous les modules configurés. C'est un problème avec la façon dont Calamares est utilisé par la distribution. - + <br/>The following modules could not be loaded: Les modules suivants n'ont pas pu être chargés : - + Continue with setup? Poursuivre la configuration ? - + Continue with installation? Continuer avec l'installation ? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Le programme de configuration de %1 est sur le point de procéder aux changements sur le disque afin de configurer %2.<br/> <strong>Vous ne pourrez pas annulez ces changements.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'installateur %1 est sur le point de procéder aux changements sur le disque afin d'installer %2.<br/> <strong>Vous ne pourrez pas annulez ces changements.<strong> - + &Set up now &Configurer maintenant - + &Install now &Installer maintenant - + Go &back &Retour - + &Set up &Configurer - + &Install &Installer - + Setup is complete. Close the setup program. La configuration est terminée. Fermer le programme de configuration. - + The installation is complete. Close the installer. L'installation est terminée. Fermer l'installateur. - + Cancel setup without changing the system. Annuler la configuration sans toucher au système. - + Cancel installation without changing the system. Annuler l'installation sans modifier votre système. - + &Next &Suivant - + &Back &Précédent - + &Done &Terminé - + &Cancel &Annuler - + Cancel setup? Annuler la configuration ? - + Cancel installation? Abandonner l'installation ? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Voulez-vous vraiment abandonner le processus de configuration ? Le programme de configuration se fermera et les changements seront perdus. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voulez-vous vraiment abandonner le processus d'installation ? @@ -484,12 +484,12 @@ L'installateur se fermera et les changements seront perdus. &Annuler - + %1 Setup Program Programme de configuration de %1 - + %1 Installer Installateur %1 @@ -516,9 +516,9 @@ L'installateur se fermera et les changements seront perdus. - - - + + + Current: Actuel : @@ -529,115 +529,115 @@ L'installateur se fermera et les changements seront perdus. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Partitionnement manuel</strong><br/>Vous pouvez créer ou redimensionner des partitions vous-même. Utiliser une table de partition GPT et <strong>une partition /boot de 512Mo en fat32 est obligatoire pour les installations UEFI</strong>, sinon utiliser une partition existante sans reformater ou en créer une nouvelle. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Partitionnement manuel</strong><br/>Vous pouvez créer ou redimensionner vous-même des partitions. - + Reuse %1 as home partition for %2. Réutiliser %1 comme partition home pour %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Sélectionnez une partition à réduire, puis faites glisser la barre du bas pour redimensionner</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 va être réduit à %2Mio et une nouvelle partition de %3Mio va être créée pour %4. - + Boot loader location: Emplacement du chargeur de démarrage: - + <strong>Select a partition to install on</strong> <strong>Sélectionner une partition pour l'installation</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Une partition système EFI n'a pas pu être trouvée sur ce système. Veuillez retourner à l'étape précédente et sélectionner le partitionnement manuel pour configurer %1. - + The EFI system partition at %1 will be used for starting %2. La partition système EFI sur %1 va être utilisée pour démarrer %2. - + EFI system partition: Partition système EFI : - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage ne semble pas contenir de système d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Effacer le disque</strong><br/>Ceci va <font color="red">effacer</font> toutes les données actuellement présentes sur le périphérique de stockage sélectionné. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installer à côté</strong><br/>L'installateur va réduire une partition pour faire de la place pour %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Remplacer une partition</strong><br>Remplace une partition par %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage contient %1. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage contient déjà un système d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce péiphérique de stockage contient déjà plusieurs systèmes d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - + No Swap Aucun Swap - + Reuse Swap Réutiliser le Swap - + Swap (no Hibernate) Swap (sans hibernation) - + Swap (with Hibernate) Swap (avec hibernation) - + Swap to file Swap dans un fichier @@ -645,17 +645,17 @@ L'installateur se fermera et les changements seront perdus. ClearMountsJob - + Clear mounts for partitioning operations on %1 Retirer les montages pour les opérations de partitionnement sur %1 - + Clearing mounts for partitioning operations on %1. Libération des montages pour les opérations de partitionnement sur %1. - + Cleared all mounts for %1 Tous les montages ont été retirés pour %1 @@ -663,22 +663,22 @@ L'installateur se fermera et les changements seront perdus. ClearTempMountsJob - + Clear all temporary mounts. Supprimer les montages temporaires. - + Clearing all temporary mounts. Libération des montages temporaires. - + Cannot get list of temporary mounts. Impossible de récupérer la liste des montages temporaires. - + Cleared all temporary mounts. Supprimer les montages temporaires. @@ -705,30 +705,30 @@ L'installateur se fermera et les changements seront perdus. Config - + Set keyboard model to %1.<br/> Configurer le modèle de clavier à %1.<br/> - + Set keyboard layout to %1/%2. Configurer la disposition clavier à %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. La langue du système sera réglée sur %1. - + The numbers and dates locale will be set to %1. Les nombres et les dates seront réglés sur %1. - - - Set timezone to %1/%2.<br/> - Configurer le fuseau horaire à %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ L'installateur se fermera et les changements seront perdus. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Votre nom d'utilisateur est trop long. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Votre nom d'utilisateur doit commencer avec une lettre minuscule ou un underscore. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Seuls les minuscules, nombres, underscores et tirets sont autorisés. + + + + Your hostname is too short. + Le nom d'hôte est trop petit. + + + + Your hostname is too long. + Le nom d'hôte est trop long. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Seuls les lettres, nombres, underscores et tirets sont autorisés. + ContextualProcessJob @@ -958,40 +998,30 @@ L'installateur se fermera et les changements seront perdus. CreateUserJob - + Create user %1 Créer l'utilisateur %1 - + Create user <strong>%1</strong>. Créer l'utilisateur <strong>%1</strong>. - + Creating user %1. Création de l'utilisateur %1. - - Sudoers dir is not writable. - Le répertoire Superutilisateur n'est pas inscriptible. - - - + Cannot create sudoers file for writing. Impossible de créer le fichier sudoers en écriture. - + Cannot chmod sudoers file. Impossible d'exécuter chmod sur le fichier sudoers. - - - Cannot open groups file for reading. - Impossible d'ouvrir le fichier groups en lecture. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ L'installateur se fermera et les changements seront perdus. FillGlobalStorageJob - + Set partition information Configurer les informations de la partition - + Install %1 on <strong>new</strong> %2 system partition. Installer %1 sur le <strong>nouveau</strong> système de partition %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurer la <strong>nouvelle</strong> partition %2 avec le point de montage <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installer %2 sur la partition système %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurer la partition %3 <strong>%1</strong> avec le point de montage <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installer le chargeur de démarrage sur <strong>%1</strong>. - + Setting up mount points. Configuration des points de montage. @@ -1510,12 +1540,12 @@ L'installateur se fermera et les changements seront perdus. KeyboardPage - + Set keyboard model to %1.<br/> Configurer le modèle de clavier à %1.<br/> - + Set keyboard layout to %1/%2. Configurer la disposition clavier à %1/%2. @@ -1572,32 +1602,32 @@ L'installateur se fermera et les changements seront perdus. <h1>Accord de Licence</h1> - + I accept the terms and conditions above. J'accepte les termes et conditions ci-dessus. - + Please review the End User License Agreements (EULAs). Merci de lire les Contrats de Licence Utilisateur Final (CLUFs). - + This setup procedure will install proprietary software that is subject to licensing terms. La procédure de configuration va installer des logiciels propriétaires qui sont soumis à des accords de licence. - + If you do not agree with the terms, the setup procedure cannot continue. Si vous ne validez pas ces accords, la procédure de configuration ne peut pas continuer. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. La procédure de configuration peut installer des logiciels propriétaires qui sont assujetti à des accords de licence afin de fournir des fonctionnalités supplémentaires et améliorer l'expérience utilisateur. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si vous n'acceptez pas ces termes, les logiciels propriétaires ne seront pas installés, et des alternatives open source seront utilisés à la place. @@ -1673,41 +1703,26 @@ L'installateur se fermera et les changements seront perdus. LocalePage - + Region: Région : - + Zone: Zone : - - + + &Change... &Modifier... - - - The system language will be set to %1. - La langue du système sera réglée sur %1. - - - - The numbers and dates locale will be set to %1. - Les nombres et les dates seront réglés sur %1. - - - - Set timezone to %1/%2.<br/> - Configurer le fuseau horaire à %1/%2.<br/> - LocaleQmlViewStep - + Location Emplacement @@ -1715,7 +1730,7 @@ L'installateur se fermera et les changements seront perdus. LocaleViewStep - + Location Localisation @@ -1777,7 +1792,7 @@ L'installateur se fermera et les changements seront perdus. Map - + 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. @@ -2178,7 +2193,7 @@ L'installateur se fermera et les changements seront perdus. Erreur inconnue - + Password is empty Le mot de passe est vide @@ -2517,112 +2532,112 @@ L'installateur se fermera et les changements seront perdus. Récupération des informations système… - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Installer %1 <strong>à côté</strong>d'un autre système d'exploitation. - + <strong>Erase</strong> disk and install %1. <strong>Effacer</strong> le disque et installer %1. - + <strong>Replace</strong> a partition with %1. <strong>Remplacer</strong> une partition avec %1. - + <strong>Manual</strong> partitioning. Partitionnement <strong>manuel</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installer %1 <strong>à côté</strong> d'un autre système d'exploitation sur le disque <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Effacer</strong> le disque <strong>%2</strong> (%3) et installer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Remplacer</strong> une partition sur le disque <strong>%2</strong> (%3) avec %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partitionnement <strong>manuel</strong> sur le disque <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disque <strong>%1</strong> (%2) - + Current: Actuel : - + After: Après : - + No EFI system partition configured Aucune partition système EFI configurée - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Drapeau de partition système EFI non configuré - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partition d'amorçage non chiffrée. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Une partition d'amorçage distincte a été configurée avec une partition racine chiffrée, mais la partition d'amorçage n'est pas chiffrée. <br/> <br/> Il y a des problèmes de sécurité avec ce type d'installation, car des fichiers système importants sont conservés sur une partition non chiffrée <br/> Vous pouvez continuer si vous le souhaitez, mais le déverrouillage du système de fichiers se produira plus tard au démarrage du système. <br/> Pour chiffrer la partition d'amorçage, revenez en arrière et recréez-la, en sélectionnant <strong> Chiffrer </ strong> dans la partition Fenêtre de création. - + has at least one disk device available. a au moins un disque disponible. - + There are no partitions to install on. Il n'y a pas de partition pour l'installation @@ -2671,17 +2686,17 @@ Vous pouvez obtenir un aperçu des différentes apparences en cliquant sur celle PreserveFiles - + Saving files for later ... Sauvegarde des fichiers en cours pour plus tard... - + No files configured to save for later. Aucun fichier de sélectionné pour sauvegarde ultérieure. - + Not all of the configured files could be preserved. Certains des fichiers configurés n'ont pas pu être préservés. @@ -3164,29 +3179,29 @@ Sortie SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurer le modèle de clavier à %1, la disposition des touches à %2-%3 - + Failed to write keyboard configuration for the virtual console. Échec de l'écriture de la configuration clavier pour la console virtuelle. - - - + + + Failed to write to %1 Échec de l'écriture sur %1 - + Failed to write keyboard configuration for X11. Échec de l'écriture de la configuration clavier pour X11. - + Failed to write keyboard configuration to existing /etc/default directory. Impossible d'écrire la configuration du clavier dans le dossier /etc/default existant. @@ -3419,28 +3434,28 @@ Sortie TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3448,28 +3463,28 @@ Sortie TrackingMachineUpdateManagerJob - + Machine feedback Rapport de la machine - + Configuring machine feedback. Configuration en cours du rapport de la machine. - - + + Error in machine feedback configuration. Erreur dans la configuration du rapport de la machine. - + Could not configure machine feedback correctly, script error %1. Echec pendant la configuration du rapport de machine, erreur de script %1. - + Could not configure machine feedback correctly, Calamares error %1. Impossible de mettre en place le rapport d'utilisateurs, erreur %1. @@ -3528,47 +3543,17 @@ Sortie UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>si plusieurs personnes utilisent cet ordinateur, vous pourrez créer plusieurs comptes après la configuration.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>si plusieurs personnes utilisent cet ordinateur, vous pourrez créer plusieurs comptes après l'installation.</small> - - Your username is too long. - Votre nom d'utilisateur est trop long. - - - - Your username must start with a lowercase letter or underscore. - Votre nom d'utilisateur doit commencer avec une lettre minuscule ou un underscore. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Seuls les minuscules, nombres, underscores et tirets sont autorisés. - - - - Your hostname is too short. - Le nom d'hôte est trop petit. - - - - Your hostname is too long. - Le nom d'hôte est trop long. - - - - Only letters, numbers, underscore and hyphen are allowed. - Seuls les lettres, nombres, underscores et tirets sont autorisés. - - - + Your passwords do not match! Vos mots de passe ne correspondent pas ! @@ -3576,7 +3561,7 @@ Sortie UsersViewStep - + Users Utilisateurs @@ -3789,19 +3774,19 @@ Sortie i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3809,44 +3794,44 @@ Sortie keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3854,17 +3839,7 @@ Sortie localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index 17390b5e3..e46a52d5e 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index b45067b13..7288e445f 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -221,7 +221,7 @@ - + Loading failed. @@ -258,170 +258,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Erro na instalación - + Would you like to paste the install log to the web? - + Error Erro - - + + &Yes &Si - - + + &No &Non - + &Close &Pechar - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Fallou a inicialización do Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. Non é posíbel instalar %1. O calamares non foi quen de cargar todos os módulos configurados. Este é un problema relacionado con como esta distribución utiliza o Calamares. - + <br/>The following modules could not be loaded: <br/> Non foi posíbel cargar os módulos seguintes: - + Continue with setup? Continuar coa posta en marcha? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está a piques de realizar cambios no seu disco para instalar %2.<br/><strong>Estes cambios non poderán desfacerse.</strong> - + &Set up now - + &Install now &Instalar agora - + Go &back Ir &atrás - + &Set up - + &Install &Instalar - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Completouse a instalacion. Peche o instalador - + Cancel setup without changing the system. - + Cancel installation without changing the system. Cancelar a instalación sen cambiar o sistema - + &Next &Seguinte - + &Back &Atrás - + &Done &Feito - + &Cancel &Cancelar - + Cancel setup? - + Cancel installation? Cancelar a instalación? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Desexa realmente cancelar o proceso actual de instalación? @@ -483,12 +483,12 @@ O instalador pecharase e perderanse todos os cambios. &Cancelar - + %1 Setup Program - + %1 Installer Instalador de %1 @@ -515,9 +515,9 @@ O instalador pecharase e perderanse todos os cambios. - - - + + + Current: Actual: @@ -528,115 +528,115 @@ O instalador pecharase e perderanse todos os cambios. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionado manual</strong><br/> Pode crear o redimensionar particións pola súa conta. - + Reuse %1 as home partition for %2. Reutilizar %1 como partición home para %2 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Seleccione unha partición para acurtar, logo empregue a barra para redimensionala</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Localización do cargador de arranque: - + <strong>Select a partition to install on</strong> <strong>Seleccione unha partición para instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Non foi posible atopar unha partición de sistema de tipo EFI. Por favor, volva atrás e empregue a opción de particionado manual para crear unha en %1. - + The EFI system partition at %1 will be used for starting %2. A partición EFI do sistema en %1 será usada para iniciar %2. - + EFI system partition: Partición EFI do sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esta unidade de almacenamento non semella ter un sistema operativo instalado nela. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Borrar disco</strong><br/>Esto <font color="red">eliminará</font> todos os datos gardados na unidade de almacenamento seleccionada. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar a carón</strong><br/>O instalador encollerá a partición para facerlle sitio a %1 - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Substituír a partición</strong><br/>Substitúe a partición con %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. A unidade de almacenamento ten %1 nela. Que desexa facer?<br/>Poderá revisar e confirmar a súa elección antes de que se aplique algún cambio á unidade. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esta unidade de almacenamento xa ten un sistema operativo instalado nel. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esta unidade de almacenamento ten múltiples sistemas operativos instalados nela. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -644,17 +644,17 @@ O instalador pecharase e perderanse todos os cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Desmontar os volumes para levar a cabo as operacións de particionado en %1 - + Clearing mounts for partitioning operations on %1. Desmontando os volumes para levar a cabo as operacións de particionado en %1. - + Cleared all mounts for %1 Os volumes para %1 foron desmontados @@ -662,22 +662,22 @@ O instalador pecharase e perderanse todos os cambios. ClearTempMountsJob - + Clear all temporary mounts. Limpar todas as montaxes temporais. - + Clearing all temporary mounts. Limpando todas as montaxes temporais. - + Cannot get list of temporary mounts. Non se pode obter unha lista dos montaxes temporais. - + Cleared all temporary mounts. Desmontados todos os volumes temporais. @@ -704,30 +704,30 @@ O instalador pecharase e perderanse todos os cambios. Config - + Set keyboard model to %1.<br/> Seleccionado modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Seleccionada a disposición do teclado a %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. A linguaxe do sistema será establecida a %1. - + The numbers and dates locale will be set to %1. A localización de números e datas será establecida a %1. - - - Set timezone to %1/%2.<br/> - Establecer a zona de tempo a %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ O instalador pecharase e perderanse todos os cambios. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + O nome de usuario é demasiado longo. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + O nome do computador é demasiado curto. + + + + Your hostname is too long. + O nome do computador é demasiado longo. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -957,40 +997,30 @@ O instalador pecharase e perderanse todos os cambios. CreateUserJob - + Create user %1 Crear o usuario %1 - + Create user <strong>%1</strong>. Crear usario <strong>%1</strong> - + Creating user %1. Creación do usuario %1. - - Sudoers dir is not writable. - O directorio sudoers non ten permisos de escritura. - - - + Cannot create sudoers file for writing. Non foi posible crear o arquivo de sudoers. - + Cannot chmod sudoers file. Non se puideron cambiar os permisos do arquivo sudoers. - - - Cannot open groups file for reading. - Non foi posible ler o arquivo grupos. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ O instalador pecharase e perderanse todos os cambios. FillGlobalStorageJob - + Set partition information Poñela información da partición - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 nunha <strong>nova</strong> partición do sistema %2 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configure unha <strong>nova</strong> partición %2 con punto de montaxe <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 na partición do sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurala partición %3 <strong>%1</strong> con punto de montaxe <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar o cargador de arranque en <strong>%1</strong>. - + Setting up mount points. Configuralos puntos de montaxe. @@ -1509,12 +1539,12 @@ O instalador pecharase e perderanse todos os cambios. KeyboardPage - + Set keyboard model to %1.<br/> Seleccionado modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Seleccionada a disposición do teclado a %1/%2. @@ -1571,32 +1601,32 @@ O instalador pecharase e perderanse todos os cambios. - + I accept the terms and conditions above. Acepto os termos e condicións anteriores. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1672,41 +1702,26 @@ O instalador pecharase e perderanse todos os cambios. LocalePage - + Region: Rexión: - + Zone: Zona: - - + + &Change... &Cambio... - - - The system language will be set to %1. - A linguaxe do sistema será establecida a %1. - - - - The numbers and dates locale will be set to %1. - A localización de números e datas será establecida a %1. - - - - Set timezone to %1/%2.<br/> - Establecer a zona de tempo a %1/%2.<br/> - LocaleQmlViewStep - + Location Localización... @@ -1714,7 +1729,7 @@ O instalador pecharase e perderanse todos os cambios. LocaleViewStep - + Location Localización... @@ -1776,7 +1791,7 @@ O instalador pecharase e perderanse todos os cambios. Map - + 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. @@ -2177,7 +2192,7 @@ O instalador pecharase e perderanse todos os cambios. Erro descoñecido - + Password is empty @@ -2516,112 +2531,112 @@ O instalador pecharase e perderanse todos os cambios. A reunir a información do sistema... - + Partitions Particións - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>a carón</strong> doutro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Limpar</strong> o disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituír</strong> unha partición por %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>a carón</strong> doutro sistema operativo no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Limpar</strong> o disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituír</strong> unha partición do disco <strong>%2</strong> (%3) por %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>manual</strong> do disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Actual: - + After: Despois: - + No EFI system partition configured Non hai ningunha partición de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set A bandeira da partición de sistema EFI non está configurada - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted A partición de arranque non está cifrada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Configurouse unha partición de arranque separada xunto cunha partición raíz cifrada, mais a partición raíz non está cifrada.<br/><br/>Con este tipo de configuración preocupa a seguranza porque nunha partición sen cifrar grávanse ficheiros de sistema importantes.<br/>Pode continuar, se así o desexa, mais o desbloqueo do sistema de ficheiros producirase máis tarde durante o arranque do sistema.<br/>Para cifrar unha partición raíz volva atrás e créea de novo, seleccionando <strong>Cifrar</strong> na xanela de creación de particións. - + has at least one disk device available. - + There are no partitions to install on. @@ -2669,17 +2684,17 @@ O instalador pecharase e perderanse todos os cambios. PreserveFiles - + Saving files for later ... A gardar ficheiros para máis tarde... - + No files configured to save for later. Non hai ficheiros configurados que gardar para máis tarde - + Not all of the configured files could be preserved. Non foi posíbel manter todos os ficheiros configurados. @@ -3162,29 +3177,29 @@ Saída: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurar modelo de teclado a %1, distribución a %2-%3 - + Failed to write keyboard configuration for the virtual console. Houbo un fallo ao escribir a configuración do teclado para a consola virtual. - - - + + + Failed to write to %1 Non pode escribir en %1 - + Failed to write keyboard configuration for X11. Non foi posíbel escribir a configuración do teclado para X11. - + Failed to write keyboard configuration to existing /etc/default directory. Non foi posíbel escribir a configuración do teclado no directorio /etc/default existente. @@ -3417,28 +3432,28 @@ Saída: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Saída: TrackingMachineUpdateManagerJob - + Machine feedback Información fornecida pola máquina - + Configuring machine feedback. Configuración das informacións fornecidas pola máquina. - - + + Error in machine feedback configuration. Produciuse un erro na configuración das información fornecidas pola máquina. - + Could not configure machine feedback correctly, script error %1. Non foi posíbel configurar correctamente as informacións fornecidas pola máquina; erro de script %1. - + Could not configure machine feedback correctly, Calamares error %1. Non foi posíbel configurar correctamente as informacións fornecidas pola máquin; erro de Calamares %1. @@ -3526,47 +3541,17 @@ Saída: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - O nome de usuario é demasiado longo. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - O nome do computador é demasiado curto. - - - - Your hostname is too long. - O nome do computador é demasiado longo. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Os contrasinais non coinciden! @@ -3574,7 +3559,7 @@ Saída: UsersViewStep - + Users Usuarios @@ -3787,19 +3772,19 @@ Saída: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3807,44 +3792,44 @@ Saída: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3852,17 +3837,7 @@ Saída: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index 765cd21d3..9ea3fad7d 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index ee4e36915..a621e5b6d 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -220,7 +220,7 @@ צעד QML‏ <i>%1</i>. - + Loading failed. הטעינה נכשלה… @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed ההתקנה נכשלה - + Installation Failed ההתקנה נכשלה - + Would you like to paste the install log to the web? להדביק את יומן ההתקנה לאינטרנט? - + Error שגיאה - - + + &Yes &כן - - + + &No &לא - + &Close &סגירה - + Install Log Paste URL כתובת הדבקת יומן התקנה - + The upload was unsuccessful. No web-paste was done. ההעלאה לא הצליחה. לא בוצעה הדבקה לאינטרנט. - + Calamares Initialization Failed הפעלת Calamares נכשלה - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. אין אפשרות להתקין את %1. ל־Calamares אין אפשרות לטעון את המודולים המוגדרים. מדובר בתקלה באופן בו ההפצה משתמשת ב־Calamares. - + <br/>The following modules could not be loaded: <br/>לא ניתן לטעון את המודולים הבאים: - + Continue with setup? להמשיך בהתקנה? - + Continue with installation? להמשיך בהתקנה? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> תכנית ההתקנה של %1 עומדת לבצע שינויים בכונן הקשיח שלך לטובת התקנת %2.<br/><strong>לא תהיה לך אפשרות לבטל את השינויים האלה.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> אשף ההתקנה של %1 הולך לבצע שינויים בכונן שלך לטובת התקנת %2.<br/><strong>לא תוכל לבטל את השינויים הללו.</strong> - + &Set up now להת&קין כעת - + &Install now להת&קין כעת - + Go &back ח&זרה - + &Set up להת&קין - + &Install הת&קנה - + Setup is complete. Close the setup program. ההתקנה הושלמה. נא לסגור את תכנית ההתקנה. - + The installation is complete. Close the installer. תהליך ההתקנה הושלם. נא לסגור את אשף ההתקנה. - + Cancel setup without changing the system. ביטול ההתקנה ללא שינוי המערכת. - + Cancel installation without changing the system. ביטול התקנה ללא ביצוע שינוי במערכת. - + &Next הב&א - + &Back ה&קודם - + &Done &סיום - + &Cancel &ביטול - + Cancel setup? לבטל את ההתקנה? - + Cancel installation? לבטל את ההתקנה? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. לבטל את תהליך ההתקנה הנוכחי? תכנית ההתקנה תצא וכל השינויים יאבדו. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. לבטל את תהליך ההתקנה? @@ -488,12 +488,12 @@ The installer will quit and all changes will be lost. &ביטול - + %1 Setup Program תכנית התקנת %1 - + %1 Installer אשף התקנה של %1 @@ -520,9 +520,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: נוכחי: @@ -533,115 +533,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>חלוקה ידנית למחיצות</strong><br/>באפשרותך ליצור או לשנות גודל מחיצות בעצמך. טבלת מחיצות מסוג GPT ו<strong>מחיצת ‎/boot מסוג fat32 בגודל 512 מ״ב היא הכרח להתקנות מסוג UEFI</strong>, ניתן להשתמש במחיצה קיימת מבלי לפרמט או ליצור אחת. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>הגדרת מחיצות באופן ידני</strong><br/>ניתן ליצור או לשנות את גודל המחיצות בעצמך. - + Reuse %1 as home partition for %2. להשתמש ב־%1 כמחיצת הבית (home) עבור %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>ראשית יש לבחור מחיצה לכיווץ, לאחר מכן לגרור את הסרגל התחתון כדי לשנות את גודלה</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 תכווץ לכדי %2MiB ותיווצר מחיצה חדשה בגודל %3MiB עבור %4. - + Boot loader location: מיקום מנהל אתחול המערכת: - + <strong>Select a partition to install on</strong> <strong>נא לבחור מחיצה כדי להתקין עליה</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. במערכת זו לא נמצאה מחיצת מערכת EFI. נא לחזור ולהשתמש ביצירת מחיצות באופן ידני כדי להגדיר את %1. - + The EFI system partition at %1 will be used for starting %2. מחיצת מערכת ה־EFI שב־%1 תשמש עבור טעינת %2. - + EFI system partition: מחיצת מערכת EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. לא נמצאה מערכת הפעלה על התקן אחסון זה. מה ברצונך לעשות?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>מחיקת כונן</strong><br/> פעולה זו <font color="red">תמחק</font> את כל המידע השמור על התקן האחסון הנבחר. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>התקנה לצד</strong><br/> אשף ההתקנה יכווץ מחיצה כדי לפנות מקום לטובת %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>החלפת מחיצה</strong><br/> ביצוע החלפה של המחיצה ב־%1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. בהתקן אחסון זה נמצאה %1. מה ברצונך לעשות?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. כבר קיימת מערכת הפעלה על התקן האחסון הזה. כיצד להמשיך?<br/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ישנן מגוון מערכות הפעלה על התקן אחסון זה. איך להמשיך? <br/>ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. - + No Swap בלי החלפה - + Reuse Swap שימוש מחדש בהחלפה - + Swap (no Hibernate) החלפה (ללא תרדמת) - + Swap (with Hibernate) החלפה (עם תרדמת) - + Swap to file החלפה לקובץ @@ -649,17 +649,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 מחיקת נקודות עיגון עבור פעולות חלוקה למחיצות על %1. - + Clearing mounts for partitioning operations on %1. מתבצעת מחיקה של נקודות עיגון לטובת פעולות חלוקה למחיצות על %1. - + Cleared all mounts for %1 כל נקודות העיגון על %1 נמחקו. @@ -667,22 +667,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. מחיקת כל נקודות העיגון הזמניות. - + Clearing all temporary mounts. מבצע מחיקה של כל נקודות העיגון הזמניות. - + Cannot get list of temporary mounts. לא ניתן לשלוף רשימה של כל נקודות העיגון הזמניות. - + Cleared all temporary mounts. בוצעה מחיקה של כל נקודות העיגון הזמניות. @@ -709,30 +709,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> הגדרת דגם המקלדת בתור %1.<br/> - + Set keyboard layout to %1/%2. הגדרת פריסת לוח המקשים בתור %1/%2. - + + Set timezone to %1/%2. + הגדרת אזור הזמן לכדי %1/%2. + + + The system language will be set to %1. שפת המערכת תוגדר להיות %1. - + The numbers and dates locale will be set to %1. תבנית של המספרים והתאריכים של המיקום יוגדרו להיות %1. - - - Set timezone to %1/%2.<br/> - הגדרת אזור זמן בתור %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -798,6 +798,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>ברוך בואך לתכנית התקנת %1</h1> + + + Your username is too long. + שם המשתמש ארוך מדי. + + + + '%1' is not allowed as username. + אסור להשתמש ב־‚%1’ כשם משתמש. + + + + Your username must start with a lowercase letter or underscore. + שם המשתמש שלך חייב להתחיל באות קטנה או בקו תחתי. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + מותר להשתמש רק באותיות קטנות, ספרות, קווים תחתיים ומינוסים. + + + + Your hostname is too short. + שם המחשב קצר מדי. + + + + Your hostname is too long. + שם המחשב ארוך מדי. + + + + '%1' is not allowed as hostname. + אסור להשתמש ב־‚%1’ כשם מארח. + + + + Only letters, numbers, underscore and hyphen are allowed. + מותר להשתמש רק באותיות, ספרות, קווים תחתיים ומינוסים. + ContextualProcessJob @@ -962,40 +1002,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 יצירת משתמש %1 - + Create user <strong>%1</strong>. יצירת משתמש <strong>%1</strong>. - + Creating user %1. נוצר משתמש %1. - - Sudoers dir is not writable. - תיקיית מנהלי המערכת לא ניתנת לכתיבה. - - - + Cannot create sudoers file for writing. לא ניתן ליצור את קובץ מנהלי המערכת לכתיבה. - + Cannot chmod sudoers file. לא ניתן לשנות את מאפייני קובץ מנהלי המערכת. - - - Cannot open groups file for reading. - לא ניתן לפתוח את קובץ הקבוצות לקריאה. - CreateVolumeGroupDialog @@ -1233,37 +1263,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information הגדרת מידע עבור המחיצה - + Install %1 on <strong>new</strong> %2 system partition. התקנת %1 על מחיצת מערכת <strong>חדשה</strong> מסוג %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. הגדרת מחיצת מערכת <strong>חדשה</strong> מסוג %2 עם נקודת העיגון <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. התקנת %2 על מחיצת מערכת <strong>%1</strong> מסוג %3. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. התקן מחיצה מסוג %3 <strong>%1</strong> עם נקודת העיגון <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. התקנת מנהל אתחול מערכת על <strong>%1</strong>. - + Setting up mount points. נקודות עיגון מוגדרות. @@ -1514,12 +1544,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> הגדרת דגם המקלדת בתור %1.<br/> - + Set keyboard layout to %1/%2. הגדרת פריסת לוח המקשים בתור %1/%2. @@ -1576,32 +1606,32 @@ The installer will quit and all changes will be lost. <h1>הסכם רישוי</h1> - + I accept the terms and conditions above. התנאים וההגבלות שלמעלה מקובלים עלי. - + Please review the End User License Agreements (EULAs). נא לסקור בקפידה את הסכמי רישוי משתמש הקצה (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. תהליך התקנה זה יתקין תכנה קניינית שכפופה לתנאי רישוי. - + If you do not agree with the terms, the setup procedure cannot continue. אם התנאים האלה אינם מקובלים עליך, אי אפשר להמשיך בתהליך ההתקנה. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. תהליך התקנה זה יכול להתקין תכנה קניינית שכפופה לתנאי רישוי כדי לספק תכונות נוספות ולשפר את חוויית המשתמש. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. אם תנאים אלו אינם מקובלים עליך, לא תותקן תכנה קניינית וייעשה שימוש בחלופות בקוד פתוח במקום. @@ -1677,41 +1707,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: איזור: - + Zone: מיקום: - - + + &Change... ה&חלפה… - - - The system language will be set to %1. - שפת המערכת תוגדר להיות %1. - - - - The numbers and dates locale will be set to %1. - תבנית של המספרים והתאריכים של המיקום יוגדרו להיות %1. - - - - Set timezone to %1/%2.<br/> - הגדרת אזור זמן בתור %1/%2.<br/> - LocaleQmlViewStep - + Location מיקום @@ -1719,7 +1734,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location מיקום @@ -1781,7 +1796,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2184,7 +2199,7 @@ The installer will quit and all changes will be lost. שגיאה לא ידועה - + Password is empty הססמה ריקה @@ -2523,112 +2538,112 @@ The installer will quit and all changes will be lost. נאסף מידע על המערכת… - + Partitions מחיצות - + Install %1 <strong>alongside</strong> another operating system. להתקין את %1 <strong>לצד</strong> מערכת הפעלה אחרת. - + <strong>Erase</strong> disk and install %1. <strong>למחוק</strong> את הכונן ולהתקין את %1. - + <strong>Replace</strong> a partition with %1. <strong>החלפת</strong> מחיצה עם %1. - + <strong>Manual</strong> partitioning. להגדיר מחיצות באופן <strong>ידני</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). להתקין את %1 <strong>לצד</strong> מערכת הפעלה אחרת על כונן <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>למחוק</strong> את הכונן <strong>%2</strong> (%3) ולהתקין את %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>החלפת</strong> מחיצה על כונן <strong>%2</strong> (%3) ב־%1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). חלוקה למחיצות באופן <strong>ידני</strong> על כונן <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) כונן <strong>%1</strong> (%2) - + Current: נוכחי: - + After: לאחר: - + No EFI system partition configured לא הוגדרה מחיצת מערכת EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. מחיצת מערכת EFI נדרשת כדי להפעיל את %1.<br/><br/> כדי להגדיר מחיצת מערכת EFI, עליך לחזור ולבחור או ליצור מערכת קבצים מסוג FAT32 עם סימון <strong>%3</strong> פעיל ועם נקודת עיגון <strong>%2</strong>.<br/><br/> ניתן להמשיך ללא הגדרת מחיצת מערכת EFI אך טעינת המערכת עשויה להיכשל. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. לצורך הפעלת %1 נדרשת מחיצת מערכת EFI.<br/><br/> הוגדרה מחיצה עם נקודת עיגון <strong>%2</strong> אך לא הוגדר סימון <strong>%3</strong>.<br/> כדי לסמן את המחיצה, עליך לחזור ולערוך את המחיצה.<br/><br/> ניתן להמשיך ללא הוספת הסימון אך טעינת המערכת עשויה להיכשל. - + EFI system partition flag not set לא מוגדר סימון מחיצת מערכת EFI - + Option to use GPT on BIOS אפשרות להשתמש ב־GPT או ב־BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. טבלת מחיצות מסוג GPT היא האפשרות הטובה ביותר בכל המערכות. תכנית התקנה זו תומכת גם במערכות מסוג BIOS.<br/><br/>כדי להגדיר טבלת מחיצות מסוג GPT על גבי BIOS, (אם זה טרם בוצע) יש לחזור ולהגדיר את טבלת המחיצות ל־GPT, לאחר מכן יש ליצור מחיצה של 8 מ״ב ללא פירמוט עם הדגלון <strong>bios_grub</strong> פעיל.<br/><br/>מחיצה בלתי מפורמטת בגודל 8 מ״ב נחוצה לטובת הפעלת %1 על מערכת מסוג BIOS עם GPT. - + Boot partition not encrypted מחיצת טעינת המערכת (Boot) אינה מוצפנת. - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. מחיצת טעינה, boot, נפרדת הוגדרה יחד עם מחיצת מערכת ההפעלה, root, מוצפנת, אך מחיצת הטעינה לא הוצפנה.<br/><br/> ישנן השלכות בטיחותיות עם התצורה שהוגדרה, מכיוון שקבצי מערכת חשובים נשמרים על מחיצה לא מוצפנת.<br/>תוכל להמשיך אם תרצה, אך שחרור מערכת הקבצים יתרחש מאוחר יותר כחלק מטעינת המערכת.<br/>בכדי להצפין את מחיצת הטעינה, חזור וצור אותה מחדש, על ידי בחירה ב <strong>הצפן</strong> בחלונית יצירת המחיצה. - + has at least one disk device available. יש לפחות התקן כונן אחד זמין. - + There are no partitions to install on. אין מחיצות להתקין עליהן. @@ -2676,17 +2691,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... הקבצים נשמרים להמשך… - + No files configured to save for later. לא הוגדרו קבצים לשמירה בהמשך. - + Not all of the configured files could be preserved. לא ניתן לשמר את כל הקבצים שהוגדרו. @@ -3172,29 +3187,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 הגדר דגם מקלדת ל %1, פריסת לוח מקשים ל %2-%3 - + Failed to write keyboard configuration for the virtual console. נכשלה כתיבת הגדרת מקלדת למסוף הוירטואלי. - - - + + + Failed to write to %1 נכשלה כתיבה ל %1 - + Failed to write keyboard configuration for X11. נכשלה כתיבת הגדרת מקלדת עבור X11. - + Failed to write keyboard configuration to existing /etc/default directory. נכשלה כתיבת הגדרת מקלדת לתיקיה קיימת /etc/default. @@ -3427,28 +3442,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback משוב משתמש KDE - + Configuring KDE user feedback. משוב המשתמש ב־KDE מוגדר. - - + + Error in KDE user feedback configuration. שגיאה בהגדרות משוב המשתמש ב־KDE. - + Could not configure KDE user feedback correctly, script error %1. לא ניתן להגדיר את משוב המשתמש ב־KDE כראוי, שגיאת סקריפט %1. - + Could not configure KDE user feedback correctly, Calamares error %1. לא ניתן להגדיר את משוב המשתמש ב־KDE כראוי, שגיאת Calamares‏ %1. @@ -3456,28 +3471,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback משוב בנושא עמדת המחשב - + Configuring machine feedback. מגדיר משוב בנושא עמדת המחשב. - - + + Error in machine feedback configuration. שגיאה בעת הגדרת המשוב בנושא עמדת המחשב. - + Could not configure machine feedback correctly, script error %1. לא ניתן להגדיר את המשוב בנושא עמדת המחשב באופן תקין. שגיאת הרצה %1. - + Could not configure machine feedback correctly, Calamares error %1. לא ניתן להגדיר את המשוב בנושא עמדת המחשב באופן תקין. שגיאת Calamares %1. @@ -3536,47 +3551,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>אם מחשב זה מיועד לשימוש לטובת למעלה ממשתמש אחד, ניתן ליצור מגוון חשבונות לאחר ההתקנה.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>אם מחשב זה מיועד לשימוש לטובת למעלה ממשתמש אחד, ניתן ליצור מגוון חשבונות לאחר ההתקנה.</small> - - Your username is too long. - שם המשתמש ארוך מדי. - - - - Your username must start with a lowercase letter or underscore. - שם המשתמש שלך חייב להתחיל באות קטנה או בקו תחתי. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - מותר להשתמש רק באותיות קטנות, ספרות, קווים תחתיים ומינוסים. - - - - Your hostname is too short. - שם המחשב קצר מדי. - - - - Your hostname is too long. - שם המחשב ארוך מדי. - - - - Only letters, numbers, underscore and hyphen are allowed. - מותר להשתמש רק באותיות, ספרות, קווים תחתיים ומינוסים. - - - + Your passwords do not match! הססמאות לא תואמות! @@ -3584,7 +3569,7 @@ Output: UsersViewStep - + Users משתמשים @@ -3808,21 +3793,21 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>שפות</h1> </br> תבנית המערכת המקומית משפיעה על השפה ועל ערכת התווים של מגוון רכיבים במנשק המשתמש. ההגדרה הנוכחית היא <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>תבניות מקומיות</h1> </br> - תבנית המערכת המקומית משפיעה על השפה ועל ערכת התווים של מגוון רכיבים במנשק המשתמש. ההגדרה הנוכחית היא <strong>%1</strong>. + הגדרות התבנית המקומית של המערכת תשפיע על תצורת המספרים והתאריכים. ההגדרה הנוכחית היא <strong>%1</strong>. - + Back חזרה @@ -3830,44 +3815,44 @@ Output: keyboardq - + Keyboard Model דגם מקלדת - + Pick your preferred keyboard model or use the default one based on the detected hardware נא לבחור את דגם המקלדת המועדף עליך או להשתמש בבררת המחדל על בסיס החומרה שזוהתה - + Refresh רענון - - + + Layouts פריסות - - + + Keyboard Layout פריסת מקלדת - + Models דגמים - + Variants הגוונים - + Test your keyboard בדיקת המקלדת שלך @@ -3875,17 +3860,7 @@ Output: localeq - - System language set to %1 - שפת המערכת הוגדרה ל%1. - - - - Numbers and dates locale set to %1 - התבנית המקומית של המספרים והתאריכים הוגדרה לכדי %1 - - - + Change החלפה diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 780717647..c651eaea9 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -220,7 +220,7 @@ QML चरण <i>%1</i>। - + Loading failed. लोड करना विफल रहा। @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed सेटअप विफल रहा - + Installation Failed इंस्टॉल विफल रहा। - + Would you like to paste the install log to the web? क्या आप इंस्टॉल प्रक्रिया की लॉग फ़ाइल इंटरनेट पर पेस्ट करना चाहेंगे ? - + Error त्रुटि - - + + &Yes हाँ (&Y) - - + + &No नहीं (&N) - + &Close बंद करें (&C) - + Install Log Paste URL इंस्टॉल प्रक्रिया की लॉग फ़ाइल पेस्ट करें - + The upload was unsuccessful. No web-paste was done. अपलोड विफल रहा। इंटरनेट पर पेस्ट नहीं हो सका। - + Calamares Initialization Failed Calamares का आरंभीकरण विफल रहा - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 इंस्टॉल नहीं किया जा सका। Calamares सभी विन्यस्त मॉड्यूल लोड करने में विफल रहा। यह आपके लिनक्स वितरण द्वारा Calamares के उपयोग से संबंधित एक समस्या है। - + <br/>The following modules could not be loaded: <br/>निम्नलिखित मॉड्यूल लोड नहीं हो सकें : - + Continue with setup? सेटअप करना जारी रखें? - + Continue with installation? इंस्टॉल प्रक्रिया जारी रखें? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %2 सेटअप करने हेतु %1 सेटअप प्रोग्राम आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %2 इंस्टॉल करने के लिए %1 इंस्टॉलर आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> - + &Set up now अभी सेटअप करें (&S) - + &Install now अभी इंस्टॉल करें (&I) - + Go &back वापस जाएँ (&b) - + &Set up सेटअप करें (&S) - + &Install इंस्टॉल करें (&I) - + Setup is complete. Close the setup program. सेटअप पूर्ण हुआ। सेटअप प्रोग्राम बंद कर दें। - + The installation is complete. Close the installer. इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। - + Cancel setup without changing the system. सिस्टम में बदलाव किये बिना सेटअप रद्द करें। - + Cancel installation without changing the system. सिस्टम में बदलाव किये बिना इंस्टॉल रद्द करें। - + &Next आगे (&N) - + &Back वापस (&B) - + &Done हो गया (&D) - + &Cancel रद्द करें (&C) - + Cancel setup? सेटअप रद्द करें? - + Cancel installation? इंस्टॉल रद्द करें? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. क्या आप वाकई वर्तमान सेटअप प्रक्रिया रद्द करना चाहते हैं? सेटअप प्रोग्राम बंद हो जाएगा व सभी बदलाव नष्ट। - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. क्या आप वाकई वर्तमान इंस्टॉल प्रक्रिया रद्द करना चाहते हैं? @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. रद्द करें (&C) - + %1 Setup Program %1 सेटअप प्रोग्राम - + %1 Installer %1 इंस्टॉलर @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: मौजूदा : @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>मैनुअल विभाजन</strong><br/>आप स्वयं भी विभाजन बना व उनका आकार बदल सकते है। UEFI इंस्टॉल के लिए GPT विभाजन तालिका और <strong>fat32 512Mb का /boot विभाजन होना जरूरी है</strong>, या तो पहले से मौजूद को ही बिना फॉर्मेट किए इस्तेमाल करें या फिर नया बनाएँ। + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>मैनुअल विभाजन</strong><br/> आप स्वयं भी विभाजन बना व उनका आकार बदल सकते है। - + Reuse %1 as home partition for %2. %2 के होम विभाजन के लिए %1 को पुनः उपयोग करें। - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>छोटा करने के लिए विभाजन चुनें, फिर नीचे bar से उसका आकर सेट करें</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 को छोटा करके %2MiB किया जाएगा व %4 हेतु %3MiB का एक नया विभाजन बनेगा। - + Boot loader location: बूट लोडर का स्थान: - + <strong>Select a partition to install on</strong> <strong>इंस्टॉल के लिए विभाजन चुनें</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. इस सिस्टम पर कहीं भी कोई EFI सिस्टम विभाजन नहीं मिला। कृपया वापस जाएँ व %1 को सेट करने के लिए मैनुअल रूप से विभाजन करें। - + The EFI system partition at %1 will be used for starting %2. %1 वाले EFI सिस्टम विभाजन का उपयोग %2 को शुरू करने के लिए किया जाएगा। - + EFI system partition: EFI सिस्टम विभाजन: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. इस डिवाइस पर लगता है कि कोई ऑपरेटिंग सिस्टम नहीं है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>डिस्क का सारा डाटा हटाएँ</strong><br/>इससे चयनित डिवाइस पर मौजूद सारा डाटा <font color="red">हटा</font>हो जाएगा। - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>साथ में इंस्टॉल करें</strong><br/>इंस्टॉलर %1 के लिए स्थान बनाने हेतु एक विभाजन को छोटा कर देगा। - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>विभाजन को बदलें</strong><br/>एक विभाजन को %1 से बदलें। - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. इस डिवाइस पर %1 है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. इस डिवाइस पर पहले से एक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. इस डिवाइस पर एक से अधिक ऑपरेटिंग सिस्टम है। आप क्या करना चाहेंगे?<br/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। - + No Swap कोई स्वैप नहीं - + Reuse Swap स्वैप पुनः उपयोग करें - + Swap (no Hibernate) स्वैप (हाइबरनेशन/सिस्टम सुप्त रहित) - + Swap (with Hibernate) स्वैप (हाइबरनेशन/सिस्टम सुप्त सहित) - + Swap to file स्वैप फाइल बनाएं @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 पर विभाजन कार्य हेतु माउंट हटाएँ - + Clearing mounts for partitioning operations on %1. %1 पर विभाजन कार्य हेतु माउंट हटाएँ जा रहे हैं। - + Cleared all mounts for %1 %1 के लिए सभी माउंट हटा दिए गए @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. सभी अस्थायी माउंट हटाएँ। - + Clearing all temporary mounts. सभी अस्थायी माउंट हटाएँ जा रहे हैं। - + Cannot get list of temporary mounts. अस्थाई माउंट की सूची नहीं मिली। - + Cleared all temporary mounts. सभी अस्थायी माउंट हटा दिए गए। @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> कुंजीपटल का मॉडल %1 सेट करें।<br/> - + Set keyboard layout to %1/%2. कुंजीपटल का अभिन्यास %1/%2 सेट करें। - + + Set timezone to %1/%2. + + + + The system language will be set to %1. सिस्टम भाषा %1 सेट की जाएगी। - + The numbers and dates locale will be set to %1. संख्या व दिनांक स्थानिकी %1 सेट की जाएगी। - - - Set timezone to %1/%2.<br/> - समय क्षेत्र %1%2 पर सेट करें।<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>%1 इंस्टॉलर में आपका स्वागत है</h1> + + + Your username is too long. + आपका उपयोक्ता नाम बहुत लंबा है। + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + आपके उपयोक्ता नाम का आरंभ lowercase अक्षर या अंडरस्कोर(_) से ही होना चाहिए। + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + केवल lowercase अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। + + + + Your hostname is too short. + आपका होस्ट नाम बहुत छोटा है। + + + + Your hostname is too long. + आपका होस्ट नाम बहुत लंबा है। + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + केवल अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 %1 उपयोक्ता बनाएँ - + Create user <strong>%1</strong>. <strong>%1</strong> उपयोक्ता बनाएँ। - + Creating user %1. %1 उपयोक्ता बनाया जा रहा है। - - Sudoers dir is not writable. - Sudoers डायरेक्टरी राइट करने योग्य नहीं है। - - - + Cannot create sudoers file for writing. राइट हेतु sudoers फ़ाइल नहीं बन सकती। - + Cannot chmod sudoers file. sudoers फ़ाइल chmod नहीं की जा सकती। - - - Cannot open groups file for reading. - रीड हेतु groups फ़ाइल खोली नहीं जा सकती। - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information विभाजन संबंधी जानकारी सेट करें - + Install %1 on <strong>new</strong> %2 system partition. <strong>नए</strong> %2 सिस्टम विभाजन पर %1 इंस्टॉल करें। - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. <strong>नया</strong> %2 विभाजन माउंट पॉइंट <strong>%1</strong> के साथ सेट करें। - + Install %2 on %3 system partition <strong>%1</strong>. %3 सिस्टम विभाजन <strong>%1</strong> पर %2 इंस्टॉल करें। - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 विभाजन <strong>%1</strong> माउंट पॉइंट <strong>%2</strong> के साथ सेट करें। - + Install boot loader on <strong>%1</strong>. बूट लोडर <strong>%1</strong> पर इंस्टॉल करें। - + Setting up mount points. माउंट पॉइंट सेट किए जा रहे हैं। @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> कुंजीपटल का मॉडल %1 सेट करें।<br/> - + Set keyboard layout to %1/%2. कुंजीपटल का अभिन्यास %1/%2 सेट करें। @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. <h1>लाइसेंस अनुबंध</h1> - + I accept the terms and conditions above. मैं उपरोक्त नियम व शर्तें स्वीकार करता हूँ। - + Please review the End User License Agreements (EULAs). कृपया लक्षित उपयोक्ता लाइसेंस अनुबंधों (EULAs) की समीक्षा करें। - + This setup procedure will install proprietary software that is subject to licensing terms. यह सेटअप प्रक्रिया लाइसेंस शर्तों के अधीन अमुक्त सॉफ्टवेयर को इंस्टॉल करेगी। - + If you do not agree with the terms, the setup procedure cannot continue. यदि आप शर्तों से असहमत है, तो सेटअप प्रक्रिया जारी नहीं रखी जा सकती। - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. यह सेटअप प्रक्रिया अतिरिक्त सुविधाएँ प्रदान करने व उपयोक्ता अनुभव में वृद्धि हेतु लाइसेंस शर्तों के अधीन अमुक्त सॉफ्टवेयर को इंस्टॉल कर सकती है। - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. यदि आप शर्तों से असहमत है, तो अमुक्त सॉफ्टवेयर इंस्टाल नहीं किया जाएगा व उनके मुक्त विकल्प उपयोग किए जाएँगे। @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: क्षेत्र : - + Zone: ज़ोन : - - + + &Change... बदलें (&C)... - - - The system language will be set to %1. - सिस्टम भाषा %1 सेट की जाएगी। - - - - The numbers and dates locale will be set to %1. - संख्या व दिनांक स्थानिकी %1 सेट की जाएगी। - - - - Set timezone to %1/%2.<br/> - समय क्षेत्र %1%2 पर सेट करें।<br/> - LocaleQmlViewStep - + Location स्थान @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location स्थान @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2180,7 +2195,7 @@ The installer will quit and all changes will be lost. अज्ञात त्रुटि - + Password is empty कूटशब्द रिक्त है @@ -2519,112 +2534,112 @@ The installer will quit and all changes will be lost. सिस्टम की जानकारी प्राप्त की जा रही है... - + Partitions विभाजन - + Install %1 <strong>alongside</strong> another operating system. %1 को दूसरे ऑपरेटिंग सिस्टम <strong>के साथ</strong> इंस्टॉल करें। - + <strong>Erase</strong> disk and install %1. डिस्क का सारा डाटा<strong>हटाकर</strong> कर %1 इंस्टॉल करें। - + <strong>Replace</strong> a partition with %1. विभाजन को %1 से <strong>बदलें</strong>। - + <strong>Manual</strong> partitioning. <strong>मैनुअल</strong> विभाजन। - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). डिस्क <strong>%2</strong> (%3) पर %1 को दूसरे ऑपरेटिंग सिस्टम <strong>के साथ</strong> इंस्टॉल करें। - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. डिस्क <strong>%2</strong> (%3) <strong>erase</strong> कर %1 इंस्टॉल करें। - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. डिस्क <strong>%2</strong> (%3) के विभाजन को %1 से <strong>बदलें</strong>। - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). डिस्क <strong>%1</strong> (%2) पर <strong>मैनुअल</strong> विभाजन। - + Disk <strong>%1</strong> (%2) डिस्क <strong>%1</strong> (%2) - + Current: मौजूदा : - + After: बाद में: - + No EFI system partition configured कोई EFI सिस्टम विभाजन विन्यस्त नहीं है - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 आरंभ करने हेतु EFI सिस्टम विभाजन ज़रूरी है।<br/><br/>EFI सिस्टम विभाजन को विन्यस्त करने के लिए, वापस जाएँ और चुनें या बनाएँ एक FAT32 फ़ाइल सिस्टम जिस पर <strong>%3</strong> flag चालू हो व माउंट पॉइंट <strong>%2</strong>हो।<br/><br/>आप बिना सेट करें भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 को शुरू करने हेतु EFI सिस्टम विभाजन ज़रूरी है।<br/><br/>विभाजन को माउंट पॉइंट <strong>%2</strong> के साथ विन्यस्त किया गया परंतु उसका <strong>%3</strong> फ्लैग सेट नहीं था।<br/> फ्लैग सेट करने के लिए, वापस जाएँ और विभाजन को edit करें।<br/><br/>आप बिना सेट करें भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। - + EFI system partition flag not set EFI सिस्टम विभाजन फ्लैग सेट नहीं है - + Option to use GPT on BIOS BIOS पर GPT उपयोग करने के लिए विकल्प - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT विभाजन तालिका सभी सिस्टम हेतु सबसे उत्तम विकल्प है। यह इंस्टॉलर BIOS सिस्टम के सेटअप को भी समर्थन करता है। <br/><br/>BIOS पर GPT विभाजन तालिका को विन्यस्त करने हेतु, (अगर अब तक नहीं करा है तो) वापस जाकर विभाजन तालिका GPT पर सेट करें, फिर एक 8 MB का बिना फॉर्मेट हुआ विभाजन बनाए जिस पर <strong>bios_grub</strong> का flag हो।<br/><br/>यह बिना फॉर्मेट हुआ 8 MB का विभाजन %1 को BIOS सिस्टम पर GPT के साथ शुरू करने के लिए आवश्यक है। - + Boot partition not encrypted बूट विभाजन एन्क्रिप्टेड नहीं है - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. एन्क्रिप्टेड रुट विभाजन के साथ एक अलग बूट विभाजन भी सेट किया गया था, पर बूट विभाजन एन्क्रिप्टेड नहीं था।<br/><br/> इस तरह का सेटअप सुरक्षित नहीं होता क्योंकि सिस्टम फ़ाइल एन्क्रिप्टेड विभाजन पर होती हैं।<br/>आप चाहे तो जारी रख सकते है, पर फिर फ़ाइल सिस्टम बाद में सिस्टम स्टार्टअप के दौरान अनलॉक होगा।<br/> विभाजन को एन्क्रिप्ट करने के लिए वापस जाकर उसे दोबारा बनाएँ व विभाजन निर्माण विंडो में<strong>एन्क्रिप्ट</strong> चुनें। - + has at least one disk device available. कम-से-कम एक डिस्क डिवाइस उपलब्ध हो। - + There are no partitions to install on. इंस्टॉल हेतु कोई विभाजन नहीं हैं। @@ -2672,17 +2687,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... बाद के लिए फाइलों को संचित किया जा है... - + No files configured to save for later. बाद में संचित करने हेतु कोई फाइल विन्यस्त नहीं की गई है। - + Not all of the configured files could be preserved. विन्यस्त की गई सभी फाइलें संचित नहीं की जा सकी। @@ -3168,29 +3183,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 कुंजीपटल का मॉडल %1, अभिन्यास %2-%3 सेट करें। - + Failed to write keyboard configuration for the virtual console. वर्चुअल कंसोल हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। - - - + + + Failed to write to %1 %1 पर राइट करने में विफल - + Failed to write keyboard configuration for X11. X11 हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। - + Failed to write keyboard configuration to existing /etc/default directory. मौजूदा /etc /default डायरेक्टरी में कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। @@ -3423,28 +3438,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback केडीई उपयोक्ता प्रतिक्रिया - + Configuring KDE user feedback. केडीई उपयोक्ता प्रतिक्रिया विन्यस्त करना। - - + + Error in KDE user feedback configuration. केडीई उपयोक्ता प्रतिक्रिया विन्यास में त्रुटि। - + Could not configure KDE user feedback correctly, script error %1. केडीई उपयोक्ता प्रतिक्रिया सही रूप से विन्यस्त नहीं की जा सकी, स्क्रिप्ट त्रुटि %1। - + Could not configure KDE user feedback correctly, Calamares error %1. केडीई उपयोक्ता प्रतिक्रिया विन्यस्त सही रूप से विन्यस्त नहीं की जा सकी, Calamares त्रुटि %1। @@ -3452,28 +3467,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback मशीन संबंधी प्रतिक्रिया - + Configuring machine feedback. मशीन संबंधी प्रतिक्रिया विन्यस्त करना। - - + + Error in machine feedback configuration. मशीन संबंधी प्रतिक्रिया विन्यास में त्रुटि। - + Could not configure machine feedback correctly, script error %1. मशीन प्रतिक्रिया सही रूप से विन्यस्त नहीं की जा सकी, स्क्रिप्ट त्रुटि %1। - + Could not configure machine feedback correctly, Calamares error %1. मशीन प्रतिक्रिया को सही रूप से विन्यस्त नहीं की जा सकी, Calamares त्रुटि %1। @@ -3532,47 +3547,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>यदि एक से अधिक व्यक्ति इस कंप्यूटर का उपयोग करेंगे, तो आप सेटअप के उपरांत एकाधिक अकाउंट बना सकते हैं।</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>यदि एक से अधिक व्यक्ति इस कंप्यूटर का उपयोग करेंगे, तो आप इंस्टॉल के उपरांत एकाधिक अकाउंट बना सकते हैं।</small> - - Your username is too long. - आपका उपयोक्ता नाम बहुत लंबा है। - - - - Your username must start with a lowercase letter or underscore. - आपके उपयोक्ता नाम का आरंभ lowercase अक्षर या अंडरस्कोर(_) से ही होना चाहिए। - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - केवल lowercase अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। - - - - Your hostname is too short. - आपका होस्ट नाम बहुत छोटा है। - - - - Your hostname is too long. - आपका होस्ट नाम बहुत लंबा है। - - - - Only letters, numbers, underscore and hyphen are allowed. - केवल अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। - - - + Your passwords do not match! आपके कूटशब्द मेल नहीं खाते! @@ -3580,7 +3565,7 @@ Output: UsersViewStep - + Users उपयोक्ता @@ -3804,21 +3789,20 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>भाषाएँ</h1></br> सिस्टम स्थानिकी सेटिंग कमांड लाइन के कुछ उपयोक्ता अंतरफलक तत्वों की भाषा व अक्षर सेट पर असर डालती है।<br/>मौजूदा सेटिंग <strong>%1</strong>है। - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>स्थानिकी</h1></br> - सिस्टम स्थानिकी सेटिंग कमांड लाइन के कुछ उपयोक्ता अंतरफलक तत्वों की भाषा व अक्षर सेट पर असर डालती है।<br/>मौजूदा सेटिंग <strong>%1</strong>है। + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + - + Back वापस @@ -3826,44 +3810,44 @@ Output: keyboardq - + Keyboard Model कुंजीपटल मॉडल - + Pick your preferred keyboard model or use the default one based on the detected hardware अपना कुंजीपटल मॉडल चुनें या फिर हार्डवेयर आधारित डिफ़ॉल्ट मॉडल उपयोग करें - + Refresh रिफ्रेश करें - - + + Layouts अभिन्यास - - + + Keyboard Layout कुंजीपटल अभिन्यास - + Models मॉडल - + Variants भिन्न रूप - + Test your keyboard अपना कुंजीपटल जाँचें @@ -3871,17 +3855,7 @@ Output: localeq - - System language set to %1 - सिस्टम भाषा %1 सेट की गई - - - - Numbers and dates locale set to %1 - संख्या व दिनांक स्थानिकी %1 सेट की गई - - - + Change बदलें diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 983f9b393..7a50c9f6d 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -220,7 +220,7 @@ QML korak <i>%1</i>. - + Loading failed. Učitavanje nije uspjelo. @@ -259,171 +259,171 @@ Calamares::ViewManager - + Setup Failed Instalacija nije uspjela - + Installation Failed Instalacija nije uspjela - + Would you like to paste the install log to the web? Želite li objaviti dnevnik instaliranja na web? - + Error Greška - - + + &Yes &Da - - + + &No &Ne - + &Close &Zatvori - + Install Log Paste URL URL za objavu dnevnika instaliranja - + The upload was unsuccessful. No web-paste was done. Objava dnevnika instaliranja na web nije uspjela. - + Calamares Initialization Failed Inicijalizacija Calamares-a nije uspjela - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 se ne može se instalirati. Calamares nije mogao učitati sve konfigurirane module. Ovo je problem s načinom na koji se Calamares koristi u distribuciji. - + <br/>The following modules could not be loaded: <br/>Sljedeći moduli se nisu mogli učitati: - + Continue with setup? Nastaviti s postavljanjem? - + Continue with installation? Nastaviti sa instalacijom? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Instalacijski program %1 će izvršiti promjene na vašem disku kako bi postavio %2. <br/><strong>Ne možete poništiti te promjene.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 instalacijski program će napraviti promjene na disku kako bi instalirao %2.<br/><strong>Nećete moći vratiti te promjene.</strong> - + &Set up now &Postaviti odmah - + &Install now &Instaliraj sada - + Go &back Idi &natrag - + &Set up &Postaviti - + &Install &Instaliraj - + Setup is complete. Close the setup program. Instalacija je završena. Zatvorite instalacijski program. - + The installation is complete. Close the installer. Instalacija je završena. Zatvorite instalacijski program. - + Cancel setup without changing the system. Odustanite od instalacije bez promjena na sustavu. - + Cancel installation without changing the system. Odustanite od instalacije bez promjena na sustavu. - + &Next &Sljedeće - + &Back &Natrag - + &Done &Gotovo - + &Cancel &Odustani - + Cancel setup? Prekinuti instalaciju? - + Cancel installation? Prekinuti instalaciju? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Stvarno želite prekinuti instalacijski proces? Instalacijski program će izaći i sve promjene će biti izgubljene. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Stvarno želite prekinuti instalacijski proces? @@ -486,12 +486,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.&Odustani - + %1 Setup Program %1 instalacijski program - + %1 Installer %1 Instalacijski program @@ -518,9 +518,9 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. - - - + + + Current: Trenutni: @@ -531,115 +531,115 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Ručno particioniranje</strong><br/>Možete sami kreirati ili promijeniti veličinu particija. Potrebno je imati GPT tablicu particija i <strong>FAT32 particiju /boot veličine 512MB za UEFI instalacije</strong>; moguće je koristiti postojeću ili stvoriti novu. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ručno particioniranje</strong><br/>Možete sami stvoriti ili promijeniti veličine particija. - + Reuse %1 as home partition for %2. Koristi %1 kao home particiju za %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Odaberite particiju za smanjivanje, te povlačenjem donjeg pokazivača odaberite promjenu veličine</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 će se smanjiti na %2MB i stvorit će se nova %3MB particija za %4. - + Boot loader location: Lokacija boot učitavača: - + <strong>Select a partition to install on</strong> <strong>Odaberite particiju za instalaciju</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI particija ne postoji na ovom sustavu. Vratite se natrag i koristite ručno particioniranje da bi ste postavili %1. - + The EFI system partition at %1 will be used for starting %2. EFI particija na %1 će se koristiti za pokretanje %2. - + EFI system partition: EFI particija: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Izgleda da na ovom disku nema operacijskog sustava. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Obriši disk</strong><br/>To će <font color="red">obrisati</font> sve podatke na odabranom disku. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instaliraj uz postojeće</strong><br/>Instalacijski program će smanjiti particiju da bi napravio mjesto za %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Zamijeni particiju</strong><br/>Zamijenjuje particiju sa %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ovaj disk ima %1. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ovaj disk već ima operacijski sustav. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ovaj disk ima više operacijskih sustava. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. - + No Swap Bez swap-a - + Reuse Swap Iskoristi postojeći swap - + Swap (no Hibernate) Swap (bez hibernacije) - + Swap (with Hibernate) Swap (sa hibernacijom) - + Swap to file Swap datoteka @@ -647,17 +647,17 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 Ukloni montiranja za operacije s particijama na %1 - + Clearing mounts for partitioning operations on %1. Uklanjam montiranja za operacija s particijama na %1. - + Cleared all mounts for %1 Uklonjena sva montiranja za %1 @@ -665,22 +665,22 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ClearTempMountsJob - + Clear all temporary mounts. Ukloni sva privremena montiranja. - + Clearing all temporary mounts. Uklanjam sva privremena montiranja. - + Cannot get list of temporary mounts. Ne mogu dohvatiti popis privremenih montiranja. - + Cleared all temporary mounts. Uklonjena sva privremena montiranja. @@ -707,30 +707,30 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. Config - + Set keyboard model to %1.<br/> Postavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Postavi raspored tipkovnice na %1%2. - + + Set timezone to %1/%2. + Postavi vremesku zonu na %1%2. + + + The system language will be set to %1. Jezik sustava će se postaviti na %1. - + The numbers and dates locale will be set to %1. Regionalne postavke brojeva i datuma će se postaviti na %1. - - - Set timezone to %1/%2.<br/> - Postavi vremesku zonu na %1%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -796,6 +796,46 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.<h1>Welcome to the %1 installer</h1> <h1>Dobrodošli u %1 instalacijski program</h1> + + + Your username is too long. + Vaše korisničko ime je predugačko. + + + + '%1' is not allowed as username. + '%1' nije dopušteno kao korisničko ime. + + + + Your username must start with a lowercase letter or underscore. + Vaše korisničko ime mora započeti malim slovom ili podvlakom. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Dopuštena su samo mala slova, brojevi, podvlake i crtice. + + + + Your hostname is too short. + Ime računala je kratko. + + + + Your hostname is too long. + Ime računala je predugačko. + + + + '%1' is not allowed as hostname. + '%1' nije dopušteno kao ime računala. + + + + Only letters, numbers, underscore and hyphen are allowed. + Dopuštena su samo slova, brojevi, podvlake i crtice. + ContextualProcessJob @@ -960,40 +1000,30 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CreateUserJob - + Create user %1 Stvori korisnika %1 - + Create user <strong>%1</strong>. Stvori korisnika <strong>%1</strong>. - + Creating user %1. Stvaram korisnika %1. - - Sudoers dir is not writable. - Po sudoers direktoriju nije moguće spremati. - - - + Cannot create sudoers file for writing. Ne mogu stvoriti sudoers datoteku za pisanje. - + Cannot chmod sudoers file. Ne mogu chmod sudoers datoteku. - - - Cannot open groups file for reading. - Ne mogu otvoriti groups datoteku za čitanje. - CreateVolumeGroupDialog @@ -1231,37 +1261,37 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. FillGlobalStorageJob - + Set partition information Postavi informacije o particiji - + Install %1 on <strong>new</strong> %2 system partition. Instaliraj %1 na <strong>novu</strong> %2 sistemsku particiju. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Postavi <strong>novu</strong> %2 particiju s točkom montiranja <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instaliraj %2 na %3 sistemsku particiju <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Postavi %3 particiju <strong>%1</strong> s točkom montiranja <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instaliraj boot učitavač na <strong>%1</strong>. - + Setting up mount points. Postavljam točke montiranja. @@ -1512,12 +1542,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> Postavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Postavi raspored tipkovnice na %1%2. @@ -1574,32 +1604,32 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.<h1>Licencni ugovor</h1> - + I accept the terms and conditions above. Prihvaćam gore navedene uvjete i odredbe. - + Please review the End User License Agreements (EULAs). Pregledajte Ugovore o licenci za krajnjeg korisnika (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. U ovom postupku postavljanja instalirat će se vlasnički softver koji podliježe uvjetima licenciranja. - + If you do not agree with the terms, the setup procedure cannot continue. Ako se ne slažete sa uvjetima, postupak postavljanja ne može se nastaviti. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Ovaj postupak postavljanja može instalirati vlasnički softver koji podliježe uvjetima licenciranja kako bi se pružile dodatne značajke i poboljšalo korisničko iskustvo. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ako se ne slažete s uvjetima, vlasnički softver neće biti instaliran, a umjesto njega će se koristiti alternative otvorenog koda. @@ -1675,41 +1705,26 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocalePage - + Region: Regija: - + Zone: Zona: - - + + &Change... &Promijeni... - - - The system language will be set to %1. - Jezik sustava će se postaviti na %1. - - - - The numbers and dates locale will be set to %1. - Regionalne postavke brojeva i datuma će se postaviti na %1. - - - - Set timezone to %1/%2.<br/> - Postavi vremesku zonu na %1%2.<br/> - LocaleQmlViewStep - + Location Lokacija @@ -1717,7 +1732,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocaleViewStep - + Location Lokacija @@ -1779,7 +1794,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. Map - + 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. @@ -2182,7 +2197,7 @@ te korištenjem tipki +/- ili skrolanjem miša za zumiranje. Nepoznata greška - + Password is empty Lozinka je prazna @@ -2521,112 +2536,112 @@ te korištenjem tipki +/- ili skrolanjem miša za zumiranje. Skupljanje informacija o sustavu... - + Partitions Particije - + Install %1 <strong>alongside</strong> another operating system. Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav. - + <strong>Erase</strong> disk and install %1. <strong>Obriši</strong> disk i instaliraj %1. - + <strong>Replace</strong> a partition with %1. <strong>Zamijeni</strong> particiju s %1. - + <strong>Manual</strong> partitioning. <strong>Ručno</strong> particioniranje. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Obriši</strong> disk <strong>%2</strong> (%3) i instaliraj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zamijeni</strong> particiju na disku <strong>%2</strong> (%3) s %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ručno</strong> particioniram disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Trenutni: - + After: Poslije: - + No EFI system partition configured EFI particija nije konfigurirana - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI particija je potrebna za pokretanje %1.<br/><br/>Da bi ste konfigurirali EFI particiju, idite natrag i odaberite ili stvorite FAT32 datotečni sustav s omogućenom <strong>%3</strong> oznakom i točkom montiranja <strong>%2</strong>.<br/><br/>Možete nastaviti bez postavljanja EFI particije, ali vaš sustav se možda neće moći pokrenuti. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI particija je potrebna za pokretanje %1.<br/><br/>Particija je konfigurirana s točkom montiranja <strong>%2</strong>, ali njezina <strong>%3</strong> oznaka nije postavljena.<br/>Za postavljanje oznake, vratite se i uredite postavke particije.<br/><br/>Možete nastaviti bez postavljanja oznake, ali vaš sustav se možda neće moći pokrenuti. - + EFI system partition flag not set Oznaka EFI particije nije postavljena - + Option to use GPT on BIOS Mogućnost korištenja GPT-a na BIOS-u - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT tablica particija je najbolja opcija za sve sustave. Ovaj instalacijski program podržava takvo postavljanje i za BIOS sustave. <br/><br/>Da biste konfigurirali GPT particijsku tablicu za BIOS sustave, (ako to već nije učinjeno) vratite se natrag i postavite particijsku tablicu na GPT, a zatim stvorite neformatiranu particiju od 8 MB s omogućenom zastavicom <strong>bios_grub</strong>. <br/><br/>Neformirana particija od 8 MB potrebna je za pokretanje %1 na BIOS sustavu s GPT-om. - + Boot partition not encrypted Boot particija nije kriptirana - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Odvojena boot particija je postavljena zajedno s kriptiranom root particijom, ali boot particija nije kriptirana.<br/><br/>Zabrinuti smo za vašu sigurnost jer su važne datoteke sustava na nekriptiranoj particiji.<br/>Možete nastaviti ako želite, ali datotečni sustav će se otključati kasnije tijekom pokretanja sustava.<br/>Da bi ste kriptirali boot particiju, vratite se natrag i napravite ju, odabirom opcije <strong>Kriptiraj</strong> u prozoru za stvaranje prarticije. - + has at least one disk device available. ima barem jedan disk dostupan. - + There are no partitions to install on. Ne postoje particije na koje bi se instalirao sustav. @@ -2674,17 +2689,17 @@ te korištenjem tipki +/- ili skrolanjem miša za zumiranje. PreserveFiles - + Saving files for later ... Spremanje datoteka za kasnije ... - + No files configured to save for later. Nema datoteka konfiguriranih za spremanje za kasnije. - + Not all of the configured files could be preserved. Nije moguće sačuvati sve konfigurirane datoteke. @@ -3170,29 +3185,29 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Postavi model tpkovnice na %1, raspored na %2-%3 - + Failed to write keyboard configuration for the virtual console. Neuspješno pisanje konfiguracije tipkovnice za virtualnu konzolu. - - - + + + Failed to write to %1 Neuspješno pisanje na %1 - + Failed to write keyboard configuration for X11. Neuspješno pisanje konfiguracije tipkovnice za X11. - + Failed to write keyboard configuration to existing /etc/default directory. Neuspješno pisanje konfiguracije tipkovnice u postojeći /etc/default direktorij. @@ -3425,28 +3440,28 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene TrackingKUserFeedbackJob - + KDE user feedback Povratne informacije korisnika KDE-a - + Configuring KDE user feedback. Konfiguriranje povratnih informacija korisnika KDE-a. - - + + Error in KDE user feedback configuration. Pogreška u konfiguraciji povratnih informacija korisnika KDE-a. - + Could not configure KDE user feedback correctly, script error %1. Ne mogu ispravno konfigurirati povratne informacije korisnika KDE-a; pogreška skripte %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Ne mogu ispravno konfigurirati povratne informacije korisnika KDE-a; greška Calamares instalacijskog programa %1. @@ -3454,28 +3469,28 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene TrackingMachineUpdateManagerJob - + Machine feedback Povratna informacija o uređaju - + Configuring machine feedback. Konfiguriram povratnu informaciju o uređaju. - - + + Error in machine feedback configuration. Greška prilikom konfiguriranja povratne informacije o uređaju. - + Could not configure machine feedback correctly, script error %1. Ne mogu ispravno konfigurirati povratnu informaciju o uređaju, greška skripte %1. - + Could not configure machine feedback correctly, Calamares error %1. Ne mogu ispravno konfigurirati povratnu informaciju o uređaju, Calamares greška %1. @@ -3534,47 +3549,17 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Ako će više osoba koristiti ovo računalo, možete postaviti više korisničkih računa poslije instalacije.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Ako će više osoba koristiti ovo računalo, možete postaviti više korisničkih računa poslije instalacije.</small> - - Your username is too long. - Vaše korisničko ime je predugačko. - - - - Your username must start with a lowercase letter or underscore. - Vaše korisničko ime mora započeti malim slovom ili podvlakom. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Dopuštena su samo mala slova, brojevi, podvlake i crtice. - - - - Your hostname is too short. - Ime računala je kratko. - - - - Your hostname is too long. - Ime računala je predugačko. - - - - Only letters, numbers, underscore and hyphen are allowed. - Dopuštena su samo slova, brojevi, podvlake i crtice. - - - + Your passwords do not match! Lozinke se ne podudaraju! @@ -3582,7 +3567,7 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene UsersViewStep - + Users Korisnici @@ -3806,21 +3791,21 @@ Liberating Software. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Postavke jezika</h1></br> Jezične postavke sustava utječu na skup jezika i znakova za neke elemente korisničkog sučelja naredbenog retka. Trenutne postavke su <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Postavke regije</h1></br> -Postavke regije utječu na skup jezika i znakova za neke elemente korisničkog sučelja naredbenog retka. Trenutne postavke su <strong>%1</strong>. +Postavke regije utječu na format brojeva i datuma. Trenutne postavke su <strong>%1</strong>. - + Back Natrag @@ -3828,44 +3813,44 @@ Postavke regije utječu na skup jezika i znakova za neke elemente korisničkog s keyboardq - + Keyboard Model Model tipkovnice - + Pick your preferred keyboard model or use the default one based on the detected hardware Odaberite željeni model tipkovnice ili upotrijebite zadani na temelju otkrivenog hardvera - + Refresh Osvježi - - + + Layouts Rasporedi - - + + Keyboard Layout Raspored tipkovnice - + Models Modeli - + Variants Varijante - + Test your keyboard Testirajte vašu tipkovnicu @@ -3873,17 +3858,7 @@ Postavke regije utječu na skup jezika i znakova za neke elemente korisničkog s localeq - - System language set to %1 - Jezik sustava je postavljen na %1 - - - - Numbers and dates locale set to %1 - Regionalne postavke brojeva i datuma su postavljene na %1 - - - + Change Promijeni diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index c0a0990d4..ea504bace 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -220,7 +220,7 @@ QML lépés <i>%1</i>. - + Loading failed. A betöltés sikertelen. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Telepítési hiba - + Installation Failed Telepítés nem sikerült - + Would you like to paste the install log to the web? - + Error Hiba - - + + &Yes &Igen - - + + &No &Nem - + &Close &Bezár - + Install Log Paste URL Telepítési napló beillesztési URL-je. - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed A Calamares előkészítése meghiúsult - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. A(z) %1 nem telepíthető. A Calamares nem tudta betölteni a konfigurált modulokat. Ez a probléma abból fakad, ahogy a disztribúció a Calamarest használja. - + <br/>The following modules could not be loaded: <br/>A következő modulok nem tölthetőek be: - + Continue with setup? Folytatod a telepítéssel? - + Continue with installation? Folytatja a telepítést? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> A %1 telepítő változtatásokat fog végrehajtani a lemezen a %2 telepítéséhez. <br/><strong>Ezután már nem tudja visszavonni a változtatásokat.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> A %1 telepítő változtatásokat fog elvégezni, hogy telepítse a következőt: %2.<br/><strong>A változtatások visszavonhatatlanok lesznek.</strong> - + &Set up now &Telepítés most - + &Install now &Telepítés most - + Go &back Menj &vissza - + &Set up &Telepítés - + &Install &Telepítés - + Setup is complete. Close the setup program. Telepítés sikerült. Zárja be a telepítőt. - + The installation is complete. Close the installer. A telepítés befejeződött, Bezárhatod a telepítőt. - + Cancel setup without changing the system. Telepítés megszakítása a rendszer módosítása nélkül. - + Cancel installation without changing the system. Kilépés a telepítőből a rendszer megváltoztatása nélkül. - + &Next &Következő - + &Back &Vissza - + &Done &Befejez - + &Cancel &Mégse - + Cancel setup? Megszakítja a telepítést? - + Cancel installation? Abbahagyod a telepítést? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Valóban megszakítod a telepítési eljárást? A telepítő ki fog lépni és minden változtatás elveszik. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Biztos abba szeretnéd hagyni a telepítést? @@ -483,12 +483,12 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. &Mégse - + %1 Setup Program %1 Program telepítése - + %1 Installer %1 Telepítő @@ -515,9 +515,9 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. - - - + + + Current: Aktuális: @@ -528,115 +528,115 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuális partícionálás</strong><br/>Létrehozhat vagy átméretezhet partíciókat. - + Reuse %1 as home partition for %2. %1 partíció használata mint home partíció a %2 -n - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Válaszd ki a partíciót amit zsugorítani akarsz és egérrel méretezd át.</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 zsugorítva lesz %2MiB -re és új %3MiB partíció lesz létrehozva itt %4. - + Boot loader location: Rendszerbetöltő helye: - + <strong>Select a partition to install on</strong> <strong>Válaszd ki a telepítésre szánt partíciót </strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nem található EFI partíció a rendszeren. Menj vissza a manuális partícionáláshoz és állíts be %1. - + The EFI system partition at %1 will be used for starting %2. A %1 EFI rendszer partíció lesz használva %2 indításához. - + EFI system partition: EFI rendszerpartíció: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Úgy tűnik ezen a tárolóeszközön nincs operációs rendszer. Mit szeretnél csinálni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Lemez törlése</strong><br/>Ez <font color="red">törölni</font> fogja a lemezen levő összes adatot. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Meglévő mellé telepíteni</strong><br/>A telepítő zsugorítani fogja a partíciót, hogy elférjen a %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>A partíció lecserélése</strong> a következővel: %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ezen a tárolóeszközön %1 található. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ez a tárolóeszköz már tartalmaz egy operációs rendszert. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. A tárolóeszközön több operációs rendszer található. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - + No Swap Swap nélkül - + Reuse Swap Swap újrahasználata - + Swap (no Hibernate) Swap (nincs hibernálás) - + Swap (with Hibernate) Swap (hibernálással) - + Swap to file Swap fájlba @@ -644,17 +644,17 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 csatolás törlése partícionáláshoz - + Clearing mounts for partitioning operations on %1. %1 csatolás törlése partícionáláshoz - + Cleared all mounts for %1 %1 minden csatolása törölve @@ -662,22 +662,22 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. ClearTempMountsJob - + Clear all temporary mounts. Minden ideiglenes csatolás törlése - + Clearing all temporary mounts. Minden ideiglenes csatolás törlése - + Cannot get list of temporary mounts. Nem lehet lekérni az ideiglenes csatolási listát - + Cleared all temporary mounts. Minden ideiglenes csatolás törölve @@ -704,30 +704,30 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. Config - + Set keyboard model to %1.<br/> Billentyűzet típus beállítása %1.<br/> - + Set keyboard layout to %1/%2. Billentyűzet kiosztás beállítása %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. A rendszer területi beállítása %1. - + The numbers and dates locale will be set to %1. A számok és dátumok területi beállítása %1. - - - Set timezone to %1/%2.<br/> - Időzóna beállítása %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a><h1>Welcome to the %1 installer</h1> + + + Your username is too long. + A felhasználónév túl hosszú. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + A hálózati név túl rövid. + + + + Your hostname is too long. + A hálózati név túl hosszú. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> CreateUserJob - + Create user %1 %1 nevű felhasználó létrehozása - + Create user <strong>%1</strong>. <strong>%1</strong> nevű felhasználó létrehozása. - + Creating user %1. %1 nevű felhasználó létrehozása - - Sudoers dir is not writable. - Sudoers mappa nem írható. - - - + Cannot create sudoers file for writing. Nem lehet sudoers fájlt létrehozni írásra. - + Cannot chmod sudoers file. Nem lehet a sudoers fájlt "chmod" -olni. - - - Cannot open groups file for reading. - Nem lehet a groups fájlt megnyitni olvasásra. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> FillGlobalStorageJob - + Set partition information Partíció információk beállítása - + Install %1 on <strong>new</strong> %2 system partition. %1 telepítése az <strong>új</strong> %2 partícióra. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. <strong>Új</strong> %2 partíció beállítása <strong>%1</strong> csatolási ponttal. - + Install %2 on %3 system partition <strong>%1</strong>. %2 telepítése %3 <strong>%1</strong> rendszer partícióra. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 partíció beállítása <strong>%1</strong> <strong>%2</strong> csatolási ponttal. - + Install boot loader on <strong>%1</strong>. Rendszerbetöltő telepítése ide <strong>%1</strong>. - + Setting up mount points. Csatlakozási pontok létrehozása @@ -1510,12 +1540,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> KeyboardPage - + Set keyboard model to %1.<br/> Billentyűzet típus beállítása %1.<br/> - + Set keyboard layout to %1/%2. Billentyűzet kiosztás beállítása %1/%2. @@ -1572,32 +1602,32 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> - + I accept the terms and conditions above. Elfogadom a fentebbi felhasználási feltételeket. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> LocalePage - + Region: Régió: - + Zone: Zóna: - - + + &Change... &Változtat... - - - The system language will be set to %1. - A rendszer területi beállítása %1. - - - - The numbers and dates locale will be set to %1. - A számok és dátumok területi beállítása %1. - - - - Set timezone to %1/%2.<br/> - Időzóna beállítása %1/%2.<br/> - LocaleQmlViewStep - + Location Hely @@ -1715,7 +1730,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> LocaleViewStep - + Location Hely @@ -1777,7 +1792,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> Map - + 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. @@ -2178,7 +2193,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a>Ismeretlen hiba - + Password is empty @@ -2517,112 +2532,112 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a>Rendszerinformációk gyűjtése... - + Partitions Partíciók - + Install %1 <strong>alongside</strong> another operating system. %1 telepítése más operációs rendszer <strong>mellé</strong> . - + <strong>Erase</strong> disk and install %1. <strong>Lemez törlés</strong>és %1 telepítés. - + <strong>Replace</strong> a partition with %1. <strong>A partíció lecserélése</strong> a következővel: %1. - + <strong>Manual</strong> partitioning. <strong>Kézi</strong> partícionálás. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 telepítése más operációs rendszer <strong>mellé</strong> a <strong>%2</strong> (%3) lemezen. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2 lemez törlése</strong> (%3) és %1 telepítés. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>A partíció lecserélése</strong> a <strong>%2</strong> lemezen(%3) a következővel: %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Kézi</strong> telepítés a <strong>%1</strong> (%2) lemezen. - + Disk <strong>%1</strong> (%2) Lemez <strong>%1</strong> (%2) - + Current: Aktuális: - + After: Utána: - + No EFI system partition configured Nincs EFI rendszer partíció beállítva - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI partíciós zászló nincs beállítva - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Indító partíció nincs titkosítva - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Egy külön indító partíció lett beállítva egy titkosított root partícióval, de az indító partíció nincs titkosítva.br/><br/>Biztonsági aggályok merülnek fel ilyen beállítás mellet, mert fontos fájlok nem titkosított partíción vannak tárolva. <br/>Ha szeretnéd, folytathatod így, de a fájlrendszer zárolása meg fog történni az indítás után. <br/> Az indító partíció titkosításához lépj vissza és az újra létrehozáskor válaszd a <strong>Titkosít</strong> opciót. - + has at least one disk device available. legalább egy lemez eszköz elérhető. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> PreserveFiles - + Saving files for later ... Fájlok mentése későbbre … - + No files configured to save for later. Nincsenek fájlok beállítva elmentésre későbbre - + Not all of the configured files could be preserved. Nem az összes beállított fájl örízhető meg. @@ -3164,29 +3179,29 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Billentyűzet beállítása %1, elrendezés %2-%3 - + Failed to write keyboard configuration for the virtual console. Hiba történt a billentyűzet virtuális konzolba való beállításakor - - - + + + Failed to write to %1 Hiba történt %1 -re történő íráskor - + Failed to write keyboard configuration for X11. Hiba történt a billentyűzet X11- hez való beállításakor - + Failed to write keyboard configuration to existing /etc/default directory. Hiba történt a billentyűzet konfiguráció alapértelmezett /etc/default mappába valló elmentésekor. @@ -3419,28 +3434,28 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3448,28 +3463,28 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> TrackingMachineUpdateManagerJob - + Machine feedback Gépi visszajelzés - + Configuring machine feedback. Gépi visszajelzés konfigurálása. - - + + Error in machine feedback configuration. Hiba a gépi visszajelzés konfigurálásában. - + Could not configure machine feedback correctly, script error %1. Gépi visszajelzés konfigurálása nem megfelelő, script hiba %1. - + Could not configure machine feedback correctly, Calamares error %1. Gépi visszajelzés konfigurálása nem megfelelő,. Calamares hiba %1. @@ -3529,47 +3544,17 @@ Calamares hiba %1. UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Ha egynél több személy használja a számítógépet akkor létrehozhat több felhasználói fiókot telepítés után.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Ha egynél több személy használja a számítógépet akkor létrehozhat több felhasználói fiókot telepítés után.</small> - - Your username is too long. - A felhasználónév túl hosszú. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - A hálózati név túl rövid. - - - - Your hostname is too long. - A hálózati név túl hosszú. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! A két jelszó nem egyezik! @@ -3577,7 +3562,7 @@ Calamares hiba %1. UsersViewStep - + Users Felhasználók @@ -3790,19 +3775,19 @@ Calamares hiba %1. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3810,44 +3795,44 @@ Calamares hiba %1. keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3855,17 +3840,7 @@ Calamares hiba %1. localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index f7cc5b54e..8ddc4cf6a 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -255,170 +255,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Instalasi Gagal - + Would you like to paste the install log to the web? - + Error Kesalahan - - + + &Yes &Ya - - + + &No &Tidak - + &Close &Tutup - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Inisialisasi Calamares Gagal - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 tidak dapat terinstal. Calamares tidak dapat memuat seluruh modul konfigurasi. Terdapat masalah dengan Calamares karena sedang digunakan oleh distribusi. - + <br/>The following modules could not be loaded: <br/>Modul berikut tidak dapat dimuat. - + Continue with setup? Lanjutkan dengan setelan ini? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Installer %1 akan membuat perubahan ke disk Anda untuk memasang %2.<br/><strong>Anda tidak dapat membatalkan perubahan tersebut.</strong> - + &Set up now - + &Install now &Instal sekarang - + Go &back &Kembali - + &Set up - + &Install &Instal - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Instalasi sudah lengkap. Tutup installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Batalkan instalasi tanpa mengubah sistem yang ada. - + &Next &Berikutnya - + &Back &Kembali - + &Done &Kelar - + &Cancel &Batal - + Cancel setup? - + Cancel installation? Batalkan instalasi? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Apakah Anda benar-benar ingin membatalkan proses instalasi ini? @@ -480,12 +480,12 @@ Instalasi akan ditutup dan semua perubahan akan hilang. &Batal - + %1 Setup Program - + %1 Installer Installer %1 @@ -512,9 +512,9 @@ Instalasi akan ditutup dan semua perubahan akan hilang. - - - + + + Current: Saat ini: @@ -525,115 +525,115 @@ Instalasi akan ditutup dan semua perubahan akan hilang. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Pemartisian manual</strong><br/>Anda bisa membuat atau mengubah ukuran partisi. - + Reuse %1 as home partition for %2. Gunakan kembali %1 sebagai partisi home untuk %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Pilih sebuah partisi untuk diiris, kemudian seret bilah di bawah untuk mengubah ukuran</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Lokasi Boot loader: - + <strong>Select a partition to install on</strong> <strong>Pilih sebuah partisi untuk memasang</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Sebuah partisi sistem EFI tidak ditemukan pada sistem ini. Silakan kembali dan gunakan pemartisian manual untuk mengeset %1. - + The EFI system partition at %1 will be used for starting %2. Partisi sistem EFI di %1 akan digunakan untuk memulai %2. - + EFI system partition: Partisi sistem EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tampaknya media penyimpanan ini tidak mengandung sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Hapus disk</strong><br/>Aksi ini akan <font color="red">menghapus</font> semua berkas yang ada pada media penyimpanan terpilih. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instal berdampingan dengan</strong><br/>Installer akan mengiris sebuah partisi untuk memberi ruang bagi %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ganti sebuah partisi</strong><br/> Ganti partisi dengan %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini mengandung %1. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini telah mengandung sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini telah mengandung beberapa sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -641,17 +641,17 @@ Instalasi akan ditutup dan semua perubahan akan hilang. ClearMountsJob - + Clear mounts for partitioning operations on %1 Lepaskan semua kaitan untuk operasi pemartisian pada %1 - + Clearing mounts for partitioning operations on %1. Melepas semua kaitan untuk operasi pemartisian pada %1 - + Cleared all mounts for %1 Semua kaitan dilepas untuk %1 @@ -659,22 +659,22 @@ Instalasi akan ditutup dan semua perubahan akan hilang. ClearTempMountsJob - + Clear all temporary mounts. Lepaskan semua kaitan sementara. - + Clearing all temporary mounts. Melepaskan semua kaitan sementara. - + Cannot get list of temporary mounts. Tidak bisa mendapatkan daftar kaitan sementara. - + Cleared all temporary mounts. Semua kaitan sementara dilepas. @@ -701,30 +701,30 @@ Instalasi akan ditutup dan semua perubahan akan hilang. Config - + Set keyboard model to %1.<br/> Setel model papan ketik ke %1.<br/> - + Set keyboard layout to %1/%2. Setel tata letak papan ketik ke %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Bahasa sistem akan disetel ke %1. - + The numbers and dates locale will be set to %1. Nomor dan tanggal lokal akan disetel ke %1. - - - Set timezone to %1/%2.<br/> - Setel zona waktu ke %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.<h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Nama pengguna Anda terlalu panjang. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Hostname Anda terlalu pendek. + + + + Your hostname is too long. + Hostname Anda terlalu panjang. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. CreateUserJob - + Create user %1 Buat pengguna %1 - + Create user <strong>%1</strong>. Buat pengguna <strong>%1</strong>. - + Creating user %1. Membuat pengguna %1. - - Sudoers dir is not writable. - Direktori sudoers tidak dapat ditulis. - - - + Cannot create sudoers file for writing. Tidak dapat membuat berkas sudoers untuk ditulis. - + Cannot chmod sudoers file. Tidak dapat chmod berkas sudoers. - - - Cannot open groups file for reading. - Tidak dapat membuka berkas groups untuk dibaca. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. FillGlobalStorageJob - + Set partition information Tetapkan informasi partisi - + Install %1 on <strong>new</strong> %2 system partition. Instal %1 pada partisi sistem %2 <strong>baru</strong> - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setel partisi %2 <strong>baru</strong> dengan tempat kait <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instal %2 pada sistem partisi %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setel partisi %3 <strong>%1</strong> dengan tempat kait <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instal boot loader di <strong>%1</strong>. - + Setting up mount points. Menyetel tempat kait. @@ -1508,12 +1538,12 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. KeyboardPage - + Set keyboard model to %1.<br/> Setel model papan ketik ke %1.<br/> - + Set keyboard layout to %1/%2. Setel tata letak papan ketik ke %1/%2. @@ -1570,32 +1600,32 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. - + I accept the terms and conditions above. Saya menyetujui segala persyaratan di atas. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. LocalePage - + Region: Wilayah: - + Zone: Zona: - - + + &Change... &Ubah... - - - The system language will be set to %1. - Bahasa sistem akan disetel ke %1. - - - - The numbers and dates locale will be set to %1. - Nomor dan tanggal lokal akan disetel ke %1. - - - - Set timezone to %1/%2.<br/> - Setel zona waktu ke %1/%2.<br/> - LocaleQmlViewStep - + Location Lokasi @@ -1713,7 +1728,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. LocaleViewStep - + Location Lokasi @@ -1775,7 +1790,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. Map - + 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. @@ -2176,7 +2191,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Ada kesalahan yang tidak diketahui - + Password is empty @@ -2515,112 +2530,112 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Mengumpulkan informasi sistem... - + Partitions Paritsi - + Install %1 <strong>alongside</strong> another operating system. Instal %1 <strong>berdampingan</strong> dengan sistem operasi lain. - + <strong>Erase</strong> disk and install %1. <strong>Hapus</strong> diska dan instal %1. - + <strong>Replace</strong> a partition with %1. <strong>Ganti</strong> partisi dengan %1. - + <strong>Manual</strong> partitioning. Partisi <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instal %1 <strong>berdampingan</strong> dengan sistem operasi lain di disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Hapus</strong> diska <strong>%2</strong> (%3) dan instal %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ganti</strong> partisi pada diska <strong>%2</strong> (%3) dengan %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Partisi Manual</strong> pada diska <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Saat ini: - + After: Sesudah: - + No EFI system partition configured Tiada partisi sistem EFI terkonfigurasi - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Bendera partisi sistem EFI tidak disetel - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partisi boot tidak dienkripsi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Sebuah partisi tersendiri telah terset bersama dengan sebuah partisi root terenkripsi, tapi partisi boot tidak terenkripsi.<br/><br/>Ada kekhawatiran keamanan dengan jenis setup ini, karena file sistem penting tetap pada partisi tak terenkripsi.<br/>Kamu bisa melanjutkan jika kamu menghendaki, tapi filesystem unlocking akan terjadi nanti selama memulai sistem.<br/>Untuk mengenkripsi partisi boot, pergi mundur dan menciptakannya ulang, memilih <strong>Encrypt</strong> di jendela penciptaan partisi. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PreserveFiles - + Saving files for later ... Menyimpan file untuk kemudian... - + No files configured to save for later. Tiada file yang dikonfigurasi untuk penyimpanan nanti. - + Not all of the configured files could be preserved. Tidak semua file yang dikonfigurasi dapat dipertahankan. @@ -3163,29 +3178,29 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Model papan ketik ditetapkan ke %1, tata letak ke %2-%3 - + Failed to write keyboard configuration for the virtual console. Gagal menulis konfigurasi keyboard untuk virtual console. - - - + + + Failed to write to %1 Gagal menulis ke %1. - + Failed to write keyboard configuration for X11. Gagal menulis konfigurasi keyboard untuk X11. - + Failed to write keyboard configuration to existing /etc/default directory. Gagal menulis konfigurasi keyboard ke direktori /etc/default yang ada. @@ -3418,28 +3433,28 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3447,28 +3462,28 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. TrackingMachineUpdateManagerJob - + Machine feedback Mesin umpan balik - + Configuring machine feedback. Mengkonfigurasi mesin umpan balik. - - + + Error in machine feedback configuration. Galat di konfigurasi mesin umpan balik. - + Could not configure machine feedback correctly, script error %1. Tidak dapat mengkonfigurasi mesin umpan balik dengan benar, naskah galat %1 - + Could not configure machine feedback correctly, Calamares error %1. Tidak dapat mengkonfigurasi mesin umpan balik dengan benar, Calamares galat %1. @@ -3527,47 +3542,17 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Nama pengguna Anda terlalu panjang. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Hostname Anda terlalu pendek. - - - - Your hostname is too long. - Hostname Anda terlalu panjang. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Sandi Anda tidak sama! @@ -3575,7 +3560,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. UsersViewStep - + Users Pengguna @@ -3788,19 +3773,19 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3808,44 +3793,44 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3853,17 +3838,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ie.ts b/lang/calamares_ie.ts index e65456755..5ad19f766 100644 --- a/lang/calamares_ie.ts +++ b/lang/calamares_ie.ts @@ -24,27 +24,27 @@ Master Boot Record of %1 - + MBR del %1 Boot Partition - + Partition de inicialisation System Partition - + Partition del sistema Do not install a boot loader - + Ne installar un bootloader %1 (%2) - + %1 (%2) @@ -52,7 +52,7 @@ Blank Page - + Blanc págine @@ -60,7 +60,7 @@ Form - + Redimensionar un gruppe de tomes @@ -75,12 +75,12 @@ Modules - + Modules Type: - + Tip: @@ -96,7 +96,7 @@ Tools - + Utensiles @@ -119,12 +119,12 @@ Set up - + Configurar Install - + Installar @@ -132,7 +132,7 @@ Job failed (%1) - + Tache ne successat (%1) @@ -145,7 +145,7 @@ Done - + Finit @@ -212,7 +212,7 @@ Loading ... - + Cargante... @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Configuration ne successat - + Installation Failed - + Installation ne successat - + Would you like to paste the install log to the web? - + Error - + Errore - - + + &Yes - - - - - - &No - + &Yes - &Close - + + &No + &No - + + &Close + C&luder + + + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continuar li configuration? - + Continue with installation? - + Continuar li installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Configurar nu - + &Install now - + &Installar nu - + Go &back - - - - - &Set up - - - - - &Install - - - - - Setup is complete. Close the setup program. - - - - - The installation is complete. Close the installer. - - - - - Cancel setup without changing the system. - + Ear &retro + &Set up + &Configurar + + + + &Install + &Installar + + + + Setup is complete. Close the setup program. + Configuration es completat. Ples cluder li configurator. + + + + The installation is complete. Close the installer. + Installation es completat. Ples cluder li installator. + + + + Cancel setup without changing the system. + Anullar li configuration sin modificationes del sistema. + + + Cancel installation without changing the system. - + Anullar li installation sin modificationes del sistema. - + &Next - - - - - &Back - + &Sequent + &Back + &Retro + + + &Done - + &Finir - + &Cancel - + A&nullar - + Cancel setup? - + Anullar li configuration? - + Cancel installation? - + Anullar li installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -431,7 +431,7 @@ The installer will quit and all changes will be lost. Unknown exception type - + Ínconosset tip de exception @@ -468,27 +468,27 @@ The installer will quit and all changes will be lost. &Back - + &Retro &Next - + Ad ava&n &Cancel - + A&nullar - + %1 Setup Program - + Configiration de %1 - + %1 Installer - + Installator de %1 @@ -504,7 +504,7 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes @@ -513,146 +513,146 @@ The installer will quit and all changes will be lost. - - - + + + Current: - + Actual: After: - + Pos: - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + Localisation del bootloader: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + Partition de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Sin swap - + Reuse Swap - + Reusar un swap - + Swap (no Hibernate) - + Swap (sin hivernation) - + Swap (with Hibernate) - + Swap (con hivernation) - + Swap to file - + Swap in un file ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -774,21 +774,61 @@ The installer will quit and all changes will be lost. <h1>Welcome to the Calamares setup program for %1</h1> - + <h1>Benevenit al configurator Calamares por %1</h1> <h1>Welcome to %1 setup</h1> - + <h1>Benevenit al configurator de %1</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Benevenit al installator Calamares por %1</h1> <h1>Welcome to the %1 installer</h1> + <h1>Benevenit al installator de %1</h1> + + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. @@ -805,17 +845,17 @@ The installer will quit and all changes will be lost. Create a Partition - + Crear un partition Si&ze: - + &Grandore: MiB - + Mio @@ -825,22 +865,22 @@ The installer will quit and all changes will be lost. &Primary - + &Primari E&xtended - + E&xtendet Fi&le System: - + Sistema de fi&les: LVM LV name - + Gruppe (LV) de LVM @@ -855,22 +895,22 @@ The installer will quit and all changes will be lost. En&crypt - + &Ciffrar Logical - + Logic Primary - + Primari GPT - + GPT @@ -893,7 +933,7 @@ The installer will quit and all changes will be lost. Creating new %1 partition on %2. - + Creante un nov partition de %1 sur %2. @@ -906,7 +946,7 @@ The installer will quit and all changes will be lost. Create Partition Table - + Crear li tabelle de partitiones @@ -921,12 +961,12 @@ The installer will quit and all changes will be lost. Master Boot Record (MBR) - + Master Boot Record (MBR) GUID Partition Table (GPT) - + Tabelle GUID (GPT) @@ -934,68 +974,58 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + Crear un nov tabelle de partitiones %1 sur %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Crear un nov tabelle de partitiones <strong>%1</strong> sur <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + Creante un nov tabelle de partitiones %1 sur %2. The installer failed to create a partition table on %1. - + Li installator ne successat crear un tabelle de partitiones sur %1. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog Create Volume Group - + Crear un gruppe de tomes @@ -1102,13 +1132,13 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) device[name] - size[number] (device-node[name]) - + %1 - %2 (%3) %1 - (%2) device[name] - (device-node[name]) - + %1 - (%2) @@ -1126,7 +1156,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - + Ne successat aperter %1 @@ -1147,17 +1177,17 @@ The installer will quit and all changes will be lost. Content: - + Contenete: &Keep - + &Retener Format - + Formate @@ -1172,17 +1202,17 @@ The installer will quit and all changes will be lost. Si&ze: - + &Grandore: MiB - + Mio Fi&le System: - + Sistema de fi&les: @@ -1200,12 +1230,12 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes En&crypt system - + &Ciffrar li sistema @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1266,12 +1296,12 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes &Restart now - + &Reiniciar nu @@ -1309,27 +1339,27 @@ The installer will quit and all changes will be lost. Finish - + Finir Setup Complete - + Configuration es completat Installation Complete - + Installation es completat The setup of %1 is complete. - + Li configuration de %1 es completat. The installation of %1 is complete. - + Li installation de %1 es completat. @@ -1467,7 +1497,7 @@ The installer will quit and all changes will be lost. Creating initramfs with mkinitcpio. - + Creante initramfs med mkinitcpio. @@ -1475,7 +1505,7 @@ The installer will quit and all changes will be lost. Creating initramfs. - + Creante initramfs. @@ -1483,7 +1513,7 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole ne es installat @@ -1501,18 +1531,18 @@ The installer will quit and all changes will be lost. Script - + Scripte KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1522,7 +1552,7 @@ The installer will quit and all changes will be lost. Keyboard - + Tastatura @@ -1530,7 +1560,7 @@ The installer will quit and all changes will be lost. Keyboard - + Tastatura @@ -1548,12 +1578,12 @@ The installer will quit and all changes will be lost. &Cancel - + A&nullar &OK - + &OK @@ -1561,40 +1591,40 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes <h1>License Agreement</h1> - + <h1>Acorde de licentie</h1> - + I accept the terms and conditions above. - + Yo accepta li termines e condiciones ad-supra. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1604,7 +1634,7 @@ The installer will quit and all changes will be lost. License - + Licentie @@ -1612,44 +1642,44 @@ The installer will quit and all changes will be lost. URL: %1 - + URL: %1 <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>Driver de %1</strong><br/>de %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>Driver de grafica %1</strong><br/><font color="Grey">de %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>Plugin de navigator «%1»</strong><br/><font color="Grey">de %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>Codec de %1</strong><br/><font color="Grey">de %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>Paccage «%1»</strong><br/><font color="Grey">de %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">de %2</font> File: %1 - + File: %1 @@ -1670,51 +1700,36 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Region: - + Zone: - + Zone: - - + + &Change... - - - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - + &Modificar... LocaleQmlViewStep - + Location - + Localisation LocaleViewStep - + Location - + Localisation @@ -1728,7 +1743,7 @@ The installer will quit and all changes will be lost. No partitions are defined. - + Null partition es definit. @@ -1758,12 +1773,12 @@ The installer will quit and all changes will be lost. Generate machine-id. - + Generar li machine-id. Configuration Error - + Errore de configuration @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -1787,7 +1802,7 @@ The installer will quit and all changes will be lost. Package selection - + Selection de paccages @@ -1817,12 +1832,12 @@ The installer will quit and all changes will be lost. Kernel - + Nucleo Services - + Servicios @@ -1837,12 +1852,12 @@ The installer will quit and all changes will be lost. Applications - + Applicationes Communication - + Communication @@ -1852,7 +1867,7 @@ The installer will quit and all changes will be lost. Office - + Officie @@ -1867,17 +1882,17 @@ The installer will quit and all changes will be lost. Theming - + Temas Gaming - + Ludes Utilities - + Utensiles @@ -1885,7 +1900,7 @@ The installer will quit and all changes will be lost. Notes - + Notes @@ -1911,7 +1926,7 @@ The installer will quit and all changes will be lost. OEM Configuration - + Configuration de OEM @@ -1924,7 +1939,7 @@ The installer will quit and all changes will be lost. Timezone: %1 - + Zone horari: %1 @@ -1937,12 +1952,12 @@ The installer will quit and all changes will be lost. Password is too short - + Li contrasigne es tro curt Password is too long - + Li contrasigne es tro long @@ -2172,12 +2187,12 @@ The installer will quit and all changes will be lost. Unknown error - + Ínconosset errore - + Password is empty - + Li contrasigne es vacui @@ -2185,7 +2200,7 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes @@ -2205,7 +2220,7 @@ The installer will quit and all changes will be lost. Package Selection - + Selection de paccages @@ -2218,7 +2233,7 @@ The installer will quit and all changes will be lost. Packages - + Paccages @@ -2226,12 +2241,12 @@ The installer will quit and all changes will be lost. Name - + Nómine Description - + Descrition @@ -2239,17 +2254,17 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes Keyboard Model: - + Modelle de tastatura: Type here to test your keyboard - + Tippa ti-ci por provar vor tastatura @@ -2257,7 +2272,7 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes @@ -2359,22 +2374,22 @@ The installer will quit and all changes will be lost. Home - + Hem Boot - + Inicie EFI system - + Sistema EFI Swap - + Swap @@ -2384,7 +2399,7 @@ The installer will quit and all changes will be lost. New partition - + Nov partition @@ -2399,33 +2414,33 @@ The installer will quit and all changes will be lost. Free Space - + Líber spacie New partition - + Nov partition Name - + Nómine File System - + Sistema de files Mount Point - + Monte-punctu Size - + Grandore @@ -2433,7 +2448,7 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes @@ -2448,47 +2463,47 @@ The installer will quit and all changes will be lost. New Partition &Table - + Nov &tabelle de partitiones Cre&ate - + Cre&ar &Edit - + &Modificar &Delete - + &Remover New Volume Group - + Nov gruppe de tomes Resize Volume Group - + Redimensionar li gruppe Deactivate Volume Group - + Desactivar li gruppe Remove Volume Group - + Remover li gruppe de tomes I&nstall boot loader on: - + I&nstallar li bootloader sur: @@ -2514,114 +2529,114 @@ The installer will quit and all changes will be lost. - + Partitions - + Partitiones - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + Actual: - + After: - - - - - No EFI system partition configured - + Pos: + No EFI system partition configured + Null partition del sistema EFI es configurat + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. - + Ne existe disponibil partitiones por installation. @@ -2643,7 +2658,7 @@ The installer will quit and all changes will be lost. Form - + Redimensionar un gruppe de tomes @@ -2661,23 +2676,23 @@ The installer will quit and all changes will be lost. Look-and-Feel - + Aspecte e conduida PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -2753,12 +2768,12 @@ Output: %1 (%2) - + %1 (%2) unknown - + ínconosset @@ -2784,7 +2799,7 @@ Output: Default - + Predefinit @@ -2866,7 +2881,7 @@ Output: Form - + Redimensionar un gruppe de tomes @@ -2933,7 +2948,7 @@ Output: EFI system partition: - + Partition de sistema EFI: @@ -2971,7 +2986,7 @@ Output: KPMCore not Available - + KPMCore ne es disponibil @@ -2985,7 +3000,7 @@ Output: Resize Failed - + Redimension ne successat @@ -3025,7 +3040,7 @@ Output: Resize partition %1. - + Redimensionar li partition %1. @@ -3048,7 +3063,7 @@ Output: Resize Volume Group - + Redimensionar li gruppe de tomes @@ -3121,7 +3136,7 @@ Output: Partitioning - + Gerer partitiones @@ -3145,7 +3160,7 @@ Output: Internal Error - + Intern errore @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Modelle del tastatura: %1, li arangeament: %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3297,7 +3312,7 @@ Output: passwd terminated with error code %1. - + passwd ha terminat con code %1. @@ -3315,7 +3330,7 @@ Output: Set timezone to %1/%2 - + Assignar li zone horari: %1/%2 @@ -3362,7 +3377,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -3383,7 +3398,7 @@ Output: Summary - + Resume @@ -3391,7 +3406,7 @@ Output: Installation feedback - + Response al installation @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3472,7 +3487,7 @@ Output: Form - + Redimensionar un gruppe de tomes @@ -3515,53 +3530,23 @@ Output: Feedback - + Response UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,9 +3554,9 @@ Output: UsersViewStep - + Users - + Usatores @@ -3579,12 +3564,12 @@ Output: Key - + Clave Value - + Valore @@ -3592,22 +3577,22 @@ Output: Create Volume Group - + Crear un gruppe de tomes List of Physical Volumes - + Liste de fisic tomes Volume Group Name: - + Nómine de gruppe: Volume Group Type: - + Tip de gruppe: @@ -3617,22 +3602,22 @@ Output: MiB - + Mio Total Size: - + Total grandore: Used Size: - + Usat grandore: Total Sectors: - + Total sectores: @@ -3645,98 +3630,98 @@ Output: Form - + Redimensionar un gruppe de tomes Select application and system language - + Selecter li application e li lingue del sistema &About - + &Pri Open donations website - + Aperter li website por donationes &Donate - + &Donar Open help and support website - + Aperter li website de auxilie e suporte &Support - + &Suporte Open issues and bug-tracking website - + Aperter li website de control de defectes &Known issues - + &Conosset problemas Open release notes website - + Aperter li website con notes por ti-ci version &Release notes - + &Notes del version <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Benevenit al configurator Calamares por %1.</h1> <h1>Welcome to %1 setup.</h1> - + <h1>Benevenit al configurator de %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Benevenit al installator Calamares por %1.</h1> <h1>Welcome to the %1 installer.</h1> - + <h1>Benevenit al installator de %1.</h1> %1 support - + Suporte de %1 About %1 setup - + Pri li configurator de %1 About %1 installer - + Pri li installator de %1 <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>por %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Mersí al <a href="https://calamares.io/team/">equip de Calamares</a> e li <a href="https://www.transifex.com/calamares/calamares/">equip de traduction de Calamares</a>.<br/><br/>Developation de <a href="https://calamares.io/">Calamares</a> es suportet de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - «Liberating Software». @@ -3744,7 +3729,7 @@ Output: Welcome - + Benevenit @@ -3752,7 +3737,7 @@ Output: Welcome - + Benevenit @@ -3776,90 +3761,80 @@ Output: Back - + Retro i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back - + Retro keyboardq - + Keyboard Model - + Modelle de tastatura - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - + Arangeamentes - - + + Keyboard Layout - + Arangeament de tastatura - + Models - + Modelles - + Variants - + Variantes - + Test your keyboard - + Prova vor tastatura localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change - + Modificar @@ -3901,7 +3876,7 @@ Output: Back - + Retro @@ -3915,27 +3890,27 @@ Output: About - + Pri Support - + Suporte Known issues - + Conosset problemas Release notes - + Notes del version Donate - + Donar diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 81316b92d..cc9adfa02 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed Uppsetning mistókst - + Installation Failed Uppsetning mistókst - + Would you like to paste the install log to the web? - + Error Villa - - + + &Yes &Já - - + + &No &Nei - + &Close &Loka - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Calamares uppsetning mistókst - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? Halda áfram með uppsetningu? - + Continue with installation? Halda áfram með uppsetningu? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 uppsetningarforritið er um það bil að gera breytingar á diskinum til að setja upp %2.<br/><strong>Þú munt ekki geta afturkallað þessar breytingar.</strong> - + &Set up now &Setja upp núna - + &Install now Setja &inn núna - + Go &back Fara til &baka - + &Set up &Setja upp - + &Install &Setja upp - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Uppsetning er lokið. Lokaðu uppsetningarforritinu. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Hætta við uppsetningu ánþess að breyta kerfinu. - + &Next &Næst - + &Back &Til baka - + &Done &Búið - + &Cancel &Hætta við - + Cancel setup? Hætta við uppsetningu? - + Cancel installation? Hætta við uppsetningu? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Viltu virkilega að hætta við núverandi uppsetningarferli? @@ -482,12 +482,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. &Hætta við - + %1 Setup Program - + %1 Installer %1 uppsetningarforrit @@ -514,9 +514,9 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - - - + + + Current: Núverandi: @@ -527,115 +527,115 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Handvirk disksneiðing</strong><br/>Þú getur búið til eða breytt stærð disksneiða sjálft. - + Reuse %1 as home partition for %2. Endurnota %1 sem heimasvæðis disksneið fyrir %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Veldu disksneið til að minnka, dragðu síðan botnstikuna til að breyta stærðinni</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Staðsetning ræsistjóra - + <strong>Select a partition to install on</strong> <strong>Veldu disksneið til að setja upp á </strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI kerfisdisksneið er hvergi að finna á þessu kerfi. Farðu til baka og notaðu handvirka skiptingu til að setja upp %1. - + The EFI system partition at %1 will be used for starting %2. EFI kerfisdisksneið á %1 mun verða notuð til að ræsa %2. - + EFI system partition: EFI kerfisdisksneið: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur mörg stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Eyða disk</strong><br/>Þetta mun <font color="red">eyða</font> öllum gögnum á þessu valdna geymslu tæki. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Setja upp samhliða</strong><br/>Uppsetningarforritið mun minnka disksneið til að búa til pláss fyrir %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Skipta út disksneið</strong><br/>Skiptir disksneið út með %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur %1 á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur mörg stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Hreinsaði alla tengipunkta fyrir %1 @@ -661,22 +661,22 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ClearTempMountsJob - + Clear all temporary mounts. Hreinsa alla bráðabirgðatengipunkta. - + Clearing all temporary mounts. Hreinsa alla bráðabirgðatengipunkta. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. Hreinsaði alla bráðabirgðatengipunkta. @@ -703,30 +703,30 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Tungumál kerfisins verður sett sem %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Setja tímabelti sem %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Notandanafnið þitt er of langt. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Notandanafnið þitt er of stutt. + + + + Your hostname is too long. + Notandanafnið þitt er of langt. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CreateUserJob - + Create user %1 Búa til notanda %1 - + Create user <strong>%1</strong>. Búa til notanda <strong>%1</strong>. - + Creating user %1. Bý til notanda %1. - - Sudoers dir is not writable. - Sudoers dir er ekki skrifanleg. - - - + Cannot create sudoers file for writing. Get ekki búið til sudoers skrá til að lesa. - + Cannot chmod sudoers file. Get ekki chmod sudoers skrá. - - - Cannot open groups file for reading. - Get ekki opnað hópa skrá til að lesa. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. FillGlobalStorageJob - + Set partition information Setja upplýsingar um disksneið - + Install %1 on <strong>new</strong> %2 system partition. Setja upp %1 á <strong>nýja</strong> %2 disk sneiðingu. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setja upp <strong>nýtt</strong> %2 snið með tengipunkti <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Setja upp %2 á %3 disk sneiðingu <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setja upp %3 snið <strong>%1</strong> með tengipunkti <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Setja ræsistjórann upp á <strong>%1</strong>. - + Setting up mount points. Set upp tengipunkta. @@ -1508,12 +1538,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1570,32 +1600,32 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - + I accept the terms and conditions above. Ég samþykki skilyrði leyfissamningsins hér að ofan. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocalePage - + Region: Hérað: - + Zone: Svæði: - - + + &Change... &Breyta... - - - The system language will be set to %1. - Tungumál kerfisins verður sett sem %1. - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - Setja tímabelti sem %1/%2.<br/> - LocaleQmlViewStep - + Location Staðsetning @@ -1713,7 +1728,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocaleViewStep - + Location Staðsetning @@ -1775,7 +1790,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Map - + 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. @@ -2176,7 +2191,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Óþekkt villa - + Password is empty @@ -2515,112 +2530,112 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Söfnun kerfis upplýsingar... - + Partitions Disksneiðar - + Install %1 <strong>alongside</strong> another operating system. Setja upp %1 <strong>ásamt</strong> ásamt öðru stýrikerfi. - + <strong>Erase</strong> disk and install %1. <strong>Eyða</strong> disk og setja upp %1. - + <strong>Replace</strong> a partition with %1. <strong>Skipta út</strong> disksneið með %1. - + <strong>Manual</strong> partitioning. <strong>Handvirk</strong> disksneiðaskipting. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Uppsetning %1 <strong>með</strong> öðru stýrikerfi á disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Eyða</strong> disk <strong>%2</strong> (%3) og setja upp %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Skipta út</strong> disksneið á diski <strong>%2</strong> (%3) með %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Handvirk</strong> disksneiðaskipting á diski <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskur <strong>%1</strong> (%2) - + Current: Núverandi: - + After: Eftir: - + No EFI system partition configured Ekkert EFI kerfisdisksneið stillt - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PreserveFiles - + Saving files for later ... Vista skrár fyrir seinna ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3158,29 +3173,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 Tókst ekki að skrifa %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3413,28 +3428,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3442,28 +3457,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3522,47 +3537,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Notandanafnið þitt er of langt. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Notandanafnið þitt er of stutt. - - - - Your hostname is too long. - Notandanafnið þitt er of langt. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Lykilorð passa ekki! @@ -3570,7 +3555,7 @@ Output: UsersViewStep - + Users Notendur @@ -3783,19 +3768,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3803,44 +3788,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3848,17 +3833,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 136eb7532..179e6b479 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -220,7 +220,7 @@ Passaggio QML <i>%1</i>. - + Loading failed. Caricamento fallito. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed Installazione fallita - + Installation Failed Installazione non riuscita - + Would you like to paste the install log to the web? Si vuole mettere il log di installazione sul web? - + Error Errore - - + + &Yes &Si - - + + &No &No - + &Close &Chiudi - + Install Log Paste URL URL di copia del log d'installazione - + The upload was unsuccessful. No web-paste was done. Il caricamento è fallito. Non è stata fatta la copia sul web. - + Calamares Initialization Failed Inizializzazione di Calamares fallita - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 non può essere installato. Calamares non ha potuto caricare tutti i moduli configurati. Questo è un problema del modo in cui Calamares viene utilizzato dalla distribuzione. - + <br/>The following modules could not be loaded: <br/>I seguenti moduli non possono essere caricati: - + Continue with setup? Procedere con la configurazione? - + Continue with installation? Continuare l'installazione? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Il programma d'installazione %1 sta per modificare il disco di per installare %2. Non sarà possibile annullare queste modifiche. - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Il programma d'installazione %1 sta per eseguire delle modifiche al tuo disco per poter installare %2.<br/><strong> Non sarà possibile annullare tali modifiche.</strong> - + &Set up now &Installa adesso - + &Install now &Installa adesso - + Go &back &Indietro - + &Set up &Installazione - + &Install &Installa - + Setup is complete. Close the setup program. Installazione completata. Chiudere il programma d'installazione. - + The installation is complete. Close the installer. L'installazione è terminata. Chiudere il programma d'installazione. - + Cancel setup without changing the system. Annulla l'installazione senza modificare il sistema. - + Cancel installation without changing the system. Annullare l'installazione senza modificare il sistema. - + &Next &Avanti - + &Back &Indietro - + &Done &Fatto - + &Cancel &Annulla - + Cancel setup? Annullare l'installazione? - + Cancel installation? Annullare l'installazione? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Si vuole annullare veramente il processo di installazione? Il programma d'installazione verrà terminato e tutti i cambiamenti saranno persi. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Si vuole davvero annullare l'installazione in corso? @@ -483,12 +483,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse &Annulla - + %1 Setup Program %1 Programma d'installazione - + %1 Installer %1 Programma di installazione @@ -515,9 +515,9 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse - - - + + + Current: Corrente: @@ -528,115 +528,115 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Partizionamento manuale</strong> <br/>Si possono creare o ridimensionare partizioni. Avere una tabella di partizioni GPT e <strong>una partizione fat32 512Mb /boot è obbligatorio per le installazioni UEFI</strong>, sia usandone una esistente senza formattarla che creandone una nuova. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Partizionamento manuale</strong><br/>Si possono creare o ridimensionare le partizioni manualmente. - + Reuse %1 as home partition for %2. Riutilizzare %1 come partizione home per &2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selezionare una partizione da ridurre, trascina la barra inferiore per ridimensionare</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 sarà ridotta a %2MiB ed una nuova partizione di %3MiB sarà creata per %4 - + Boot loader location: Posizionamento del boot loader: - + <strong>Select a partition to install on</strong> <strong>Selezionare la partizione sulla quale si vuole installare</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Impossibile trovare una partizione EFI di sistema. Si prega di tornare indietro ed effettuare un partizionamento manuale per configurare %1. - + The EFI system partition at %1 will be used for starting %2. La partizione EFI di sistema su %1 sarà usata per avviare %2. - + EFI system partition: Partizione EFI di sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria non sembra contenere alcun sistema operativo. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Cancellare disco</strong><br/>Questo <font color="red">cancellerà</font> tutti i dati attualmente presenti sul dispositivo di memoria. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installare a fianco</strong><br/>Il programma di installazione ridurrà una partizione per dare spazio a %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Sostituire una partizione</strong><br/>Sostituisce una partizione con %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria ha %1. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria contenere già un sistema operativo. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria contenere diversi sistemi operativi. Come si vuole procedere?<br/>Comunque si potranno rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - + No Swap No Swap - + Reuse Swap Riutilizza Swap - + Swap (no Hibernate) Swap (senza ibernazione) - + Swap (with Hibernate) Swap (con ibernazione) - + Swap to file Swap su file @@ -644,17 +644,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse ClearMountsJob - + Clear mounts for partitioning operations on %1 Rimuovere i punti di mount per operazioni di partizionamento su %1 - + Clearing mounts for partitioning operations on %1. Rimozione dei punti di mount per le operazioni di partizionamento su %1. - + Cleared all mounts for %1 Rimossi tutti i punti di mount per %1 @@ -662,22 +662,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse ClearTempMountsJob - + Clear all temporary mounts. Rimuovere tutti i punti di mount temporanei. - + Clearing all temporary mounts. Rimozione di tutti i punti di mount temporanei. - + Cannot get list of temporary mounts. Non è possibile ottenere la lista dei punti di mount temporanei. - + Cleared all temporary mounts. Rimossi tutti i punti di mount temporanei. @@ -704,30 +704,30 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Config - + Set keyboard model to %1.<br/> Impostare il modello di tastiera a %1.<br/> - + Set keyboard layout to %1/%2. Impostare il layout della tastiera a %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. La lingua di sistema sarà impostata a %1. - + The numbers and dates locale will be set to %1. I numeri e le date locali saranno impostati a %1. - - - Set timezone to %1/%2.<br/> - Imposta il fuso orario a %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>Welcome to the %1 installer</h1> Benvenuto nel programma di installazione di %1 + + + Your username is too long. + Il nome utente è troppo lungo. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Il tuo username deve iniziare con una lettera minuscola o un trattino basso. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Solo lettere minuscole, numeri, trattini e trattini bassi sono permessi. + + + + Your hostname is too short. + Hostname è troppo corto. + + + + Your hostname is too long. + Hostname è troppo lungo. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Solo lettere, numeri, trattini e trattini bassi sono permessi. + ContextualProcessJob @@ -957,40 +997,30 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse CreateUserJob - + Create user %1 Creare l'utente %1 - + Create user <strong>%1</strong>. Creare l'utente <strong>%1</strong> - + Creating user %1. Creazione utente %1. - - Sudoers dir is not writable. - La cartella sudoers non è scrivibile. - - - + Cannot create sudoers file for writing. Impossibile creare il file sudoers in scrittura. - + Cannot chmod sudoers file. Impossibile eseguire chmod sul file sudoers. - - - Cannot open groups file for reading. - Impossibile aprire il file groups in lettura. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse FillGlobalStorageJob - + Set partition information Impostare informazioni partizione - + Install %1 on <strong>new</strong> %2 system partition. Installare %1 sulla <strong>nuova</strong> partizione di sistema %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Impostare la <strong>nuova</strong> %2 partizione con punto di mount <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installare %2 sulla partizione di sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Impostare la partizione %3 <strong>%1</strong> con punto di montaggio <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installare il boot loader su <strong>%1</strong>. - + Setting up mount points. Impostazione dei punti di mount. @@ -1509,12 +1539,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse KeyboardPage - + Set keyboard model to %1.<br/> Impostare il modello di tastiera a %1.<br/> - + Set keyboard layout to %1/%2. Impostare il layout della tastiera a %1%2. @@ -1571,32 +1601,32 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>Accordo di Licenza</h1> - + I accept the terms and conditions above. Accetto i termini e le condizioni sopra indicati. - + Please review the End User License Agreements (EULAs). Si prega di leggere l'Accordo di Licenza per l'Utente Finale (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. Questa procedura di configurazione installerà software proprietario che è soggetto ai termini di licenza. - + If you do not agree with the terms, the setup procedure cannot continue. Se non accetti i termini, la procedura di configurazione non può continuare. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza, per fornire caratteristiche aggiuntive e migliorare l'esperienza utente. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Se non se ne accettano i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. @@ -1672,41 +1702,26 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse LocalePage - + Region: Area: - + Zone: Zona: - - + + &Change... &Cambia... - - - The system language will be set to %1. - La lingua di sistema sarà impostata a %1. - - - - The numbers and dates locale will be set to %1. - I numeri e le date locali saranno impostati a %1. - - - - Set timezone to %1/%2.<br/> - Imposta il fuso orario a %1%2.<br/> - LocaleQmlViewStep - + Location Posizione @@ -1714,7 +1729,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse LocaleViewStep - + Location Posizione @@ -1776,7 +1791,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Map - + 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. @@ -2177,7 +2192,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Errore sconosciuto - + Password is empty Password vuota @@ -2516,112 +2531,112 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Raccolta delle informazioni di sistema... - + Partitions Partizioni - + Install %1 <strong>alongside</strong> another operating system. Installare %1 <strong>a fianco</strong> di un altro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Cancellare</strong> il disco e installare %1. - + <strong>Replace</strong> a partition with %1. <strong>Sostituire</strong> una partizione con %1. - + <strong>Manual</strong> partitioning. Partizionamento <strong>manuale</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installare %1 <strong>a fianco</strong> di un altro sistema operativo sul disco<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Cancellare</strong> il disco <strong>%2</strong> (%3) e installa %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Sostituire</strong> una partizione sul disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partizionamento <strong>manuale</strong> sul disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Corrente: - + After: Dopo: - + No EFI system partition configured Nessuna partizione EFI di sistema è configurata - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Una partizione EFI è necessaria per avviare %1.<br/><br/> Per configurare una partizione EFI, tornare indietro e selezionare o creare un filesystem FAT32 con il parametro<strong>%3</strong>abilitato e punto di montaggio <strong>%2</strong>. <br/><br/>Si può continuare senza impostare una partizione EFI ma il sistema potrebbe non avviarsi correttamente. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Una partizione EFI è necessaria per avviare %1.<br/><br/> Una partizione è stata configurata con punto di montaggio <strong>%2</strong> ma il suo parametro <strong>%3</strong> non è impostato.<br/>Per impostare il flag, tornare indietro e modificare la partizione.<br/><br/>Si può continuare senza impostare il parametro ma il sistema potrebbe non avviarsi correttamente. - + EFI system partition flag not set Il flag della partizione EFI di sistema non è impostato. - + Option to use GPT on BIOS Opzione per usare GPT su BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Una tabella partizioni GPT è la migliore opzione per tutti i sistemi. Comunque il programma d'installazione supporta anche la tabella di tipo BIOS. <br/><br/>Per configurare una tabella partizioni GPT su BIOS (se non già configurata) tornare indietro e impostare la tabella partizioni a GPT e creare una partizione non formattata di 8 MB con opzione <strong>bios_grub</strong> abilitata.<br/><br/>Una partizione non formattata di 8 MB è necessaria per avviare %1 su un sistema BIOS con GPT. - + Boot partition not encrypted Partizione di avvio non criptata - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. E' stata configurata una partizione di avvio non criptata assieme ad una partizione root criptata. <br/><br/>Ci sono problemi di sicurezza con questo tipo di configurazione perchè dei file di sistema importanti sono tenuti su una partizione non criptata.<br/>Si può continuare se lo si desidera ma dopo ci sarà lo sblocco del file system, durante l'avvio del sistema.<br/>Per criptare la partizione di avvio, tornare indietro e ricrearla, selezionando <strong>Criptare</strong> nella finestra di creazione della partizione. - + has at least one disk device available. ha almeno un'unità disco disponibile. - + There are no partitions to install on. Non ci sono partizioni su cui installare. @@ -2669,17 +2684,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse PreserveFiles - + Saving files for later ... Salvataggio dei file per dopo ... - + No files configured to save for later. Nessun file configurato per dopo. - + Not all of the configured files could be preserved. Non tutti i file configurati possono essere preservati. @@ -3162,29 +3177,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Imposta il modello di tastiera a %1, con layout %2-%3 - + Failed to write keyboard configuration for the virtual console. Impossibile scrivere la configurazione della tastiera per la console virtuale. - - - + + + Failed to write to %1 Impossibile scrivere su %1 - + Failed to write keyboard configuration for X11. Impossibile scrivere la configurazione della tastiera per X11. - + Failed to write keyboard configuration to existing /etc/default directory. Impossibile scrivere la configurazione della tastiera nella cartella /etc/default. @@ -3417,28 +3432,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback Riscontro dell'utente di KDE - + Configuring KDE user feedback. Sto configurando il riscontro dell'utente di KDE - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Valutazione automatica - + Configuring machine feedback. Configurazione in corso della valutazione automatica. - - + + Error in machine feedback configuration. Errore nella configurazione della valutazione automatica. - + Could not configure machine feedback correctly, script error %1. Non è stato possibile configurare correttamente la valutazione automatica, errore dello script %1. - + Could not configure machine feedback correctly, Calamares error %1. Non è stato possibile configurare correttamente la valutazione automatica, errore di Calamares %1. @@ -3526,47 +3541,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Se più di una persona utilizzerà questo computer, puoi creare ulteriori account dopo la configurazione.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Se più di una persona utilizzerà questo computer, puoi creare ulteriori account dopo l'installazione.</small> - - Your username is too long. - Il nome utente è troppo lungo. - - - - Your username must start with a lowercase letter or underscore. - Il tuo username deve iniziare con una lettera minuscola o un trattino basso. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Solo lettere minuscole, numeri, trattini e trattini bassi sono permessi. - - - - Your hostname is too short. - Hostname è troppo corto. - - - - Your hostname is too long. - Hostname è troppo lungo. - - - - Only letters, numbers, underscore and hyphen are allowed. - Solo lettere, numeri, trattini e trattini bassi sono permessi. - - - + Your passwords do not match! Le password non corrispondono! @@ -3574,7 +3559,7 @@ Output: UsersViewStep - + Users Utenti @@ -3798,19 +3783,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Indietro @@ -3818,44 +3803,44 @@ Output: keyboardq - + Keyboard Model Modello di tastiera - + Pick your preferred keyboard model or use the default one based on the detected hardware Selezionare il modello preferito di tastiera o usare quello predefinito basato sui dispositivi rilevati. - + Refresh Aggiorna - - + + Layouts Schemi - - + + Keyboard Layout Schemi tastiere - + Models Modelli - + Variants Varianti - + Test your keyboard Provare la tastiera @@ -3863,17 +3848,7 @@ Output: localeq - - System language set to %1 - Lingua di sistema impostata su %1 - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 0c8d6a742..fc20c54b3 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -220,7 +220,7 @@ QML ステップ <i>%1</i>。 - + Loading failed. ロードが失敗しました。 @@ -255,171 +255,171 @@ Calamares::ViewManager - + Setup Failed セットアップに失敗しました。 - + Installation Failed インストールに失敗 - + Would you like to paste the install log to the web? インストールログをWebに貼り付けますか? - + Error エラー - - + + &Yes はい (&Y) - - + + &No いいえ (&N) - + &Close 閉じる (&C) - + Install Log Paste URL インストールログを貼り付けるURL - + The upload was unsuccessful. No web-paste was done. アップロードは失敗しました。 ウェブへの貼り付けは行われませんでした。 - + Calamares Initialization Failed Calamares によるインストールに失敗しました。 - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 をインストールできません。Calamares はすべてのモジュールをロードすることをできませんでした。これは、Calamares のこのディストリビューションでの使用法による問題です。 - + <br/>The following modules could not be loaded: <br/>以下のモジュールがロードできませんでした。: - + Continue with setup? セットアップを続行しますか? - + Continue with installation? インストールを続行しますか? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 のセットアッププログラムは %2 のセットアップのためディスクの内容を変更します。<br/><strong>これらの変更は取り消しできません。</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 インストーラーは %2 をインストールするためディスクの内容を変更しようとしています。<br/><strong>これらの変更は取り消せません。</strong> - + &Set up now セットアップしています (&S) - + &Install now 今すぐインストール (&I) - + Go &back 戻る (&B) - + &Set up セットアップ (&S) - + &Install インストール (&I) - + Setup is complete. Close the setup program. セットアップが完了しました。プログラムを閉じます。 - + The installation is complete. Close the installer. インストールが完了しました。インストーラーを閉じます。 - + Cancel setup without changing the system. システムを変更することなくセットアップを中断します。 - + Cancel installation without changing the system. システムを変更しないでインストールを中止します。 - + &Next 次へ (&N) - + &Back 戻る (&B) - + &Done 実行 (&D) - + &Cancel 中止 (&C) - + Cancel setup? セットアップを中止しますか? - + Cancel installation? インストールを中止しますか? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. 本当に現在のセットアップのプロセスを中止しますか? すべての変更が取り消されます。 - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 本当に現在の作業を中止しますか? @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. 中止 (&C) - + %1 Setup Program %1 セットアッププログラム - + %1 Installer %1 インストーラー @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: 現在: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>手動パーティショニング</strong> <br/>自分でパーティションを作成するかサイズを変更できます。GPTパーティションテーブルと <strong>fat32 512MB の /bootパーティションがUEFIインストールには必須です。</strong>フォーマットせずに既存のものを使用するか、新たに作成してください。 + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>手動パーティション</strong><br/>パーティションの作成、あるいはサイズ変更を行うことができます。 - + Reuse %1 as home partition for %2. %1 を %2 のホームパーティションとして再利用する - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>縮小するパーティションを選択し、下のバーをドラッグしてサイズを変更して下さい</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 は %2MiB に縮小され新たに %4 に %3MiB のパーティションが作成されます。 - + Boot loader location: ブートローダーの場所: - + <strong>Select a partition to install on</strong> <strong>インストールするパーティションの選択</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. システムにEFIシステムパーティションが存在しません。%1 のセットアップのため、元に戻り、手動パーティショニングを使用してください。 - + The EFI system partition at %1 will be used for starting %2. %1 上のEFIシステムパーテイションは %2 のスタートに使用されます。 - + EFI system partition: EFI システムパーティション: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスにはオペレーティングシステムが存在しないようです。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>ディスクの消去</strong><br/>選択したストレージデバイス上のデータがすべて <font color="red">削除</font>されます。 - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>共存してインストール</strong><br/>インストーラは %1 用の空きスペースを確保するため、パーティションを縮小します。 - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>パーティションの置換</strong><br/>パーティションを %1 に置き換えます。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスには %1 が存在します。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスにはすでにオペレーティングシステムが存在します。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスには複数のオペレーティングシステムが存在します。何を行いますか?<br />ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 - + No Swap スワップを使用しない - + Reuse Swap スワップを再利用 - + Swap (no Hibernate) スワップ(ハイバーネートなし) - + Swap (with Hibernate) スワップ(ハイバーネート) - + Swap to file ファイルにスワップ @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 のパーティション操作のため、マウントを解除 - + Clearing mounts for partitioning operations on %1. %1 のパーティション操作のため、マウントを解除しています。 - + Cleared all mounts for %1 %1 のすべてのマウントを解除 @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. すべての一時的なマウントをクリア - + Clearing all temporary mounts. すべての一時的なマウントをクリアしています。 - + Cannot get list of temporary mounts. 一時的なマウントのリストを取得できません。 - + Cleared all temporary mounts. すべての一時的なマウントを解除しました。 @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> キーボードのモデルを %1 に設定する。<br/> - + Set keyboard layout to %1/%2. キーボードのレイアウトを %1/%2 に設定する。 - + + Set timezone to %1/%2. + + + + The system language will be set to %1. システムの言語を %1 に設定します。 - + The numbers and dates locale will be set to %1. 数字と日付のロケールを %1 に設定します。 - - - Set timezone to %1/%2.<br/> - タイムゾーンを %1/%2 に設定する。<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>%1 インストーラーへようこそ</h1> + + + Your username is too long. + ユーザー名が長すぎます。 + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + ユーザー名はアルファベットの小文字または _ で始めてください。 + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 使用できるのはアルファベットの小文字と数字と _ と - だけです。 + + + + Your hostname is too short. + ホスト名が短すぎます。 + + + + Your hostname is too long. + ホスト名が長過ぎます。 + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + 使用できるのはアルファベットと数字と _ と - だけです。 + ContextualProcessJob @@ -956,40 +996,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 ユーザー %1 を作成 - + Create user <strong>%1</strong>. ユーザー <strong>%1</strong> を作成。 - + Creating user %1. ユーザー %1 を作成しています。 - - Sudoers dir is not writable. - sudoers ディレクトリは書き込み可能ではありません。 - - - + Cannot create sudoers file for writing. sudoersファイルを作成できません。 - + Cannot chmod sudoers file. sudoersファイルの権限を変更できません。 - - - Cannot open groups file for reading. - groups ファイルを読み込めません。 - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information パーティション情報の設定 - + Install %1 on <strong>new</strong> %2 system partition. <strong>新しい</strong> %2 システムパーティションに %1 をインストール。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. マウントポイント <strong>%1</strong> に<strong>新しく</strong> %2 パーティションをセットアップする。 - + Install %2 on %3 system partition <strong>%1</strong>. %3 システムパーティション <strong>%1</strong> に%2 をインストール。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. パーティション <strong>%1</strong> マウントポイント <strong>%2</strong> に %3 をセットアップする。 - + Install boot loader on <strong>%1</strong>. <strong>%1</strong> にブートローダーをインストール - + Setting up mount points. マウントポイントを設定する。 @@ -1509,12 +1539,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> キーボードのモデルを %1 に設定する。<br/> - + Set keyboard layout to %1/%2. キーボードのレイアウトを %1/%2 に設定する。 @@ -1571,32 +1601,32 @@ The installer will quit and all changes will be lost. <h1>ライセンス契約</h1> - + I accept the terms and conditions above. 上記の項目及び条件に同意します。 - + Please review the End User License Agreements (EULAs). エンドユーザーライセンス契約(EULA)を確認してください。 - + This setup procedure will install proprietary software that is subject to licensing terms. このセットアップ手順では、ライセンス条項の対象となるプロプライエタリソフトウェアをインストールします。 - + If you do not agree with the terms, the setup procedure cannot continue. 条件に同意しない場合はセットアップ手順を続行できません。 - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. このセットアップ手順では、追加機能を提供し、ユーザーエクスペリエンスを向上させるために、ライセンス条項の対象となるプロプライエタリソフトウェアをインストールできます。 - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 条件に同意しない場合はプロプライエタリソフトウェアがインストールされず、代わりにオープンソースの代替ソフトウェアが使用されます。 @@ -1672,41 +1702,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: 地域: - + Zone: ゾーン: - - + + &Change... 変更 (&C)... - - - The system language will be set to %1. - システムの言語を %1 に設定します。 - - - - The numbers and dates locale will be set to %1. - 数字と日付のロケールを %1 に設定します。 - - - - Set timezone to %1/%2.<br/> - タイムゾーンを %1/%2 に設定する。<br/> - LocaleQmlViewStep - + Location ロケーション @@ -1714,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location ロケーション @@ -1776,7 +1791,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2180,7 +2195,7 @@ The installer will quit and all changes will be lost. 未知のエラー - + Password is empty パスワードが空です @@ -2519,112 +2534,112 @@ The installer will quit and all changes will be lost. システム情報を取得しています... - + Partitions パーティション - + Install %1 <strong>alongside</strong> another operating system. 他のオペレーティングシステムに<strong>共存して</strong> %1 をインストール。 - + <strong>Erase</strong> disk and install %1. ディスクを<strong>消去</strong>し %1 をインストール。 - + <strong>Replace</strong> a partition with %1. パーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning. <strong>手動</strong>でパーティションを設定する。 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). ディスク <strong>%2</strong> (%3) 上ののオペレーティングシステムと<strong>共存</strong>して %1 をインストール。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. ディスク <strong>%2</strong> (%3) を<strong>消去して</strong> %1 をインストール。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. ディスク <strong>%2</strong> (%3) 上のパーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). ディスク <strong>%1</strong> (%2) に <strong>手動で</strong>パーティショニングする。 - + Disk <strong>%1</strong> (%2) ディスク <strong>%1</strong> (%2) - + Current: 現在: - + After: 変更後: - + No EFI system partition configured EFI システムパーティションが設定されていません - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 を起動するには、EFIシステムパーティションが必要です。<br/> <br/> EFIシステムパーティションを設定するには、戻って、<strong>%3</strong> フラグを有効にしたFAT32ファイルシステムを選択または作成し、マウントポイントを <strong>%2</strong> にします。<br/> <br/>EFIシステムパーティションを設定せずに続行すると、システムが起動しない場合があります。 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 を起動するには、EFIシステムパーティションが必要です。<br/> <br/> パーティションはマウントポイント <strong>%2</strong> に設定されましたが、<strong>%3</strong> フラグが設定されていません。フラグを設定するには、戻ってパーティションを編集してください。フラグを設定せずに続行すると、システムが起動しない場合があります。 - + EFI system partition flag not set EFI システムパーティションのフラグが設定されていません - + Option to use GPT on BIOS BIOSでGPTを使用するためのオプション - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPTパーティションテーブルは、すべてのシステムに最適なオプションです。このインストーラーは、BIOSシステムのこのようなセットアップもサポートしています。<br/><br/>BIOSでGPTパーティションテーブルを設定するには(まだ行っていない場合)、前に戻ってパーティションテーブルをGPTに設定し、<strong>bios_grub</strong>フラグを有効にして 8 MB の未フォーマットのパーティションを作成します。GPTに設定したBIOSシステムで %1 を起動するには、未フォーマットの 8 MB パーティションが必要です。 - + Boot partition not encrypted ブートパーティションが暗号化されていません - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. ブートパーティションは暗号化されたルートパーティションとともにセットアップされましたが、ブートパーティションは暗号化されていません。<br/><br/>重要なシステムファイルが暗号化されていないパーティションに残されているため、このようなセットアップは安全上の懸念があります。<br/>セットアップを続行することはできますが、後でシステムの起動中にファイルシステムが解除されるおそれがあります。<br/>ブートパーティションを暗号化させるには、前の画面に戻って、再度パーティションを作成し、パーティション作成ウィンドウ内で<strong>Encrypt</strong> (暗号化) を選択してください。 - + has at least one disk device available. 少なくとも1枚のディスクは使用可能。 - + There are no partitions to install on. インストールするパーティションがありません。 @@ -2672,17 +2687,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... 後でファイルを保存する... - + No files configured to save for later. 保存するための設定ファイルがありません。 - + Not all of the configured files could be preserved. 設定ファイルはすべて保護されるわけではありません。 @@ -3168,29 +3183,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 キーボードのモデルを %1 に、レイアウトを %2-%3に設定 - + Failed to write keyboard configuration for the virtual console. 仮想コンソールでのキーボード設定の書き込みに失敗しました。 - - - + + + Failed to write to %1 %1 への書き込みに失敗しました - + Failed to write keyboard configuration for X11. X11 のためのキーボード設定の書き込みに失敗しました。 - + Failed to write keyboard configuration to existing /etc/default directory. 現存する /etc/default ディレクトリへのキーボード設定の書き込みに失敗しました。 @@ -3423,28 +3438,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback KDEのユーザーフィードバック - + Configuring KDE user feedback. KDEのユーザーフィードバックを設定しています。 - - + + Error in KDE user feedback configuration. KDEのユーザーフィードバックの設定でエラー。 - + Could not configure KDE user feedback correctly, script error %1. KDEのユーザーフィードバックを正しく設定できませんでした。スクリプトエラー %1。 - + Could not configure KDE user feedback correctly, Calamares error %1. KDEのユーザーフィードバックを正しく設定できませんでした。Calamaresエラー %1。 @@ -3452,28 +3467,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback マシンフィードバック - + Configuring machine feedback. マシンフィードバックの設定 - - + + Error in machine feedback configuration. マシンフィードバックの設定中のエラー - + Could not configure machine feedback correctly, script error %1. マシンフィードバックの設定が正確にできませんでした、スクリプトエラー %1。 - + Could not configure machine feedback correctly, Calamares error %1. マシンフィードバックの設定が正確にできませんでした、Calamares エラー %1。 @@ -3532,47 +3547,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>もし複数の人間がこのコンピュータを使用する場合、セットアップの後で複数のアカウントを作成できます。</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>もし複数の人間がこのコンピュータを使用する場合、インストールの後で複数のアカウントを作成できます。</small> - - Your username is too long. - ユーザー名が長すぎます。 - - - - Your username must start with a lowercase letter or underscore. - ユーザー名はアルファベットの小文字または _ で始めてください。 - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - 使用できるのはアルファベットの小文字と数字と _ と - だけです。 - - - - Your hostname is too short. - ホスト名が短すぎます。 - - - - Your hostname is too long. - ホスト名が長過ぎます。 - - - - Only letters, numbers, underscore and hyphen are allowed. - 使用できるのはアルファベットと数字と _ と - だけです。 - - - + Your passwords do not match! パスワードが一致していません! @@ -3580,7 +3565,7 @@ Output: UsersViewStep - + Users ユーザー情報 @@ -3804,21 +3789,20 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>言語</h1> </br> システムロケールの設定は、一部のコマンドラインユーザーインターフェイスの言語と文字セットに影響します。現在の設定は <strong>%1</strong> です。 - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>ロケール</h1> </br> -システムロケールの設定は、一部のコマンドラインユーザーインターフェイスの言語と文字セットに影響します。現在の設定は <strong>%1</strong> です。 + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + - + Back 戻る @@ -3826,44 +3810,44 @@ Output: keyboardq - + Keyboard Model キーボードモデル - + Pick your preferred keyboard model or use the default one based on the detected hardware 使用するキーボードモデルを選択するか、検出されたハードウェアに基づいてデフォルトのキーボードモデルを使用してください - + Refresh 更新 - - + + Layouts レイアウト - - + + Keyboard Layout キーボードレイアウト - + Models モデル - + Variants バリアント - + Test your keyboard キーボードをテストしてください @@ -3871,17 +3855,7 @@ Output: localeq - - System language set to %1 - システム言語が %1 に設定されました - - - - Numbers and dates locale set to %1 - 数値と日付のロケールが %1 に設定されました - - - + Change 変更 diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index 30c185059..7edbe0c44 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Алға - + &Back А&ртқа - + &Done - + &Cancel Ба&с тарту - + Cancel setup? - + Cancel installation? Орнатудан бас тарту керек пе? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. Ба&с тарту - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI жүйелік бөлімі: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users Пайдаланушылар @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index ba9759c41..74ee0833c 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed ಅನುಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ - + Would you like to paste the install log to the web? - + Error ದೋಷ - - + + &Yes ಹೌದು - - + + &No ಇಲ್ಲ - + &Close ಮುಚ್ಚಿರಿ - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next ಮುಂದಿನ - + &Back ಹಿಂದಿನ - + &Done - + &Cancel ರದ್ದುಗೊಳಿಸು - + Cancel setup? - + Cancel installation? ಅನುಸ್ಥಾಪನೆಯನ್ನು ರದ್ದುಮಾಡುವುದೇ? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. ರದ್ದುಗೊಳಿಸು - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: ಪ್ರಸಕ್ತ: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: ಪ್ರಸಕ್ತ: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts index 08bb2ab1f..b39d728da 100644 --- a/lang/calamares_ko.ts +++ b/lang/calamares_ko.ts @@ -220,7 +220,7 @@ QML 단계 <i>%1</i>. - + Loading failed. 로딩하지 못했습니다. @@ -255,171 +255,171 @@ Calamares::ViewManager - + Setup Failed 설치 실패 - + Installation Failed 설치 실패 - + Would you like to paste the install log to the web? 설치 로그를 웹에 붙여넣으시겠습니까? - + Error 오류 - - + + &Yes 예(&Y) - - + + &No 아니오(&N) - + &Close 닫기(&C) - + Install Log Paste URL 로그 붙여넣기 URL 설치 - + The upload was unsuccessful. No web-paste was done. 업로드에 실패했습니다. 웹 붙여넣기가 수행되지 않았습니다. - + Calamares Initialization Failed Calamares 초기화 실패 - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 가 설치될 수 없습니다. Calamares가 모든 구성된 모듈을 불러올 수 없었습니다. 이것은 Calamares가 분포에 의해 사용되는 방식에서 비롯된 문제입니다. - + <br/>The following modules could not be loaded: 다음 모듈 불러오기 실패: - + Continue with setup? 설치를 계속하시겠습니까? - + Continue with installation? 설치를 계속하시겠습니까? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 설치 프로그램이 %2을(를) 설정하기 위해 디스크를 변경하려고 하는 중입니다.<br/><strong>이러한 변경은 취소할 수 없습니다.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 인스톨러가 %2를 설치하기 위해 사용자의 디스크의 내용을 변경하려고 합니다. <br/> <strong>이 변경 작업은 되돌릴 수 없습니다.</strong> - + &Set up now 지금 설치 (&S) - + &Install now 지금 설치 (&I) - + Go &back 뒤로 이동 (&b) - + &Set up 설치 (&S) - + &Install 설치(&I) - + Setup is complete. Close the setup program. 설치가 완료 되었습니다. 설치 프로그램을 닫습니다. - + The installation is complete. Close the installer. 설치가 완료되었습니다. 설치 관리자를 닫습니다. - + Cancel setup without changing the system. 시스템을 변경 하지 않고 설치를 취소합니다. - + Cancel installation without changing the system. 시스템 변경 없이 설치를 취소합니다. - + &Next 다음 (&N) - + &Back 뒤로 (&B) - + &Done 완료 (&D) - + &Cancel 취소 (&C) - + Cancel setup? 설치를 취소 하시겠습니까? - + Cancel installation? 설치를 취소하시겠습니까? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. 현재 설정 프로세스를 취소하시겠습니까? 설치 프로그램이 종료되고 모든 변경 내용이 손실됩니다. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 정말로 현재 설치 프로세스를 취소하시겠습니까? @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. 취소 (&C) - + %1 Setup Program %1 설치 프로그램 - + %1 Installer %1 설치 관리자 @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: 현재: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>수동 파티션 작업</strong><br/>파티션을 직접 만들거나 크기를 조정할 수 있다. <strong>UEFI 설치 시 GPT 파티션 테이블과 fat32 512Mb /boot 파티션이 반드시 있어야 하며</strong>, 포맷 없이 기존 파티션을 사용하거나 기존 파티션을 생성하십시오. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>수동 파티션 작업</strong><br/>직접 파티션을 만들거나 크기를 조정할 수 있습니다. - + Reuse %1 as home partition for %2. %2의 홈 파티션으로 %1을 재사용합니다. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>축소할 파티션을 선택한 다음 하단 막대를 끌어 크기를 조정합니다.</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1이 %2MiB로 축소되고 %4에 대해 새 %3MiB 파티션이 생성됩니다. - + Boot loader location: 부트 로더 위치 : - + <strong>Select a partition to install on</strong> <strong>설치할 파티션을 선택합니다.</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. 이 시스템에서는 EFI 시스템 파티션을 찾을 수 없습니다. 돌아가서 수동 파티션 작업을 사용하여 %1을 설정하세요. - + The EFI system partition at %1 will be used for starting %2. %1의 EFI 시스템 파티션은 %2의 시작으로 사용될 것입니다. - + EFI system partition: EFI 시스템 파티션: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 이 저장 장치에는 운영 체제가없는 것 같습니다. 무엇을하고 싶으십니까?<br/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>디스크 지우기</strong><br/>그러면 선택한 저장 장치에 현재 있는 모든 데이터가 <font color="red">삭제</font>됩니다. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>함께 설치</strong><br/>설치 관리자가 파티션을 축소하여 %1 공간을 확보합니다. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>파티션 바꾸기</strong><br/>파티션을 %1로 바꿉니다. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 이 저장 장치에 %1이 있습니다. 무엇을하고 싶으십니까?<br/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 이 저장 장치에는 이미 운영 체제가 있습니다. 무엇을하고 싶으십니까?<br/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 이 저장 장치에는 여러 개의 운영 체제가 있습니다. 무엇을하고 싶으십니까?<br/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. - + No Swap 스왑 없음 - + Reuse Swap 스왑 재사용 - + Swap (no Hibernate) 스왑 (최대 절전모드 아님) - + Swap (with Hibernate) 스왑 (최대 절전모드 사용) - + Swap to file 파일로 스왑 @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 파티셔닝 작업을 위해 %1의 마운트를 모두 해제합니다 - + Clearing mounts for partitioning operations on %1. 파티셔닝 작업을 위해 %1의 마운트를 모두 해제하는 중입니다. - + Cleared all mounts for %1 %1의 모든 마운트가 해제되었습니다. @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. 모든 임시 마운트들을 해제합니다 - + Clearing all temporary mounts. 모든 임시 마운트들이 해제하는 중입니다. - + Cannot get list of temporary mounts. 임시 마운트들의 목록을 가져올 수 없습니다. - + Cleared all temporary mounts. 모든 임시 마운트들이 해제되었습니다. @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> 키보드 모델을 %1로 설정합니다.<br/> - + Set keyboard layout to %1/%2. 키보드 레이아웃을 %1/%2로 설정합니다. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. 시스템 언어가 %1로 설정됩니다. - + The numbers and dates locale will be set to %1. 숫자와 날짜 로케일이 %1로 설정됩니다. - - - Set timezone to %1/%2.<br/> - 표준시간대를 %1/%2로 설정합니다.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + 사용자 이름이 너무 깁니다. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + 사용자 이름은 소문자 또는 밑줄로 시작해야 합니다. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 소문자, 숫자, 밑줄 및 하이픈만 허용됩니다. + + + + Your hostname is too short. + 호스트 이름이 너무 짧습니다. + + + + Your hostname is too long. + 호스트 이름이 너무 깁니다. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + 문자, 숫자, 밑줄 및 하이픈만 허용됩니다. + ContextualProcessJob @@ -956,40 +996,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 %1 사용자를 만듭니다 - + Create user <strong>%1</strong>. <strong>%1</strong>사용자를 만듭니다 . - + Creating user %1. %1 사용자를 만드는 중입니다. - - Sudoers dir is not writable. - Sudoers 디렉터리가 쓰기 금지되어 있습니다. - - - + Cannot create sudoers file for writing. sudoers 파일을 만들 수가 없습니다. - + Cannot chmod sudoers file. sudoers 파일의 권한을 변경할 수 없습니다. - - - Cannot open groups file for reading. - groups 파일을 읽을 수가 없습니다. - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information 파티션 정보 설정 - + Install %1 on <strong>new</strong> %2 system partition. <strong>새</strong> %2 시스템 파티션에 %1를설치합니다. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. 마운트 위치 <strong>%1</strong>을 사용하여 <strong>새</strong> 파티션 %2를 설정합니다. - + Install %2 on %3 system partition <strong>%1</strong>. 시스템 파티션 <strong>%1</strong>의 %3에 %2를 설치합니다. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. <strong>%2</strong> 마운트 위치를 사용하여 파티션 <strong>%1</strong>의 %3 을 설정합니다. - + Install boot loader on <strong>%1</strong>. <strong>%1</strong>에 부트 로더를 설치합니다. - + Setting up mount points. 마운트 위치를 설정 중입니다. @@ -1508,12 +1538,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 키보드 모델을 %1로 설정합니다.<br/> - + Set keyboard layout to %1/%2. 키보드 레이아웃을 %1/%2로 설정합니다. @@ -1570,32 +1600,32 @@ The installer will quit and all changes will be lost. <h1>라이센스 계약</h1> - + I accept the terms and conditions above. 상기 계약 조건을 모두 동의합니다. - + Please review the End User License Agreements (EULAs). 최종 사용자 사용권 계약(EULA)을 검토하십시오. - + This setup procedure will install proprietary software that is subject to licensing terms. 이 설정 절차에서는 라이센스 조건에 해당하는 독점 소프트웨어를 설치합니다. - + If you do not agree with the terms, the setup procedure cannot continue. 약관에 동의하지 않으면 설치 절차를 계속할 수 없습니다. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. 이 설치 절차는 추가 기능을 제공하고 사용자 환경을 향상시키기 위해 라이선스 조건에 따라 독점 소프트웨어를 설치할 수 있습니다. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 조건에 동의하지 않으면 독점 소프트웨어가 설치되지 않으며 대신 오픈 소스 대체 소프트웨어가 사용됩니다. @@ -1671,41 +1701,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: 지역 : - + Zone: 표준시간대 : - - + + &Change... 변경 (&C)... - - - The system language will be set to %1. - 시스템 언어가 %1로 설정됩니다. - - - - The numbers and dates locale will be set to %1. - 숫자와 날짜 로케일이 %1로 설정됩니다. - - - - Set timezone to %1/%2.<br/> - 표준시간대를 %1/%2로 설정합니다.<br/> - LocaleQmlViewStep - + Location 위치 @@ -1713,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 위치 @@ -1775,7 +1790,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2176,7 +2191,7 @@ The installer will quit and all changes will be lost. 알 수 없는 오류 - + Password is empty 비밀번호가 비어 있습니다 @@ -2515,112 +2530,112 @@ The installer will quit and all changes will be lost. 시스템 정보 수집 중... - + Partitions 파티션 - + Install %1 <strong>alongside</strong> another operating system. %1을 다른 운영 체제와 <strong>함께</strong> 설치합니다. - + <strong>Erase</strong> disk and install %1. 디스크를 <strong>지우고</strong> %1을 설치합니다. - + <strong>Replace</strong> a partition with %1. 파티션을 %1로 <strong>바꿉니다</strong>. - + <strong>Manual</strong> partitioning. <strong>수동</strong> 파티션 작업 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 디스크 <strong>%2</strong> (%3)에 다른 운영 체제와 <strong>함께</strong> %1을 설치합니다. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. 디스크 <strong>%2</strong> (%3)를 <strong>지우고</strong> %1을 설치합니다. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 디스크 <strong>%2</strong> (%3)의 파티션을 %1로 <strong>바꿉니다</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 디스크 <strong>%1</strong> (%2) 의 <strong>수동</strong> 파티션 작업입니다. - + Disk <strong>%1</strong> (%2) 디스크 <strong>%1</strong> (%2) - + Current: 현재: - + After: 이후: - + No EFI system partition configured EFI 시스템 파티션이 설정되지 않았습니다 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set EFI 시스템 파티션 플래그가 설정되지 않았습니다 - + Option to use GPT on BIOS BIOS에서 GPT를 사용하는 옵션 - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT 파티션 테이블은 모든 시스템에 가장 적합한 옵션입니다. 이 설치 프로그램은 BIOS 시스템에 대한 이러한 설정도 지원합니다.<br/><br/>BIOS에서 GPT 파티션 테이블을 구성하려면(아직 구성되지 않은 경우) 돌아가서 파티션 테이블을 GPT로 설정한 다음, <strong>bios_grub</strong> 플래그가 사용하도록 설정된 8MB의 포맷되지 않은 파티션을 생성합니다.<br/><br/>GPT가 있는 BIOS 시스템에서 %1을 시작하려면 포맷되지 않은 8MB 파티션이 필요합니다. - + Boot partition not encrypted 부트 파티션이 암호화되지 않았습니다 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 암호화된 루트 파티션과 함께 별도의 부팅 파티션이 설정되었지만 부팅 파티션은 암호화되지 않았습니다.<br/><br/>중요한 시스템 파일은 암호화되지 않은 파티션에 보관되기 때문에 이러한 설정과 관련하여 보안 문제가 있습니다.<br/>원하는 경우 계속할 수 있지만 나중에 시스템을 시작하는 동안 파일 시스템 잠금이 해제됩니다.<br/>부팅 파티션을 암호화하려면 돌아가서 다시 생성하여 파티션 생성 창에서 <strong>암호화</strong>를 선택합니다. - + has at least one disk device available. 하나 이상의 디스크 장치를 사용할 수 있습니다. - + There are no partitions to install on. 설치를 위한 파티션이 없습니다. @@ -2668,17 +2683,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... 나중을 위해 파일들을 저장하는 중... - + No files configured to save for later. 나중을 위해 저장될 설정된 파일들이 없습니다. - + Not all of the configured files could be preserved. 모든 설정된 파일들이 보존되는 것은 아닙니다. @@ -3161,29 +3176,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 키보드 모델을 %1로 설정하고, 레이아웃을 %2-%3으로 설정합니다 - + Failed to write keyboard configuration for the virtual console. 가상 콘솔을 위한 키보드 설정을 저장할 수 없습니다. - - - + + + Failed to write to %1 %1에 쓰기를 실패했습니다 - + Failed to write keyboard configuration for X11. X11에 대한 키보드 설정을 저장하지 못했습니다. - + Failed to write keyboard configuration to existing /etc/default directory. /etc/default 디렉터리에 키보드 설정을 저장하지 못했습니다. @@ -3416,28 +3431,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3445,28 +3460,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback 시스템 피드백 - + Configuring machine feedback. 시스템 피드백을 설정하는 중입니다. - - + + Error in machine feedback configuration. 시스템 피드백 설정 중에 오류가 발생했습니다. - + Could not configure machine feedback correctly, script error %1. 시스템 피드백을 정확하게 설정할 수 없습니다, %1 스크립트 오류. - + Could not configure machine feedback correctly, Calamares error %1. 시스템 피드백을 정확하게 설정할 수 없습니다, %1 깔라마레스 오류. @@ -3525,47 +3540,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>둘 이상의 사용자가 이 컴퓨터를 사용할 경우, 설정 후 계정을 여러 개 만들 수 있습니다.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>둘 이상의 사용자가 이 컴퓨터를 사용할 경우 설치 후 계정을 여러 개 만들 수 있습니다.</small> - - Your username is too long. - 사용자 이름이 너무 깁니다. - - - - Your username must start with a lowercase letter or underscore. - 사용자 이름은 소문자 또는 밑줄로 시작해야 합니다. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - 소문자, 숫자, 밑줄 및 하이픈만 허용됩니다. - - - - Your hostname is too short. - 호스트 이름이 너무 짧습니다. - - - - Your hostname is too long. - 호스트 이름이 너무 깁니다. - - - - Only letters, numbers, underscore and hyphen are allowed. - 문자, 숫자, 밑줄 및 하이픈만 허용됩니다. - - - + Your passwords do not match! 암호가 일치하지 않습니다! @@ -3573,7 +3558,7 @@ Output: UsersViewStep - + Users 사용자 @@ -3797,19 +3782,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back 뒤로 @@ -3817,44 +3802,44 @@ Output: keyboardq - + Keyboard Model 키보드 모델 - + Pick your preferred keyboard model or use the default one based on the detected hardware 기본 키보드 모델을 선택하거나 탐지된 하드웨어를 기반으로 기본 키보드 모델을 사용하십시오 - + Refresh 새로 고침 - - + + Layouts 레이아웃 - - + + Keyboard Layout 키보드 레이아웃 - + Models 모델 - + Variants 변형 - + Test your keyboard 키보드 테스트 @@ -3862,17 +3847,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index 46a2a0fb6..0c2b4d224 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -255,170 +255,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -479,12 +479,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -511,9 +511,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -524,115 +524,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -640,17 +640,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -658,22 +658,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -700,30 +700,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -789,6 +789,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -953,40 +993,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1224,37 +1254,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1505,12 +1535,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1567,32 +1597,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1668,41 +1698,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1710,7 +1725,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1772,7 +1787,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2173,7 +2188,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2512,112 +2527,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2665,17 +2680,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3155,29 +3170,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3410,28 +3425,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3439,28 +3454,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3519,47 +3534,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3567,7 +3552,7 @@ Output: UsersViewStep - + Users @@ -3780,19 +3765,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3800,44 +3785,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3845,17 +3830,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 261317f2c..2b3e6cb26 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -220,7 +220,7 @@ QML <i>%1</i> žingsnis. - + Loading failed. Įkėlimas nepavyko. @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed Sąranka patyrė nesėkmę - + Installation Failed Diegimas nepavyko - + Would you like to paste the install log to the web? Ar norėtumėte įdėti diegimo žurnalą į saityną? - + Error Klaida - - + + &Yes &Taip - - + + &No &Ne - + &Close &Užverti - + Install Log Paste URL Diegimo žurnalo įdėjimo URL - + The upload was unsuccessful. No web-paste was done. Įkėlimas buvo nesėkmingas. Nebuvo atlikta jokio įdėjimo į saityną. - + Calamares Initialization Failed Calamares inicijavimas nepavyko - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. Nepavyksta įdiegti %1. Calamares nepavyko įkelti visų sukonfigūruotų modulių. Tai yra problema, susijusi su tuo, kaip distribucija naudoja diegimo programą Calamares. - + <br/>The following modules could not be loaded: <br/>Nepavyko įkelti šių modulių: - + Continue with setup? Tęsti sąranką? - + Continue with installation? Tęsti diegimą? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sąrankos programa, siekdama nustatyti %2, ketina atlikti pakeitimus diske.<br/><strong>Šių pakeitimų nebegalėsite atšaukti.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.<br/><strong>Šių pakeitimų nebegalėsite atšaukti.</strong> - + &Set up now Nu&statyti dabar - + &Install now Į&diegti dabar - + Go &back &Grįžti - + &Set up Nu&statyti - + &Install Į&diegti - + Setup is complete. Close the setup program. Sąranka užbaigta. Užverkite sąrankos programą. - + The installation is complete. Close the installer. Diegimas užbaigtas. Užverkite diegimo programą. - + Cancel setup without changing the system. Atsisakyti sąrankos, nieko sistemoje nekeičiant. - + Cancel installation without changing the system. Atsisakyti diegimo, nieko sistemoje nekeičiant. - + &Next &Toliau - + &Back &Atgal - + &Done A&tlikta - + &Cancel A&tsisakyti - + Cancel setup? Atsisakyti sąrankos? - + Cancel installation? Atsisakyti diegimo? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Ar tikrai norite atsisakyti dabartinio sąrankos proceso? Sąrankos programa užbaigs darbą ir visi pakeitimai bus prarasti. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ar tikrai norite atsisakyti dabartinio diegimo proceso? @@ -488,12 +488,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. A&tsisakyti - + %1 Setup Program %1 sąrankos programa - + %1 Installer %1 diegimo programa @@ -520,9 +520,9 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - - - + + + Current: Dabartinis: @@ -533,115 +533,115 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Rankinis skaidymas</strong><br/>Galite patys kurti skaidinius arba keisti jų dydžius. UEFI diegimui diskas privalo turėti GPT skaidinių lentelę ir <strong>fat32 512Mb /boot skaidinį</strong>, kuris gali būti senas ir nesuženklintas arba sukurtas naujai. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Rankinis skaidymas</strong><br/>Galite patys kurti ar keisti skaidinių dydžius. - + Reuse %1 as home partition for %2. Pakartotinai naudoti %1 kaip namų skaidinį, skirtą %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Pasirinkite, kurį skaidinį sumažinti, o tuomet vilkite juostą, kad pakeistumėte skaidinio dydį</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 bus sumažintas iki %2MiB ir naujas %3MiB skaidinys bus sukurtas sistemai %4. - + Boot loader location: Paleidyklės vieta: - + <strong>Select a partition to install on</strong> <strong>Pasirinkite kuriame skaidinyje įdiegti</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Šioje sistemoje niekur nepavyko rasti EFI skaidinio. Prašome grįžti ir naudoti rankinį skaidymą, kad nustatytumėte %1. - + The EFI system partition at %1 will be used for starting %2. %2 paleidimui bus naudojamas EFI sistemos skaidinys, esantis ties %1. - + EFI system partition: EFI sistemos skaidinys: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Atrodo, kad šiame įrenginyje nėra operacinės sistemos. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Ištrinti diską</strong><br/>Tai <font color="red">ištrins</font> visus, pasirinktame atminties įrenginyje, esančius duomenis. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Įdiegti šalia</strong><br/>Diegimo programa sumažins skaidinį, kad atlaisvintų vietą sistemai %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Pakeisti skaidinį</strong><br/>Pakeičia skaidinį ir įrašo %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra %1. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra operacinė sistema. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra kelios operacinės sistemos. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - + No Swap Be sukeitimų skaidinio - + Reuse Swap Iš naujo naudoti sukeitimų skaidinį - + Swap (no Hibernate) Sukeitimų skaidinys (be užmigdymo) - + Swap (with Hibernate) Sukeitimų skaidinys (su užmigdymu) - + Swap to file Sukeitimų failas @@ -649,17 +649,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ClearMountsJob - + Clear mounts for partitioning operations on %1 Išvalyti prijungimus, siekiant atlikti skaidymo operacijas skaidiniuose %1 - + Clearing mounts for partitioning operations on %1. Išvalomi prijungimai, siekiant atlikti skaidymo operacijas skaidiniuose %1. - + Cleared all mounts for %1 Visi %1 prijungimai išvalyti @@ -667,22 +667,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ClearTempMountsJob - + Clear all temporary mounts. Išvalyti visus laikinuosius prijungimus. - + Clearing all temporary mounts. Išvalomi visi laikinieji prijungimai. - + Cannot get list of temporary mounts. Nepavyksta gauti laikinųjų prijungimų sąrašo. - + Cleared all temporary mounts. Visi laikinieji prijungimai išvalyti. @@ -709,30 +709,30 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Config - + Set keyboard model to %1.<br/> Nustatyti klaviatūros modelį kaip %1.<br/> - + Set keyboard layout to %1/%2. Nustatyti klaviatūros išdėstymą kaip %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Sistemos kalba bus nustatyta į %1. - + The numbers and dates locale will be set to %1. Skaičių ir datų lokalė bus nustatyta į %1. - - - Set timezone to %1/%2.<br/> - Nustatyti laiko juostą kaip %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -798,6 +798,46 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <h1>Welcome to the %1 installer</h1> <h1>Jus sveikina %1 diegimo programa</h1> + + + Your username is too long. + Jūsų naudotojo vardas yra pernelyg ilgas. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Jūsų naudotojo vardas privalo prasidėti mažąja raide arba pabraukimo brūkšniu. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Yra leidžiamos tik mažosios raidės, skaitmenys, pabraukimo brūkšniai ir brūkšneliai. + + + + Your hostname is too short. + Jūsų kompiuterio vardas yra pernelyg trumpas. + + + + Your hostname is too long. + Jūsų kompiuterio vardas yra pernelyg ilgas. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Yra leidžiamos tik raidės, skaitmenys, pabraukimo brūkšniai ir brūkšneliai. + ContextualProcessJob @@ -962,40 +1002,30 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CreateUserJob - + Create user %1 Sukurti naudotoją %1 - + Create user <strong>%1</strong>. Sukurti naudotoją <strong>%1</strong>. - + Creating user %1. Kuriamas naudotojas %1. - - Sudoers dir is not writable. - Nepavyko įrašymui sukurti katalogo sudoers. - - - + Cannot create sudoers file for writing. Nepavyko įrašymui sukurti failo sudoers. - + Cannot chmod sudoers file. Nepavyko pritaikyti chmod failui sudoers. - - - Cannot open groups file for reading. - Nepavyko skaitymui atverti grupių failo. - CreateVolumeGroupDialog @@ -1233,37 +1263,37 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. FillGlobalStorageJob - + Set partition information Nustatyti skaidinio informaciją - + Install %1 on <strong>new</strong> %2 system partition. Įdiegti %1 <strong>naujame</strong> %2 sistemos skaidinyje. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Nustatyti <strong>naują</strong> %2 skaidinį su prijungimo tašku <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Diegti %2 sistemą, %3 sistemos skaidinyje <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Nustatyti %3 skaidinį <strong>%1</strong> su prijungimo tašku <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Diegti paleidyklę skaidinyje <strong>%1</strong>. - + Setting up mount points. Nustatomi prijungimo taškai. @@ -1514,12 +1544,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. KeyboardPage - + Set keyboard model to %1.<br/> Nustatyti klaviatūros modelį kaip %1.<br/> - + Set keyboard layout to %1/%2. Nustatyti klaviatūros išdėstymą kaip %1/%2. @@ -1576,32 +1606,32 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <h1>Licencijos sutartis</h1> - + I accept the terms and conditions above. Sutinku su aukščiau išdėstytomis nuostatomis ir sąlygomis. - + Please review the End User License Agreements (EULAs). Peržiūrėkite galutinio naudotojo licencijos sutartis (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Ši sąranka įdiegs nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + If you do not agree with the terms, the setup procedure cannot continue. Jeigu nesutinkate su nuostatomis, sąrankos procedūra negali būti tęsiama. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Tam, kad pateiktų papildomas ypatybes ir pagerintų naudotojo patirtį, ši sąrankos procedūra gali įdiegti nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Jeigu nesutiksite su nuostatomis, nuosavybinė programinė įranga nebus įdiegta, o vietoj jos, bus naudojamos atvirojo kodo alternatyvos. @@ -1677,41 +1707,26 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocalePage - + Region: Regionas: - + Zone: Zona: - - + + &Change... K&eisti... - - - The system language will be set to %1. - Sistemos kalba bus nustatyta į %1. - - - - The numbers and dates locale will be set to %1. - Skaičių ir datų lokalė bus nustatyta į %1. - - - - Set timezone to %1/%2.<br/> - Nustatyti laiko juostą kaip %1/%2.<br/> - LocaleQmlViewStep - + Location Vieta @@ -1719,7 +1734,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocaleViewStep - + Location Vieta @@ -1781,7 +1796,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Map - + 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. @@ -2182,7 +2197,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Nežinoma klaida - + Password is empty Slaptažodis yra tuščias @@ -2521,112 +2536,112 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Renkama sistemos informacija... - + Partitions Skaidiniai - + Install %1 <strong>alongside</strong> another operating system. Diegti %1 <strong>šalia</strong> kitos operacinės sistemos. - + <strong>Erase</strong> disk and install %1. <strong>Ištrinti</strong> diską ir diegti %1. - + <strong>Replace</strong> a partition with %1. <strong>Pakeisti</strong> skaidinį, įrašant %1. - + <strong>Manual</strong> partitioning. <strong>Rankinis</strong> skaidymas. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Įdiegti %1 <strong>šalia</strong> kitos operacinės sistemos diske <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Ištrinti</strong> diską <strong>%2</strong> (%3) ir diegti %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Pakeisti</strong> skaidinį diske <strong>%2</strong> (%3), įrašant %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Rankinis</strong> skaidymas diske <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskas <strong>%1</strong> (%2) - + Current: Dabartinis: - + After: Po: - + No EFI system partition configured Nėra sukonfigūruoto EFI sistemos skaidinio - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Norėdami sukonfigūruoti EFI sistemos skaidinį, grįžkite atgal ir pasirinkite arba sukurkite FAT32 failų sistemą su įjungta <strong>%3</strong> vėliavėle ir <strong>%2</strong> prijungimo tašku.<br/><br/>Jūs galite tęsti ir nenustatę EFI sistemos skaidinio, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Skaidinys buvo sukonfigūruotas su prijungimo tašku <strong>%2</strong>, tačiau jo <strong>%3</strong> vėliavėlė yra nenustatyta.<br/>Norėdami nustatyti vėliavėlę, grįžkite atgal ir taisykite skaidinį.<br/><br/>Jūs galite tęsti ir nenustatę vėliavėlės, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + EFI system partition flag not set Nenustatyta EFI sistemos skaidinio vėliavėlė - + Option to use GPT on BIOS Parinktis naudoti GPT per BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT skaidinių lentelė yra geriausias variantas visoms sistemoms. Ši diegimo programa palaiko tokią sąranką taip pat ir BIOS sistemoms.<br/><br/>Norėdami konfigūruoti GPT skaidinių lentelę BIOS sistemoje, (jei dar nesate to padarę) grįžkite atgal ir nustatykite skaidinių lentelę į GPT, toliau, sukurkite 8 MB neformatuotą skaidinį su įjungta <strong>bios_grub</strong> vėliavėle.<br/><br/>Neformatuotas 8 MB skaidinys yra būtinas, norint paleisti %1 BIOS sistemoje su GPT. - + Boot partition not encrypted Paleidimo skaidinys nėra užšifruotas - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Kartu su užšifruotu šaknies skaidiniu, buvo nustatytas atskiras paleidimo skaidinys, tačiau paleidimo skaidinys nėra užšifruotas.<br/><br/>Dėl tokios sąrankos iškyla tam tikrų saugumo klausimų, kadangi svarbūs sisteminiai failai yra laikomi neužšifruotame skaidinyje.<br/>Jeigu norite, galite tęsti, tačiau failų sistemos atrakinimas įvyks vėliau, sistemos paleidimo metu.<br/>Norėdami užšifruoti paleidimo skaidinį, grįžkite atgal ir sukurkite jį iš naujo bei skaidinių kūrimo lange pažymėkite parinktį <strong>Užšifruoti</strong>. - + has at least one disk device available. turi bent vieną prieinamą disko įrenginį. - + There are no partitions to install on. Nėra skaidinių į kuriuos diegti. @@ -2674,17 +2689,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PreserveFiles - + Saving files for later ... Įrašomi failai vėlesniam naudojimui ... - + No files configured to save for later. Nėra sukonfigūruota įrašyti jokius failus vėlesniam naudojimui. - + Not all of the configured files could be preserved. Ne visus iš sukonfigūruotų failų pavyko išsaugoti. @@ -3167,29 +3182,29 @@ Išvestis: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Nustatyti klaviatūros modelį kaip %1, o išdėstymą kaip %2-%3 - + Failed to write keyboard configuration for the virtual console. Nepavyko įrašyti klaviatūros sąrankos virtualiam pultui. - - - + + + Failed to write to %1 Nepavyko įrašyti į %1 - + Failed to write keyboard configuration for X11. Nepavyko įrašyti klaviatūros sąrankos X11 aplinkai. - + Failed to write keyboard configuration to existing /etc/default directory. Nepavyko įrašyti klaviatūros konfigūracijos į esamą /etc/default katalogą. @@ -3422,28 +3437,28 @@ Išvestis: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3451,28 +3466,28 @@ Išvestis: TrackingMachineUpdateManagerJob - + Machine feedback Grįžtamasis ryšys apie kompiuterį - + Configuring machine feedback. Konfigūruojamas grįžtamasis ryšys apie kompiuterį. - - + + Error in machine feedback configuration. Klaida grįžtamojo ryšio apie kompiuterį konfigūravime. - + Could not configure machine feedback correctly, script error %1. Nepavyko teisingai sukonfigūruoti grįžtamojo ryšio apie kompiuterį, scenarijaus klaida %1. - + Could not configure machine feedback correctly, Calamares error %1. Nepavyko teisingai sukonfigūruoti grįžtamojo ryšio apie kompiuterį, Calamares klaida %1. @@ -3531,47 +3546,17 @@ Išvestis: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Jei šiuo kompiuteriu naudosis keli žmonės, po sąrankos galite sukurti papildomas paskyras.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Jei šiuo kompiuteriu naudosis keli žmonės, po diegimo galite sukurti papildomas paskyras.</small> - - Your username is too long. - Jūsų naudotojo vardas yra pernelyg ilgas. - - - - Your username must start with a lowercase letter or underscore. - Jūsų naudotojo vardas privalo prasidėti mažąja raide arba pabraukimo brūkšniu. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Yra leidžiamos tik mažosios raidės, skaitmenys, pabraukimo brūkšniai ir brūkšneliai. - - - - Your hostname is too short. - Jūsų kompiuterio vardas yra pernelyg trumpas. - - - - Your hostname is too long. - Jūsų kompiuterio vardas yra pernelyg ilgas. - - - - Only letters, numbers, underscore and hyphen are allowed. - Yra leidžiamos tik raidės, skaitmenys, pabraukimo brūkšniai ir brūkšneliai. - - - + Your passwords do not match! Jūsų slaptažodžiai nesutampa! @@ -3579,7 +3564,7 @@ Išvestis: UsersViewStep - + Users Naudotojai @@ -3803,19 +3788,19 @@ Išvestis: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Atgal @@ -3823,44 +3808,44 @@ Išvestis: keyboardq - + Keyboard Model Klaviatūros modelis - + Pick your preferred keyboard model or use the default one based on the detected hardware Pasirinkite pageidaujamą klaviatūros modelį arba naudokite numatytąjį remiantis aptikta aparatine įranga - + Refresh Įkelti iš naujo - - + + Layouts Išdėstymai - - + + Keyboard Layout Klaviatūros išdėstymas - + Models Modeliai - + Variants Variantai - + Test your keyboard Išbandykite savo klaviatūrą @@ -3868,17 +3853,7 @@ Išvestis: localeq - - System language set to %1 - Sistemos kalba nustatyta į %1 - - - - Numbers and dates locale set to %1 - - - - + Change Keisti diff --git a/lang/calamares_lv.ts b/lang/calamares_lv.ts index 0ae072ce0..cc6a789e9 100644 --- a/lang/calamares_lv.ts +++ b/lang/calamares_lv.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -259,170 +259,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -483,12 +483,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -515,9 +515,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -528,115 +528,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -644,17 +644,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -662,22 +662,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -704,30 +704,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -957,40 +997,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1509,12 +1539,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1571,32 +1601,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1672,41 +1702,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1714,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1776,7 +1791,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2177,7 +2192,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2516,112 +2531,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2669,17 +2684,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3159,29 +3174,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3414,28 +3429,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3443,28 +3458,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3523,47 +3538,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3571,7 +3556,7 @@ Output: UsersViewStep - + Users @@ -3784,19 +3769,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3804,44 +3789,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3849,17 +3834,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_mk.ts b/lang/calamares_mk.ts index 49b253cec..36b7ec840 100644 --- a/lang/calamares_mk.ts +++ b/lang/calamares_mk.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error Грешка - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Инсталацијата е готова. Исклучете го инсталерот. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ml.ts b/lang/calamares_ml.ts index fc92eaad2..d39a15cfa 100644 --- a/lang/calamares_ml.ts +++ b/lang/calamares_ml.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed സജ്ജീകരണപ്രക്രിയ പരാജയപ്പെട്ടു - + Installation Failed ഇൻസ്റ്റളേഷൻ പരാജയപ്പെട്ടു - + Would you like to paste the install log to the web? ഇൻസ്റ്റാൾ ലോഗ് വെബിലേക്ക് പകർത്തണോ? - + Error പിശക് - - + + &Yes വേണം (&Y) - - + + &No വേണ്ട (&N) - + &Close അടയ്ക്കുക (&C) - + Install Log Paste URL ഇൻസ്റ്റാൾ ലോഗ് പകർപ്പിന്റെ വിലാസം - + The upload was unsuccessful. No web-paste was done. അപ്‌ലോഡ് പരാജയമായിരുന്നു. വെബിലേക്ക് പകർത്തിയില്ല. - + Calamares Initialization Failed കലാമാരേസ് സമാരംഭിക്കൽ പരാജയപ്പെട്ടു - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല. ക്രമീകരിച്ച എല്ലാ മൊഡ്യൂളുകളും ലോഡുചെയ്യാൻ കാലാമറെസിന് കഴിഞ്ഞില്ല. വിതരണത്തിൽ കാലാമറെസ് ഉപയോഗിക്കുന്ന രീതിയിലുള്ള ഒരു പ്രശ്നമാണിത്. - + <br/>The following modules could not be loaded: <br/>താഴെ പറയുന്ന മൊഡ്യൂളുകൾ ലഭ്യമാക്കാനായില്ല: - + Continue with setup? സജ്ജീകരണപ്രക്രിയ തുടരണോ? - + Continue with installation? ഇൻസ്റ്റളേഷൻ തുടരണോ? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %2 സജ്ജീകരിക്കുന്നതിന് %1 സജ്ജീകരണ പ്രോഗ്രാം നിങ്ങളുടെ ഡിസ്കിൽ മാറ്റങ്ങൾ വരുത്താൻ പോകുന്നു.<br/><strong>നിങ്ങൾക്ക് ഈ മാറ്റങ്ങൾ പഴയപടിയാക്കാൻ കഴിയില്ല</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %2 ഇൻസ്റ്റാളുചെയ്യുന്നതിന് %1 ഇൻസ്റ്റാളർ നിങ്ങളുടെ ഡിസ്കിൽ മാറ്റങ്ങൾ വരുത്താൻ പോകുന്നു.<br/><strong>നിങ്ങൾക്ക് ഈ മാറ്റങ്ങൾ പഴയപടിയാക്കാൻ കഴിയില്ല.</strong> - + &Set up now ഉടൻ സജ്ജീകരിക്കുക (&S) - + &Install now ഉടൻ ഇൻസ്റ്റാൾ ചെയ്യുക (&I) - + Go &back പുറകോട്ടു പോകുക - + &Set up സജ്ജീകരിക്കുക (&S) - + &Install ഇൻസ്റ്റാൾ (&I) - + Setup is complete. Close the setup program. സജ്ജീകരണം പൂർത്തിയായി. പ്രയോഗം അടയ്ക്കുക. - + The installation is complete. Close the installer. ഇൻസ്റ്റളേഷൻ പൂർത്തിയായി. ഇൻസ്റ്റാളർ അടയ്ക്കുക - + Cancel setup without changing the system. സിസ്റ്റത്തിന് മാറ്റമൊന്നും വരുത്താതെ സജ്ജീകരണപ്രക്രിയ റദ്ദാക്കുക. - + Cancel installation without changing the system. സിസ്റ്റത്തിന് മാറ്റമൊന്നും വരുത്താതെ ഇൻസ്റ്റളേഷൻ റദ്ദാക്കുക. - + &Next അടുത്തത് (&N) - + &Back പുറകോട്ട് (&B) - + &Done ചെയ്‌തു - + &Cancel റദ്ദാക്കുക (&C) - + Cancel setup? സജ്ജീകരണം റദ്ദാക്കണോ? - + Cancel installation? ഇൻസ്റ്റളേഷൻ റദ്ദാക്കണോ? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. നിലവിലുള്ള സജ്ജീകരണപ്രക്രിയ റദ്ദാക്കണോ? സജ്ജീകരണപ്രയോഗം നിൽക്കുകയും എല്ലാ മാറ്റങ്ങളും നഷ്ടപ്പെടുകയും ചെയ്യും. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. നിലവിലുള്ള ഇൻസ്റ്റാൾ പ്രക്രിയ റദ്ദാക്കണോ? @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. റദ്ദാക്കുക (&C) - + %1 Setup Program %1 സജ്ജീകരണപ്രയോഗം - + %1 Installer %1 ഇൻസ്റ്റാളർ @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: നിലവിലുള്ളത്: @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>സ്വമേധയാ ഉള്ള പാർട്ടീഷനിങ്</strong><br/>നിങ്ങൾക്ക് സ്വയം പാർട്ടീഷനുകൾ സൃഷ്ടിക്കാനോ വലുപ്പം മാറ്റാനോ കഴിയും. - + Reuse %1 as home partition for %2. %2 നുള്ള ഹോം പാർട്ടീഷനായി %1 വീണ്ടും ഉപയോഗിക്കൂ. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>ചുരുക്കുന്നതിന് ഒരു പാർട്ടീഷൻ തിരഞ്ഞെടുക്കുക, എന്നിട്ട് വലുപ്പം മാറ്റാൻ ചുവടെയുള്ള ബാർ വലിക്കുക. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 %2MiB ആയി ചുരുങ്ങുകയും %4 ന് ഒരു പുതിയ %3MiB പാർട്ടീഷൻ സൃഷ്ടിക്കുകയും ചെയ്യും. - + Boot loader location: ബൂട്ട് ലോഡറിന്റെ സ്ഥാനം: - + <strong>Select a partition to install on</strong> <strong>ഇൻസ്റ്റാൾ ചെയ്യാനായി ഒരു പാർട്ടീഷൻ തിരഞ്ഞെടുക്കുക</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ഈ സിസ്റ്റത്തിൽ എവിടെയും ഒരു ഇ.എഫ്.ഐ സിസ്റ്റം പാർട്ടീഷൻ കണ്ടെത്താനായില്ല. %1 സജ്ജീകരിക്കുന്നതിന് ദയവായി തിരികെ പോയി മാനുവൽ പാർട്ടീഷനിംഗ് ഉപയോഗിക്കുക. - + The EFI system partition at %1 will be used for starting %2. %1 ലെ ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ %2 ആരംഭിക്കുന്നതിന് ഉപയോഗിക്കും. - + EFI system partition: ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ഈ ഡറ്റോറേജ്‌ ഉപകരണത്തിൽ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഉണ്ടെന്ന് തോന്നുന്നില്ല. നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?<br/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങൾക്ക് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും കഴിയും.  - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>ഡിസ്ക് മായ്ക്കൂ</strong><br/>ഈ പ്രവൃത്തി തെരെഞ്ഞെടുത്ത സ്റ്റോറേജ് ഉപകരണത്തിലെ എല്ലാ ഡാറ്റയും <font color="red">മായ്‌ച്ച്കളയും</font>. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>ഇതിനൊപ്പം ഇൻസ്റ്റാൾ ചെയ്യുക</strong><br/>%1 ന് ഇടം നൽകുന്നതിന് ഇൻസ്റ്റാളർ ഒരു പാർട്ടീഷൻ ചുരുക്കും. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>ഒരു പാർട്ടീഷൻ പുനഃസ്ഥാപിക്കുക</strong><br/>ഒരു പാർട്ടീഷന് %1 ഉപയോഗിച്ച് പുനഃസ്ഥാപിക്കുന്നു. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ഈ സ്റ്റോറേജ് ഉപകരണത്തിൽ %1 ഉണ്ട്.നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?<br/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും നിങ്ങൾക്ക് കഴിയും. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ഈ സ്റ്റോറേജ് ഉപകരണത്തിൽ ഇതിനകം ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഉണ്ട്. നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?<br/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങൾക്ക് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും കഴിയും.  - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. ഈ സ്റ്റോറേജ് ഉപകരണത്തിൽ ഒന്നിലധികം ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുണ്ട്. നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?<br/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങൾക്ക് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും കഴിയും.  - + No Swap സ്വാപ്പ് വേണ്ട - + Reuse Swap സ്വാപ്പ് വീണ്ടും ഉപയോഗിക്കൂ - + Swap (no Hibernate) സ്വാപ്പ് (ഹൈബർനേഷൻ ഇല്ല) - + Swap (with Hibernate) സ്വാപ്പ് (ഹൈബർനേഷനോട് കൂടി) - + Swap to file ഫയലിലേക്ക് സ്വാപ്പ് ചെയ്യുക @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 ൽ പാർട്ടീഷനിങ്ങ് പ്രക്രിയകൾക്കായി മൗണ്ടുകൾ നീക്കം ചെയ്യുക - + Clearing mounts for partitioning operations on %1. %1 ൽ പാർട്ടീഷനിങ്ങ് പ്രക്രിയകൾക്കായി മൗണ്ടുകൾ നീക്കം ചെയ്യുന്നു. - + Cleared all mounts for %1 %1 നായുള്ള എല്ലാ മൗണ്ടുകളും നീക്കം ചെയ്തു @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. എല്ലാ താൽക്കാലിക മൗണ്ടുകളും നീക്കം ചെയ്യുക - + Clearing all temporary mounts. എല്ലാ താൽക്കാലിക മൗണ്ടുകളും നീക്കം ചെയ്യുന്നു. - + Cannot get list of temporary mounts. താൽക്കാലിക മൗണ്ടുകളുടെ പട്ടിക ലഭ്യമായില്ല. - + Cleared all temporary mounts. എല്ലാ താൽക്കാലിക മൗണ്ടുകളും നീക്കം ചെയ്തു. @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> കീബോർഡ് മോഡൽ %1 എന്നതായി ക്രമീകരിക്കുക.<br/> - + Set keyboard layout to %1/%2. കീബോർഡ് വിന്യാസം %1%2 എന്നതായി ക്രമീകരിക്കുക. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. സിസ്റ്റം ഭാഷ %1 ആയി സജ്ജമാക്കും. - + The numbers and dates locale will be set to %1. സംഖ്യ & തീയതി രീതി %1 ആയി ക്രമീകരിക്കും. - - - Set timezone to %1/%2.<br/> - സമയപദ്ധതി %1/%2 ആയി ക്രമീകരിക്കുക.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + നിങ്ങളുടെ ഉപയോക്തൃനാമം വളരെ വലുതാണ്. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + താങ്കളുടെ ഉപയോക്തൃനാമം ഒരു ചെറിയ അക്ഷരമോ അണ്ടർസ്കോറോ ഉപയോഗിച്ച് വേണം തുടങ്ങാൻ. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + ചെറിയ അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. + + + + Your hostname is too short. + നിങ്ങളുടെ ഹോസ്റ്റ്നാമം വളരെ ചെറുതാണ് + + + + Your hostname is too long. + നിങ്ങളുടെ ഹോസ്റ്റ്നാമം ദൈർഘ്യമേറിയതാണ് + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 %1 എന്ന ഉപയോക്താവിനെ സൃഷ്ടിക്കുക. - + Create user <strong>%1</strong>. <strong>%1</strong> എന്ന ഉപയോക്താവിനെ സൃഷ്ടിക്കുക. - + Creating user %1. ഉപയോക്താവ് %1-നെ ഉണ്ടാക്കുന്നു. - - Sudoers dir is not writable. - സുഡോവേഴ്സ് ഡയറക്ടറിയിലേക്ക് എഴുതാൻ സാധിക്കില്ല. - - - + Cannot create sudoers file for writing. എഴുതുന്നതിനായി സുഡോവേഴ്സ് ഫയൽ നിർമ്മിക്കാനായില്ല. - + Cannot chmod sudoers file. സുഡോവേഴ്സ് ഫയൽ chmod ചെയ്യാൻ സാധിച്ചില്ല. - - - Cannot open groups file for reading. - ഗ്രൂപ്സ് ഫയൽ വായിക്കാനായി തുറക്കാൻ സാധിച്ചില്ല. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information പാർട്ടീഷൻ വിവരങ്ങൾ ക്രമീകരിക്കുക - + Install %1 on <strong>new</strong> %2 system partition. <strong>പുതിയ</strong> %2 സിസ്റ്റം പാർട്ടീഷനിൽ %1 ഇൻസ്റ്റാൾ ചെയ്യുക. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. <strong>%1</strong> മൗണ്ട് പോയിന്റോട് കൂടി <strong>പുതിയ</strong> %2 പാർട്ടീഷൻ സജ്ജീകരിക്കുക. - + Install %2 on %3 system partition <strong>%1</strong>. %3 സിസ്റ്റം പാർട്ടീഷൻ <strong>%1-ൽ</strong> %2 ഇൻസ്റ്റാൾ ചെയ്യുക. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. <strong>%2</strong> മൗണ്ട് പോയിന്റോട് കൂടി %3 പാർട്ടീഷൻ %1 സജ്ജീകരിക്കുക. - + Install boot loader on <strong>%1</strong>. <strong>%1-ൽ</strong> ബൂട്ട് ലോഡർ ഇൻസ്റ്റാൾ ചെയ്യുക. - + Setting up mount points. മൗണ്ട് പോയിന്റുകൾ സജ്ജീകരിക്കുക. @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> കീബോർഡ് മോഡൽ %1 എന്നതായി ക്രമീകരിക്കുക.<br/> - + Set keyboard layout to %1/%2. കീബോർഡ് വിന്യാസം %1%2 എന്നതായി ക്രമീകരിക്കുക. @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. <h1>അനുമതിപത്ര നിബന്ധനകൾ</h1> - + I accept the terms and conditions above. മുകളിലുള്ള നിബന്ധനകളും വ്യവസ്ഥകളും ഞാൻ അംഗീകരിക്കുന്നു. - + Please review the End User License Agreements (EULAs). എൻഡ് യൂസർ ലൈസൻസ് എഗ്രിമെന്റുകൾ (EULAs) ദയവായി പരിശോധിക്കൂ. - + This setup procedure will install proprietary software that is subject to licensing terms. ഈ സജ്ജീകരണപ്രക്രിയ അനുമതിപത്രനിബന്ധനകൾക്ക് കീഴിലുള്ള കുത്തക സോഫ്റ്റ്‌‌വെയറുകൾ ഇൻസ്റ്റാൾ ചെയ്യും. - + If you do not agree with the terms, the setup procedure cannot continue. താങ്കൾ ഈ നിബന്ധനകളോട് യോജിക്കുന്നില്ലെങ്കിൽ, സജ്ജീകരണപ്രക്രിയയ്ക്ക് തുടരാനാകില്ല. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. കൂടുതൽ സവിശേഷതകൾ നൽകുന്നതിനും ഉപയോക്താവിന്റെ അനുഭവം കൂടുതൽ മികവുറ്റതാക്കുന്നതിനും ഈ സജ്ജീകരണപ്രക്രിയയ്ക്ക് അനുമതിപത്രനിബന്ധനകൾക്ക് കീഴിലുള്ള കുത്തക സോഫ്റ്റ്‌‌വെയറുകൾ ഇൻസ്റ്റാൾ ചെയ്യാം. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. താങ്കൾ ഈ നിബന്ധനകളോട് യോജിക്കുന്നില്ലെങ്കിൽ, കുത്തക സോഫ്റ്റ്‌‌വെയറുകൾ ഇൻസ്റ്റാൾ ചെയ്യപ്പെടില്ല, പകരം സ്വതന്ത്ര ബദലുകൾ ഉപയോഗിക്കും. @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: പ്രദേശം: - + Zone: മേഖല: - - + + &Change... മാറ്റുക (&C)... - - - The system language will be set to %1. - സിസ്റ്റം ഭാഷ %1 ആയി സജ്ജമാക്കും. - - - - The numbers and dates locale will be set to %1. - സംഖ്യ & തീയതി രീതി %1 ആയി ക്രമീകരിക്കും. - - - - Set timezone to %1/%2.<br/> - സമയപദ്ധതി %1/%2 ആയി ക്രമീകരിക്കുക.<br/> - LocaleQmlViewStep - + Location സ്ഥാനം @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location സ്ഥാനം @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2178,7 +2193,7 @@ The installer will quit and all changes will be lost. അപരിചിതമായ പിശക് - + Password is empty രഹസ്യവാക്ക് ശൂന്യമാണ് @@ -2517,112 +2532,112 @@ The installer will quit and all changes will be lost. സിസ്റ്റത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിക്കുന്നു... - + Partitions പാർട്ടീഷനുകൾ - + Install %1 <strong>alongside</strong> another operating system. മറ്റൊരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനൊപ്പം %1 ഇൻസ്റ്റാൾ ചെയ്യുക. - + <strong>Erase</strong> disk and install %1. ഡിസ്ക് <strong>മായ്ക്കുക</strong>എന്നിട്ട് %1 ഇൻസ്റ്റാൾ ചെയ്യുക. - + <strong>Replace</strong> a partition with %1. ഒരു പാർട്ടീഷൻ %1 ഉപയോഗിച്ച് <strong>പുനഃസ്ഥാപിക്കുക.</strong> - + <strong>Manual</strong> partitioning. <strong>സ്വമേധയാ</strong> ഉള്ള പാർട്ടീഷനിങ്. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %2 (%3) ഡിസ്കിൽ മറ്റൊരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനൊപ്പം %1 ഇൻസ്റ്റാൾ ചെയ്യുക. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. ഡിസ്ക് <strong>%2</strong> (%3) <strong>മായ്‌ച്ച് </strong> %1 ഇൻസ്റ്റാൾ ചെയ്യുക. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) ഡിസ്കിലെ ഒരു പാർട്ടീഷൻ %1 ഉപയോഗിച്ച് <strong>മാറ്റിസ്ഥാപിക്കുക</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1 </strong>(%2) ഡിസ്കിലെ <strong>സ്വമേധയാ</strong> പാർട്ടീഷനിംഗ്. - + Disk <strong>%1</strong> (%2) ഡിസ്ക് <strong>%1</strong> (%2) - + Current: നിലവിലുള്ളത്: - + After: ശേഷം: - + No EFI system partition configured ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷനൊന്നും ക്രമീകരിച്ചിട്ടില്ല - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ഫ്ലാഗ് ക്രമീകരിച്ചിട്ടില്ല - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted ബൂട്ട് പാർട്ടീഷൻ എൻക്രിപ്റ്റ് ചെയ്യപ്പെട്ടിട്ടില്ല - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. എൻക്രിപ്റ്റ് ചെയ്ത ഒരു റൂട്ട് പാർട്ടീഷനോടൊപ്പം ഒരു വേർപെടുത്തിയ ബൂട്ട് പാർട്ടീഷനും ക്രമീകരിക്കപ്പെട്ടിരുന്നു, എന്നാൽ ബൂട്ട് പാർട്ടീഷൻ എൻക്രിപ്റ്റ് ചെയ്യപ്പെട്ടതല്ല.<br/><br/>ഇത്തരം സജ്ജീകരണത്തിന്റെ സുരക്ഷ ഉത്കണ്ഠാജനകമാണ്, എന്തെന്നാൽ പ്രധാനപ്പെട്ട സിസ്റ്റം ഫയലുകൾ ഒരു എൻക്രിപ്റ്റ് ചെയ്യപ്പെടാത്ത പാർട്ടീഷനിലാണ് സൂക്ഷിച്ചിട്ടുള്ളത്.<br/> താങ്കൾക്ക് വേണമെങ്കിൽ തുടരാം, പക്ഷേ ഫയൽ സിസ്റ്റം തുറക്കൽ സിസ്റ്റം ആരംഭപ്രക്രിയയിൽ വൈകിയേ സംഭവിക്കൂ.<br/>ബൂട്ട് പാർട്ടീഷൻ എൻക്രിപ്റ്റ് ചെയ്യാനായി, തിരിച്ചു പോയി പാർട്ടീഷൻ നിർമ്മാണ ജാലകത്തിൽ <strong>എൻക്രിപ്റ്റ്</strong> തിരഞ്ഞെടുത്തുകൊണ്ട് അത് വീണ്ടും നിർമ്മിക്കുക. - + has at least one disk device available. ഒരു ഡിസ്ക് ഡിവൈസെങ്കിലും ലഭ്യമാണ്. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... ഫയലുകൾ ഭാവിയിലേക്കായി സംരക്ഷിക്കുന്നു ... - + No files configured to save for later. ഭാവിയിലേക്കായി സംരക്ഷിക്കാനായി ഫയലുകളൊന്നും ക്രമീകരിച്ചിട്ടില്ല. - + Not all of the configured files could be preserved. ക്രമീകരിക്കപ്പെട്ട ഫയലുകളെല്ലാം സംരക്ഷിക്കാനായില്ല. @@ -3163,29 +3178,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 കീബോർഡ് മാതൃക %1 ആയി ക്രമീകരിക്കുക, രൂപരേഖ %2-%3 - + Failed to write keyboard configuration for the virtual console. വിർച്വൽ കൺസോളിനായുള്ള കീബോർഡ് ക്രമീകരണം എഴുതുന്നതിൽ പരാജയപ്പെട്ടു. - - - + + + Failed to write to %1 %1ലേക്ക് എഴുതുന്നതിൽ പരാജയപ്പെട്ടു - + Failed to write keyboard configuration for X11. X11 നായി കീബോർഡ് കോൺഫിഗറേഷൻ എഴുതുന്നതിൽ പരാജയപ്പെട്ടു. - + Failed to write keyboard configuration to existing /etc/default directory. നിലവിലുള്ള /etc/default ഡയറക്ടറിയിലേക്ക് കീബോർഡ് കോൺഫിഗറേഷൻ എഴുതുന്നതിൽ പരാജയപ്പെട്ടു. @@ -3418,28 +3433,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3447,28 +3462,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback ഉപകരണത്തിൽ നിന്നുള്ള പ്രതികരണം - + Configuring machine feedback. ഉപകരണത്തിൽ നിന്നുള്ള പ്രതികരണം ക്രമീകരിക്കുന്നു. - - + + Error in machine feedback configuration. ഉപകരണത്തിൽ നിന്നുള്ള പ്രതികരണത്തിന്റെ ക്രമീകരണത്തിൽ പിഴവ്. - + Could not configure machine feedback correctly, script error %1. ഉപകരണത്തിൽ നിന്നുള്ള പ്രതികരണം ശരിയായി ക്രമീകരിക്കാനായില്ല. സ്ക്രിപ്റ്റ് പിഴവ് %1. - + Could not configure machine feedback correctly, Calamares error %1. ഉപകരണത്തിൽ നിന്നുള്ള പ്രതികരണം ശരിയായി ക്രമീകരിക്കാനായില്ല. കലാമാരേസ് പിഴവ് %1. @@ -3527,47 +3542,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>ഒന്നിലധികം ആളുകൾ ഈ കമ്പ്യൂട്ടർ ഉപയോഗിക്കുമെങ്കിൽ, താങ്കൾക്ക് സജ്ജീകരണത്തിന് ശേഷം നിരവധി അക്കൗണ്ടുകൾ സൃഷ്ടിക്കാം.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>ഒന്നിലധികം ആളുകൾ ഈ കമ്പ്യൂട്ടർ ഉപയോഗിക്കുമെങ്കിൽ, താങ്കൾക്ക് ഇൻസ്റ്റളേഷന് ശേഷം നിരവധി അക്കൗണ്ടുകൾ സൃഷ്ടിക്കാം.</small> - - Your username is too long. - നിങ്ങളുടെ ഉപയോക്തൃനാമം വളരെ വലുതാണ്. - - - - Your username must start with a lowercase letter or underscore. - താങ്കളുടെ ഉപയോക്തൃനാമം ഒരു ചെറിയ അക്ഷരമോ അണ്ടർസ്കോറോ ഉപയോഗിച്ച് വേണം തുടങ്ങാൻ. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - ചെറിയ അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. - - - - Your hostname is too short. - നിങ്ങളുടെ ഹോസ്റ്റ്നാമം വളരെ ചെറുതാണ് - - - - Your hostname is too long. - നിങ്ങളുടെ ഹോസ്റ്റ്നാമം ദൈർഘ്യമേറിയതാണ് - - - - Only letters, numbers, underscore and hyphen are allowed. - അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. - - - + Your passwords do not match! നിങ്ങളുടെ പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല! @@ -3575,7 +3560,7 @@ Output: UsersViewStep - + Users ഉപയോക്താക്കൾ @@ -3788,19 +3773,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3808,44 +3793,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3853,17 +3838,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index f564dc3d0..ec245979f 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed अधिष्ठापना अयशस्वी झाली - + Would you like to paste the install log to the web? - + Error त्रुटी - - + + &Yes &होय - - + + &No &नाही - + &Close &बंद करा - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now &आता अधिष्ठापित करा - + Go &back &मागे जा - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. अधिष्ठापना संपूर्ण झाली. अधिष्ठापक बंद करा. - + Cancel setup without changing the system. - + Cancel installation without changing the system. प्रणालीत बदल न करता अधिष्टापना रद्द करा. - + &Next &पुढे - + &Back &मागे - + &Done &पूर्ण झाली - + &Cancel &रद्द करा - + Cancel setup? - + Cancel installation? अधिष्ठापना रद्द करायचे? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. &रद्द करा - + %1 Setup Program - + %1 Installer %1 अधिष्ठापक @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: सद्या : @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + तुमचा वापरकर्तानाव खूप लांब आहे + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + तुमचा संगणकनाव खूप लहान आहे + + + + Your hostname is too long. + तुमचा संगणकनाव खूप लांब आहे + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: सद्या : - + After: नंतर : - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - तुमचा वापरकर्तानाव खूप लांब आहे - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - तुमचा संगणकनाव खूप लहान आहे - - - - Your hostname is too long. - तुमचा संगणकनाव खूप लांब आहे - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! तुमचा परवलीशब्द जुळत नाही @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users वापरकर्ते @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index 6c11386a2..27cf015fa 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Installasjon feilet - + Would you like to paste the install log to the web? - + Error Feil - - + + &Yes &Ja - - + + &No &Nei - + &Close &Lukk - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? Fortsette å sette opp? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 vil nå gjøre endringer på harddisken, for å installere %2. <br/><strong>Du vil ikke kunne omgjøre disse endringene.</strong> - + &Set up now - + &Install now &Installer nå - + Go &back Gå &tilbake - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Installasjonen er fullført. Lukk installeringsprogrammet. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Neste - + &Back &Tilbake - + &Done &Ferdig - + &Cancel &Avbryt - + Cancel setup? - + Cancel installation? Avbryte installasjon? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig avbryte installasjonen? @@ -482,12 +482,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.&Avbryt - + %1 Setup Program - + %1 Installer %1 Installasjonsprogram @@ -514,9 +514,9 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - - - + + + Current: @@ -527,115 +527,115 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuell partisjonering</strong><br/>Du kan opprette eller endre størrelse på partisjoner selv. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -643,17 +643,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -661,22 +661,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. Klarte ikke å få tak i listen over midlertidige monterte disker. - + Cleared all temporary mounts. @@ -703,30 +703,30 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Config - + Set keyboard model to %1.<br/> Sett tastaturmodell til %1.<br/> - + Set keyboard layout to %1/%2. Sett tastaturoppsett til %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.<h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Brukernavnet ditt er for langt. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -956,40 +996,30 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CreateUserJob - + Create user %1 Opprett bruker %1 - + Create user <strong>%1</strong>. - + Creating user %1. Oppretter bruker %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1508,12 +1538,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. KeyboardPage - + Set keyboard model to %1.<br/> Sett tastaturmodell til %1.<br/> - + Set keyboard layout to %1/%2. Sett tastaturoppsett til %1/%2. @@ -1570,32 +1600,32 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1671,41 +1701,26 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocalePage - + Region: - + Zone: - - + + &Change... &Endre... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location Plassering @@ -1713,7 +1728,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocaleViewStep - + Location Plassering @@ -1775,7 +1790,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Map - + 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. @@ -2176,7 +2191,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.Ukjent feil - + Password is empty @@ -2515,112 +2530,112 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2668,17 +2683,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3158,29 +3173,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3413,28 +3428,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3442,28 +3457,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3522,47 +3537,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Brukernavnet ditt er for langt. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3570,7 +3555,7 @@ Output: UsersViewStep - + Users Brukere @@ -3783,19 +3768,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3803,44 +3788,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3848,17 +3833,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ne_NP.ts b/lang/calamares_ne_NP.ts index a200c91f9..a57f6e26a 100644 --- a/lang/calamares_ne_NP.ts +++ b/lang/calamares_ne_NP.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index 2af094205..086ab7269 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -132,12 +132,12 @@ Job failed (%1) - + Taak gefaald (%1) Programmed job failure was explicitly requested. - + Geprogrameerde taakfout was expliciet aangevraagd. @@ -153,7 +153,7 @@ Example job (%1) - + Voorbeeldstaak (%1) @@ -161,12 +161,12 @@ Run command '%1' in target system. - + '%1' uitvoeren in doelsysteem. Run command '%1'. - + '%1' uitvoeren. @@ -212,7 +212,7 @@ Loading ... - + Laden... @@ -220,9 +220,9 @@ QML stap <i>%1</i>. - + Loading failed. - + Laden mislukt. @@ -230,14 +230,14 @@ Requirements checking for module <i>%1</i> is complete. - + Vereistencontrole voor module <i>%1</i> is voltooid. Waiting for %n module(s). - - - + + Wachten op %n module(s). + Wachten op %n module(s). @@ -251,176 +251,177 @@ System-requirements checking is complete. - + Systeemvereistencontrole is voltooid. Calamares::ViewManager - + Setup Failed - + Voorbereiding mislukt - + Installation Failed Installatie Mislukt - + Would you like to paste the install log to the web? - + Wil je het installatielogboek plakken naar het web? - + Error Fout - - + + &Yes &ja - - + + &No &Nee - + &Close &Sluiten - + Install Log Paste URL - + URL voor het verzenden van het installatielogboek - + The upload was unsuccessful. No web-paste was done. - + Het uploaden is mislukt. Web-plakken niet gedaan. - + Calamares Initialization Failed Calamares Initialisatie mislukt - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 kan niet worden geïnstalleerd. Calamares kon niet alle geconfigureerde modules laden. Dit is een probleem met hoe Calamares wordt gebruikt door de distributie. - + <br/>The following modules could not be loaded: <br/>The volgende modules konden niet worden geladen: - + Continue with setup? Doorgaan met installatie? - + Continue with installation? Doorgaan met installatie? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + Het %1 voorbereidingsprogramma zal nu aanpassingen maken aan je schijf om %2 te installeren.<br/><strong>Deze veranderingen kunnen niet ongedaan gemaakt worden.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Het %1 installatieprogramma zal nu aanpassingen maken aan je schijf om %2 te installeren.<br/><strong>Deze veranderingen kunnen niet ongedaan gemaakt worden.</strong> - + &Set up now Nu &Inrichten - + &Install now Nu &installeren - + Go &back Ga &terug - + &Set up &Inrichten - + &Install &Installeer - + Setup is complete. Close the setup program. - + De voorbereiding is voltooid. Sluit het voorbereidingsprogramma. - + The installation is complete. Close the installer. De installatie is voltooid. Sluit het installatie-programma. - + Cancel setup without changing the system. - + Voorbereiding afbreken zonder aanpassingen aan het systeem. - + Cancel installation without changing the system. Installatie afbreken zonder aanpassingen aan het systeem. - + &Next &Volgende - + &Back &Terug - + &Done Voltooi&d - + &Cancel &Afbreken - + Cancel setup? - + Voorbereiding afbreken? - + Cancel installation? Installatie afbreken? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Wil je het huidige voorbereidingsproces echt afbreken? +Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wil je het huidige installatieproces echt afbreken? @@ -456,7 +457,8 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Install log posted to: %1 - + Installatielogboek geposte naar: +%1 @@ -482,12 +484,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Afbreken - + %1 Setup Program - + %1 Voorbereidingsprogramma - + %1 Installer %1 Installatieprogramma @@ -514,9 +516,9 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - - - + + + Current: Huidig: @@ -527,115 +529,115 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Handmatige partitionering</strong><br/>Je kunt zelf de partities creëren of wijzigen. Het hebben van een GPT partititie tabel and <strong>een FAT-32 512 MB /boot partitie is belangrijk voor UEFI installaties</strong>. Gebruik een bestaande zonder formatteren of maak een nieuwe aan. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Handmatig partitioneren</strong><br/>Je maakt of wijzigt zelf de partities. - + Reuse %1 as home partition for %2. Hergebruik %1 als home-partitie voor %2 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selecteer een partitie om te verkleinen, en sleep vervolgens de onderste balk om het formaat te wijzigen</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + %1 zal verkleind worden tot %2MiB en een nieuwe %3MiB partitie zal worden aangemaakt voor %4. - + Boot loader location: Bootloader locatie: - + <strong>Select a partition to install on</strong> <strong>Selecteer een partitie om op te installeren</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Er werd geen EFI systeempartitie gevonden op dit systeem. Gelieve terug te gaan en manueel te partitioneren om %1 in te stellen. - + The EFI system partition at %1 will be used for starting %2. De EFI systeempartitie op %1 zal gebruikt worden om %2 te starten. - + EFI system partition: EFI systeempartitie: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium lijkt geen besturingssysteem te bevatten. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Wis schijf</strong><br/>Dit zal alle huidige gegevens op de geselecteerd opslagmedium <font color="red">verwijderen</font>. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installeer ernaast</strong><br/>Het installatieprogramma zal een partitie verkleinen om plaats te maken voor %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Vervang een partitie</strong><br/>Vervangt een partitie met %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat %1. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat reeds een besturingssysteem. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat meerdere besturingssystemen. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - + No Swap Geen wisselgeheugen - + Reuse Swap Wisselgeheugen hergebruiken - + Swap (no Hibernate) Wisselgeheugen (geen Sluimerstand) - + Swap (with Hibernate) Wisselgeheugen ( met Sluimerstand) - + Swap to file Wisselgeheugen naar bestand @@ -643,17 +645,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ClearMountsJob - + Clear mounts for partitioning operations on %1 Geef aankoppelpunten vrij voor partitiebewerkingen op %1 - + Clearing mounts for partitioning operations on %1. Aankoppelpunten vrijgeven voor partitiebewerkingen op %1. - + Cleared all mounts for %1 Alle aankoppelpunten voor %1 zijn vrijgegeven @@ -661,22 +663,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ClearTempMountsJob - + Clear all temporary mounts. Geef alle tijdelijke aankoppelpunten vrij. - + Clearing all temporary mounts. Alle tijdelijke aankoppelpunten vrijgeven. - + Cannot get list of temporary mounts. Kan geen lijst van tijdelijke aankoppelpunten verkrijgen. - + Cleared all temporary mounts. Alle tijdelijke aankoppelpunten zijn vrijgegeven. @@ -703,34 +705,34 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Config - + Set keyboard model to %1.<br/> Instellen toetsenbord model naar %1.<br/> - + Set keyboard layout to %1/%2. Instellen toetsenbord lay-out naar %1/%2. - + + Set timezone to %1/%2. + Zet tijdzone naar %1/%2. + + + The system language will be set to %1. De taal van het systeem zal worden ingesteld op %1. - + The numbers and dates locale will be set to %1. De getal- en datumnotatie worden ingesteld op %1. - - - Set timezone to %1/%2.<br/> - Instellen tijdzone naar %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) - + Netwerkinstallatie. (Uitgeschakeld: Ongeldige configuratie) @@ -740,7 +742,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Network Installation. (Disabled: internal error) - + Netwerkinstallatie. (Uitgeschakeld: interne fout) @@ -750,7 +752,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Deze computer voldoet niet aan de minimumvereisten om %1 te installeren.<br/>De voorbereiding kan niet doorgaan. <a href="#details">Details...</a> @@ -760,7 +762,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. - + Deze computer voldoet niet aan enkele van de aanbevolen specificaties om %1 voor te bereiden.<br/>De installatie kan doorgaan, maar sommige functies kunnen uitgeschakeld zijn. @@ -775,22 +777,62 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <h1>Welcome to the Calamares setup program for %1</h1> - + <h1>Welkom in het Calamares voorbereidingsprogramma voor %1.</h1> <h1>Welcome to %1 setup</h1> - + <h1>Welkom in het %1 voorbereidingsprogramma.</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Welkom in het Calamares installatieprogramma voor %1.</h1> <h1>Welcome to the %1 installer</h1> - + <h1>Welkom in het %1 installatieprogramma.</h1> + + + + Your username is too long. + De gebruikersnaam is te lang. + + + + '%1' is not allowed as username. + De gebruikersnaam '%1' is niet toegestaan. + + + + Your username must start with a lowercase letter or underscore. + Je gebruikersnaam moet beginnen met een kleine letter of laag streepje. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Alleen kleine letters, nummerse en (laag) streepjes zijn toegestaan. + + + + Your hostname is too short. + De hostnaam is te kort. + + + + Your hostname is too long. + De hostnaam is te lang. + + + + '%1' is not allowed as hostname. + De hostnaam '%1' is niet toegestaan. + + + + Only letters, numbers, underscore and hyphen are allowed. + Alleen letters, nummers en (laag) streepjes zijn toegestaan. @@ -884,12 +926,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Create new %2MiB partition on %4 (%3) with file system %1. - + Maak nieuwe %2MiB partitie aan op %4 (%3) met bestandsysteem %1. Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Maak een nieuwe <strong>%2MiB</strong> partitie aan op <strong>%4</strong> (%3) met bestandsysteem <strong>%1</strong>. @@ -956,47 +998,37 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CreateUserJob - + Create user %1 Maak gebruiker %1 - + Create user <strong>%1</strong>. Maak gebruiker <strong>%1</strong> - + Creating user %1. Gebruiker %1 aanmaken. - - Sudoers dir is not writable. - Sudoers map is niet schrijfbaar. - - - + Cannot create sudoers file for writing. Kan het bestand sudoers niet aanmaken. - + Cannot chmod sudoers file. chmod sudoers gefaald. - - - Cannot open groups file for reading. - Kan het bestand groups niet lezen. - CreateVolumeGroupDialog Create Volume Group - + Volumegroep aanmaken @@ -1227,37 +1259,37 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. FillGlobalStorageJob - + Set partition information Instellen partitie-informatie - + Install %1 on <strong>new</strong> %2 system partition. Installeer %1 op <strong>nieuwe</strong> %2 systeempartitie. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Maak <strong>nieuwe</strong> %2 partitie met aankoppelpunt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installeer %2 op %3 systeempartitie <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Stel %3 partitie <strong>%1</strong> in met aankoppelpunt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installeer bootloader op <strong>%1</strong>. - + Setting up mount points. Aankoppelpunten instellen. @@ -1277,12 +1309,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. - + <h1>Klaar.</h1><br/>%1 is op je computer geïnstalleerd.<br/>Je mag nu beginnen met het gebruiken van je nieuwe systeem. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> - + <html><head/><body><p>Wanneer dit vakje aangevinkt is, zal het systeem herstarten van zodra je op <span style=" font-style:italic;">Voltooid</span> klikt, of het voorbereidingsprogramma afsluit.</p></body></html> @@ -1292,12 +1324,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Wanneer dit vakje aangevinkt is, zal het systeem herstarten van zodra je op <span style=" font-style:italic;">Voltooid</span> klikt, of het installatieprogramma afsluit.</p></body></html> <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. - + <h1>Installatie Mislukt</h1><br/>%1 werd niet op de computer geïnstalleerd. <br/>De foutboodschap was: %2 @@ -1315,7 +1347,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Setup Complete - + Voorbereiden voltooid @@ -1325,7 +1357,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. The setup of %1 is complete. - + De voorbereiden van %1 is voltooid. @@ -1338,12 +1370,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + Formateer partitie %1 (bestandssysteem: %2, grootte: %3 MiB) op %4. Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formatteer <strong>%3MiB</strong> partitie <strong>%1</strong> met bestandsysteem <strong>%2</strong>. @@ -1361,7 +1393,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. has at least %1 GiB available drive space - + tenminste %1 GiB vrije schijfruimte heeft @@ -1371,7 +1403,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. has at least %1 GiB working memory - + tenminste %1 GiB werkgeheugen heeft @@ -1401,12 +1433,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. is running the installer as an administrator (root) - + is het installatieprogramma aan het uitvoeren als administrator (root) The setup program is not running with administrator rights. - + Het voorbereidingsprogramma draait zonder administratorrechten. @@ -1416,12 +1448,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. has a screen large enough to show the whole installer - + heeft een scherm groot genoeg om het hele installatieprogramma te weergeven The screen is too small to display the setup program. - + Het scherm is te klein on het voorbereidingsprogramma te laten zien. @@ -1434,7 +1466,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Collecting information about your machine. - + Informatie verzamelen over je systeem. @@ -1445,22 +1477,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. OEM Batch Identifier - + OEM batch-identificatie Could not create directories <code>%1</code>. - + Kon mappen <code>%1</code> niet aanmaken. Could not open file <code>%1</code>. - + Kon bestand <code>%1</code> niet openen. Could not write to file <code>%1</code>. - + Kon niet schrijven naar het bestand <code>%1</code>. @@ -1468,7 +1500,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Creating initramfs with mkinitcpio. - + initramfs aanmaken met mkinitcpio. @@ -1476,7 +1508,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Creating initramfs. - + initramfs aanmaken. @@ -1508,12 +1540,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. KeyboardPage - + Set keyboard model to %1.<br/> Instellen toetsenbord model naar %1.<br/> - + Set keyboard layout to %1/%2. Instellen toetsenbord lay-out naar %1/%2. @@ -1567,37 +1599,37 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <h1>License Agreement</h1> - + <h1>Licentieovereenkomst</h1> - + I accept the terms and conditions above. Ik aanvaard de bovenstaande algemene voorwaarden. - + Please review the End User License Agreements (EULAs). - + Lees de gebruikersovereenkomst (EULA's). - + This setup procedure will install proprietary software that is subject to licensing terms. - + Deze voorbereidingsprocedure zal propriëtaire software installeren waarop licentievoorwaarden van toepassing zijn. - + If you do not agree with the terms, the setup procedure cannot continue. - + Indien je niet akkoord gaat met deze voorwaarden kan de installatie niet doorgaan. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Deze voorbereidingsprocedure zal propriëtaire software installeren waarop licentievoorwaarden van toepassing zijn, om extra features aan te bieden en de gebruikerservaring te verbeteren. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Indien je de voorwaarden niet aanvaardt zal de propriëtaire software vervangen worden door opensource alternatieven. @@ -1665,47 +1697,32 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Open license agreement in browser. - + Open licentieovereenkomst in webbrowser. LocalePage - + Region: Regio: - + Zone: Zone: - - + + &Change... &Aanpassen - - - The system language will be set to %1. - De taal van het systeem zal worden ingesteld op %1. - - - - The numbers and dates locale will be set to %1. - De getal- en datumnotatie worden ingesteld op %1. - - - - Set timezone to %1/%2.<br/> - Instellen tijdzone naar %1/%2.<br/> - LocaleQmlViewStep - + Location Locatie @@ -1713,7 +1730,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocaleViewStep - + Location Locatie @@ -1723,35 +1740,35 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Configuring LUKS key file. - + LUKS-sleutelbestand configureren. No partitions are defined. - + Geen partities gedefineerd. Encrypted rootfs setup error - + Versleutelde rootfs installatiefout Root partition %1 is LUKS but no passphrase has been set. - + Rootpartitie %1 is LUKS maar er is een wachtwoord ingesteld. Could not create LUKS key file for root partition %1. - + Kon het LUKS-sleutelbestand niet aanmaken voor rootpartitie %1. Could not configure LUKS key file on partition %1. - + Kon het LUKS-sleutelbestand niet aanmaken op partitie %1. @@ -1764,22 +1781,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Configuration Error - + Configuratiefout No root mount point is set for MachineId. - + Er is geen root mountpunt ingesteld voor MachineId. Map - + 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. - + Selecteer je gewenste locatie op de kaart zodat het installatieprogramma een landinstelling en tijdzone kan instellen. Je kunt hieronder de voorgestelde instellingen afstellen. Zoek de kaart door slepen en gebruik de +/- koppen of scroll de muis om in en uit te zoomen. @@ -1813,7 +1830,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Web browser - + Webbrowser @@ -1868,7 +1885,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Theming - + Thema @@ -1878,7 +1895,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Utilities - + Gereedschappen @@ -1886,7 +1903,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Notes - + Notities @@ -1894,17 +1911,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Ba&tch: - + Ba&tch: <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> - + <html><head/><body><p>Vul een batch-ID hier in. Deze zal worden opgeslagen in het doelsysteem.</p></body></html> <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> - + <html><head/><body><h1>OEM Configuratie</h1><p>Calamares zal OEM instellingen gebruiken tijdens het configureren van het doelsysteem.</p></body></html> @@ -1912,12 +1929,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. OEM Configuration - + OEM Configuratie Set the OEM Batch Identifier to <code>%1</code>. - + OEM Batch-ID instellen naar <code>%1</code>. @@ -1925,12 +1942,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Timezone: %1 - + Tijdzone: %1 To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + Voor het instellen van het tijdzone is een internetverbinding nodig. Herstart het installatieprogramma na het verbinden met het internet. Je kunt hieronder de taal en taalinstellingen afstellen. @@ -2176,9 +2193,9 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Onbekende fout - + Password is empty - + Wachtwoord is leeg @@ -2191,7 +2208,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Product Name - + Productnaam @@ -2201,17 +2218,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Long Product Description - + Lange productbeschrijving Package Selection - + Pakketselectie Please pick a product from the list. The selected product will be installed. - + Kies een product van de lijst. Het geselecteerde product zal worden geïnstalleerd. @@ -2219,7 +2236,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Packages - + Pakketten @@ -2321,12 +2338,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. When this box is checked, password-strength checking is done and you will not be able to use a weak password. - + Wanneer dit vakje is aangevinkt, wachtwoordssterkte zal worden gecontroleerd en je zal geen zwak wachtwoord kunnen gebruiken. Require strong passwords. - + Vereis sterke wachtwoorden. @@ -2515,114 +2532,114 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Systeeminformatie verzamelen... - + Partitions Partities - + Install %1 <strong>alongside</strong> another operating system. Installeer %1 <strong>naast</strong> een ander besturingssysteem. - + <strong>Erase</strong> disk and install %1. <strong>Wis</strong> schijf en installeer %1. - + <strong>Replace</strong> a partition with %1. <strong>Vervang</strong> een partitie met %1. - + <strong>Manual</strong> partitioning. <strong>Handmatig</strong> partitioneren. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installeer %1 <strong>naast</strong> een ander besturingssysteem op schijf <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wis</strong> schijf <strong>%2</strong> (%3) en installeer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Vervang</strong> een partitie op schijf <strong>%2</strong> (%3) met %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Handmatig</strong> partitioneren van schijf <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Schijf <strong>%1</strong> (%2) - + Current: Huidig: - + After: Na: - + No EFI system partition configured Geen EFI systeempartitie geconfigureerd - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Een EFI systeempartitie is vereist om %1 te starten.<br/><br/>Om een EFI systeempartitie in te stellen, ga terug en selecteer of maak een FAT32 bestandssysteem met de <strong>%3</strong>-vlag aangevinkt en aankoppelpunt <strong>%2</strong>.<br/><br/>Je kan verdergaan zonder een EFI systeempartitie, maar mogelijk start je systeem dan niet op. + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Een partitie is ingesteld met aankoppelpunt <strong>%2</strong>, maar de de <strong>%3</strong>-vlag is niet aangevinkt.<br/>Om deze vlag aan te vinken, ga terug en pas de partitie aan.<br/><br/>Je kan verdergaan zonder deze vlag, maar mogelijk start je systeem dan niet op. - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - - - EFI system partition flag not set EFI-systeem partitievlag niet ingesteld. - - - Option to use GPT on BIOS - - - A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Option to use GPT on BIOS + Optie om GPT te gebruiken in BIOS - + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + Een GPT-partitie is de beste optie voor alle systemen. Dit installatieprogramma ondersteund ook zulke installatie voor BIOS systemen.<br/><br/>Om een GPT-partitie te configureren, (als dit nog niet gedaan is) ga terug en stel de partitietavel in als GPT en maak daarna een 8 MB ongeformateerde partitie aan met de <strong>bios_grub</strong>-vlag ingesteld.<br/><br/>Een ongeformateerde 8 MB partitie is nodig om %1 te starten op BIOS-systemen met GPT. + + + Boot partition not encrypted Bootpartitie niet versleuteld - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Een aparte bootpartitie was ingesteld samen met een versleutelde rootpartitie, maar de bootpartitie zelf is niet versleuteld.<br/><br/>Dit is niet volledig veilig, aangezien belangrijke systeembestanden bewaard worden op een niet-versleutelde partitie.<br/>Je kan doorgaan als je wil, maar het ontgrendelen van bestandssystemen zal tijdens het opstarten later plaatsvinden.<br/>Om de bootpartitie toch te versleutelen: keer terug en maak de bootpartitie opnieuw, waarbij je <strong>Versleutelen</strong> aanvinkt in het venster partitie aanmaken. - + has at least one disk device available. - + tenminste één schijfapparaat beschikbaar. - + There are no partitions to install on. - + Er zijn geen partities om op te installeren. @@ -2649,7 +2666,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Kies een Look-and Feel voor de KDE Plasma Desktop. Je kan deze stap ook overslaan en de Look-and-Feel instellen op het geïnstalleerde systeem. Bij het selecteren van een Look-and-Feel zal een live voorbeeld tonen van die Look-and-Feel. @@ -2668,17 +2685,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PreserveFiles - + Saving files for later ... Bestanden opslaan voor later... - + No files configured to save for later. Geen bestanden geconfigureerd om op te slaan voor later. - + Not all of the configured files could be preserved. Niet alle geconfigureerde bestanden konden worden bewaard. @@ -2796,27 +2813,27 @@ Uitvoer: File not found - + Bestand niet gevonden Path <pre>%1</pre> must be an absolute path. - + Pad <pre>%1</pre> moet een absoluut pad zijn. Could not create new random file <pre>%1</pre>. - + Kon niet een willekeurig bestand <pre>%1</pre> aanmaken. No product - + Geen product No description provided. - + Geen beschrijving vermeld. @@ -2835,7 +2852,7 @@ Uitvoer: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + Deze computer voldoet niet aan enkele van de aanbevolen specificaties om %1 te installeren.<br/>De installatie kan doorgaan, maar sommige functies kunnen uitgeschakeld zijn. @@ -2843,7 +2860,7 @@ Uitvoer: Remove live user from target system - + Verwijder live gebruiker van het doelsysteem @@ -2946,13 +2963,14 @@ Uitvoer: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + Deze computer voldoet niet aan de minimale vereisten voor het installeren van % 1. +De installatie kan niet doorgaan. <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + Deze computer voldoet niet aan enkele van de aanbevolen specificaties om %1 te installeren.<br/>De installatie kan doorgaan, maar sommige functies kunnen uitgeschakeld zijn. @@ -3034,12 +3052,12 @@ Uitvoer: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Herschaal de <strong>%2MB</strong> partitie <strong>%1</strong> naar <strong>%3MiB</strong>. Resizing %2MiB partition %1 to %3MiB. - + Pas de %2MiB partitie %1 aan naar %3MiB. @@ -3092,7 +3110,7 @@ Uitvoer: This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Deze computer voldoet niet aan de minimumvereisten om %1 te installeren.<br/>De installatie kan niet doorgaan. <a href="#details">Details...</a> @@ -3102,7 +3120,7 @@ Uitvoer: This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. - + Deze computer voldoet niet aan enkele van de aanbevolen specificaties om %1 te installeren.<br/>De installatie kan doorgaan, maar sommige functies kunnen uitgeschakeld zijn. @@ -3161,29 +3179,29 @@ Uitvoer: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Stel toetsenbordmodel in op %1 ,indeling op %2-%3 - + Failed to write keyboard configuration for the virtual console. Kon de toetsenbordconfiguratie voor de virtuele console niet opslaan. - - - + + + Failed to write to %1 Schrijven naar %1 mislukt - + Failed to write keyboard configuration for X11. Schrijven toetsenbord configuratie voor X11 mislukt. - + Failed to write keyboard configuration to existing /etc/default directory. Kon de toetsenbordconfiguratie niet wegschrijven naar de bestaande /etc/default map. @@ -3198,7 +3216,7 @@ Uitvoer: Set flags on %1MiB %2 partition. - + Stel vlaggen in op %1MiB %2 partitie. @@ -3213,7 +3231,7 @@ Uitvoer: Clear flags on %1MiB <strong>%2</strong> partition. - + Wis vlaggen op %1MiB <strong>%2</strong> partitie. @@ -3228,7 +3246,7 @@ Uitvoer: Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + Vlag %1MiB <strong>%2</strong> partitie als <strong>%3</strong>. @@ -3243,7 +3261,7 @@ Uitvoer: Clearing flags on %1MiB <strong>%2</strong> partition. - + Vlaggen op %1MiB <strong>%2</strong> partitie wissen. @@ -3258,7 +3276,7 @@ Uitvoer: Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + Vlaggen <strong>%3</strong> op %1MiB <strong>%2</strong> partitie instellen. @@ -3374,7 +3392,7 @@ Uitvoer: This is an overview of what will happen once you start the setup procedure. - + Dit is een overzicht van wat zal gebeuren wanneer je de installatieprocedure start. @@ -3416,57 +3434,57 @@ Uitvoer: TrackingKUserFeedbackJob - + KDE user feedback - + KDE gebruikersfeedback - + Configuring KDE user feedback. - + KDE gebruikersfeedback configureren. - - + + Error in KDE user feedback configuration. - + Fout in de KDE gebruikersfeedback configuratie. - + Could not configure KDE user feedback correctly, script error %1. - + Kon de KDE gebruikersfeedback niet correct instellen, scriptfout %1. - + Could not configure KDE user feedback correctly, Calamares error %1. - + Kon de KDE gebruikersfeedback niet correct instellen, Calamaresfout %1. TrackingMachineUpdateManagerJob - + Machine feedback Machinefeedback - + Configuring machine feedback. Instellen van machinefeedback. - - + + Error in machine feedback configuration. Fout in de configuratie van de machinefeedback. - + Could not configure machine feedback correctly, script error %1. Kon de machinefeedback niet correct instellen, scriptfout %1. - + Could not configure machine feedback correctly, Calamares error %1. Kon de machinefeedback niet correct instellen, Calamares-fout %1. @@ -3486,7 +3504,7 @@ Uitvoer: <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Klik hier om <span style=" font-weight:600;">geen informatie</span> te sturen over je installatie.</p></body></html> @@ -3496,22 +3514,22 @@ Uitvoer: Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. - + Tracken helpt %1 te zien hoe vaak het geïnstalleerd wordt. op welke hardware het geïnstalleerd is en welke applicaties worden gebruikt. Om te zien wat er verzonden wordt, klik het help-pictogram naast elke optie. By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. - + Door dit aan te vinken zal er informatie verstuurd worden over jouw installatie en hardware. Deze informatie zal slechts <b> eenmaal</b> verstuurd worden na het afronden van de installatie. By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + Door dit aan te vinken zal periodiek informatie verstuurd worden naar %1 over je <b>apparaat</b>installatie, hardware en toepassingen. By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. - + Door dit aan te vinken zal regelmatig informatie verstuurd worden naar %1 over jouw installatie, hardware, toepassingen en gebruikspatronen. @@ -3525,47 +3543,17 @@ Uitvoer: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>Als meer dan één persoon deze computer zal gebruiken, kan je meerdere accounts aanmaken na installatie.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - + <small>Als meer dan één persoon deze computer zal gebruiken, kan je meerdere accounts aanmaken na installatie.</small> - - Your username is too long. - De gebruikersnaam is te lang. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - De hostnaam is te kort. - - - - Your hostname is too long. - De hostnaam is te lang. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Je wachtwoorden komen niet overeen! @@ -3573,7 +3561,7 @@ Uitvoer: UsersViewStep - + Users Gebruikers @@ -3583,7 +3571,7 @@ Uitvoer: Key - + Sleutel @@ -3596,7 +3584,7 @@ Uitvoer: Create Volume Group - + Volumegroep aanmaken @@ -3655,7 +3643,7 @@ Uitvoer: Select application and system language - + Selecteer applicatie- en systeemstaal. @@ -3665,7 +3653,7 @@ Uitvoer: Open donations website - + Open donatiewebsite @@ -3675,7 +3663,7 @@ Uitvoer: Open help and support website - + Open help en ondersteuningswebsite. @@ -3685,7 +3673,7 @@ Uitvoer: Open issues and bug-tracking website - + Open problemen en bug-tracking website. @@ -3695,7 +3683,7 @@ Uitvoer: Open release notes website - + Open release-opmerkingen website. @@ -3710,7 +3698,7 @@ Uitvoer: <h1>Welcome to %1 setup.</h1> - + <h1>Welkom in het %1 installatieprogramma.</h1> @@ -3730,7 +3718,7 @@ Uitvoer: About %1 setup - + Over %1 installatieprogramma. @@ -3740,7 +3728,7 @@ Uitvoer: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>voor %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Met dank aan <a href="https://calamares.io/team/">het Calamares team</a> en <a href="https://www.transifex.com/calamares/calamares/">het Calamares vertaalteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> ontwikkeling gesponsord door <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. @@ -3775,7 +3763,7 @@ Uitvoer: development is sponsored by <br/> <a href='http://www.blue-systems.com/'>Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>voor %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Met dank aan <a href="https://calamares.io/team/">het Calamares team</a> en <a href="https://www.transifex.com/calamares/calamares/">het Calamares vertaalteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> ontwikkeling gesponsord door <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. @@ -3786,19 +3774,21 @@ Uitvoer: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Talen</h1></br> +De taalinstellingen bepalen de taal en karakterset voor sommige opdrachtsregelelementen. De huidige instelling is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + <h1>Tijdinstellingen</h1></br> +De systeemstijdinstellingen beïnvloeden de cijfer- en datumsformaat. De huidige instelling is <strong>%1</strong>. - + Back Terug @@ -3806,64 +3796,54 @@ Uitvoer: keyboardq - + Keyboard Model - + Toetensbord model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Kies je voorkeurstoetsenbordmodel of gebruik het standaardmodel op de gedetecteerde hardware. - + Refresh - + Vernieuwen - - + + Layouts - + Indeling - - + + Keyboard Layout - + Toetesenbord indeling - + Models - + Modellen - + Variants - + Varianten - + Test your keyboard - + Test je toetsenbord localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change - + Veranderen @@ -3872,7 +3852,8 @@ Uitvoer: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> +<p>Dit zijn voorbeeld release-opmerkingen.</p> @@ -3900,7 +3881,26 @@ Uitvoer: </ul> <p>The vertical scrollbar is adjustable, current width set to 10.</p> - + <h3>%1</h3> +<p>Dit voorbeeld QML bestand weergeeft opties in RichtText met Flickable inhoud.</p> +<p>QML met RichText kan HTML-tags gebruiken. Flickable inhoud is handig voor touchscreens.</p> +<p><b>Dit is vergedrukte tekst</b></p> +<p><i>Dit is schuingedrukte tekst</i></p> +<p><u>Dit is onderstreepte tekst</u></p> +<p><center>Deze tekst zal worden gecentreerd.</center></p> +<p><s>Dit is doorgestreepte teksts</s></p> + +<p>Code voorbeeld: +<code>ls -l /home</code> +</p> + +<p><b>Lijsten:</b></p> +<ul> + <li>Intel CPU systemen</li> + <li>AMD CPU systemen</li> +</ul> + +<p>De verticale scrollbalk is verstelbaar, huidige breedte ingesteld op 10.</p> @@ -3914,7 +3914,8 @@ Uitvoer: <h3>Welcome to the %1 <quote>%2</quote> installer</h3> <p>This program will ask you some questions and set up %1 on your computer.</p> - + <h3>Welkom bij het %1 <quote>%2</quote> installatieprogramma</h3> +<p>Dit programma zal je enkele vragen stellen en %1 op uw computer installeren.</p> diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index a9742c80e..8fa9f2119 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -261,170 +261,170 @@ Calamares::ViewManager - + Setup Failed Nieudane ustawianie - + Installation Failed Wystąpił błąd instalacji - + Would you like to paste the install log to the web? - + Error Błąd - - + + &Yes &Tak - - + + &No &Nie - + &Close Zam&knij - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed Błąd inicjacji programu Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 nie może zostać zainstalowany. Calamares nie mógł wczytać wszystkich skonfigurowanych modułów. Jest to problem ze sposobem, w jaki Calamares jest używany przez dystrybucję. - + <br/>The following modules could not be loaded: <br/>Następujące moduły nie mogły zostać wczytane: - + Continue with setup? Kontynuować z programem instalacyjnym? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalator %1 zamierza przeprowadzić zmiany na Twoim dysku, aby zainstalować %2.<br/><strong>Nie będziesz mógł cofnąć tych zmian.</strong> - + &Set up now - + &Install now &Zainstaluj teraz - + Go &back &Cofnij się - + &Set up - + &Install Za&instaluj - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Instalacja ukończona pomyślnie. Możesz zamknąć instalator. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Anuluj instalację bez dokonywania zmian w systemie. - + &Next &Dalej - + &Back &Wstecz - + &Done &Ukończono - + &Cancel &Anuluj - + Cancel setup? Anulować ustawianie? - + Cancel installation? Anulować instalację? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy na pewno chcesz anulować obecny proces instalacji? @@ -486,12 +486,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.&Anuluj - + %1 Setup Program - + %1 Installer Instalator %1 @@ -518,9 +518,9 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - - - + + + Current: Bieżący: @@ -531,115 +531,115 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ręczne partycjonowanie</strong><br/>Możesz samodzielnie utworzyć lub zmienić rozmiar istniejących partycji. - + Reuse %1 as home partition for %2. Użyj ponownie %1 jako partycji domowej dla %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Wybierz partycję do zmniejszenia, a następnie przeciągnij dolny pasek, aby zmienić jej rozmiar</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Położenie programu rozruchowego: - + <strong>Select a partition to install on</strong> <strong>Wybierz partycję, na której przeprowadzona będzie instalacja</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nigdzie w tym systemie nie można odnaleźć partycji systemowej EFI. Prosimy się cofnąć i użyć ręcznego partycjonowania dysku do ustawienia %1. - + The EFI system partition at %1 will be used for starting %2. Partycja systemowa EFI na %1 będzie użyta do uruchamiania %2. - + EFI system partition: Partycja systemowa EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. To urządzenie pamięci masowej prawdopodobnie nie posiada żadnego systemu operacyjnego. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Wyczyść dysk</strong><br/>Ta operacja <font color="red">usunie</font> wszystkie dane obecnie znajdujące się na wybranym urządzeniu przechowywania. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Zainstaluj obok siebie</strong><br/>Instalator zmniejszy partycję, aby zrobić miejsce dla %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Zastąp partycję</strong><br/>Zastępowanie partycji poprzez %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. To urządzenie pamięci masowej posiada %1. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. To urządzenie pamięci masowej posiada już system operacyjny. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. To urządzenie pamięci masowej posiada kilka systemów operacyjnych. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - + No Swap Brak przestrzeni wymiany - + Reuse Swap Użyj ponownie przestrzeni wymiany - + Swap (no Hibernate) Przestrzeń wymiany (bez hibernacji) - + Swap (with Hibernate) Przestrzeń wymiany (z hibernacją) - + Swap to file Przestrzeń wymiany do pliku @@ -647,17 +647,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ClearMountsJob - + Clear mounts for partitioning operations on %1 Wyczyść zamontowania dla operacji partycjonowania na %1 - + Clearing mounts for partitioning operations on %1. Czyszczenie montowań dla operacji partycjonowania na %1. - + Cleared all mounts for %1 Wyczyszczono wszystkie zamontowania dla %1 @@ -665,22 +665,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ClearTempMountsJob - + Clear all temporary mounts. Wyczyść wszystkie tymczasowe montowania. - + Clearing all temporary mounts. Usuwanie wszystkich tymczasowych punktów montowania. - + Cannot get list of temporary mounts. Nie można uzyskać listy tymczasowych montowań. - + Cleared all temporary mounts. Wyczyszczono wszystkie tymczasowe montowania. @@ -707,30 +707,30 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Config - + Set keyboard model to %1.<br/> Ustaw model klawiatury na %1.<br/> - + Set keyboard layout to %1/%2. Ustaw model klawiatury na %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Język systemu zostanie ustawiony na %1. - + The numbers and dates locale will be set to %1. Format liczb i daty zostanie ustawiony na %1. - - - Set timezone to %1/%2.<br/> - Ustaw strefę czasową na %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -796,6 +796,46 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.<h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Twoja nazwa użytkownika jest za długa. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Twoja nazwa komputera jest za krótka. + + + + Your hostname is too long. + Twoja nazwa komputera jest za długa. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -960,40 +1000,30 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CreateUserJob - + Create user %1 Utwórz użytkownika %1 - + Create user <strong>%1</strong>. Utwórz użytkownika <strong>%1</strong>. - + Creating user %1. Tworzenie użytkownika %1. - - Sudoers dir is not writable. - Katalog sudoers nie ma prawa do zapisu. - - - + Cannot create sudoers file for writing. Nie można utworzyć pliku sudoers z możliwością zapisu. - + Cannot chmod sudoers file. Nie można wykonać chmod na pliku sudoers. - - - Cannot open groups file for reading. - Nie można otworzyć pliku groups do odczytu. - CreateVolumeGroupDialog @@ -1231,37 +1261,37 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. FillGlobalStorageJob - + Set partition information Ustaw informacje partycji - + Install %1 on <strong>new</strong> %2 system partition. Zainstaluj %1 na <strong>nowej</strong> partycji systemowej %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Ustaw <strong>nową</strong> partycję %2 z punktem montowania <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Zainstaluj %2 na partycji systemowej %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Ustaw partycję %3 <strong>%1</strong> z punktem montowania <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Zainstaluj program rozruchowy na <strong>%1</strong>. - + Setting up mount points. Ustawianie punktów montowania. @@ -1512,12 +1542,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. KeyboardPage - + Set keyboard model to %1.<br/> Ustaw model klawiatury na %1.<br/> - + Set keyboard layout to %1/%2. Ustaw model klawiatury na %1/%2. @@ -1574,32 +1604,32 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + I accept the terms and conditions above. Akceptuję powyższe warunki korzystania. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1675,41 +1705,26 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocalePage - + Region: Region: - + Zone: Strefa: - - + + &Change... &Zmień... - - - The system language will be set to %1. - Język systemu zostanie ustawiony na %1. - - - - The numbers and dates locale will be set to %1. - Format liczb i daty zostanie ustawiony na %1. - - - - Set timezone to %1/%2.<br/> - Ustaw strefę czasową na %1/%2.<br/> - LocaleQmlViewStep - + Location Położenie @@ -1717,7 +1732,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocaleViewStep - + Location Położenie @@ -1779,7 +1794,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. Map - + 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. @@ -2180,7 +2195,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Nieznany błąd - + Password is empty @@ -2519,112 +2534,112 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Zbieranie informacji o systemie... - + Partitions Partycje - + Install %1 <strong>alongside</strong> another operating system. Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego. - + <strong>Erase</strong> disk and install %1. <strong>Wyczyść</strong> dysk i zainstaluj %1. - + <strong>Replace</strong> a partition with %1. <strong>Zastąp</strong> partycję poprzez %1. - + <strong>Manual</strong> partitioning. <strong>Ręczne</strong> partycjonowanie. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego na dysku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wyczyść</strong> dysk <strong>%2</strong> (%3) i zainstaluj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zastąp</strong> partycję na dysku <strong>%2</strong> (%3) poprzez %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ręczne</strong> partycjonowanie na dysku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Dysk <strong>%1</strong> (%2) - + Current: Bieżący: - + After: Po: - + No EFI system partition configured Nie skonfigurowano partycji systemowej EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Flaga partycji systemowej EFI nie została ustawiona - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Niezaszyfrowana partycja rozruchowa - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Oddzielna partycja rozruchowa została skonfigurowana razem z zaszyfrowaną partycją roota, ale partycja rozruchowa nie jest szyfrowana.<br/><br/>Nie jest to najbezpieczniejsze rozwiązanie, ponieważ ważne pliki systemowe znajdują się na niezaszyfrowanej partycji.<br/>Możesz kontynuować, ale odblokowywanie systemu nastąpi później, w trakcie uruchamiania.<br/>Aby zaszyfrować partycję rozruchową, wróć i utwórz ją ponownie zaznaczając opcję <strong>Szyfruj</strong> w oknie tworzenia partycji. - + has at least one disk device available. - + There are no partitions to install on. @@ -2672,17 +2687,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PreserveFiles - + Saving files for later ... Zapisywanie plików na później ... - + No files configured to save for later. Nie skonfigurowano żadnych plików do zapisania na później. - + Not all of the configured files could be preserved. Nie wszystkie pliki konfiguracyjne mogą być zachowane. @@ -3166,29 +3181,29 @@ i nie uruchomi się SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Ustaw model klawiatury na %1, jej układ na %2-%3 - + Failed to write keyboard configuration for the virtual console. Błąd zapisu konfiguracji klawiatury dla konsoli wirtualnej. - - - + + + Failed to write to %1 Nie można zapisać do %1 - + Failed to write keyboard configuration for X11. Błąd zapisu konfiguracji klawiatury dla X11. - + Failed to write keyboard configuration to existing /etc/default directory. Błąd zapisu konfiguracji układu klawiatury dla istniejącego katalogu /etc/default. @@ -3421,28 +3436,28 @@ i nie uruchomi się TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3450,28 +3465,28 @@ i nie uruchomi się TrackingMachineUpdateManagerJob - + Machine feedback Maszynowa informacja zwrotna - + Configuring machine feedback. Konfiguracja mechanizmu informacji zwrotnej. - - + + Error in machine feedback configuration. Błąd w konfiguracji maszynowej informacji zwrotnej. - + Could not configure machine feedback correctly, script error %1. Nie można poprawnie skonfigurować maszynowej informacji zwrotnej, błąd skryptu %1. - + Could not configure machine feedback correctly, Calamares error %1. Nie można poprawnie skonfigurować maszynowej informacji zwrotnej, błąd Calamares %1. @@ -3530,47 +3545,17 @@ i nie uruchomi się UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Twoja nazwa użytkownika jest za długa. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Twoja nazwa komputera jest za krótka. - - - - Your hostname is too long. - Twoja nazwa komputera jest za długa. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Twoje hasła nie są zgodne! @@ -3578,7 +3563,7 @@ i nie uruchomi się UsersViewStep - + Users Użytkownicy @@ -3791,19 +3776,19 @@ i nie uruchomi się i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3811,44 +3796,44 @@ i nie uruchomi się keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3856,17 +3841,7 @@ i nie uruchomi się localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 27d8803a3..a18e5e0a7 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -220,7 +220,7 @@ Passo QML <i>%1</i>. - + Loading failed. Carregamento falhou. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed A Configuração Falhou - + Installation Failed Falha na Instalação - + Would you like to paste the install log to the web? Deseja colar o registro de instalação na web? - + Error Erro - - + + &Yes &Sim - - + + &No &Não - + &Close Fe&char - + Install Log Paste URL Colar URL de Registro de Instalação - + The upload was unsuccessful. No web-paste was done. Não foi possível fazer o upload. Nenhuma colagem foi feita na web. - + Calamares Initialization Failed Falha na inicialização do Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 não pôde ser instalado. O Calamares não conseguiu carregar todos os módulos configurados. Este é um problema com o modo em que o Calamares está sendo utilizado pela distribuição. - + <br/>The following modules could not be loaded: <br/>Os seguintes módulos não puderam ser carregados: - + Continue with setup? Continuar com configuração? - + Continue with installation? Continuar com a instalação? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> O programa de configuração %1 está prestes a fazer mudanças no seu disco de modo a configurar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O instalador %1 está prestes a fazer alterações no disco a fim de instalar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> - + &Set up now &Configurar agora - + &Install now &Instalar agora - + Go &back &Voltar - + &Set up &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. A configuração está completa. Feche o programa de configuração. - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Cancel setup without changing the system. Cancelar configuração sem alterar o sistema. - + Cancel installation without changing the system. Cancelar instalação sem modificar o sistema. - + &Next &Próximo - + &Back &Voltar - + &Done Concluí&do - + &Cancel &Cancelar - + Cancel setup? Cancelar a configuração? - + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Você realmente quer cancelar o processo atual de configuração? O programa de configuração será fechado e todas as mudanças serão perdidas. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Você deseja realmente cancelar a instalação atual? @@ -484,12 +484,12 @@ O instalador será fechado e todas as alterações serão perdidas.&Cancelar - + %1 Setup Program Programa de configuração %1 - + %1 Installer Instalador %1 @@ -516,9 +516,9 @@ O instalador será fechado e todas as alterações serão perdidas. - - - + + + Current: Atual: @@ -529,115 +529,115 @@ O instalador será fechado e todas as alterações serão perdidas. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Particionamento manual</strong><br/>Crie ou redimensione você mesmo as partições. Ter uma tabela de partições GPT e uma <strong>partição /boot fat32 de 512Mb é essencial para instalações UEFI</strong>, use uma existente sem formatação ou crie uma. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionamento manual</strong><br/>Você pode criar ou redimensionar partições. - + Reuse %1 as home partition for %2. Reutilizar %1 como partição home para %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selecione uma partição para reduzir, então arraste a barra de baixo para redimensionar</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 será reduzida para %2MiB e uma nova partição de %3MiB será criada para %4. - + Boot loader location: Local do gerenciador de inicialização: - + <strong>Select a partition to install on</strong> <strong>Selecione uma partição para instalação</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Uma partição de sistema EFI não pôde ser encontrada neste dispositivo. Por favor, volte e use o particionamento manual para gerenciar %1. - + The EFI system partition at %1 will be used for starting %2. A partição de sistema EFI em %1 será utilizada para iniciar %2. - + EFI system partition: Partição de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Parece que não há um sistema operacional neste dispositivo de armazenamento. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Apagar disco</strong><br/>Isto <font color="red">excluirá</font> todos os dados no dispositivo de armazenamento selecionado. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar lado a lado</strong><br/>O instalador reduzirá uma partição para liberar espaço para %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Substituir uma partição</strong><br/>Substitui uma partição com %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento possui %1 nele. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Já há um sistema operacional neste dispositivo de armazenamento. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Há diversos sistemas operacionais neste dispositivo de armazenamento. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - + No Swap Sem swap - + Reuse Swap Reutilizar swap - + Swap (no Hibernate) Swap (sem hibernação) - + Swap (with Hibernate) Swap (com hibernação) - + Swap to file Swap em arquivo @@ -645,17 +645,17 @@ O instalador será fechado e todas as alterações serão perdidas. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar as montagens para as operações nas partições em %1 - + Clearing mounts for partitioning operations on %1. Limpando montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Todos os pontos de montagem para %1 foram limpos @@ -663,22 +663,22 @@ O instalador será fechado e todas as alterações serão perdidas. ClearTempMountsJob - + Clear all temporary mounts. Limpar pontos de montagens temporários. - + Clearing all temporary mounts. Limpando todos os pontos de montagem temporários. - + Cannot get list of temporary mounts. Não foi possível listar os pontos de montagens. - + Cleared all temporary mounts. Pontos de montagens temporários limpos. @@ -705,30 +705,30 @@ O instalador será fechado e todas as alterações serão perdidas. Config - + Set keyboard model to %1.<br/> Definir o modelo de teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir o layout do teclado para %1/%2. - + + Set timezone to %1/%2. + Definir o fuso horário para %1/%2. + + + The system language will be set to %1. O idioma do sistema será definido como %1. - + The numbers and dates locale will be set to %1. A localidade dos números e datas será definida como %1. - - - Set timezone to %1/%2.<br/> - Definir o fuso horário para %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ O instalador será fechado e todas as alterações serão perdidas.<h1>Welcome to the %1 installer</h1> <h1>Bem-vindo ao instalador de %1</h1> + + + Your username is too long. + O nome de usuário é grande demais. + + + + '%1' is not allowed as username. + '%1' não é permitido como nome de usuário. + + + + Your username must start with a lowercase letter or underscore. + Seu nome de usuário deve começar com uma letra minúscula ou com um sublinhado. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + É permitido apenas letras minúsculas, números, sublinhado e hífen. + + + + Your hostname is too short. + O nome da máquina é muito curto. + + + + Your hostname is too long. + O nome da máquina é muito grande. + + + + '%1' is not allowed as hostname. + '%1' não é permitido como nome da máquina. + + + + Only letters, numbers, underscore and hyphen are allowed. + É permitido apenas letras, números, sublinhado e hífen. + ContextualProcessJob @@ -958,40 +998,30 @@ O instalador será fechado e todas as alterações serão perdidas. CreateUserJob - + Create user %1 Criar usuário %1 - + Create user <strong>%1</strong>. Criar usuário <strong>%1</strong>. - + Creating user %1. Criando usuário %1. - - Sudoers dir is not writable. - O diretório do sudoers não é gravável. - - - + Cannot create sudoers file for writing. Não foi possível criar arquivo sudoers para gravação. - + Cannot chmod sudoers file. Não foi possível utilizar chmod no arquivo sudoers. - - - Cannot open groups file for reading. - Não foi possível abrir arquivo de grupos para leitura. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ O instalador será fechado e todas as alterações serão perdidas. FillGlobalStorageJob - + Set partition information Definir informações da partição - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 em <strong>nova</strong> partição %2 do sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurar <strong>nova</strong> partição %2 com ponto de montagem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 na partição %3 do sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurar partição %3 <strong>%1</strong> com ponto de montagem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar gerenciador de inicialização em <strong>%1</strong>. - + Setting up mount points. Configurando pontos de montagem. @@ -1510,12 +1540,12 @@ O instalador será fechado e todas as alterações serão perdidas. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo de teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir o layout do teclado para %1/%2. @@ -1572,32 +1602,32 @@ O instalador será fechado e todas as alterações serão perdidas.<h1>Contrato de Licença</h1> - + I accept the terms and conditions above. Aceito os termos e condições acima. - + Please review the End User License Agreements (EULAs). Revise o contrato de licença de usuário final (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. Este procedimento de configuração irá instalar software proprietário que está sujeito aos termos de licença. - + If you do not agree with the terms, the setup procedure cannot continue. Se não concordar com os termos, o procedimento de configuração não poderá continuar. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Este procedimento de configuração pode instalar software proprietário sujeito a termos de licenciamento para fornecer recursos adicionais e aprimorar a experiência do usuário. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Se você não concordar com os termos, o software proprietário não será instalado e serão utilizadas as alternativas de código aberto. @@ -1673,41 +1703,26 @@ O instalador será fechado e todas as alterações serão perdidas. LocalePage - + Region: Região: - + Zone: Área: - - + + &Change... &Mudar... - - - The system language will be set to %1. - O idioma do sistema será definido como %1. - - - - The numbers and dates locale will be set to %1. - A localidade dos números e datas será definida como %1. - - - - Set timezone to %1/%2.<br/> - Definir o fuso horário para %1/%2.<br/> - LocaleQmlViewStep - + Location Localização @@ -1715,7 +1730,7 @@ O instalador será fechado e todas as alterações serão perdidas. LocaleViewStep - + Location Localização @@ -1777,7 +1792,7 @@ O instalador será fechado e todas as alterações serão perdidas. Map - + 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. @@ -2180,7 +2195,7 @@ O instalador será fechado e todas as alterações serão perdidas.Erro desconhecido - + Password is empty A senha está em branco @@ -2519,112 +2534,112 @@ O instalador será fechado e todas as alterações serão perdidas.Coletando informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>ao lado de</strong> outro sistema operacional. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> uma partição com %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>ao lado de</strong> outro sistema operacional no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituir</strong> uma partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Atualmente: - + After: Depois: - + No EFI system partition configured Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. É necessário uma partição de sistema EFI para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte e faça a seleção ou crie um sistema de arquivos FAT32 com a flag <strong>%3</strong> ativada e o ponto de montagem <strong>%2</strong>.<br/><br/>Você pode continuar sem definir uma partição de sistema EFI, mas seu sistema poderá falhar ao iniciar. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. É necessário uma partição de sistema EFI para iniciar %1.<br/><br/>Uma partição foi configurada com o ponto de montagem <strong>%2</strong>, mas não foi definida a flag <strong>%3</strong>.<br/>Para definir a flag, volte e edite a partição.<br/><br/>Você pode continuar sem definir a flag, mas seu sistema poderá falhar ao iniciar. - + EFI system partition flag not set Marcador da partição do sistema EFI não definida - + Option to use GPT on BIOS Opção para usar GPT no BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Uma tabela de partições GPT é a melhor opção para todos os sistemas. Este instalador suporta tal configuração para sistemas BIOS também.<br/><br/>Para configurar uma tabela de partições GPT no BIOS, (caso não tenha sido feito ainda) volte e defina a tabela de partições como GPT, depois crie uma partição sem formatação de 8 MB com o marcador <strong>bios_grub</strong> ativado.<br/><br/>Uma partição não formatada de 8 MB é necessária para iniciar %1 num sistema BIOS com o GPT. - + Boot partition not encrypted Partição de boot não criptografada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança quanto a esse tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. - + has at least one disk device available. tem pelo menos um dispositivo de disco disponível. - + There are no partitions to install on. Não há partições para instalar. @@ -2672,17 +2687,17 @@ O instalador será fechado e todas as alterações serão perdidas. PreserveFiles - + Saving files for later ... Salvando arquivos para mais tarde... - + No files configured to save for later. Nenhum arquivo configurado para ser salvo mais tarde. - + Not all of the configured files could be preserved. Nem todos os arquivos configurados puderam ser preservados. @@ -3168,29 +3183,29 @@ Saída: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definir modelo de teclado para %1, layout para %2-%3 - + Failed to write keyboard configuration for the virtual console. Falha ao gravar a configuração do teclado para o console virtual. - - - + + + Failed to write to %1 Falha ao gravar em %1 - + Failed to write keyboard configuration for X11. Falha ao gravar a configuração do teclado para X11. - + Failed to write keyboard configuration to existing /etc/default directory. Falha ao gravar a configuração do teclado no diretório /etc/default existente. @@ -3423,28 +3438,28 @@ Saída: TrackingKUserFeedbackJob - + KDE user feedback Feedback de usuário KDE - + Configuring KDE user feedback. Configurando feedback de usuário KDE. - - + + Error in KDE user feedback configuration. Erro na configuração do feedback de usuário KDE. - + Could not configure KDE user feedback correctly, script error %1. Não foi possível configurar o feedback de usuário KDE corretamente, erro de script %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Não foi possível configurar o feedback de usuário KDE corretamente, erro do Calamares %1. @@ -3452,28 +3467,28 @@ Saída: TrackingMachineUpdateManagerJob - + Machine feedback Feedback da máquina - + Configuring machine feedback. Configurando feedback da máquina. - - + + Error in machine feedback configuration. Erro na configuração de feedback da máquina. - + Could not configure machine feedback correctly, script error %1. Não foi possível configurar o feedback da máquina corretamente, erro de script %1. - + Could not configure machine feedback correctly, Calamares error %1. Não foi possível configurar o feedback da máquina corretamente, erro do Calamares %1. @@ -3532,47 +3547,17 @@ Saída: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Se mais de uma pessoa for utilizar este computador, você poderá criar múltiplas contas após terminar a configuração.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Se mais de uma pessoa for utilizar este computador, você poderá criar múltiplas contas após terminar de instalar.</small> - - Your username is too long. - O nome de usuário é grande demais. - - - - Your username must start with a lowercase letter or underscore. - Seu nome de usuário deve começar com uma letra minúscula ou com um sublinhado. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - É permitido apenas letras minúsculas, números, sublinhado e hífen. - - - - Your hostname is too short. - O nome da máquina é muito curto. - - - - Your hostname is too long. - O nome da máquina é muito grande. - - - - Only letters, numbers, underscore and hyphen are allowed. - É permitido apenas letras, números, sublinhado e hífen. - - - + Your passwords do not match! As senhas não estão iguais! @@ -3580,7 +3565,7 @@ Saída: UsersViewStep - + Users Usuários @@ -3804,21 +3789,21 @@ Saída: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Idiomas</h1> </br> A configuração de localidade do sistema afeta o idioma e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário. A configuração atual é <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>Localidades</h1> </br> - A configuração de localidade do sistema afeta o idioma e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário. A configuração atual é <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + <h1>Localização</h1> </br> + A configuração de localização do sistema afeta os formatos de números e datas. A configuração atual é <strong>%1</strong>. - + Back Voltar @@ -3826,44 +3811,44 @@ Saída: keyboardq - + Keyboard Model Modelo de Teclado - + Pick your preferred keyboard model or use the default one based on the detected hardware Escolha seu modelo preferido de teclado ou use o padrão baseado no hardware detectado - + Refresh Recarregar - - + + Layouts Layouts - - + + Keyboard Layout Layout do Teclado - + Models Modelos - + Variants Variantes - + Test your keyboard Teste seu teclado @@ -3871,17 +3856,7 @@ Saída: localeq - - System language set to %1 - Idioma do sistema definido como %1 - - - - Numbers and dates locale set to %1 - A localidade de números e datas foi definida para %1 - - - + Change Modificar diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index add96468c..338c42831 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -220,7 +220,7 @@ Passo QML %1. - + Loading failed. Carregamento falhou. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Falha de Instalação - + Installation Failed Falha na Instalação - + Would you like to paste the install log to the web? Deseja colar o registo de instalação na Web? - + Error Erro - - + + &Yes &Sim - - + + &No &Não - + &Close &Fechar - + Install Log Paste URL Instalar o URL da pasta de registo - + The upload was unsuccessful. No web-paste was done. O carregamento não teve êxito. Nenhuma pasta da web foi feita. - + Calamares Initialization Failed Falha na Inicialização do Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 não pode ser instalado. O Calamares não foi capaz de carregar todos os módulos configurados. Isto é um problema da maneira como o Calamares é usado pela distribuição. - + <br/>The following modules could not be loaded: <br/>Os módulos seguintes não puderam ser carregados: - + Continue with setup? Continuar com a configuração? - + Continue with installation? Continuar com a instalação? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> O programa de instalação %1 está prestes a fazer alterações no seu disco para configurar o %2.<br/><strong>Você não poderá desfazer essas alterações.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está prestes a fazer alterações ao seu disco em ordem para instalar %2.<br/><strong>Não será capaz de desfazer estas alterações.</strong> - + &Set up now &Instalar agora - + &Install now &Instalar agora - + Go &back Voltar &atrás - + &Set up &Instalar - + &Install &Instalar - + Setup is complete. Close the setup program. Instalação completa. Feche o programa de instalação. - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Cancel setup without changing the system. Cancelar instalação sem alterar o sistema. - + Cancel installation without changing the system. Cancelar instalar instalação sem modificar o sistema. - + &Next &Próximo - + &Back &Voltar - + &Done &Feito - + &Cancel &Cancelar - + Cancel setup? Cancelar instalação? - + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Quer mesmo cancelar o processo de instalação atual? O programa de instalação irá fechar todas as alterações serão perdidas. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Tem a certeza que pretende cancelar o atual processo de instalação? @@ -484,12 +484,12 @@ O instalador será encerrado e todas as alterações serão perdidas.&Cancelar - + %1 Setup Program %1 Programa de Instalação - + %1 Installer %1 Instalador @@ -516,9 +516,9 @@ O instalador será encerrado e todas as alterações serão perdidas. - - - + + + Current: Atual: @@ -529,115 +529,115 @@ O instalador será encerrado e todas as alterações serão perdidas. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Particionamento manual</strong><br/> Pode criar ou redimensionar partições. Ter uma tabela de partições GPT e <strong>uma partição de arranque "/boot" de fat32 512Mb é um requisito obrigatório para as instalações UEFI</strong>, ou utilizar uma existente sem formatação ou então criar uma. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Particionamento manual</strong><br/>Pode criar ou redimensionar partições manualmente. - + Reuse %1 as home partition for %2. Reutilizar %1 como partição home para %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selecione uma partição para encolher, depois arraste a barra de fundo para redimensionar</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 será encolhida para %2MiB e uma nova %3MiB partição será criada para %4. - + Boot loader location: Localização do carregador de arranque: - + <strong>Select a partition to install on</strong> <strong>Selecione uma partição para instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nenhuma partição de sistema EFI foi encontrada neste sistema. Por favor volte atrás e use o particionamento manual para configurar %1. - + The EFI system partition at %1 will be used for starting %2. A partição de sistema EFI em %1 será usada para iniciar %2. - + EFI system partition: Partição de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento aparenta não ter um sistema operativo. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Apagar disco</strong><br/>Isto irá <font color="red">apagar</font> todos os dados atualmente apresentados no dispositivo de armazenamento selecionado. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar paralelamente</strong><br/>O instalador irá encolher a partição para arranjar espaço para %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Substituir a partição</strong><br/>Substitui a partição com %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento tem %1 nele. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento já tem um sistema operativo nele. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento tem múltiplos sistemas operativos nele, O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - + No Swap Sem Swap - + Reuse Swap Reutilizar Swap - + Swap (no Hibernate) Swap (sem Hibernação) - + Swap (with Hibernate) Swap (com Hibernação) - + Swap to file Swap para ficheiro @@ -645,17 +645,17 @@ O instalador será encerrado e todas as alterações serão perdidas. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar montagens para operações de particionamento em %1 - + Clearing mounts for partitioning operations on %1. A limpar montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Limpar todas as montagens para %1 @@ -663,22 +663,22 @@ O instalador será encerrado e todas as alterações serão perdidas. ClearTempMountsJob - + Clear all temporary mounts. Limpar todas as montagens temporárias. - + Clearing all temporary mounts. A limpar todas as montagens temporárias. - + Cannot get list of temporary mounts. Não é possível obter a lista de montagens temporárias. - + Cleared all temporary mounts. Limpou todas as montagens temporárias. @@ -705,30 +705,30 @@ O instalador será encerrado e todas as alterações serão perdidas. Config - + Set keyboard model to %1.<br/> Definir o modelo do teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir esquema do teclado para %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. A linguagem do sistema será definida para %1. - + The numbers and dates locale will be set to %1. Os números e datas locais serão definidos para %1. - - - Set timezone to %1/%2.<br/> - Definir fuso horário para %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ O instalador será encerrado e todas as alterações serão perdidas.<h1>Welcome to the %1 installer</h1> + + + Your username is too long. + O seu nome de utilizador é demasiado longo. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + O seu nome de utilizador deve começar com uma letra minúscula ou underscore. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Apenas letras minúsculas, números, underscore e hífen são permitidos. + + + + Your hostname is too short. + O nome da sua máquina é demasiado curto. + + + + Your hostname is too long. + O nome da sua máquina é demasiado longo. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Apenas letras, números, underscore e hífen são permitidos. + ContextualProcessJob @@ -958,40 +998,30 @@ O instalador será encerrado e todas as alterações serão perdidas. CreateUserJob - + Create user %1 Criar utilizador %1 - + Create user <strong>%1</strong>. Criar utilizador <strong>%1</strong>. - + Creating user %1. A criar utilizador %1. - - Sudoers dir is not writable. - O diretório dos super utilizadores não é gravável. - - - + Cannot create sudoers file for writing. Impossível criar ficheiro do super utilizador para escrita. - + Cannot chmod sudoers file. Impossível de usar chmod no ficheiro dos super utilizadores. - - - Cannot open groups file for reading. - Impossível abrir ficheiro dos grupos para leitura. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ O instalador será encerrado e todas as alterações serão perdidas. FillGlobalStorageJob - + Set partition information Definir informação da partição - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 na <strong>nova</strong> %2 partição de sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Criar <strong>nova</strong> %2 partição com ponto de montagem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 em %3 partição de sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Criar %3 partitição <strong>%1</strong> com ponto de montagem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar carregador de arranque em <strong>%1</strong>. - + Setting up mount points. Definindo pontos de montagem. @@ -1510,12 +1540,12 @@ O instalador será encerrado e todas as alterações serão perdidas. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo do teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir esquema do teclado para %1/%2. @@ -1572,32 +1602,32 @@ O instalador será encerrado e todas as alterações serão perdidas.<h1>Acordo de Licença</h1> - + I accept the terms and conditions above. Aceito os termos e condições acima descritos. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ O instalador será encerrado e todas as alterações serão perdidas. LocalePage - + Region: Região: - + Zone: Zona: - - + + &Change... &Alterar... - - - The system language will be set to %1. - A linguagem do sistema será definida para %1. - - - - The numbers and dates locale will be set to %1. - Os números e datas locais serão definidos para %1. - - - - Set timezone to %1/%2.<br/> - Definir fuso horário para %1/%2.<br/> - LocaleQmlViewStep - + Location Localização @@ -1715,7 +1730,7 @@ O instalador será encerrado e todas as alterações serão perdidas. LocaleViewStep - + Location Localização @@ -1777,7 +1792,7 @@ O instalador será encerrado e todas as alterações serão perdidas. Map - + 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. @@ -2178,7 +2193,7 @@ O instalador será encerrado e todas as alterações serão perdidas.Erro desconhecido - + Password is empty Palavra-passe está vazia @@ -2517,112 +2532,112 @@ O instalador será encerrado e todas as alterações serão perdidas.A recolher informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>paralelamente</strong> a outro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> a partição com %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>Manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>paralelamente</strong> a outro sistema operativo no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituir</strong> a partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>Manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Atual: - + After: Depois: - + No EFI system partition configured Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set flag não definida da partição de sistema EFI - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partição de arranque não encriptada - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Foi preparada uma partição de arranque separada juntamente com uma partição root encriptada, mas a partição de arranque não está encriptada.<br/><br/>Existem preocupações de segurança com este tipo de configuração, por causa de importantes ficheiros de sistema serem guardados numa partição não encriptada.<br/>Se desejar pode continuar, mas o destrancar do sistema de ficheiros irá ocorrer mais tarde durante o arranque do sistema.<br/>Para encriptar a partição de arranque, volte atrás e recrie-a, e selecione <strong>Encriptar</strong> na janela de criação de partições. - + has at least one disk device available. tem pelo menos um dispositivo de disco disponível. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ O instalador será encerrado e todas as alterações serão perdidas. PreserveFiles - + Saving files for later ... A guardar ficheiros para mais tarde ... - + No files configured to save for later. Nenhuns ficheiros configurados para guardar para mais tarde. - + Not all of the configured files could be preserved. Nem todos os ficheiros configurados puderam ser preservados. @@ -3163,29 +3178,29 @@ Saída de Dados: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definir modelo do teclado para %1, disposição para %2-%3 - + Failed to write keyboard configuration for the virtual console. Falha ao escrever configuração do teclado para a consola virtual. - - - + + + Failed to write to %1 Falha ao escrever para %1 - + Failed to write keyboard configuration for X11. Falha ao escrever configuração do teclado para X11. - + Failed to write keyboard configuration to existing /etc/default directory. Falha ao escrever a configuração do teclado para a diretoria /etc/default existente. @@ -3418,28 +3433,28 @@ Saída de Dados: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3447,28 +3462,28 @@ Saída de Dados: TrackingMachineUpdateManagerJob - + Machine feedback Relatório da máquina - + Configuring machine feedback. A configurar relatório da máquina. - - + + Error in machine feedback configuration. Erro na configuração do relatório da máquina. - + Could not configure machine feedback correctly, script error %1. Não foi possível configurar corretamente o relatório da máquina, erro de script %1. - + Could not configure machine feedback correctly, Calamares error %1. Não foi possível configurar corretamente o relatório da máquina, erro do Calamares %1. @@ -3527,47 +3542,17 @@ Saída de Dados: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Se mais de uma pessoa usar este computador, você pode criar várias contas após a configuração.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Se mais de uma pessoa usar este computador, você pode criar várias contas após a instalação.</small> - - Your username is too long. - O seu nome de utilizador é demasiado longo. - - - - Your username must start with a lowercase letter or underscore. - O seu nome de utilizador deve começar com uma letra minúscula ou underscore. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Apenas letras minúsculas, números, underscore e hífen são permitidos. - - - - Your hostname is too short. - O nome da sua máquina é demasiado curto. - - - - Your hostname is too long. - O nome da sua máquina é demasiado longo. - - - - Only letters, numbers, underscore and hyphen are allowed. - Apenas letras, números, underscore e hífen são permitidos. - - - + Your passwords do not match! As suas palavras-passe não coincidem! @@ -3575,7 +3560,7 @@ Saída de Dados: UsersViewStep - + Users Utilizadores @@ -3788,19 +3773,19 @@ Saída de Dados: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3808,44 +3793,44 @@ Saída de Dados: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3853,17 +3838,7 @@ Saída de Dados: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 7e9b14462..fb143b553 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -259,170 +259,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Instalare eșuată - + Would you like to paste the install log to the web? - + Error Eroare - - + + &Yes &Da - - + + &No &Nu - + &Close În&chide - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? Continuați configurarea? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Programul de instalare %1 este pregătit să facă schimbări pe discul dumneavoastră pentru a instala %2.<br/><strong>Nu veți putea anula aceste schimbări.</strong> - + &Set up now - + &Install now &Instalează acum - + Go &back Î&napoi - + &Set up - + &Install Instalează - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. Instalarea este completă. Închide instalatorul. - + Cancel setup without changing the system. - + Cancel installation without changing the system. Anulează instalarea fără schimbarea sistemului. - + &Next &Următorul - + &Back &Înapoi - + &Done &Gata - + &Cancel &Anulează - + Cancel setup? - + Cancel installation? Anulez instalarea? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doriți să anulați procesul curent de instalare? @@ -484,12 +484,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.&Anulează - + %1 Setup Program - + %1 Installer Program de instalare %1 @@ -516,9 +516,9 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - - - + + + Current: Actual: @@ -529,115 +529,115 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Partiționare manuală</strong><br/>Puteți crea sau redimensiona partițiile. - + Reuse %1 as home partition for %2. Reutilizează %1 ca partiție home pentru %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selectează o partiție de micșorat, apoi trageți bara din jos pentru a redimensiona</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Locație boot loader: - + <strong>Select a partition to install on</strong> <strong>Selectează o partiție pe care să se instaleze</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. O partiție de sistem EFI nu poate fi găsită nicăieri în acest sistem. Vă rugăm să reveniți și să partiționați manual pentru a seta %1. - + The EFI system partition at %1 will be used for starting %2. Partiția de sistem EFI de la %1 va fi folosită pentru a porni %2. - + EFI system partition: Partiție de sistem EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare nu pare să aibă un sistem de operare instalat. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte să fie realizate schimbări pe dispozitivul de stocare. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Șterge discul</strong><br/>Aceasta va <font color="red">șterge</font> toate datele prezente pe dispozitivul de stocare selectat. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalează laolaltă</strong><br/>Instalatorul va micșora o partiție pentru a face loc pentru %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Înlocuiește o partiție</strong><br/>Înlocuiește o partiție cu %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are %1. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte să fie realizate schimbări pe dispozitivul de stocare. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are deja un sistem de operare instalat. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte de se realiza schimbări pe dispozitivul de stocare. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are mai multe sisteme de operare instalate. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte de a se realiza schimbări pe dispozitivul de stocare. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -645,17 +645,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ClearMountsJob - + Clear mounts for partitioning operations on %1 Eliminați montările pentru operațiunea de partiționare pe %1 - + Clearing mounts for partitioning operations on %1. Se elimină montările pentru operațiunile de partiționare pe %1. - + Cleared all mounts for %1 S-au eliminat toate punctele de montare pentru %1 @@ -663,22 +663,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ClearTempMountsJob - + Clear all temporary mounts. Elimină toate montările temporare. - + Clearing all temporary mounts. Se elimină toate montările temporare. - + Cannot get list of temporary mounts. Nu se poate obține o listă a montărilor temporare. - + Cleared all temporary mounts. S-au eliminat toate montările temporare. @@ -705,30 +705,30 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. Config - + Set keyboard model to %1.<br/> Setează modelul tastaturii la %1.<br/> - + Set keyboard layout to %1/%2. Setează aranjamentul de tastatură la %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Limba sistemului va fi %1. - + The numbers and dates locale will be set to %1. Formatul numerelor și datelor calendaristice va fi %1. - - - Set timezone to %1/%2.<br/> - Setează fusul orar la %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.<h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Numele de utilizator este prea lung. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Hostname este prea scurt. + + + + Your hostname is too long. + Hostname este prea lung. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CreateUserJob - + Create user %1 Creează utilizatorul %1 - + Create user <strong>%1</strong>. Creează utilizatorul <strong>%1</strong>. - + Creating user %1. Se creează utilizator %1. - - Sudoers dir is not writable. - Nu se poate scrie în dosarul sudoers. - - - + Cannot create sudoers file for writing. Nu se poate crea fișierul sudoers pentru scriere. - + Cannot chmod sudoers file. Nu se poate chmoda fișierul sudoers. - - - Cannot open groups file for reading. - Nu se poate deschide fișierul groups pentru citire. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. FillGlobalStorageJob - + Set partition information Setează informația pentru partiție - + Install %1 on <strong>new</strong> %2 system partition. Instalează %1 pe <strong>noua</strong> partiție de sistem %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setează <strong>noua</strong> partiție %2 cu punctul de montare <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalează %2 pe partiția de sistem %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setează partiția %3 <strong>%1</strong> cu punctul de montare <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalează bootloader-ul pe <strong>%1</strong>. - + Setting up mount points. Se setează puncte de montare. @@ -1510,12 +1540,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. KeyboardPage - + Set keyboard model to %1.<br/> Setează modelul tastaturii la %1.<br/> - + Set keyboard layout to %1/%2. Setează aranjamentul de tastatură la %1/%2. @@ -1572,32 +1602,32 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + I accept the terms and conditions above. Sunt de acord cu termenii și condițiile de mai sus. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocalePage - + Region: Regiune: - + Zone: Zonă: - - + + &Change... S&chimbă - - - The system language will be set to %1. - Limba sistemului va fi %1. - - - - The numbers and dates locale will be set to %1. - Formatul numerelor și datelor calendaristice va fi %1. - - - - Set timezone to %1/%2.<br/> - Setează fusul orar la %1/%2.<br/> - LocaleQmlViewStep - + Location Locație @@ -1715,7 +1730,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocaleViewStep - + Location Locație @@ -1777,7 +1792,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. Map - + 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. @@ -2181,7 +2196,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Eroare necunoscuta - + Password is empty @@ -2520,112 +2535,112 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Se adună informații despre sistem... - + Partitions Partiții - + Install %1 <strong>alongside</strong> another operating system. Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare. - + <strong>Erase</strong> disk and install %1. <strong>Șterge</strong> discul și instalează %1. - + <strong>Replace</strong> a partition with %1. <strong>Înlocuiește</strong> o partiție cu %1. - + <strong>Manual</strong> partitioning. Partiționare <strong>manuală</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare pe discul <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Șterge</strong> discul <strong>%2</strong> (%3) și instalează %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Înlocuiește</strong> o partiție pe discul <strong>%2</strong> (%3) cu %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partiționare <strong>manuală</strong> a discului <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discul <strong>%1</strong> (%2) - + Current: Actual: - + After: După: - + No EFI system partition configured Nicio partiție de sistem EFI nu a fost configurată - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set Flag-ul de partiție de sistem pentru EFI nu a fost setat - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted Partiția de boot nu este criptată - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. A fost creată o partiție de boot împreună cu o partiție root criptată, dar partiția de boot nu este criptată.<br/><br/>Sunt potențiale probleme de securitate cu un astfel de aranjament deoarece importante fișiere de sistem sunt păstrate pe o partiție necriptată.<br/>Puteți continua dacă doriți, dar descuierea sistemului se va petrece mai târziu în timpul pornirii.<br/>Pentru a cripta partiția de boot, reveniți și recreați-o, alegând opțiunea <strong>Criptează</strong> din fereastra de creare de partiții. - + has at least one disk device available. - + There are no partitions to install on. @@ -2673,17 +2688,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3166,29 +3181,29 @@ Output SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Setează modelul de tastatură la %1, cu aranjamentul %2-%3 - + Failed to write keyboard configuration for the virtual console. Nu s-a reușit scrierea configurației de tastatură pentru consola virtuală. - - - + + + Failed to write to %1 Nu s-a reușit scrierea %1 - + Failed to write keyboard configuration for X11. Nu s-a reușit scrierea configurației de tastatură pentru X11. - + Failed to write keyboard configuration to existing /etc/default directory. Nu s-a reușit scrierea configurației de tastatură în directorul existent /etc/default. @@ -3421,28 +3436,28 @@ Output TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3450,28 +3465,28 @@ Output TrackingMachineUpdateManagerJob - + Machine feedback Feedback pentru mașină - + Configuring machine feedback. Se configurează feedback-ul pentru mașină - - + + Error in machine feedback configuration. Eroare în configurația de feedback pentru mașină. - + Could not configure machine feedback correctly, script error %1. Nu s-a putut configura feedback-ul pentru mașină în mod corect, eroare de script %1 - + Could not configure machine feedback correctly, Calamares error %1. Nu s-a putut configura feedback-ul pentru mașină în mod corect, eroare Calamares %1. @@ -3530,47 +3545,17 @@ Output UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Numele de utilizator este prea lung. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Hostname este prea scurt. - - - - Your hostname is too long. - Hostname este prea lung. - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Parolele nu se potrivesc! @@ -3578,7 +3563,7 @@ Output UsersViewStep - + Users Utilizatori @@ -3791,19 +3776,19 @@ Output i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3811,44 +3796,44 @@ Output keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3856,17 +3841,7 @@ Output localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 8a66cdc77..fbd70e084 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -217,10 +217,10 @@ QML Step <i>%1</i>. - + Шаг QML <i>%1</i>. - + Loading failed. Загрузка не удалась. @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed Сбой установки - + Installation Failed Установка завершилась неудачей - + Would you like to paste the install log to the web? - + Разместить журнал установки в интернете? - + Error Ошибка - - + + &Yes &Да - - + + &No &Нет - + &Close &Закрыть - + Install Log Paste URL - + Адрес для отправки журнала установки - + The upload was unsuccessful. No web-paste was done. Загрузка не удалась. Веб-вставка не была завершена. - + Calamares Initialization Failed Ошибка инициализации Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. Не удалось установить %1. Calamares не удалось загрузить все сконфигурированные модули. Эта проблема вызвана тем, как ваш дистрибутив использует Calamares. - + <br/>The following modules could not be loaded: <br/>Не удалось загрузить следующие модули: - + Continue with setup? Продолжить установку? - + Continue with installation? Продолжить установку? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Программа установки %1 готова внести изменения на Ваш диск, чтобы установить %2.<br/><strong>Отменить эти изменения будет невозможно.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Программа установки %1 готова внести изменения на Ваш диск, чтобы установить %2.<br/><strong>Отменить эти изменения будет невозможно.</strong> - + &Set up now &Настроить сейчас - + &Install now Приступить к &установке - + Go &back &Назад - + &Set up &Настроить - + &Install &Установить - + Setup is complete. Close the setup program. Установка завершена. Закройте программу установки. - + The installation is complete. Close the installer. Установка завершена. Закройте установщик. - + Cancel setup without changing the system. Отменить установку без изменения системы. - + Cancel installation without changing the system. Отменить установку без изменения системы. - + &Next &Далее - + &Back &Назад - + &Done &Готово - + &Cancel О&тмена - + Cancel setup? Отменить установку? - + Cancel installation? Отменить установку? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Прервать процесс установки? Программа установки прекратит работу и все изменения будут потеряны. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Действительно прервать процесс установки? Программа установки сразу прекратит работу, все изменения будут потеряны. @@ -487,12 +487,12 @@ n%1 &Отмена - + %1 Setup Program Программа установки %1 - + %1 Installer Программа установки %1 @@ -519,9 +519,9 @@ n%1 - - - + + + Current: Текущий: @@ -532,115 +532,115 @@ n%1 - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Ручная разметка</strong><br/>Вы можете создавать или изменять размеры разделов самостоятельно. Наличие таблицы разделов GPT и <strong>fat32 512Mb /boot раздела является обязательным для систем с UEFI</strong>, либо используйте существующий без форматирования, либо создайте его. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ручная разметка</strong><br/>Вы можете самостоятельно создавать разделы или изменять их размеры. - + Reuse %1 as home partition for %2. Использовать %1 как домашний раздел для %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Выберите раздел для уменьшения, затем двигайте ползунок, изменяя размер</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 будет уменьшен до %2MB и новый раздел %3MB будет создан для %4. - + Boot loader location: Расположение загрузчика: - + <strong>Select a partition to install on</strong> <strong>Выберите раздел для установки</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Не найдено системного раздела EFI. Пожалуйста, вернитесь назад и выполните ручную разметку %1. - + The EFI system partition at %1 will be used for starting %2. Системный раздел EFI на %1 будет использован для запуска %2. - + EFI system partition: Системный раздел EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Видимо, на этом устройстве нет операционной системы. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Стереть диск</strong><br/>Это <font color="red">удалит</font> все данные, которые сейчас находятся на выбранном устройстве. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Установить рядом</strong><br/>Программа установки уменьшит раздел, чтобы освободить место для %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Заменить раздел</strong><br/>Меняет раздел на %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве есть %1. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве уже есть операционная система. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве есть несколько операционных систем. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - + No Swap Без раздела подкачки - + Reuse Swap Использовать существующий раздел подкачки - + Swap (no Hibernate) Swap (без Гибернации) - + Swap (with Hibernate) Swap (с Гибернацией) - + Swap to file Файл подкачки @@ -648,17 +648,17 @@ n%1 ClearMountsJob - + Clear mounts for partitioning operations on %1 Освободить точки монтирования для выполнения разметки на %1 - + Clearing mounts for partitioning operations on %1. Освобождаются точки монтирования для выполнения разметки на %1. - + Cleared all mounts for %1 Освобождены все точки монтирования для %1 @@ -666,22 +666,22 @@ n%1 ClearTempMountsJob - + Clear all temporary mounts. Освободить все временные точки монтирования. - + Clearing all temporary mounts. Освобождаются все временные точки монтирования. - + Cannot get list of temporary mounts. Не удалось получить список временных точек монтирования. - + Cleared all temporary mounts. Освобождены все временные точки монтирования. @@ -708,30 +708,30 @@ n%1 Config - + Set keyboard model to %1.<br/> Установить модель клавиатуры на %1.<br/> - + Set keyboard layout to %1/%2. Установить раскладку клавиатуры на %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Системным языком будет установлен %1. - + The numbers and dates locale will be set to %1. Региональным форматом чисел и дат будет установлен %1. - - - Set timezone to %1/%2.<br/> - Установить часовой пояс на %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -790,13 +790,53 @@ n%1 <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Добро пожаловать в программу установки Calamares для %1 .</h1> <h1>Welcome to the %1 installer</h1> + <h1>Добро пожаловать в программу установки %1 .</h1> + + + + Your username is too long. + Ваше имя пользователя слишком длинное. + + + + '%1' is not allowed as username. + + + Your username must start with a lowercase letter or underscore. + Ваше имя пользователя должно начинаться со строчной буквы или подчеркивания. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Допускаются только строчные буквы, числа, символы подчёркивания и дефисы. + + + + Your hostname is too short. + Имя вашего компьютера слишком коротко. + + + + Your hostname is too long. + Имя вашего компьютера слишком длинное. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Допускаются только буквы, цифры, символы подчёркивания и дефисы. + ContextualProcessJob @@ -961,40 +1001,30 @@ n%1 CreateUserJob - + Create user %1 Создать учетную запись %1 - + Create user <strong>%1</strong>. Создать учетную запись <strong>%1</strong>. - + Creating user %1. Создается учетная запись %1. - - Sudoers dir is not writable. - Каталог sudoers не доступен для записи. - - - + Cannot create sudoers file for writing. Не удалось записать файл sudoers. - + Cannot chmod sudoers file. Не удалось применить chmod к файлу sudoers. - - - Cannot open groups file for reading. - Не удалось открыть файл groups для чтения. - CreateVolumeGroupDialog @@ -1232,37 +1262,37 @@ n%1 FillGlobalStorageJob - + Set partition information Установить сведения о разделе - + Install %1 on <strong>new</strong> %2 system partition. Установить %1 на <strong>новый</strong> системный раздел %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Настроить <strong>новый</strong> %2 раздел с точкой монтирования <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Установить %2 на %3 системный раздел <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Настроить %3 раздел <strong>%1</strong> с точкой монтирования <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Установить загрузчик на <strong>%1</strong>. - + Setting up mount points. Настраиваются точки монтирования. @@ -1450,7 +1480,7 @@ n%1 OEM Batch Identifier - + Идентификатор партии OEM @@ -1513,12 +1543,12 @@ n%1 KeyboardPage - + Set keyboard model to %1.<br/> Установить модель клавиатуры на %1.<br/> - + Set keyboard layout to %1/%2. Установить раскладку клавиатуры на %1/%2. @@ -1575,32 +1605,32 @@ n%1 <h1>Лицензионное соглашение</h1> - + I accept the terms and conditions above. Я принимаю приведенные выше условия. - + Please review the End User License Agreements (EULAs). Пожалуйста, ознакомьтесь с лицензионным соглашением (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. В ходе этой процедуры установки будет установлено проприетарное программное обеспечение, на которое распространяются условия лицензирования. - + If you do not agree with the terms, the setup procedure cannot continue. если вы не согласны с условиями, процедура установки не может быть продолжена. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Эта процедура установки может установить проприетарное программное обеспечение, на которое распространяются условия лицензирования, чтобы предоставить дополнительные функции и улучшить взаимодействие с пользователем. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Если вы не согласны с условиями, проприетарное программное обеспечение не будет установлено, и вместо него будут использованы альтернативы с открытым исходным кодом. @@ -1618,7 +1648,7 @@ n%1 URL: %1 - + Адрес: %1 @@ -1676,41 +1706,26 @@ n%1 LocalePage - + Region: Регион: - + Zone: Зона: - - + + &Change... И&зменить... - - - The system language will be set to %1. - Системным языком будет установлен %1. - - - - The numbers and dates locale will be set to %1. - Региональным форматом чисел и дат будет установлен %1. - - - - Set timezone to %1/%2.<br/> - Установить часовой пояс на %1/%2.<br/> - LocaleQmlViewStep - + Location Местоположение @@ -1718,7 +1733,7 @@ n%1 LocaleViewStep - + Location Местоположение @@ -1780,11 +1795,11 @@ n%1 Map - + 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. - + Выберите ваше месторасположение на карте, чтобы программа установки предложила настройки локали и часового пояса. В дальнейшем их можно изменить ниже. Карту можно перемещать мышью, и изменять ее масштаб колесиком мыши или клавишами +/-. @@ -1899,7 +1914,7 @@ n%1 Ba&tch: - + Пар&тия: @@ -1917,7 +1932,7 @@ n%1 OEM Configuration - + Конфигурация OEM @@ -1930,12 +1945,12 @@ n%1 Timezone: %1 - + Часовой пояс: %1 To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + Чтобы выбрать часовой пояс, необходимо подключение к интернету. После подключения перезапустите программу установки. Язык и локаль можно выбрать ниже. @@ -2181,7 +2196,7 @@ n%1 Неизвестная ошибка - + Password is empty Пустой пароль @@ -2520,112 +2535,112 @@ n%1 Сбор информации о системе... - + Partitions Разделы - + Install %1 <strong>alongside</strong> another operating system. Установить %1 <strong>параллельно</strong> к другой операционной системе. - + <strong>Erase</strong> disk and install %1. <strong>Очистить</strong> диск и установить %1. - + <strong>Replace</strong> a partition with %1. <strong>Заменить</strong> раздел на %1. - + <strong>Manual</strong> partitioning. <strong>Ручная</strong> разметка. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Установить %1 <strong>параллельно</strong> к другой операционной системе на диске <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Очистить</strong> диск <strong>%2</strong> (%3) и установить %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Заменить</strong> раздел на диске <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ручная</strong> разметка диска <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Текущий: - + After: После: - + No EFI system partition configured Нет настроенного системного раздела EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Для запуска %1 необходим системный раздел EFI.<br/><br/>Чтобы его настроить, вернитесь и выберите или создайте раздел FAT32 с установленным флагом <strong>%3</strong> и точкой монтирования <strong>%2</strong>.<br/><br/>Можно продолжить и без настройки системного раздела EFI, но ваша система может не загрузиться. + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + Для запуска %1 необходим системный раздел EFI.<br/><br/>Был настроен раздел с точкой монтирования <strong>%2</strong>, но у него отсутствует флаг <strong>%3</strong>.<br/>Чтобы установить флаг, вернитесь и отредактируйте раздел.<br/><br/>Можно продолжить и без установки флага, но ваша система может не загрузиться. - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - - - EFI system partition flag not set Не установлен флаг системного раздела EFI - + Option to use GPT on BIOS Возможность для использования GPT в BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Таблица разделов GPT - наилучший вариант для всех систем. Этот установщик позволяет использовать таблицу разделов GPT для систем с BIOS. <br/> <br/> Чтобы установить таблицу разделов как GPT (если это еще не сделано) вернитесь назад и создайте таблицу разделов GPT, затем создайте 8 МБ Не форматированный раздел с включенным флагом <strong> bios-grub</strong> </ strong>. <br/> <br/> Не форматированный раздел в 8 МБ необходим для запуска %1 на системе с BIOS и таблицей разделов GPT. - + Boot partition not encrypted Загрузочный раздел не зашифрован - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Включено шифрование корневого раздела, но использован отдельный загрузочный раздел без шифрования.<br/><br/>При такой конфигурации возникают проблемы с безопасностью, потому что важные системные файлы хранятся на разделе без шифрования.<br/>Если хотите, можете продолжить, но файловая система будет разблокирована позднее во время загрузки системы.<br/>Чтобы включить шифрование загрузочного раздела, вернитесь назад и снова создайте его, отметив <strong>Шифровать</strong> в окне создания раздела. - + has at least one disk device available. имеет как минимум одно доступное дисковое устройство. - + There are no partitions to install on. Нет разделов для установки. @@ -2673,17 +2688,17 @@ n%1 PreserveFiles - + Saving files for later ... Сохраняю файлы на потом... - + No files configured to save for later. Нет файлов, которые требуется сохранить на потом. - + Not all of the configured files could be preserved. Не все настроенные файлы могут быть сохранены. @@ -2951,7 +2966,8 @@ Output: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Компьютер не удовлетворяет минимальным требованиям для установки %1.<br/> + Невозможно продолжить установку.</p> @@ -3166,29 +3182,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Установить модель клавиатуры на %1, раскладку на %2-%3 - + Failed to write keyboard configuration for the virtual console. Не удалось записать параметры клавиатуры для виртуальной консоли. - - - + + + Failed to write to %1 Не удалось записать на %1 - + Failed to write keyboard configuration for X11. Не удалось записать параметры клавиатуры для X11. - + Failed to write keyboard configuration to existing /etc/default directory. Не удалось записать параметры клавиатуры в существующий каталог /etc/default. @@ -3421,28 +3437,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Отзывы пользователей KDE - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3450,28 +3466,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. Не удалось настроить отзывы о компьютере, ошибка сценария %1. - + Could not configure machine feedback correctly, Calamares error %1. Не удалось настроить отзывы о компьютере, ошибка Calamares %1. @@ -3530,47 +3546,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Если этот компьютер будет использоваться несколькими людьми, вы сможете создать учетные записи для них после установки.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Если этот компьютер используется несколькими людьми, Вы сможете создать соответствующие учетные записи сразу после установки.</small> - - Your username is too long. - Ваше имя пользователя слишком длинное. - - - - Your username must start with a lowercase letter or underscore. - Ваше имя пользователя должно начинаться со строчной буквы или подчеркивания. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Допускаются только строчные буквы, числа, символы подчёркивания и дефисы. - - - - Your hostname is too short. - Имя вашего компьютера слишком коротко. - - - - Your hostname is too long. - Имя вашего компьютера слишком длинное. - - - - Only letters, numbers, underscore and hyphen are allowed. - Допускаются только буквы, цифры, символы подчёркивания и дефисы. - - - + Your passwords do not match! Пароли не совпадают! @@ -3578,7 +3564,7 @@ Output: UsersViewStep - + Users Пользователи @@ -3791,19 +3777,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Назад @@ -3811,44 +3797,44 @@ Output: keyboardq - + Keyboard Model Модель клавиатуры - + Pick your preferred keyboard model or use the default one based on the detected hardware Выберите предпочитаемую модель клавиатуры или используйте модель по умолчанию на основе обнаруженного оборудования - + Refresh Обновить - - + + Layouts - - + + Keyboard Layout Раскладка клавиатуры - + Models Модели - + Variants Варианты - + Test your keyboard Проверьте свою клавиатуру @@ -3856,17 +3842,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index e52a6422a..8b138f46b 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -220,7 +220,7 @@ Krok QML <i>%1</i>. - + Loading failed. Načítavanie zlyhalo. @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed Inštalácia zlyhala - + Installation Failed Inštalácia zlyhala - + Would you like to paste the install log to the web? Chceli by ste vložiť záznam z inštalácie na web? - + Error Chyba - - + + &Yes _Áno - - + + &No _Nie - + &Close _Zavrieť - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. Odovzdanie nebolo úspešné. Nebolo dokončené žiadne webové vloženie. - + Calamares Initialization Failed Zlyhala inicializácia inštalátora Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. Nie je možné nainštalovať %1. Calamares nemohol načítať všetky konfigurované moduly. Je problém s tým, ako sa Calamares používa pri distribúcii. - + <br/>The following modules could not be loaded: <br/>Nebolo možné načítať nasledujúce moduly - + Continue with setup? Pokračovať v inštalácii? - + Continue with installation? Pokračovať v inštalácii? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Inštalačný program distribúcie %1 sa chystá vykonať zmeny na vašom disku, aby nainštaloval distribúciu %2. <br/><strong>Tieto zmeny nebudete môcť vrátiť späť.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Inštalátor distribúcie %1 sa chystá vykonať zmeny na vašom disku, aby nainštaloval distribúciu %2. <br/><strong>Tieto zmeny nebudete môcť vrátiť späť.</strong> - + &Set up now &Inštalovať teraz - + &Install now &Inštalovať teraz - + Go &back Prejsť s&päť - + &Set up &Inštalovať - + &Install _Inštalovať - + Setup is complete. Close the setup program. Inštalácia je dokončená. Zavrite inštalačný program. - + The installation is complete. Close the installer. Inštalácia je dokončená. Zatvorí inštalátor. - + Cancel setup without changing the system. Zrušenie inštalácie bez zmien v systéme. - + Cancel installation without changing the system. Zruší inštaláciu bez zmeny systému. - + &Next Ď&alej - + &Back &Späť - + &Done _Dokončiť - + &Cancel &Zrušiť - + Cancel setup? Zrušiť inštaláciu? - + Cancel installation? Zrušiť inštaláciu? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Naozaj chcete zrušiť aktuálny priebeh inštalácie? Inštalačný program bude ukončený a zmeny budú stratené. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Skutočne chcete zrušiť aktuálny priebeh inštalácie? @@ -488,12 +488,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. &Zrušiť - + %1 Setup Program Inštalačný program distribúcie %1 - + %1 Installer Inštalátor distribúcie %1 @@ -520,9 +520,9 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. - - - + + + Current: Teraz: @@ -533,115 +533,115 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Ručné rozdelenie oddielov</strong><br/>Môžete vytvoriť, alebo zmeniť veľkosti oddielov podľa seba. Tabuľka oddielov GPT a <strong>oddiel /boot s parametrami fat32 512Mb je nevyhnutnosťou pre inštaláciu UEFI</strong>, v opačnom prípade použite existujúci oddiel bez nutnosti formátovania, alebo vytvorte nový oddiel. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ručné rozdelenie oddielov</strong><br/>Môžete vytvoriť alebo zmeniť veľkosť oddielov podľa seba. - + Reuse %1 as home partition for %2. Opakované použitie oddielu %1 ako domovského pre distribúciu %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Vyberte oddiel na zmenšenie a potom potiahnutím spodného pruhu zmeňte veľkosť</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. Oddiel %1 bude zmenšený na %2MiB a nový %3MiB oddiel bude vytvorený pre distribúciu %4. - + Boot loader location: Umiestnenie zavádzača: - + <strong>Select a partition to install on</strong> <strong>Vyberte oddiel, na ktorý sa má inštalovať</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Oddiel systému EFI sa nedá v tomto počítači nájsť. Prosím, prejdite späť a použite ručné rozdelenie oddielov na inštaláciu distribúcie %1. - + The EFI system partition at %1 will be used for starting %2. Oddie lsystému EFI na %1 bude použitý na spustenie distribúcie %2. - + EFI system partition: Oddiel systému EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Zdá sa, že toto úložné zariadenie neobsahuje operačný systém. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Vymazanie disku</strong><br/>Týmto sa <font color="red">odstránia</font> všetky údaje momentálne sa nachádzajúce na vybranom úložnom zariadení. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Inštalácia popri súčasnom systéme</strong><br/>Inštalátor zmenší oddiel a uvoľní miesto pre distribúciu %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Nahradenie oddielu</strong><br/>Nahradí oddiel distribúciou %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Toto úložné zariadenie obsahuje operačný systém %1. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Toto úložné zariadenie už obsahuje operačný systém. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Toto úložné zariadenie obsahuje viacero operačných systémov. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. - + No Swap Bez odkladacieho priestoru - + Reuse Swap Znovu použiť odkladací priestor - + Swap (no Hibernate) Odkladací priestor (bez hibernácie) - + Swap (with Hibernate) Odkladací priestor (s hibernáciou) - + Swap to file Odkladací priestor v súbore @@ -649,17 +649,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ClearMountsJob - + Clear mounts for partitioning operations on %1 Vymazať pripojenia pre operácie rozdelenia oddielov na zariadení %1 - + Clearing mounts for partitioning operations on %1. Vymazávajú sa pripojenia pre operácie rozdelenia oddielov na zariadení %1. - + Cleared all mounts for %1 Vymazané všetky pripojenia pre zariadenie %1 @@ -667,22 +667,22 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ClearTempMountsJob - + Clear all temporary mounts. Vymazanie všetkých dočasných pripojení. - + Clearing all temporary mounts. Vymazávajú sa všetky dočasné pripojenia. - + Cannot get list of temporary mounts. Nedá sa získať zoznam dočasných pripojení. - + Cleared all temporary mounts. Vymazané všetky dočasné pripojenia. @@ -709,30 +709,30 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Config - + Set keyboard model to %1.<br/> Nastavenie modelu klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavenie rozloženia klávesnice na %1/%2. - + + Set timezone to %1/%2. + Nastavenie časovej zóny na %1/%2. + + + The system language will be set to %1. Jazyk systému bude nastavený na %1. - + The numbers and dates locale will be set to %1. Miestne nastavenie čísel a dátumov bude nastavené na %1. - - - Set timezone to %1/%2.<br/> - Nastavenie časovej zóny na %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -798,6 +798,46 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <h1>Welcome to the %1 installer</h1> <h1>Vitajte v inštalátore distribúcie %1</h1> + + + Your username is too long. + Vaše používateľské meno je príliš dlhé. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Vaše používateľské meno musí začínať malým písmenom alebo podčiarkovníkom. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Sú povolené iba malé písmená, číslice, podtržníky a pomlčky. + + + + Your hostname is too short. + Váš názov hostiteľa je príliš krátky. + + + + Your hostname is too long. + Váš názov hostiteľa je príliš dlhý. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Sú povolené iba písmená, číslice, podtržníky a pomlčky. + ContextualProcessJob @@ -962,40 +1002,30 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CreateUserJob - + Create user %1 Vytvoriť používateľa %1 - + Create user <strong>%1</strong>. Vytvoriť používateľa <strong>%1</strong>. - + Creating user %1. Vytvára sa používateľ %1. - - Sudoers dir is not writable. - Adresár Sudoers nie je zapisovateľný. - - - + Cannot create sudoers file for writing. Nedá sa vytvoriť súbor sudoers na zapisovanie. - + Cannot chmod sudoers file. Nedá sa vykonať príkaz chmod na súbori sudoers. - - - Cannot open groups file for reading. - Nedá sa otvoriť súbor skupín na čítanie. - CreateVolumeGroupDialog @@ -1233,37 +1263,37 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. FillGlobalStorageJob - + Set partition information Nastaviť informácie o oddieli - + Install %1 on <strong>new</strong> %2 system partition. Inštalovať distribúciu %1 na <strong>novom</strong> %2 systémovom oddieli. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Nastaviť <strong>nový</strong> %2 oddiel s bodom pripojenia <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Inštalovať distribúciu %2 na %3 systémovom oddieli <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Nastaviť %3 oddiel <strong>%1</strong> s bodom pripojenia <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Inštalovať zavádzač do <strong>%1</strong>. - + Setting up mount points. Nastavujú sa body pripojení. @@ -1514,12 +1544,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. KeyboardPage - + Set keyboard model to %1.<br/> Nastavenie modelu klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavenie rozloženia klávesnice na %1/%2. @@ -1576,32 +1606,32 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <h1>Licenčné podmienky</h1> - + I accept the terms and conditions above. Prijímam podmienky vyššie. - + Please review the End User License Agreements (EULAs). Prosím, prezrite si licenčné podmienky koncového používateľa (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Touto inštalačnou procedúrou sa nainštaluje uzavretý softvér, ktorý je predmetom licenčných podmienok. - + If you do not agree with the terms, the setup procedure cannot continue. Bez súhlasu podmienok nemôže inštalačná procedúra pokračovať. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok v rámci poskytovania dodatočných funkcií a vylepšenia používateľských skúseností. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ak nesúhlasíte s podmienkami, uzavretý softvér nebude nainštalovaný a namiesto neho budú použité alternatívy s otvoreným zdrojom. @@ -1677,41 +1707,26 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LocalePage - + Region: Oblasť: - + Zone: Zóna: - - + + &Change... Z&meniť... - - - The system language will be set to %1. - Jazyk systému bude nastavený na %1. - - - - The numbers and dates locale will be set to %1. - Miestne nastavenie čísel a dátumov bude nastavené na %1. - - - - Set timezone to %1/%2.<br/> - Nastavenie časovej zóny na %1/%2.<br/> - LocaleQmlViewStep - + Location Umiestnenie @@ -1719,7 +1734,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LocaleViewStep - + Location Umiestnenie @@ -1781,7 +1796,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Map - + 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. @@ -2182,7 +2197,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Neznáma chyba - + Password is empty Heslo je prázdne @@ -2521,112 +2536,112 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Zbierajú sa informácie o počítači... - + Partitions Oddiely - + Install %1 <strong>alongside</strong> another operating system. Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme. - + <strong>Erase</strong> disk and install %1. <strong>Vymazanie</strong> disku a inštalácia distribúcie %1. - + <strong>Replace</strong> a partition with %1. <strong>Nahradenie</strong> oddielu distribúciou %1. - + <strong>Manual</strong> partitioning. <strong>Ručné</strong> rozdelenie oddielov. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Vymazanie</strong> disku <strong>%2</strong> (%3) a inštalácia distribúcie %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Nahradenie</strong> oddielu na disku <strong>%2</strong> (%3) distribúciou %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ručné</strong> rozdelenie oddielov na disku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Teraz: - + After: Potom: - + No EFI system partition configured Nie je nastavený žiadny oddiel systému EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Na nastavenie oddielu systému EFI prejdite späť a vyberte, alebo vytvorte systém súborov FAT32 s povoleným príznakom <strong>%3</strong> a bod pripojenia <strong>%2</strong>.<br/><br/>Môžete pokračovať bez nastavenia oddielu systému EFI, ale váš systém môže pri spustení zlyhať. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Oddiel bol nastavený s bodom pripojenia <strong>%2</strong>, ale nemá nastavený príznak <strong>%3</strong>.<br/>Na nastavenie príznaku prejdite späť a upravte oddiel.<br/><br/>Môžete pokračovať bez nastavenia príznaku, ale váš systém môže pri spustení zlyhať. - + EFI system partition flag not set Príznak oddielu systému EFI nie je nastavený - + Option to use GPT on BIOS Voľba na použitie tabuľky GPT s BIOSom - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Tabuľka oddielov GPT je najlepšou voľbou pre všetky systémy. Inštalátor podporuje taktiež inštaláciu pre systémy s BIOSom.<br/><br/>Pre nastavenie tabuľky oddielov GPT s BIOSom, (ak ste tak už neučinili) prejdite späť a nastavte tabuľku oddielov na GPT, a potom vytvorte nenaformátovaný oddiel o veľkosti 8 MB s povoleným príznakom <strong>bios_grub</strong>.<br/><br/>Nenaformátovaný oddiel o veľkosti 8 MB je potrebný na spustenie distribúcie %1 na systéme s BIOSom a tabuľkou GPT. - + Boot partition not encrypted Zavádzací oddiel nie je zašifrovaný - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Spolu so zašifrovaným koreňovým oddielom bol nainštalovaný oddelený zavádzací oddiel, ktorý ale nie je zašifrovaný.<br/><br/>S týmto typom inštalácie je ohrozená bezpečnosť, pretože dôležité systémové súbory sú uchovávané na nezašifrovanom oddieli.<br/>Ak si to želáte, môžete pokračovať, ale neskôr, počas spúšťania systému sa vykoná odomknutie systému súborov.<br/>Na zašifrovanie zavádzacieho oddielu prejdite späť a vytvorte ju znovu vybraním voľby <strong>Zašifrovať</strong> v okne vytvárania oddielu. - + has at least one disk device available. má dostupné aspoň jedno diskové zariadenie. - + There are no partitions to install on. Neexistujú žiadne oddiely, na ktoré je možné vykonať inštaláciu. @@ -2674,17 +2689,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. PreserveFiles - + Saving files for later ... Ukladajú sa súbory na neskôr... - + No files configured to save for later. Žiadne konfigurované súbory pre uloženie na neskôr. - + Not all of the configured files could be preserved. Nie všetky konfigurované súbory môžu byť uchované. @@ -3170,29 +3185,29 @@ Výstup: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Nastavenie modelu klávesnice na %1 a rozloženia na %2-%3 - + Failed to write keyboard configuration for the virtual console. Zlyhalo zapísanie nastavenia klávesnice pre virtuálnu konzolu. - - - + + + Failed to write to %1 Zlyhalo zapísanie do %1 - + Failed to write keyboard configuration for X11. Zlyhalo zapísanie nastavenia klávesnice pre server X11. - + Failed to write keyboard configuration to existing /etc/default directory. Zlyhalo zapísanie nastavenia klávesnice do existujúceho adresára /etc/default. @@ -3425,28 +3440,28 @@ Výstup: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3454,28 +3469,28 @@ Výstup: TrackingMachineUpdateManagerJob - + Machine feedback Spätná väzba počítača - + Configuring machine feedback. Nastavuje sa spätná väzba počítača. - - + + Error in machine feedback configuration. Chyba pri nastavovaní spätnej väzby počítača. - + Could not configure machine feedback correctly, script error %1. Nepodarilo sa správne nastaviť spätnú väzbu počítača. Chyba skriptu %1. - + Could not configure machine feedback correctly, Calamares error %1. Nepodarilo sa správne nastaviť spätnú väzbu počítača. Chyba inštalátora Calamares %1. @@ -3534,47 +3549,17 @@ Výstup: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Ak bude tento počítač používať viac ako jedna osoba, môžete nastaviť viacero účtov po inštalácii.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Ak bude tento počítač používať viac ako jedna osoba, môžete nastaviť viacero účtov po inštalácii.</small> - - Your username is too long. - Vaše používateľské meno je príliš dlhé. - - - - Your username must start with a lowercase letter or underscore. - Vaše používateľské meno musí začínať malým písmenom alebo podčiarkovníkom. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Sú povolené iba malé písmená, číslice, podtržníky a pomlčky. - - - - Your hostname is too short. - Váš názov hostiteľa je príliš krátky. - - - - Your hostname is too long. - Váš názov hostiteľa je príliš dlhý. - - - - Only letters, numbers, underscore and hyphen are allowed. - Sú povolené iba písmená, číslice, podtržníky a pomlčky. - - - + Your passwords do not match! Vaše heslá sa nezhodujú! @@ -3582,7 +3567,7 @@ Výstup: UsersViewStep - + Users Používatelia @@ -3805,19 +3790,19 @@ Výstup: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Späť @@ -3825,44 +3810,44 @@ Výstup: keyboardq - + Keyboard Model Model klávesnice - + Pick your preferred keyboard model or use the default one based on the detected hardware Vyberte preferovaný model klávesnice, alebo použite predvolený, ktorý bol vybraný podľa rozpoznaného hardvéru - + Refresh Obnoviť - - + + Layouts Rozloženia - - + + Keyboard Layout Rozloženie klávesnice - + Models Modely - + Variants Varianty - + Test your keyboard Vyskúšajte vašu klávesnicu @@ -3870,17 +3855,7 @@ Výstup: localeq - - System language set to %1 - Jazyk systému bol nastavený na %1 - - - - Numbers and dates locale set to %1 - Miestne nastavenie čísel a dátumov boli nastavené na %1. - - - + Change Zmeniť diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index ef1eac5fb..0f59bdb5e 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -261,170 +261,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Namestitev je spodletela - + Would you like to paste the install log to the web? - + Error Napaka - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Naprej - + &Back &Nazaj - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? Preklic namestitve? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ali res želite preklicati trenutni namestitveni proces? @@ -486,12 +486,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + %1 Setup Program - + %1 Installer %1 Namestilnik @@ -518,9 +518,9 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - - - + + + Current: @@ -531,115 +531,115 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -647,17 +647,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -665,22 +665,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ClearTempMountsJob - + Clear all temporary mounts. Počisti vse začasne priklope. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. Ni možno dobiti seznama začasnih priklopov. - + Cleared all temporary mounts. Vsi začasni priklopi so bili počiščeni. @@ -707,30 +707,30 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Config - + Set keyboard model to %1.<br/> Nastavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavi razporeditev tipkovnice na %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Nastavi časovni pas na %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -796,6 +796,46 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -960,40 +1000,30 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CreateUserJob - + Create user %1 Ustvari uporabnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - Mapa sudoers ni zapisljiva. - - - + Cannot create sudoers file for writing. Ni mogoče ustvariti datoteke sudoers za pisanje. - + Cannot chmod sudoers file. Na datoteki sudoers ni mogoče izvesti opravila chmod. - - - Cannot open groups file for reading. - Datoteke skupin ni bilo mogoče odpreti za branje. - CreateVolumeGroupDialog @@ -1231,37 +1261,37 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. FillGlobalStorageJob - + Set partition information Nastavi informacije razdelka - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1512,12 +1542,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> Nastavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavi razporeditev tipkovnice na %1/%2. @@ -1574,32 +1604,32 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1675,41 +1705,26 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocalePage - + Region: Območje: - + Zone: Časovni pas: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - Nastavi časovni pas na %1/%2.<br/> - LocaleQmlViewStep - + Location Položaj @@ -1717,7 +1732,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocaleViewStep - + Location Položaj @@ -1779,7 +1794,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Map - + 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. @@ -2180,7 +2195,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Password is empty @@ -2519,112 +2534,112 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Zbiranje informacij o sistemu ... - + Partitions Razdelki - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: Potem: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2672,17 +2687,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3162,29 +3177,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3417,28 +3432,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3526,47 +3541,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3574,7 +3559,7 @@ Output: UsersViewStep - + Users @@ -3787,19 +3772,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3807,44 +3792,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3852,17 +3837,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 0ffbae6e4..a11372701 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -220,7 +220,7 @@ Hapi QML <i>%1</i>. - + Loading failed. Ngarkimi dështoi. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Rregullimi Dështoi - + Installation Failed Instalimi Dështoi - + Would you like to paste the install log to the web? Do të donit të hidhet në web regjistri i instalimit? - + Error Gabim - - + + &Yes &Po - - + + &No &Jo - + &Close &Mbylle - + Install Log Paste URL URL Ngjitjeje Regjistri Instalimi - + The upload was unsuccessful. No web-paste was done. Ngarkimi s’qe i suksesshëm. S’u bë hedhje në web. - + Calamares Initialization Failed Gatitja e Calamares-it Dështoi - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 s’mund të instalohet. Calamares s’qe në gjendje të ngarkonte krejt modulet e formësuar. Ky është një problem që lidhet me mënyrën se si përdoret Calamares nga shpërndarja. - + <br/>The following modules could not be loaded: <br/>S’u ngarkuan dot modulet vijues: - + Continue with setup? Të vazhdohet me rregullimin? - + Continue with installation? Të vazhdohet me instalimin? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Programi i rregullimit %1 është një hap larg nga bërja e ndryshimeve në diskun tuaj, që të mund të rregullojë %2.<br/><strong>S’do të jeni në gjendje t’i zhbëni këto ndryshime.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instaluesi %1 është një hap larg nga bërja e ndryshimeve në diskun tuaj, që të mund të instalojë %2.<br/><strong>S’do të jeni në gjendje t’i zhbëni këto ndryshime.</strong> - + &Set up now &Rregulloje tani - + &Install now &Instaloje tani - + Go &back Kthehu &mbrapsht - + &Set up &Rregulloje - + &Install &Instaloje - + Setup is complete. Close the setup program. Rregullimi është i plotë. Mbylleni programin e rregullimit. - + The installation is complete. Close the installer. Instalimi u plotësua. Mbylleni instaluesin. - + Cancel setup without changing the system. Anuloje rregullimin pa ndryshuar sistemin. - + Cancel installation without changing the system. Anuloje instalimin pa ndryshuar sistemin. - + &Next Pas&uesi - + &Back &Mbrapsht - + &Done &U bë - + &Cancel &Anuloje - + Cancel setup? Të anulohet rregullimi? - + Cancel installation? Të anulohet instalimi? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Doni vërtet të anulohet procesi i tanishëm i rregullimit? Programi i rregullimit do të mbyllet dhe krejt ndryshimet do të humbin. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doni vërtet të anulohet procesi i tanishëm i instalimit? @@ -484,12 +484,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. &Anuloje - + %1 Setup Program Programi i Rregullimit të %1 - + %1 Installer Instalues %1 @@ -516,9 +516,9 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - - - + + + Current: E tanishmja: @@ -529,115 +529,115 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Pjesëtim dorazi</strong><br/>Mund të krijoni ose ripërmasoni pjesë ju vetë. Pasja e një tabele GPT pjesësh dhe <strong>512Mb fat32 /pjesë nisjeje është domosdoshmëri për instalime UEFI</strong>, ose përdorni një të tillë pa e formatuar, ose krijoni një të tillë. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Pjesëzim dorazi</strong><br/>Pjesët mund t’i krijoni dhe ripërmasoni ju vetë. - + Reuse %1 as home partition for %2. Ripërdore %1 si pjesën shtëpi për %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Përzgjidhni një pjesë që të zvogëlohet, mandej tërhiqni shtyllën e poshtme që ta ripërmasoni</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 do të zvogëlohet në %2MiB dhe për %4 do të krijohet një pjesë e re %3MiB. - + Boot loader location: Vendndodhje ngarkuesi nisjesh: - + <strong>Select a partition to install on</strong> <strong>Përzgjidhni një pjesë ku të instalohet</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Në këtë sistem s’gjendet gjëkundi një pjesë EFI sistemi. Ju lutemi, kthehuni mbrapsht dhe përdorni pjesëtimin dorazi që të rregulloni %1. - + The EFI system partition at %1 will be used for starting %2. Për nisjen e %2 do të përdoret pjesa EFI e sistemit te %1. - + EFI system partition: Pjesë EFI sistemi: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Kjo pajisje depozitimi përmban %1 në të. Ç’do të donit të bënit?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Fshije diskun</strong><br/>Kështu do të <font color=\"red\">fshihen</font> krejt të dhënat të pranishme tani në pajisjen e përzgjedhur. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instaloje në krah të tij</strong><br/>Instaluesi do të zvogëlojë një pjesë për të bërë vend për %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Zëvendëso një pjesë</strong><br/>Zëvendëson një pjesë me %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Kjo pajisje depozitimi përmban %1 në të. Ç’do të donit të bënit?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Kjo pajisje depozitimi ka tashmë një sistem operativ në të. Ç’do të donit të bënit?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Kjo pajisje depozitimi ka disa sisteme operativë në të. Ç’do të donit të bënit?<br/>Do të jeni në gjendje të rishqyrtoni dhe ripohoni zgjedhjet tuaja, para se te pajisja e depozitimit të bëhet çfarëdo ndryshimi. - + No Swap Pa Swap - + Reuse Swap Ripërdor Swap-in - + Swap (no Hibernate) Swap (pa Hibernate) - + Swap (with Hibernate) Swap (me Hibernate) - + Swap to file Swap në kartelë @@ -645,17 +645,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ClearMountsJob - + Clear mounts for partitioning operations on %1 Hiqi montimet për veprime pjesëtimi te %1 - + Clearing mounts for partitioning operations on %1. Po hiqen montimet për veprime pjesëtimi te %1. - + Cleared all mounts for %1 U hoqën krejt montimet për %1 @@ -663,22 +663,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ClearTempMountsJob - + Clear all temporary mounts. Hiqi krejt montimet e përkohshme. - + Clearing all temporary mounts. Po hiqen krejt montimet e përkohshme. - + Cannot get list of temporary mounts. S’merret dot lista e montimeve të përkohshme. - + Cleared all temporary mounts. U hoqën krejt montimet e përkohshme. @@ -705,30 +705,30 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Config - + Set keyboard model to %1.<br/> Si model tastiere do të caktohet %1.<br/> - + Set keyboard layout to %1/%2. Si model tastiere do të caktohet %1%2. - + + Set timezone to %1/%2. + Si zonë kohore cakto %1/%2 + + + The system language will be set to %1. Si gjuhë sistemi do të caktohet %1. - + The numbers and dates locale will be set to %1. Si vendore për numra dhe data do të vihet %1. - - - Set timezone to %1/%2.<br/> - Si zonë kohore do të caktohet %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <h1>Welcome to the %1 installer</h1> <h1>Mirë se vini te instaluesi i %1</h1> + + + Your username is too long. + Emri juaj i përdoruesit është shumë i gjatë. + + + + '%1' is not allowed as username. + '%1' s’lejohet si emër përdoruesi. + + + + Your username must start with a lowercase letter or underscore. + Emri juaj i përdoruesit duhet të fillojë me një shkronjë të vogël ose nënvijë. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Lejohen vetëm shkronja të vogla, numra, nënvijë dhe vijë ndarëse. + + + + Your hostname is too short. + Strehëemri juaj është shumë i shkurtër. + + + + Your hostname is too long. + Strehëemri juaj është shumë i gjatë. + + + + '%1' is not allowed as hostname. + '%1' s’lejohet si strehëemër. + + + + Only letters, numbers, underscore and hyphen are allowed. + Lejohen vetëm shkronja, numra, nënvijë dhe vijë ndarëse. + ContextualProcessJob @@ -958,40 +998,30 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CreateUserJob - + Create user %1 Krijo përdoruesin %1 - + Create user <strong>%1</strong>. Krijo përdoruesin <strong>%1</strong>. - + Creating user %1. Po krijohet përdoruesi %1. - - Sudoers dir is not writable. - Drejtoria sudoers s’është e shkrueshme. - - - + Cannot create sudoers file for writing. S’krijohet dot kartelë sudoers për shkrim. - + Cannot chmod sudoers file. S’mund të kryhet chmod mbi kartelën sudoers. - - - Cannot open groups file for reading. - S’hapet dot kartelë grupesh për lexim. - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. FillGlobalStorageJob - + Set partition information Caktoni të dhëna pjese - + Install %1 on <strong>new</strong> %2 system partition. Instaloje %1 në pjesë sistemi <strong>të re</strong> %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Rregullo pjesë të <strong>re</strong> %2 me pikë montimi <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instaloje %2 te pjesa e sistemit %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Rregullo pjesë %3 <strong>%1</strong> me pikë montimi <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalo ngarkues nisjesh në <strong>%1</strong>. - + Setting up mount points. Po rregullohen pika montimesh. @@ -1510,12 +1540,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. KeyboardPage - + Set keyboard model to %1.<br/> Si model tastiere do të caktohet %1.<br/> - + Set keyboard layout to %1/%2. Si model tastiere do të caktohet %1%2. @@ -1572,32 +1602,32 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <h1>Marrëveshje Licence</h1> - + I accept the terms and conditions above. I pranoj termat dhe kushtet më sipër. - + Please review the End User License Agreements (EULAs). Ju lutemi, shqyrtoni Marrëveshjet e Licencave për Përdorues të Thjeshtë (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. Kjo procedurë ujdisjeje do të instalojë software pronësor që është subjekt kushtesh licencimi. - + If you do not agree with the terms, the setup procedure cannot continue. Nëse nuk pajtoheni me kushtet, procedura e ujdisjes s’do të vazhdojë. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Që të furnizojë veçori shtesë dhe të përmirësojë punën e përdoruesit, kjo procedurë ujdisjeje mundet të instalojë software pronësor që është subjekt kushtesh licencimi. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Nëse nuk pajtohemi me kushtet, nuk do të instalohet software pronësor, dhe në vend të tij do të përdoren alternativa nga burimi i hapët. @@ -1673,41 +1703,26 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocalePage - + Region: Rajon: - + Zone: Zonë: - - + + &Change... &Ndryshojeni… - - - The system language will be set to %1. - Si gjuhë sistemi do të caktohet %1. - - - - The numbers and dates locale will be set to %1. - Si vendore për numra dhe data do të vihet %1. - - - - Set timezone to %1/%2.<br/> - Si zonë kohore do të caktohet %1/%2.<br/> - LocaleQmlViewStep - + Location Vendndodhje @@ -1715,7 +1730,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocaleViewStep - + Location Vendndodhje @@ -1777,7 +1792,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Map - + 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. @@ -2178,7 +2193,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Gabim i panjohur - + Password is empty Fjalëkalimi është i zbrazët @@ -2517,112 +2532,112 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Po grumbullohen të dhëna mbi sistemin… - + Partitions Pjesë - + Install %1 <strong>alongside</strong> another operating system. Instalojeni %1 <strong>në krah</strong> të një tjetër sistemi operativ. - + <strong>Erase</strong> disk and install %1. <strong>Fshije</strong> diskun dhe instalo %1. - + <strong>Replace</strong> a partition with %1. <strong>Zëvendësojeni</strong> një pjesë me %1. - + <strong>Manual</strong> partitioning. Pjesëtim <strong>dorazi</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instaloje %1 <strong>në krah</strong> të një tjetri sistemi operativ në diskun <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Fshije</strong> diskun <strong>%2</strong> (%3) dhe instalo %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zëvendëso</strong> një pjesë te disku <strong>%2</strong> (%3) me %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Pjesëtim <strong>dorazi</strong> në diskun <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disku <strong>%1</strong> (%2) - + Current: E tanishmja: - + After: Më Pas: - + No EFI system partition configured S’ka të formësuar pjesë sistemi EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Një pjesë EFI sistemi është e nevojshme për nisjen e %1.<br/><br/>Që të formësoni një pjesë EFI sistemi, kthehuni mbrapsht dhe përzgjidhni ose krijoni një sistem kartelash FAT32 me parametrin <strong>%3</strong> të aktivizuar dhe me pikë montimi <strong>%2</strong>.<br/><br/>Mund të vazhdoni pa ujdisur një pjesë EFI sistemi, por nisja nën sistemi juaj mund të dështojë. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Një pjesë EFI sistemi është e nevojshme për nisjen e %1.<br/><br/>Qe formësuar një pikë montimi <strong>%2</strong>, por parametri <strong>%3</strong> për të s’është ujdisur.<br/>Për të ujdisur parametrin, kthehuni mbrapsht dhe përpunoni pjesën.<br/><br/>Mund të vazhdoni pa ujdisur një pjesë EFI sistemi, por nisja nën sistemin tuaj mund të dështojë. - + EFI system partition flag not set S’i është vënë parametër pjese EFI sistemi - + Option to use GPT on BIOS Mundësi për përdorim GTP-je në BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Një tabelë pjesësh GPT është mundësia më e mirë për krejt sistemet. Ky instalues mbulon gjithashtu një ujdisje të tillë edhe për sisteme BIOS.<br/><br/>Që të formësoni një tabelë pjesësh GPT në BIOS, (nëse s’është bërë ende) kthehuni dhe ujdiseni tabelën e pjesëve si GPT, më pas krijoni një ndarje të paformatuar 8 MB me shenjën <strong>bios_grub</strong> të aktivizuar.<br/><br/>Një pjesë e paformatuar 8 MB është e nevojshme për të nisur %1 në një sistem BIOS me GPT. - + Boot partition not encrypted Pjesë nisjesh e pafshehtëzuar - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Tok me pjesën e fshehtëzuar <em>root</em> qe rregulluar edhe një pjesë <em>boot</em> veçmas, por pjesa <em>boot</em> s’është e fshehtëzuar.<br/><br/>Ka preokupime mbi sigurinë e këtij lloj rregullimi, ngaqë kartela të rëndësishme sistemi mbahen në një pjesë të pafshehtëzuar.<br/>Mund të vazhdoni, nëse doni, por shkyçja e sistemit të kartelave do të ndodhë më vonë, gjatë nisjes së sistemit.<br/>Që të fshehtëzoni pjesën <em>boot</em>, kthehuni mbrapsht dhe rikrijojeni, duke përzgjedhur te skena e krijimit të pjesës <strong>Fshehtëzoje</strong>. - + has at least one disk device available. ka të paktën një pajisje disku për përdorim. - + There are no partitions to install on. S’ka pjesë ku të instalohet. @@ -2670,17 +2685,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PreserveFiles - + Saving files for later ... Po ruhen kartela për më vonë ... - + No files configured to save for later. S’ka kartela të formësuara për t’i ruajtur më vonë. - + Not all of the configured files could be preserved. S’u mbajtën dot tërë kartelat e formësuara. @@ -3166,29 +3181,29 @@ Përfundim: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Si model tastiere do të caktohet %1, si skemë %2-%3 - + Failed to write keyboard configuration for the virtual console. S’u arrit të shkruhej formësim tastiere për konsolën virtuale. - - - + + + Failed to write to %1 S’u arrit të shkruhej te %1 - + Failed to write keyboard configuration for X11. S’u arrit të shkruhej formësim tastiere për X11. - + Failed to write keyboard configuration to existing /etc/default directory. S’u arrit të shkruhej formësim tastiere në drejtori /etc/default ekzistuese. @@ -3421,28 +3436,28 @@ Përfundim: TrackingKUserFeedbackJob - + KDE user feedback Përshtypje nga përdorues të KDE-së - + Configuring KDE user feedback. Formësim përshtypjesh nga përdorues të KDE-së. - - + + Error in KDE user feedback configuration. Gabim në formësimin e përshtypjeve nga përdorues të KDE-së. - + Could not configure KDE user feedback correctly, script error %1. Përshtypjet nga përdorues të KDE-së s’u formësuan dot saktë, gabim programthi %1. - + Could not configure KDE user feedback correctly, Calamares error %1. S’u formësuan dot saktë përshtypjet nga përdorues të KDE-së, gabim Calamares %1. @@ -3450,28 +3465,28 @@ Përfundim: TrackingMachineUpdateManagerJob - + Machine feedback Të dhëna nga makina - + Configuring machine feedback. Po formësohet moduli Të dhëna nga makina. - - + + Error in machine feedback configuration. Gabim në formësimin e modulit Të dhëna nga makina. - + Could not configure machine feedback correctly, script error %1. S’u formësua dot si duhet moduli Të dhëna nga makina, gabim programthi %1. - + Could not configure machine feedback correctly, Calamares error %1. S’u formësua dot si duhet moduli Të dhëna nga makina, gabim Calamares %1. @@ -3530,47 +3545,17 @@ Përfundim: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Nëse këtë kompjuter do ta përdorë më shumë se një person, mund të krijoni disa llogari, pas rregullimit.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Nëse këtë kompjuter do ta përdorë më shumë se një person, mund të krijoni disa llogari, pas instalimit.</small> - - Your username is too long. - Emri juaj i përdoruesit është shumë i gjatë. - - - - Your username must start with a lowercase letter or underscore. - Emri juaj i përdoruesit duhet të fillojë me një shkronjë të vogël ose nënvijë. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Lejohen vetëm shkronja të vogla, numra, nënvijë dhe vijë ndarëse. - - - - Your hostname is too short. - Strehëemri juaj është shumë i shkurtër. - - - - Your hostname is too long. - Strehëemri juaj është shumë i gjatë. - - - - Only letters, numbers, underscore and hyphen are allowed. - Lejohen vetëm shkronja, numra, nënvijë dhe vijë ndarëse. - - - + Your passwords do not match! Fjalëkalimet tuaj s’përputhen! @@ -3578,7 +3563,7 @@ Përfundim: UsersViewStep - + Users Përdorues @@ -3802,21 +3787,21 @@ Përfundim: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Gjuhë</h1> </br> Vlera për vendoren e sistemit prek gjuhën dhe shkronjat e përdorura për disa elementë të ndërfaqes rresh urdhrash të përdoruesit. Vlera e tanishme është <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Vendore</h1> </br> - Vlera për vendoren e sistemit prek gjuhën dhe shkronjat e përdorura për disa elementë të ndërfaqes rresh urdhrash të përdoruesit. Vlera e tanishme është <strong>%1</strong>. + Rregullimi i vendores së sistemit prek formatin e numrave dhe datave. Rregullimi i tanishëm është <strong>%1</strong>. - + Back Mbrapsht @@ -3824,44 +3809,44 @@ Përfundim: keyboardq - + Keyboard Model Model Tastiere - + Pick your preferred keyboard model or use the default one based on the detected hardware Zgjidhni modelin tuaj të parapëlqyer të tastierës ose përdorni atë parazgjedhje që bazohet në hardware-in e pikasur - + Refresh Rifreskoje - - + + Layouts Skema - - + + Keyboard Layout Skemë Tastiere - + Models Modele - + Variants Variante - + Test your keyboard Testoni tastierën tuaj @@ -3869,17 +3854,7 @@ Përfundim: localeq - - System language set to %1 - Si gjuhë sistemi është caktuar %1 - - - - Numbers and dates locale set to %1 - Si vendore për numra dhe data është caktuar %1 - - - + Change Ndryshojeni diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 269a69010..f5e7cad72 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -259,170 +259,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Инсталација није успела - + Would you like to paste the install log to the web? - + Error Грешка - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? Наставити са подешавањем? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now &Инсталирај сада - + Go &back Иди &назад - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Следеће - + &Back &Назад - + &Done - + &Cancel &Откажи - + Cancel setup? - + Cancel installation? Отказати инсталацију? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Да ли стварно желите да прекинете текући процес инсталације? @@ -484,12 +484,12 @@ The installer will quit and all changes will be lost. &Откажи - + %1 Setup Program - + %1 Installer %1 инсталер @@ -516,9 +516,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Тренутно: @@ -529,115 +529,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Ручно партиционисање</strong><br/>Сами можете креирати или мењати партције. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Подизни учитавач на: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -645,17 +645,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Уклони тачке припајања за операције партиције на %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Уклоњене све тачке припајања за %1 @@ -663,22 +663,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -705,30 +705,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Системски језик биће постављен на %1 - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Ваше корисничко име је предугачко. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + Име вашег "домаћина" - hostname је прекратко. + + + + Your hostname is too long. + Ваше име домаћина је предуго - hostname + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Направи корисника %1 - + Create user <strong>%1</strong>. - + Creating user %1. Правим корисника %1 - - Sudoers dir is not writable. - Није могуће писати у "Судоерс" директоријуму. - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Није могуће променити мод (chmod) над "судоерс" фајлом - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1510,12 +1540,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1572,32 +1602,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Регион: - + Zone: Зона: - - + + &Change... &Измени... - - - The system language will be set to %1. - Системски језик биће постављен на %1 - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location Локација @@ -1715,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Локација @@ -1777,7 +1792,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2178,7 +2193,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2517,112 +2532,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: Тренутно: - + After: После: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3160,29 +3175,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3415,28 +3430,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3444,28 +3459,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3524,47 +3539,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - Ваше корисничко име је предугачко. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - Име вашег "домаћина" - hostname је прекратко. - - - - Your hostname is too long. - Ваше име домаћина је предуго - hostname - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Лозинке се не поклапају! @@ -3572,7 +3557,7 @@ Output: UsersViewStep - + Users Корисници @@ -3785,19 +3770,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3805,44 +3790,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3850,17 +3835,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index e1077b0f0..431ec89f0 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -259,170 +259,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed Neuspješna instalacija - + Would you like to paste the install log to the web? - + Error Greška - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &Dalje - + &Back &Nazad - + &Done - + &Cancel &Prekini - + Cancel setup? - + Cancel installation? Prekini instalaciju? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Da li stvarno želite prekinuti trenutni proces instalacije? @@ -484,12 +484,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. &Prekini - + %1 Setup Program - + %1 Installer %1 Instaler @@ -516,9 +516,9 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - - - + + + Current: @@ -529,115 +529,115 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -645,17 +645,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 Skini tačke montiranja za operacije nad particijama na %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Sve tačke montiranja na %1 skinute @@ -663,22 +663,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -705,30 +705,30 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - Postavi vremensku zonu na %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -794,6 +794,46 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -958,40 +998,30 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CreateUserJob - + Create user %1 Napravi korisnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - Nemoguće mijenjati fajlove u sudoers direktorijumu - - - + Cannot create sudoers file for writing. Nemoguće napraviti sudoers fajl - + Cannot chmod sudoers file. Nemoguće uraditi chmod nad sudoers fajlom. - - - Cannot open groups file for reading. - Nemoguće otvoriti groups fajl - CreateVolumeGroupDialog @@ -1229,37 +1259,37 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1510,12 +1540,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1572,32 +1602,32 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1673,41 +1703,26 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocalePage - + Region: Regija: - + Zone: Zona: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - Postavi vremensku zonu na %1/%2.<br/> - LocaleQmlViewStep - + Location Lokacija @@ -1715,7 +1730,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocaleViewStep - + Location Lokacija @@ -1777,7 +1792,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Map - + 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. @@ -2178,7 +2193,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Password is empty @@ -2517,112 +2532,112 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Partitions Particije - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: Poslije: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2670,17 +2685,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3160,29 +3175,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3415,28 +3430,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3444,28 +3459,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3524,47 +3539,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! Vaše lozinke se ne poklapaju @@ -3572,7 +3557,7 @@ Output: UsersViewStep - + Users Korisnici @@ -3785,19 +3770,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3805,44 +3790,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3850,17 +3835,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 7d51e3b82..4c6a523e6 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -220,7 +220,7 @@ QML steg <i>%1</i>. - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed Inställningarna misslyckades - + Installation Failed Installationen misslyckades - + Would you like to paste the install log to the web? Vill du ladda upp installationsloggen på webben? - + Error Fel - - + + &Yes &Ja - - + + &No &Nej - + &Close &Stäng - + Install Log Paste URL URL till installationslogg - + The upload was unsuccessful. No web-paste was done. Sändningen misslyckades. Ingenting sparades på webbplatsen. - + Calamares Initialization Failed Initieringen av Calamares misslyckades - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 kan inte installeras. Calamares kunde inte ladda alla konfigurerade moduler. Detta är ett problem med hur Calamares används av distributionen. - + <br/>The following modules could not be loaded: <br/>Följande moduler kunde inte hämtas: - + Continue with setup? Fortsätt med installation? - + Continue with installation? Vill du fortsätta med installationen? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installeraren är på väg att göra ändringar på disk för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installeraren är på väg att göra ändringar för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar.</strong> - + &Set up now &Installera nu - + &Install now &Installera nu - + Go &back Gå &bakåt - + &Set up &Installera - + &Install &Installera - + Setup is complete. Close the setup program. Installationen är klar. Du kan avsluta installationsprogrammet. - + The installation is complete. Close the installer. Installationen är klar. Du kan avsluta installationshanteraren. - + Cancel setup without changing the system. Avbryt inställningarna utan att förändra systemet. - + Cancel installation without changing the system. Avbryt installationen utan att förändra systemet. - + &Next &Nästa - + &Back &Bakåt - + &Done &Klar - + &Cancel Avbryt - + Cancel setup? Avbryt inställningarna? - + Cancel installation? Avbryt installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Vill du verkligen avbryta den nuvarande uppstartsprocessen? Uppstartsprogrammet kommer avsluta och alla ändringar kommer förloras. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Är du säker på att du vill avsluta installationen i förtid? @@ -483,12 +483,12 @@ Alla ändringar kommer att gå förlorade. &Avsluta - + %1 Setup Program %1 Installationsprogram - + %1 Installer %1-installationsprogram @@ -515,9 +515,9 @@ Alla ändringar kommer att gå förlorade. - - - + + + Current: Nuvarande: @@ -528,115 +528,115 @@ Alla ändringar kommer att gå förlorade. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Manuell partitionering</strong><br/>Du kan skapa eller ändra storlek på partitioner själv. UEFI-installationer kräver en GPT-partitionstabell och en <strong>fat32-partition för /boot på 512MB</strong>, använd en existerande utan formatering eller skapa en. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Manuell partitionering</strong><br/>Du kan själv skapa och ändra storlek på partitionerna. - + Reuse %1 as home partition for %2. Återanvänd %1 som hempartition för %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Välj en partition att minska, sen dra i nedre fältet för att ändra storlek</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 kommer att förminskas till %2MiB och en ny %3MiB partition kommer att skapas för %4. - + Boot loader location: Sökväg till starthanterare: - + <strong>Select a partition to install on</strong> <strong>Välj en partition att installera på</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Ingen EFI-partition kunde inte hittas på systemet. Gå tillbaka och partitionera din lagringsenhet manuellt för att ställa in %1. - + The EFI system partition at %1 will be used for starting %2. EFI-partitionen %1 kommer att användas för att starta %2. - + EFI system partition: EFI-partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Denna lagringsenhet ser inte ut att ha ett operativsystem installerat. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring görs på lagringseneheten. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Rensa lagringsenhet</strong><br/>Detta kommer <font color="red">radera</font> all existerande data på den valda lagringsenheten. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installera på sidan om</strong><br/>Installationshanteraren kommer krympa en partition för att göra utrymme för %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ersätt en partition</strong><br/>Ersätter en partition med %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Denna lagringsenhet har %1 på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring görs på lagringsenheten. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Denna lagringsenhet har redan ett operativsystem på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring sker på lagringsenheten. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Denna lagringsenhet har flera operativsystem på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring sker på lagringsenheten. - + No Swap Ingen Swap - + Reuse Swap Återanvänd Swap - + Swap (no Hibernate) Swap (utan viloläge) - + Swap (with Hibernate) Swap (med viloläge) - + Swap to file Använd en fil som växlingsenhet @@ -644,17 +644,17 @@ Alla ändringar kommer att gå förlorade. ClearMountsJob - + Clear mounts for partitioning operations on %1 Rensa monteringspunkter för partitionering på %1 - + Clearing mounts for partitioning operations on %1. Rensar monteringspunkter för partitionering på %1. - + Cleared all mounts for %1 Rensade alla monteringspunkter för %1 @@ -662,22 +662,22 @@ Alla ändringar kommer att gå förlorade. ClearTempMountsJob - + Clear all temporary mounts. Rensa alla tillfälliga monteringspunkter. - + Clearing all temporary mounts. Rensar alla tillfälliga monteringspunkter. - + Cannot get list of temporary mounts. Kunde inte hämta tillfälliga monteringspunkter. - + Cleared all temporary mounts. Rensade alla tillfälliga monteringspunkter @@ -704,30 +704,30 @@ Alla ändringar kommer att gå förlorade. Config - + Set keyboard model to %1.<br/> Sätt tangenbordsmodell till %1.<br/> - + Set keyboard layout to %1/%2. Sätt tangentbordslayout till %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. Systemspråket kommer ändras till %1. - + The numbers and dates locale will be set to %1. Systemspråket för siffror och datum kommer sättas till %1. - - - Set timezone to %1/%2.<br/> - Sätt tidszon till %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -793,6 +793,46 @@ Alla ändringar kommer att gå förlorade. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + Ditt användarnamn är för långt. + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + Ditt användarnamn måste börja med en liten bokstav eller ett understreck. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Endast små bokstäver, nummer, understreck och bindestreck är tillåtet. + + + + Your hostname is too short. + Ditt värdnamn är för kort. + + + + Your hostname is too long. + Ditt värdnamn är för långt. + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + Endast bokstäver, nummer, understreck och bindestreck är tillåtet. + ContextualProcessJob @@ -957,40 +997,30 @@ Alla ändringar kommer att gå förlorade. CreateUserJob - + Create user %1 Skapar användare %1 - + Create user <strong>%1</strong>. Skapa användare <strong>%1</strong>. - + Creating user %1. Skapar användare %1 - - Sudoers dir is not writable. - Sudoerkatalogen är inte skrivbar. - - - + Cannot create sudoers file for writing. Kunde inte skapa sudoerfil för skrivning. - + Cannot chmod sudoers file. Kunde inte chmodda sudoerfilen. - - - Cannot open groups file for reading. - Kunde inte öppna gruppfilen för läsning. - CreateVolumeGroupDialog @@ -1228,37 +1258,37 @@ Alla ändringar kommer att gå förlorade. FillGlobalStorageJob - + Set partition information Ange partitionsinformation - + Install %1 on <strong>new</strong> %2 system partition. Installera %1 på <strong>ny</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Skapa <strong> ny </strong> %2 partition med monteringspunkt <strong> %1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installera %2 på %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Skapa %3 partition <strong>%1</strong> med monteringspunkt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installera uppstartshanterare på <strong>%1</strong>. - + Setting up mount points. Ställer in monteringspunkter. @@ -1509,12 +1539,12 @@ Alla ändringar kommer att gå förlorade. KeyboardPage - + Set keyboard model to %1.<br/> Sätt tangenbordsmodell till %1.<br/> - + Set keyboard layout to %1/%2. Sätt tangentbordslayout till %1/%2. @@ -1571,32 +1601,32 @@ Alla ändringar kommer att gå förlorade. <h1>Licensavtal</h1> - + I accept the terms and conditions above. Jag accepterar villkoren och avtalet ovan. - + Please review the End User License Agreements (EULAs). Vänligen läs igenom licensavtalen för slutanvändare (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Denna installationsprocess kommer installera proprietär mjukvara för vilken särskilda licensvillkor gäller. - + If you do not agree with the terms, the setup procedure cannot continue. Om du inte accepterar villkoren kan inte installationsproceduren fortsätta. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Denna installationsprocess kan installera proprietär mjukvara för vilken särskilda licensvillkor gäller, för att kunna erbjuda ytterligare funktionalitet och förbättra användarupplevelsen. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Om du inte godkänner villkoren kommer inte proprietär mjukvara att installeras, och alternativ med öppen källkod kommer användas istället. @@ -1672,41 +1702,26 @@ Alla ändringar kommer att gå förlorade. LocalePage - + Region: Region: - + Zone: Zon: - - + + &Change... Ändra... - - - The system language will be set to %1. - Systemspråket kommer ändras till %1. - - - - The numbers and dates locale will be set to %1. - Systemspråket för siffror och datum kommer sättas till %1. - - - - Set timezone to %1/%2.<br/> - Sätt tidszon till %1/%2.<br/> - LocaleQmlViewStep - + Location Plats @@ -1714,7 +1729,7 @@ Alla ändringar kommer att gå förlorade. LocaleViewStep - + Location Plats @@ -1776,7 +1791,7 @@ Alla ändringar kommer att gå förlorade. Map - + 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. @@ -2177,7 +2192,7 @@ Alla ändringar kommer att gå förlorade. Okänt fel - + Password is empty Lösenordet är blankt @@ -2516,112 +2531,112 @@ Alla ändringar kommer att gå förlorade. Samlar systeminformation... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installera %1 <strong>bredvid</strong> ett annat operativsystem. - + <strong>Erase</strong> disk and install %1. <strong>Rensa</strong> disken och installera %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersätt</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuell</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installera %1 <strong>bredvid</strong> ett annat operativsystem på disken <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Rensa</strong> disken <strong>%2</strong> (%3) och installera %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ersätt</strong> en partition på disken <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuell</strong> partitionering på disken <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Nuvarande: - + After: Efter: - + No EFI system partition configured Ingen EFI system partition konfigurerad - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. En EFI-systempartition krävs för att starta %1. <br/><br/> För att konfigurera en EFI-systempartition, gå tillbaka och välj eller skapa ett FAT32-filsystem med <strong>%3</strong>-flaggan satt och monteringspunkt <strong>%2</strong>. <br/><br/>Du kan fortsätta utan att ställa in en EFI-systempartition, men ditt system kanske misslyckas med att starta. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. En EFI-systempartition krävs för att starta %1. <br/><br/>En partition är konfigurerad med monteringspunkt <strong>%2</strong>, men dess <strong>%3</strong>-flagga är inte satt.<br/>För att sätta flaggan, gå tillbaka och redigera partitionen.<br/><br/>Du kan fortsätta utan att sätta flaggan, men ditt system kanske misslyckas med att starta - + EFI system partition flag not set EFI system partitionsflagga inte satt - + Option to use GPT on BIOS Alternativ för att använda GPT på BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. En GPT-partitionstabell är det bästa alternativet för alla system. Detta installationsprogram stödjer det för system med BIOS också.<br/><br/>För att konfigurera en GPT-partitionstabell på BIOS (om det inte redan är gjort), gå tillbaka och sätt partitionstabell till GPT, skapa sedan en oformaterad partition på 8MB med <strong>bios_grub</strong>-flaggan satt.<br/><br/>En oformaterad partition på 8MB är nödvändig för att starta %1 på ett BIOS-system med GPT. - + Boot partition not encrypted Boot partition inte krypterad - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. En separat uppstartspartition skapades tillsammans med den krypterade rootpartitionen, men uppstartspartitionen är inte krypterad.<br/><br/>Det finns säkerhetsproblem med den här inställningen, eftersom viktiga systemfiler sparas på en okrypterad partition.<br/>Du kan fortsätta om du vill, men upplåsning av filsystemet kommer hända senare under uppstart av systemet.<br/>För att kryptera uppstartspartitionen, gå tillbaka och återskapa den, och välj <strong>Kryptera</strong> i fönstret när du skapar partitionen. - + has at least one disk device available. har åtminstone en diskenhet tillgänglig. - + There are no partitions to install on. Det finns inga partitioner att installera på. @@ -2669,17 +2684,17 @@ Alla ändringar kommer att gå förlorade. PreserveFiles - + Saving files for later ... Sparar filer tills senare ... - + No files configured to save for later. Inga filer konfigurerade att spara till senare. - + Not all of the configured files could be preserved. Inte alla av konfigurationsfilerna kunde bevaras. @@ -3162,29 +3177,29 @@ Utdata: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Sätt tangentbordsmodell till %1, layout till %2-%3 - + Failed to write keyboard configuration for the virtual console. Misslyckades med att skriva tangentbordskonfiguration för konsolen. - - - + + + Failed to write to %1 Misslyckades med att skriva %1 - + Failed to write keyboard configuration for X11. Misslyckades med att skriva tangentbordskonfiguration för X11. - + Failed to write keyboard configuration to existing /etc/default directory. Misslyckades med att skriva tangentbordskonfiguration till den existerande katalogen /etc/default. @@ -3417,28 +3432,28 @@ Utdata: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3461,28 @@ Utdata: TrackingMachineUpdateManagerJob - + Machine feedback Maskin feedback - + Configuring machine feedback. Konfigurerar maskin feedback - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. Kunde inte konfigurera maskin feedback korrekt, script fel %1. - + Could not configure machine feedback correctly, Calamares error %1. Kunde inte konfigurera maskin feedback korrekt, Calamares fel %1. @@ -3526,47 +3541,17 @@ Utdata: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Om mer än en person skall använda datorn så kan du skapa flera användarkonton när inställningarna är klara.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Om mer än en person skall använda datorn så kan du skapa flera användarkonton när installationen är klar.</small> - - Your username is too long. - Ditt användarnamn är för långt. - - - - Your username must start with a lowercase letter or underscore. - Ditt användarnamn måste börja med en liten bokstav eller ett understreck. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Endast små bokstäver, nummer, understreck och bindestreck är tillåtet. - - - - Your hostname is too short. - Ditt värdnamn är för kort. - - - - Your hostname is too long. - Ditt värdnamn är för långt. - - - - Only letters, numbers, underscore and hyphen are allowed. - Endast bokstäver, nummer, understreck och bindestreck är tillåtet. - - - + Your passwords do not match! Lösenorden överensstämmer inte! @@ -3574,7 +3559,7 @@ Utdata: UsersViewStep - + Users Användare @@ -3798,19 +3783,19 @@ Utdata: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back Bakåt @@ -3818,44 +3803,44 @@ Utdata: keyboardq - + Keyboard Model Tangentbordsmodell - + Pick your preferred keyboard model or use the default one based on the detected hardware Välj din föredragna tangentbordsmodell, eller använd ett förval baserat på vilken hårdvara vi känt av - + Refresh Ladda om - - + + Layouts Layouter - - + + Keyboard Layout Tangentbordslayout - + Models Modeller - + Variants Varianter - + Test your keyboard Testa ditt tangentbord @@ -3863,17 +3848,7 @@ Utdata: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change Ändra diff --git a/lang/calamares_tg.ts b/lang/calamares_tg.ts index 24713cdb1..d353527a9 100644 --- a/lang/calamares_tg.ts +++ b/lang/calamares_tg.ts @@ -6,7 +6,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - <strong>Муҳити роҳандозӣ</strong> барои низоми ҷорӣ.<br><br>Низомҳои x86 куҳна танҳо <strong>BIOS</strong>-ро дастгирӣ менамоянд.<br>Низомҳои муосир одатан <strong>EFI</strong>-ро истифода мебаранд, аммо инчунин метавонанд ҳамчун BIOS намоиш дода шаванд, агар дар реҷаи мувофиқсозӣ оғоз шавад. + <strong>Муҳити роҳандозӣ</strong> барои низоми ҷорӣ.<br><br>Низомҳои x86-и куҳна танҳо <strong>BIOS</strong>-ро дастгирӣ менамоянд.<br>Низомҳои муосир одатан <strong>EFI</strong>-ро истифода мебаранд, аммо инчунин метавонанд ҳамчун BIOS намоиш дода шаванд, агар дар реҷаи мувофиқсозӣ оғоз шаванд. @@ -145,7 +145,7 @@ Done - Тайёр + Анҷоми кор @@ -220,7 +220,7 @@ Қадами QML <i>%1</i>. - + Loading failed. Боршавӣ қатъ шуд. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed - Танзимкунӣ иҷро нашуд + Танзимкунӣ қатъ шуд - + Installation Failed - Насбкунӣ иҷро нашуд + Насбкунӣ қатъ шуд - + Would you like to paste the install log to the web? Шумо мехоҳед, ки сабти рӯйдодҳои насбро ба шабака нусха бардоред? - + Error Хато - - + + &Yes &Ҳа - - + + &No &Не - + &Close &Пӯшидан - + Install Log Paste URL Гузоштани нишонии URL-и сабти рӯйдодҳои насб - + The upload was unsuccessful. No web-paste was done. Боркунӣ иҷро нашуд. Гузариш ба шабака иҷро нашуд. - + Calamares Initialization Failed Омодашавии Calamares қатъ шуд - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - %1 насб карда намешавад. Calamares ҳамаи модулҳои танзимкардашударо бор карда натавонист. Ин мушкилие мебошад, ки бо ҳамин роҳ Calamares дар дистрибутиви ҷори кор мекунад. + %1 насб карда намешавад. Calamares ҳамаи модулҳои танзимкардашударо бор карда натавонист. Ин мушкилие мебошад, ки бо ҳамин роҳ Calamares дар дистрибутиви ҷорӣ кор мекунад. - + <br/>The following modules could not be loaded: <br/>Модулҳои зерин бор карда намешаванд: - + Continue with setup? Танзимкуниро идома медиҳед? - + Continue with installation? Насбкуниро идома медиҳед? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Барномаи танзимкунии %1 барои танзим кардани %2 ба диски компютери шумо тағйиротро ворид мекунад.<br/><strong>Шумо ин тағйиротро ботил карда наметавонед.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Насбкунандаи %1 барои насб кардани %2 ба диски компютери шумо тағйиротро ворид мекунад.<br/><strong>Шумо ин тағйиротро ботил карда наметавонед.</strong> - + &Set up now &Ҳозир танзим карда шавад - + &Install now &Ҳозир насб карда шавад - + Go &back &Бозгашт - + &Set up &Танзим кардан - + &Install &Насб кардан - + Setup is complete. Close the setup program. Танзим ба анҷом расид. Барномаи танзимкуниро пӯшед. - + The installation is complete. Close the installer. Насб ба анҷом расид. Барномаи насбкуниро пӯшед. - + Cancel setup without changing the system. - Бекор кардани танзимкунӣ бе тағйирдиҳии низом + Бекор кардани танзимкунӣ бе тағйирдиҳии низом. - + Cancel installation without changing the system. - Бекор кардани насбкунӣ бе тағйирдиҳии низом + Бекор кардани насбкунӣ бе тағйирдиҳии низом. - + &Next &Навбатӣ - + &Back &Ба қафо - + &Done - &Тайёр + &Анҷоми кор - + &Cancel &Бекор кардан - + Cancel setup? Танзимкуниро бекор мекунед? - + Cancel installation? Насбкуниро бекор мекунед? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Шумо дар ҳақиқат мехоҳед, ки раванди танзимкунии ҷориро бекор намоед? Барномаи танзимкунӣ хомӯш карда мешавад ва ҳамаи тағйирот гум карда мешаванд. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Шумо дар ҳақиқат мехоҳед, ки раванди насбкунии ҷориро бекор намоед? @@ -438,17 +438,17 @@ The installer will quit and all changes will be lost. unparseable Python error - + Хатои таҳлилнашавандаи Python unparseable Python traceback - + Барориши таҳлилнашавандаи Python Unfetchable Python error. - + Хатои кашиданашавандаи Python. @@ -457,7 +457,8 @@ The installer will quit and all changes will be lost. Install log posted to: %1 - + Сабти рӯйдодҳои насб ба нишонии зерин гузошта шуд: +%1 @@ -465,7 +466,8 @@ The installer will quit and all changes will be lost. Show debug information - + Намоиши иттилооти +ислоҳи нуқсонҳо @@ -483,12 +485,12 @@ The installer will quit and all changes will be lost. &Бекор кардан - + %1 Setup Program Барномаи танзимкунии %1 - + %1 Installer Насбкунандаи %1 @@ -515,171 +517,171 @@ The installer will quit and all changes will be lost. - - - + + + Current: - Ҷорӣ: + Танзимоти ҷорӣ: After: - Баъд аз: + Баъд аз тағйир: - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Қисмбандии диск ба таври дастӣ</strong><br/>Шумо худатон метавонед қисмҳои дискро эҷод кунед ё андозаи онҳоро иваз намоед. - + Reuse %1 as home partition for %2. Дубора истифода бурдани %1 ҳамчун диски асосӣ барои %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Қисми дискеро, ки мехоҳед хурдтар кунед, интихоб намоед, пас лавҳаи поёнро барои ивази андоза кашед</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + %1 то андозаи %2MiB хурдтар мешавад ва қисми диски нав бо андозаи %3MiB барои %4 эҷод карда мешавад. - + Boot loader location: - + Ҷойгиршавии боркунандаи роҳандозӣ: - + <strong>Select a partition to install on</strong> - + <strong>Қисми дискеро барои насб интихоб намоед</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Қисми диски низомии EFI дар дохили низоми ҷорӣ ёфт нашуд. Лутфан, ба қафо гузаред ва барои танзим кардани %1 аз имкони қисмбандии диск ба таври дастӣ истифода баред. - + The EFI system partition at %1 will be used for starting %2. - + Қисми диски низомии EFI дар %1 барои оғоз кардани %2 истифода бурда мешавад. - + EFI system partition: Қисми диски низомии: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Чунин менамояд, ки ин захирагоҳ низоми амалкунандаро дар бар намегирад. Шумо чӣ кор кардан мехоҳед?<br/>Шумо метавонед пеш аз татбиқ кардани тағйирот ба дастгоҳи захирагоҳ интихоби худро аз назар гузаронед ва тасдиқ кунед. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Пок кардани диск</strong><br/>Ин амал ҳамаи иттилооти ҷориро дар дастгоҳи захирагоҳи интихобшуда <font color="red">нест мекунад</font>. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Насбкунии паҳлуӣ</strong><br/>Насбкунанда барои %1 фазоро омода карда, қисми дискеро хурдтар мекунад. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Ивазкунии қисми диск</strong><br/>Қисми дисекро бо %1 иваз мекунад. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Ин захирагоҳ %1-ро дар бар мегирад. Шумо чӣ кор кардан мехоҳед?<br/>Шумо метавонед пеш аз татбиқ кардани тағйирот ба дастгоҳи захирагоҳ интихоби худро аз назар гузаронед ва тасдиқ кунед. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Ин захирагоҳ аллакай низоми амалкунандаро дар бар мегирад. Шумо чӣ кор кардан мехоҳед?<br/>Шумо метавонед пеш аз татбиқ кардани тағйирот ба дастгоҳи захирагоҳ интихоби худро аз назар гузаронед ва тасдиқ кунед. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Ин захирагоҳ якчанд низоми амалкунандаро дар бар мегирад. Шумо чӣ кор кардан мехоҳед?<br/>Шумо метавонед пеш аз татбиқ кардани тағйирот ба дастгоҳи захирагоҳ интихоби худро аз назар гузаронед ва тасдиқ кунед. - + No Swap - + Бе мубодила - + Reuse Swap - + Истифодаи муҷаддади мубодила - + Swap (no Hibernate) - + Мубодила (бе реҷаи Нигаҳдорӣ) - + Swap (with Hibernate) - + Мубодила (бо реҷаи Нигаҳдорӣ) - + Swap to file - + Мубодила ба файл ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Пок кардани васлҳо барои амалиётҳои қисмбандӣ дар %1 - + Clearing mounts for partitioning operations on %1. - + Поксозии васлҳо барои амалиётҳои қисмбандӣ дар %1 - + Cleared all mounts for %1 - + Ҳамаи васлҳо барои %1 пок карда шуданд. ClearTempMountsJob - + Clear all temporary mounts. - + Пок кардани ҳамаи васлҳои муваққатӣ. - + Clearing all temporary mounts. - + Поксозии ҳамаи васлҳои муваққатӣ. - + Cannot get list of temporary mounts. - + Рӯйхати васлҳои муваққатӣ гирифта нашуд. - + Cleared all temporary mounts. - + Ҳамаи васлҳои муваққатӣ пок карда шуданд. @@ -688,85 +690,85 @@ The installer will quit and all changes will be lost. Could not run command. - + Фармон иҷро карда нашуд. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Фармон дар муҳити мизбон иҷро мешавад ва бояд масири реша (root)-ро донад, аммо масири rootMountPoint муайян нашудааст. The command needs to know the user's name, but no username is defined. - + Фармон бояд номи корбари шуморо донад, аммо номи корбар муайян нашудааст. Config - + Set keyboard model to %1.<br/> Намунаи клавиатура ба %1 танзим карда мешавад.<br/> - + Set keyboard layout to %1/%2. Тарҳбандии клавиатура ба %1 %1/%2 танзим карда мешавад. - + + Set timezone to %1/%2. + Минтақаи вақт ба %1/%2 танзим карда мешавад. + + + The system language will be set to %1. Забони низом ба %1 танзим карда мешавад. - + The numbers and dates locale will be set to %1. Низоми рақамҳо ва санаҳо ба %1 танзим карда мешавад. - - - Set timezone to %1/%2.<br/> - Танзими минтақаи вақт ба %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) - + Насбкунии шабака. (Ғайрифаъол: Танзимоти нодуруст) Network Installation. (Disabled: Received invalid groups data) - + Насбкунии шабака. (Ғайрифаъол: Иттилооти гурӯҳии нодуруст қабул шуд) Network Installation. (Disabled: internal error) - + Насбкунии шабака. (Ғайрифаъол: Хатои дохилӣ) Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Насбкунии шабака. (Ғайрифаъол: Рӯйхати қуттиҳо гирифта намешавад. Пайвасти шабакаро тафтиш кунед) This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Ин компютер ба талаботи камтарин барои танзимкунии %1 ҷавобгӯ намебошад.<br/>Танзимот идома дода намешавад. <a href="#details">Тафсилот...</a> This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Ин компютер ба талаботи камтарин барои насбкунии %1 ҷавобгӯ намебошад.<br/>Насбкунӣ идома дода намешавад. <a href="#details">Тафсилот...</a> This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. - + Ин компютер ба баъзеи талаботи тавсияшуда барои танзимкунии %1 ҷавобгӯ намебошад.<br/>Танзимот идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/>Насбкунӣ идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. @@ -793,6 +795,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>Хуш омадед ба насбкунандаи %1</h1> + + + Your username is too long. + Номи корбари шумо хеле дароз аст. + + + + '%1' is not allowed as username. + '%1' ҳамчун номи корбар истифода намешавад. + + + + Your username must start with a lowercase letter or underscore. + Номи корбари шумо бояд бо ҳарфи хурд ё зерхат сар шавад. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Шумо метавонед танҳо ҳарфҳои хурд, рақамҳо, зерхат ва нимтиреро истифода баред. + + + + Your hostname is too short. + Номи мизбони шумо хеле кӯтоҳ аст. + + + + Your hostname is too long. + Номи мизбони шумо хеле дароз аст. + + + + '%1' is not allowed as hostname. + '%1' ҳамчун номи мизбон истифода намешавад. + + + + Only letters, numbers, underscore and hyphen are allowed. + Шумо метавонед танҳо ҳарфҳо, рақамҳо, зерхат ва нимтиреро истифода баред. + ContextualProcessJob @@ -857,7 +899,7 @@ The installer will quit and all changes will be lost. En&crypt - &Рамзгузорӣ кардан + &Рамзгузорӣ @@ -877,7 +919,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - + Нуқтаи васл аллакай дар истифода аст. Лутфан, нуқтаи васли дигареро интихоб намоед. @@ -885,22 +927,22 @@ The installer will quit and all changes will be lost. Create new %2MiB partition on %4 (%3) with file system %1. - + Қисми диски нав бо ҳаҷми %2MiB дар %4 (%3) бо низоми файлии %1 эҷод карда мешавад. Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Қисми диски нав бо ҳаҷми <strong>%2MiB</strong> дар <strong>%4</strong> (%3) бо низоми файлии <strong>%1</strong> эҷод карда мешавад. Creating new %1 partition on %2. - + Эҷодкунии қисми диски нави %1 дар %2. The installer failed to create partition on disk '%1'. - + Насбкунанда қисми дискро дар '%1' эҷод карда натавонист. @@ -908,27 +950,27 @@ The installer will quit and all changes will be lost. Create Partition Table - + Эҷод кардани ҷадвали қисми диск Creating a new partition table will delete all existing data on the disk. - + Эҷодкунии ҷадвали қисми диски нав ҳамаи иттилооти дар диск мавҷудбударо нест мекунад. What kind of partition table do you want to create? - + Шумо кадом навъи ҷадвали қисми дискро эҷод кардан мехоҳед? Master Boot Record (MBR) - + Сабти роҳандозии асосӣ (MBR) GUID Partition Table (GPT) - + Ҷадвали қисми диски GUID (GPT) @@ -936,60 +978,50 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + Ҷадвали қисми диски нави %1 дар %2 эҷод карда мешавад. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Ҷадвали қисми диски нави <strong>%1</strong> дар <strong>%2</strong> (%3) эҷод карда мешавад. Creating new %1 partition table on %2. - + Эҷодкунии ҷадвали қисми диски нави %1 дар %2. The installer failed to create a partition table on %1. - + Насбкунанда ҷадвали қисми дискро дар '%1' эҷод карда натавонист. CreateUserJob - + Create user %1 Эҷод кардани корбари %1 - + Create user <strong>%1</strong>. Эҷод кардани корбари <strong>%1</strong>. - + Creating user %1. Эҷодкунии корбари %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Файли sudoers барои сабт эҷод карда намешавад. - + Cannot chmod sudoers file. - - - - - Cannot open groups file for reading. - + Фармони chmod барои файли sudoers иҷро намешавад. @@ -1005,12 +1037,12 @@ The installer will quit and all changes will be lost. Create new volume group named %1. - Эҷод кардани гурӯҳи ҳаҷми нав бо номи %1. + Гурӯҳи ҳаҷми нав бо номи %1 эҷод карда мешавад. Create new volume group named <strong>%1</strong>. - Эҷод кардани гурӯҳи ҳаҷми нав бо номи <strong>%1</strong>. + Гурӯҳи ҳаҷми нав бо номи <strong>%1</strong> эҷод карда мешавад. @@ -1047,12 +1079,12 @@ The installer will quit and all changes will be lost. Delete partition %1. - Нест кардани қисми диски %1. + Қисми диски %1 нест карда мешавад. Delete partition <strong>%1</strong>. - Нест кардани қисми диски <strong>%1</strong>. + Қисми диски <strong>%1</strong> нест карда мешавад. @@ -1070,32 +1102,32 @@ The installer will quit and all changes will be lost. This device has a <strong>%1</strong> partition table. - + Ин дастгоҳ ҷадвали қисми диски <strong>%1</strong>-ро дар бар мегирад. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Ин дастгоҳи <strong>даврӣ</strong> мебошад.<br><br>Ин дастгоҳи сохтагӣ мебошад ва ҷадвали қисми дискеро дар бар намегирад, ки файлеро ҳамчун блоки дастгоҳ дастрас мекунад. Ин навъи танзимкунӣ одатан танҳо як низоми файлиро дар бар мегирад. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + Ин насбкунанда дар дастгоҳи захирагоҳи интихобшуда <strong>ҷадвали қисми дискеро муайян карда наметавонад</strong>.<br><br>Эҳтимол аст, ки дастгоҳ дорои ҷадвали қисми диск намебошад ё ҷадвали қисми диск вайрон ё номаълум аст.<br>Ин насбкунанда метавонад барои шумо ҷадвали қисми диски наверо ба таври худкор ё ба таври дастӣ дар саҳифаи қисмбандии дастӣ эҷод намояд. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Ин навъи ҷадвали қисми диски тавсияшуда барои низомҳои муосир мебошад, ки аз муҳити роҳандозии <strong>EFI</strong> ба роҳ монда мешавад. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Ин навъи ҷадвали қисми диск танҳо барои низомҳои куҳна тавсия карда мешавад, ки аз муҳити роҳандозии <strong>BIOS</strong> корро оғоз мекунад. GPT дар аксарияти мавридҳои дигар тавсия карда мешавад.<br><br><strong>Огоҳӣ:</strong> Ҷадвали қисми диски MBR ба стандатри куҳнаи давраи MS-DOS тааллуқ дорад.<br>Танҳо 4 қисми диски <em>асосӣ</em> эҷод карда мешаванд ва аз он 4 қисм танҳо як қисми диск <em>афзуда</em> мешавад, ки дар натиҷа метавонад бисёр қисмҳои диски <em>мантиқиро</em> дар бар гирад. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Навъи <strong>ҷадвали қисми диск</strong> дар дастгоҳи захирагоҳи интихобшуда.<br><br>Навъи ҷадвали қисми диск танҳо тавассути пок кардан ва аз нав эҷод кардани ҷадвали қисми диск иваз карда мешавад, ки дар ин марвид ҳамаи иттилоот дар дастгоҳи захирагоҳ нест карда мешавад.<br>Ин насбкунанда ҷадвали қисми диски ҷориро нигоҳ медорад, агар шумо онро тағйир надиҳед.<br>Агар надонед, ки чӣ кор кардан лозим аст, GPT дар низомҳои муосир бояд истифода бурда шавад. @@ -1118,12 +1150,12 @@ The installer will quit and all changes will be lost. Write LUKS configuration for Dracut to %1 - + Танзимоти LUKS барои Dracut ба %1 сабт карда мешавад Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Сабти танзимоти LUKS барои Dracut иҷро карда намешавад: қисми диски "/" рамзгузорӣ нашудааст @@ -1136,7 +1168,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + Вазифаи амсилаи C++ @@ -1144,7 +1176,7 @@ The installer will quit and all changes will be lost. Edit Existing Partition - + Таҳрир кардани қисми диски мавҷудбуда @@ -1159,12 +1191,12 @@ The installer will quit and all changes will be lost. Format - + Шаклбандӣ Warning: Formatting the partition will erase all existing data. - + Огоҳӣ: Амали шаклбандӣ ҳамаи иттилооти мавҷудбударо дар қиски диск пок мекунад. @@ -1194,7 +1226,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - + Нуқтаи васл аллакай дар истифода аст. Лутфан, нуқтаи васли дигареро интихоб намоед. @@ -1212,55 +1244,55 @@ The installer will quit and all changes will be lost. Passphrase - Гузарвожа + Гузарвожаро ворид намоед Confirm passphrase - + Гузарвожаро тасдиқ намоед Please enter the same passphrase in both boxes. - + Лутфан, гузарвожаи ягонаро дар ҳар дуи сатр ворид намоед. FillGlobalStorageJob - + Set partition information - + Танзими иттилооти қисми диск - + Install %1 on <strong>new</strong> %2 system partition. - + Насбкунии %1 дар қисми диски низомии <strong>нави</strong> %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Қисми диски <strong>нави</strong> %2 бо нуқтаи васли <strong>%1</strong> танзим карда мешавад. - + Install %2 on %3 system partition <strong>%1</strong>. - + Насбкунии %2 дар қисми диски низомии %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Қисми диски %3 <strong>%1</strong> бо нуқтаи васли <strong>%2</strong> танзим карда мешавад. - + Install boot loader on <strong>%1</strong>. - + Боркунандаи роҳандозӣ дар <strong>%1</strong> насб карда мешавад. - + Setting up mount points. - + Танзимкунии нуқтаҳои васл. @@ -1273,37 +1305,37 @@ The installer will quit and all changes will be lost. &Restart now - + &Ҳозир аз нав оғоз карда шавад <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. - + <h1>Ҳамааш тайёр.</h1><br/>%1 дар компютери шумо танзим карда шуд.<br/>Акнун шумо метавонед истифодаи низоми навро оғоз намоед. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> - + <html><head/><body><p>Агар ин имконро интихоб кунед, низоми шумо пас аз зер кардани тугмаи <span style="font-style:italic;">Анҷоми кор</span> ё пӯшидани барномаи танзимкунӣ дарҳол аз нав оғоз карда мешавад.</p></body></html> <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Ҳамааш тайёр.</h1><br/>%1 дар компютери шумо насб карда шуд.<br/>Акнун шумо метавонед компютерро аз нав оғоз карда, ба низоми нав ворид шавед ё истифодаи муҳити зиндаи %2-ро идома диҳед. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Агар ин имконро интихоб кунед, низоми шумо пас аз зер кардани тугмаи <span style="font-style:italic;">Анҷоми кор</span> ё пӯшидани насбкунанда дарҳол аз нав оғоз карда мешавад.</p></body></html> <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. - + <h1>Танзимкунӣ қатъ шуд</h1><br/>%1 дар компютери шумо танзим карда нашуд.<br/>Паёми хато: %2. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Насбкунӣ қатъ шуд</h1><br/>%1 дар компютери шумо насб карда нашуд.<br/>Паёми хато: %2. @@ -1316,22 +1348,22 @@ The installer will quit and all changes will be lost. Setup Complete - + Анҷоми танзимкунӣ Installation Complete - + Насбкунӣ ба анҷом расид The setup of %1 is complete. - + Танзимкунии %1 ба анҷом расид. The installation of %1 is complete. - + Насбкунии %1 ба анҷом расид. @@ -1339,22 +1371,22 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + Шаклбандии қисми диски %1 (низоми файлӣ: %2, андоза: %3 МБ) дар %4. Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Шаклбандии қисми диск бо ҳаҷми <strong>%3MiB</strong> - <strong>%1</strong> бо низоми файлии <strong>%2</strong>. Formatting partition %1 with file system %2. - + Шаклбандии қисми диски %1 бо низоми файлии %2. The installer failed to format partition %1 on disk '%2'. - + Насбкунанда қисми диски %1-ро дар диски '%2' шаклбандӣ карда натавонист. @@ -1362,72 +1394,72 @@ The installer will quit and all changes will be lost. has at least %1 GiB available drive space - + ақаллан %1 ГБ фазои диск дастрас аст There is not enough drive space. At least %1 GiB is required. - + Дар диск фазои кофӣ нест. Ақаллан %1 ГБ лозим аст. has at least %1 GiB working memory - + ақаллан %1 ГБ ҳофизаи корӣ дастрас аст The system does not have enough working memory. At least %1 GiB is required. - + Низом дорои ҳофизаи кории кофӣ намебошад. Ақаллан %1 ГБ лозим аст. is plugged in to a power source - + низом ба манбаи барқ пайваст карда шуд The system is not plugged in to a power source. - + Компютер бояд ба манбаи барқ пайваст карда шавад is connected to the Internet - + пайвасти Интернет дастрас аст The system is not connected to the Internet. - + Компютер ба Интернет пайваст карда нашуд. is running the installer as an administrator (root) - + насбкунанда бо ҳуқуқҳои маъмурӣ (root) иҷро шуда истодааст. The setup program is not running with administrator rights. - + Барномаи насбкунӣ бе ҳуқуқҳои маъмурӣ иҷро шуда истодааст. The installer is not running with administrator rights. - + Насбкунанда бе ҳуқуқҳои маъмурӣ иҷро шуда истодааст. has a screen large enough to show the whole installer - + экран равзанаи насбкунандаро ба таври пурра нишон медиҳад The screen is too small to display the setup program. - + Экран барои нишон додани барномаи насбкунӣ хеле хурд аст. The screen is too small to display the installer. - + Экран барои нишон додани насбкунанда хеле хурд аст. @@ -1435,7 +1467,7 @@ The installer will quit and all changes will be lost. Collecting information about your machine. - + Ҷамъкунии иттилоот дар бораи компютери шумо. @@ -1446,22 +1478,22 @@ The installer will quit and all changes will be lost. OEM Batch Identifier - + Муайянкунандаи бастаи OEM Could not create directories <code>%1</code>. - + Феҳристҳои <code>%1</code> эҷод карда намешаванд. Could not open file <code>%1</code>. - + Файли <code>%1</code> кушода нашуд. Could not write to file <code>%1</code>. - + Ба файли <code>%1</code> навишта натавонист. @@ -1469,7 +1501,7 @@ The installer will quit and all changes will be lost. Creating initramfs with mkinitcpio. - + Эҷодкунии initramfs бо mkinitcpio. @@ -1477,7 +1509,7 @@ The installer will quit and all changes will be lost. Creating initramfs. - + Эҷодкунии initramfs. @@ -1485,17 +1517,17 @@ The installer will quit and all changes will be lost. Konsole not installed - + Konsole насб нашудааст Please install KDE Konsole and try again! - + Лутфан, KDE Konsole-ро насб намуда, аз нав кӯшиш кунед! Executing script: &nbsp;<code>%1</code> - + Иҷрокунии нақши: &nbsp;<code>%1</code> @@ -1509,12 +1541,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Намунаи клавиатура ба %1 танзим карда мешавад.<br/> - + Set keyboard layout to %1/%2. Тарҳбандии клавиатура ба %1 %1/%2 танзим карда мешавад. @@ -1540,12 +1572,12 @@ The installer will quit and all changes will be lost. System locale setting - + Танзими маҳаллигардонии низом The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад.<br/>Танзимоти ҷорӣ: <strong>%1</strong>. @@ -1571,34 +1603,34 @@ The installer will quit and all changes will be lost. <h1>Созишномаи иҷозатномавӣ</h1> - + I accept the terms and conditions above. Ман шарту шароитҳои дар боло зикршударо қабул мекунам. - + Please review the End User License Agreements (EULAs). - + Лутфан, Созишномаҳои иҷозатномавии корбари ниҳоиро (EULA-ҳо) мутолиа намоед. - + This setup procedure will install proprietary software that is subject to licensing terms. - + Раванди танзимкунӣ нармафзори патентдореро, ки дорои шартҳои иҷозатномавӣ мебошад, насб мекунад. - + If you do not agree with the terms, the setup procedure cannot continue. - + Агар шумо шартҳоро қабул накунед, раванди насбкунӣ бояд идома дода нашавад. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Раванди танзимкунӣ метавонад нармафзори патентдореро насб кунад, ки дорои шартҳои иҷозатномавӣ барои таъмини хусусиятҳои иловагӣ ва беҳтар кардани таҷрибаи корбарӣ мебошад. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Агар шумо шартҳоро қабул накунед, нармафзори патентдор насб карда намешавад, аммо ба ҷояш нармафзори имконпазири ройгон истифода бурда мешавад. @@ -1606,7 +1638,7 @@ The installer will quit and all changes will be lost. License - + Иҷозатнома @@ -1614,39 +1646,39 @@ The installer will quit and all changes will be lost. URL: %1 - + Нишонии URL: %1 <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>Драйвери %1</strong><br/>аз ҷониби %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>Драйвери графикии %1</strong><br/><font color="Grey">аз ҷониби %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>Васлкунаки браузери %1</strong><br/><font color="Grey">аз ҷониби %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>Кодеки %1</strong><br/><font color="Grey">аз ҷониби %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>Бастаи %1</strong><br/><font color="Grey">аз ҷониби %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">аз ҷониби %2</font> @@ -1656,57 +1688,42 @@ The installer will quit and all changes will be lost. Hide license text - + Пинҳон кардани матни иҷозатнома Show the license text - + Нишон додани матни иҷозатнома Open license agreement in browser. - + Созишномаи иҷозатномавиро дар браузер кушоед. LocalePage - + Region: Минтақа: - + Zone: Шаҳр: - - + + &Change... &Тағйир додан... - - - The system language will be set to %1. - Забони низом ба %1 танзим карда мешавад. - - - - The numbers and dates locale will be set to %1. - Низоми рақамҳо ва санаҳо ба %1 танзим карда мешавад. - - - - Set timezone to %1/%2.<br/> - Танзим кардани минтақаи вақт ба %1/%2.<br/> - LocaleQmlViewStep - + Location Ҷойгиршавӣ @@ -1714,7 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Ҷойгиршавӣ @@ -1724,13 +1741,13 @@ The installer will quit and all changes will be lost. Configuring LUKS key file. - + Танзимкунии файли калиди LUKS. No partitions are defined. - + Ягон қисми диск муайян карда нашуд. @@ -1742,17 +1759,17 @@ The installer will quit and all changes will be lost. Root partition %1 is LUKS but no passphrase has been set. - + Қисми диски реша (root)-и %1 дар LUKS асос меёбад, вале гузарвожа танзим нашудааст. Could not create LUKS key file for root partition %1. - + Файли калидии LUKS барои қисми диски реша (root)-и %1 эҷод карда нашуд. Could not configure LUKS key file on partition %1. - + Файли калидии LUKS дар қисми диски %1 танзим карда нашуд. @@ -1760,7 +1777,7 @@ The installer will quit and all changes will be lost. Generate machine-id. - + Эҷодкунии рақами мушаххаси компютер (machine-id). @@ -1770,17 +1787,19 @@ The installer will quit and all changes will be lost. No root mount point is set for MachineId. - + Нуқтаи васли реша (root) барои MachineId танзим нашудааст. Map - + 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. - + Лутфан, ҷойгиршавии пазируфтаи худро аз рӯи харита интихоб намоед, то ки насбкунанда тавонад танзимоти +маҳаллисозӣ ва минтақаи вақти шуморо пешниҳод намояд. Шумо метавонед танзимоти пешниҳодшударо дар зер дақиқ кунед. Барои ҷустуҷӯи макон дар харита +тугмаҳои +/- ё тугмаи чархии мушро барои калон ва хурд кардани харита истифода баред ё харитаро кашида, ҳаракат кунед. @@ -1789,7 +1808,7 @@ The installer will quit and all changes will be lost. Package selection - + Интихоби бастаҳо @@ -1799,27 +1818,27 @@ The installer will quit and all changes will be lost. Office package - + Бастаҳои идорӣ Browser software - + Нармафзори браузерӣ Browser package - + Бастаҳои браузерӣ Web browser - + Браузери сомона Kernel - + Ҳаста @@ -1895,17 +1914,17 @@ The installer will quit and all changes will be lost. Ba&tch: - + &Баста: <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> - + <html><head/><body><p>Муайянкунандаи бастаро дар ин ҷо ворид намоед. Он дар низоми интихобшуда нигоҳ дошта мешавад.</p></body></html> <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> - + <html><head/><body><h1>Танзимоти OEM</h1><p>Calamares ҳангоми танзимкунии низоми интихобшуда танзимоти OEM-ро истифода мебарад.</p></body></html> @@ -1913,12 +1932,12 @@ The installer will quit and all changes will be lost. OEM Configuration - + Танзимоти OEM Set the OEM Batch Identifier to <code>%1</code>. - + Муайянкунандаи бастаи OEM ба <code>%1</code> танзим карда мешавад. @@ -1931,7 +1950,7 @@ The installer will quit and all changes will be lost. To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + Барои интихоб кардани минтақаи вақт, мутмаин шавед, ки шумо компютерро ба Интернет пайваст кардед. Баъд аз пайваст кардани Интернет, насбкунандаро аз нав оғоз намоед. Шумо метавонед забон ва маҳаллигардонии низомро дар зер эҳтиёткорона танзим намоед. @@ -1954,92 +1973,92 @@ The installer will quit and all changes will be lost. Memory allocation error when setting '%1' - + Хатои ҷойдиҳии ҳофиза ҳангоми танзими '%1' ба миён омад Memory allocation error - + Хатои ҷойдиҳии ҳофиза The password is the same as the old one - + Ниҳонвожаи нав ба ниҳонвожаи куҳна менамояд The password is a palindrome - + Ниҳонвожа аз чапу рост як хел хонда мешавад The password differs with case changes only - + Ниҳонвожа танҳо бо ивази ҳарфҳои хурду калон фарқ мекунад The password is too similar to the old one - + Ниҳонвожаи нав хеле ба ниҳонвожаи куҳна менамояд The password contains the user name in some form - + Ниҳонвожа номи корбареро дар бар мегирад The password contains words from the real name of the user in some form - + Ниҳонвожа калимаҳоро аз номи ҳақиқии шумо ё номи корбар дар бар мегирад The password contains forbidden words in some form - + Ниҳонвожа калимаҳои нораворо дар бар мегирад The password contains less than %1 digits - + Ниҳонвожа кам аз %1 рақамро дар бар мегирад The password contains too few digits - + Ниҳонвожа якчанд рақамро дар бар мегирад The password contains less than %1 uppercase letters - + Ниҳонвожа кам аз %1 ҳарфи калонро дар бар мегирад The password contains too few uppercase letters - + Ниҳонвожа якчанд ҳарфи калонро дар бар мегирад The password contains less than %1 lowercase letters - + Ниҳонвожа кам аз %1 ҳарфи хурдро дар бар мегирад The password contains too few lowercase letters - + Ниҳонвожа якчанд ҳарфи хурдро дар бар мегирад The password contains less than %1 non-alphanumeric characters - + Ниҳонвожа кам аз %1 аломати ғайри алифбоӣ-ададиро дар бар мегирад The password contains too few non-alphanumeric characters - + Ниҳонвожа якчанд аломати ғайри алифбоӣ-ададиро дар бар мегирад The password is shorter than %1 characters - + Ниҳонвожа аз %1 аломат кӯтоҳтар аст @@ -2049,72 +2068,72 @@ The installer will quit and all changes will be lost. The password is just rotated old one - + Ниҳонвожа ба яке аз ниҳонвожаи куҳна менамояд The password contains less than %1 character classes - + Ниҳонвожа кам аз %1 синфи аломатиро дар бар мегирад The password does not contain enough character classes - + Ниҳонвожа синфҳои аломатии кофиро дар бар намегирад The password contains more than %1 same characters consecutively - + Ниҳонвожа зиёда аз %1 аломати ягонаро пай дар пай дар бар мегирад The password contains too many same characters consecutively - + Ниҳонвожа аз ҳад зиёд аломати ягонаро пай дар пай дар бар мегирад The password contains more than %1 characters of the same class consecutively - + Ниҳонвожа зиёда аз %1 аломатро бо синфи ягона пай дар пай дар бар мегирад The password contains too many characters of the same class consecutively - + Ниҳонвожа бисёр аломатро бо синфи ягона пай дар пай дар бар мегирад The password contains monotonic sequence longer than %1 characters - + Ниҳонвожа пайдарпаии ҳаммонандро аз %1 аломат дарозтар дар бар мегирад The password contains too long of a monotonic character sequence - + Ниҳонвожа аломати пайдарпаии ҳаммонанди дарозро дар бар мегирад No password supplied - + Ниҳонвожа ворид нашудааст Cannot obtain random numbers from the RNG device - + Рақамҳои тасодуфӣ аз дастгоҳи RNG гирифта намешаванд Password generation failed - required entropy too low for settings - + Ниҳонвожа эҷод карда нашуд - энтропияи зарурӣ барои танзимот хеле паст аст The password fails the dictionary check - %1 - + Ниҳонвожа аз санҷиши луғавӣ нагузашт - %1 The password fails the dictionary check - + Ниҳонвожа аз санҷиши луғавӣ нагузашт @@ -2129,47 +2148,47 @@ The installer will quit and all changes will be lost. Bad integer value of setting - %1 - + Қимати адади бутуни танзим нодуруст аст - %1 Bad integer value - + Қимати адади бутун нодуруст аст Setting %1 is not of integer type - + Танзими %1 ба адади бутун мувофиқат намекунад Setting is not of integer type - + Танзим ба адади бутун мувофиқат намекунад Setting %1 is not of string type - + Танзими %1 ба сатр мувофиқат намекунад Setting is not of string type - + Танзим ба сатр мувофиқат намекунад Opening the configuration file failed - + Файли танзимӣ кушода нашуд The configuration file is malformed - + Файли танзимӣ дар шакли норуруст мебошад Fatal failure - + Хатои ҷиддӣ @@ -2177,7 +2196,7 @@ The installer will quit and all changes will be lost. Хатои номаълум - + Password is empty Ниҳонвожаро ворид накардед @@ -2197,12 +2216,12 @@ The installer will quit and all changes will be lost. TextLabel - + Тамғаи матнӣ Long Product Description - + Маълумоти муфассал дар бораи маҳсул @@ -2233,7 +2252,7 @@ The installer will quit and all changes will be lost. Description - Тавсиф + Маълумоти муфассал @@ -2251,7 +2270,7 @@ The installer will quit and all changes will be lost. Type here to test your keyboard - Барои санҷидани клавиатура матнро дар ин сатр ворид намоед + Барои санҷидани клавиатура ҳарфҳоро дар ин сатр ворид намоед @@ -2279,7 +2298,7 @@ The installer will quit and all changes will be lost. login - воридшавӣ + Номи корбари шумо @@ -2289,12 +2308,12 @@ The installer will quit and all changes will be lost. <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>Ин ном истифода мешавад, агар шумо компютери худро барои дигарон дар шабака намоён кунед.</small> Computer Name - Номи компютер + Номи компютери шумо @@ -2305,24 +2324,24 @@ The installer will quit and all changes will be lost. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>Ниҳонвожаи ягонаро ду маротиба ворид намоед, то ки он барои хатоҳои имлоӣ тафтиш карда шавад. Ниҳонвожаи хуб бояд дар омезиш калимаҳо, рақамҳо ва аломатҳои китобатиро дар бар гирад, ақаллан аз ҳашт аломат иборат шавад ва мунтазам иваз карда шавад.</small> Password - Ниҳонвожа + Ниҳонвожаро ворид намоед Repeat Password - Ниҳонвожаро такроран ворид намоед + Ниҳонвожаро тасдиқ намоед When this box is checked, password-strength checking is done and you will not be able to use a weak password. - + Агар шумо ин имконро интихоб кунед, қувваи ниҳонвожа тафтиш карда мешавад ва шумо ниҳонвожаи заифро истифода карда наметавонед. @@ -2337,18 +2356,18 @@ The installer will quit and all changes will be lost. Use the same password for the administrator account. - + Ниҳонвожаи ягона барои ҳисоби маъмурӣ истифода бурда шавад. Choose a password for the administrator account. - + Барои ҳисоби маъмурӣ ниҳонвожаеро интихоб намоед. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>Ниҳонвожаи ягонаро ду маротиба ворид намоед, то ки он барои хатоҳои имлоӣ тафтиш карда шавад.</small> @@ -2356,7 +2375,7 @@ The installer will quit and all changes will be lost. Root - Реша + Реша (root) @@ -2470,7 +2489,7 @@ The installer will quit and all changes will be lost. New Volume Group - Эҷод кардани гурӯҳи ҳаҷми нав + Гурӯҳи ҳаҷми нав @@ -2505,7 +2524,7 @@ The installer will quit and all changes will be lost. The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. - + Ҷадвали қисми диск дар %1 аллакай %2 қисми диски асосиро дар бар мегирад ва қисмҳои бештар илова карда намешаванд. Лутфан, як қисми диски асосиро нест кунед ва ба ҷояш қисми диски афзударо илова намоед. @@ -2516,114 +2535,114 @@ The installer will quit and all changes will be lost. Ҷамъкунии иттилооти низомӣ... - + Partitions Қисмҳои диск - + Install %1 <strong>alongside</strong> another operating system. - + Низоми %1 <strong>ҳамроҳи</strong> низоми амалкунандаи дигар насб карда мешавад. - + <strong>Erase</strong> disk and install %1. <strong>Пок кардани</strong> диск ва насб кардани %1. - + <strong>Replace</strong> a partition with %1. <strong>Иваз кардани</strong> қисми диск бо %1. - + <strong>Manual</strong> partitioning. <strong>Ба таври дастӣ</strong> эҷод кардани қисмҳои диск. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + Низоми %1 <strong>ҳамроҳи</strong> низоми амалкунандаи дигар дар диски <strong>%2</strong> (%3) насб карда мешавад. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Пок кардани</strong> диски <strong>%2</strong> (%3) ва насб кардани %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Иваз кардани</strong> қисми диск дар диски <strong>%2</strong> (%3) бо %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + <strong>Ба таври дастӣ</strong> эҷод кардани қисмҳои диск дар диски <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диски <strong>%1</strong> (%2) - + Current: - Ҷорӣ: + Танзимоти ҷорӣ: - + After: - Баъд аз: - - - - No EFI system partition configured - + Баъд аз тағйир: + No EFI system partition configured + Ягон қисми диски низомии EFI танзим нашуд + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Қисми диски низомии EFI барои оғоз кардани %1 лозим аст.<br/><br/>Барои танзим кардани қисми диски низомии EFI, ба қафо гузаред ва низоми файлии FAT32-ро бо нишони фаъолшудаи <strong>%3</strong> ва нуқтаи васли <strong>%2</strong> интихоб кунед ё эҷод намоед.<br/><br/>Шумо метавонед бе танзимкунии қисми диски низомии EFI идома диҳед, аммо низоми шумо метавонад оғоз карда нашавад. + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + Қисми диски низомии EFI барои оғоз кардани %1 лозим аст.<br/><br/>Қисми диск бо нуқтаи васли <strong>%2</strong> танзим карда шуд, аммо нишони он бо имкони <strong>%3</strong> танзим карда нашуд.<br/>Барои танзим кардани нишон ба қафо гузаред ва қисми дискро таҳрир кунед.<br/><br/>Шумо метавонед бе танзимкунии нишон идома диҳед, аммо низоми шумо метавонад оғоз карда нашавад. - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - - - EFI system partition flag not set - - - - - Option to use GPT on BIOS - + Нишони қисми диск дар низоми EFI танзим карда нашуд - A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Option to use GPT on BIOS + Имкони истифодаи GPT дар BIOS - + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + Ҷадвали қисми диски GPT барои ҳамаи низомҳо интихоби беҳтарин мебошад. Насбкунандаи ҷорӣ инчунин барои низомҳои BIOS чунин танзимро дастгирӣ менамояд.<br/><br/>Барои танзим кардани ҷадвали қисми диски GPT дар BIOS, (агар то ҳол танзим накарда бошед) як қадам ба қафо гузаред ва ҷадвали қисми дискро ба GPT танзим кунед, пас қисми диски шаклбандинашударо бо ҳаҷми 8 МБ бо нишони фаъолшудаи <strong>bios_grub</strong> эҷод намоед.<br/><br/>Қисми диски шаклбандинашуда бо ҳаҷми 8 МБ барои оғоз кардани %1 дар низоми BIOS бо GPT лозим аст. + + + Boot partition not encrypted Қисми диски роҳандозӣ рамзгузорӣ нашудааст - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - - - - - has at least one disk device available. - + Қисми диски роҳандозии алоҳида дар як ҷой бо қисми диски реша (root)-и рамзгузоришуда танзим карда шуд, аммо қисми диски роҳандозӣ рамзгузорӣ нашудааст.<br/><br/>Барои ҳамин навъи танзимкунӣ масъалаи амниятӣ аҳамият дорад, зеро ки файлҳои низомии муҳим дар қисми диски рамзгузоринашуда нигоҳ дошта мешаванд.<br/>Агар шумо хоҳед, метавонед идома диҳед, аммо қулфкушоии низоми файлӣ дертар ҳангоми оғози кори низом иҷро карда мешавад.<br/>Барои рамзгзорӣ кардани қисми диски роҳандозӣ ба қафо гузаред ва бо интихоби тугмаи <strong>Рамзгузорӣ</strong> дар равзанаи эҷодкунии қисми диск онро аз нав эҷод намоед. + has at least one disk device available. + ақаллан як дастгоҳи диск дастрас аст. + + + There are no partitions to install on. - + Ягон қисми диск барои насб вуҷуд надорад. @@ -2631,13 +2650,13 @@ The installer will quit and all changes will be lost. Plasma Look-and-Feel Job - + Вазифаи намуди зоҳирии Plasma Could not select KDE Plasma Look-and-Feel package - + Бастаи намуди зоҳирии KDE Plasma интихоб карда намешавад @@ -2650,12 +2669,12 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Лутфан, намуди зоҳириро барои мизи кории KDE Plasma интихоб намоед. Шумо инчунин метавонед ин қадамро ҳозир ба назар нагиред, аммо намуди зоҳириро пас аз анҷоми танзимкунии низом дар вақти дилхоҳ танзим намоед. Барои пешнамоиш кардани намуди зоҳирии интихобшуда, онро зер кунед. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Лутфан, намуди зоҳириро барои мизи кории KDE Plasma интихоб намоед. Шумо инчунин метавонед ин қадамро ҳозир ба назар нагиред, аммо намуди зоҳириро пас аз анҷоми насбкунии низом дар вақти дилхоҳ танзим намоед. Барои пешнамоиш кардани намуди зоҳирии интихобшуда, онро зер кунед. @@ -2669,19 +2688,19 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + Нигоҳдории файлҳо барои коркарди минбаъда ... - + No files configured to save for later. - + Ягон файл барои коркарди минбаъда танзим карда нашуд. - + Not all of the configured files could be preserved. - + На ҳамаи файлҳои танзимшуда метавонанд нигоҳ дошта шаванд. @@ -2690,64 +2709,67 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +Фармони иҷрошуда ягон натиҷа надод. Output: - + +Натиҷа: + External command crashed. - + Фармони берунӣ иҷро нашуд. Command <i>%1</i> crashed. - + Фармони <i>%1</i> иҷро нашуд. External command failed to start. - + Фармони берунӣ оғоз нашуд. Command <i>%1</i> failed to start. - + Фармони <i>%1</i> оғоз нашуд. Internal error when starting command. - + Ҳангоми оғоз кардани фармон хатои дохилӣ ба миён омад. Bad parameters for process job call. - + Имконоти нодуруст барои дархости вазифаи раванд. External command failed to finish. - + Фармони берунӣ ба анҷом нарасид. Command <i>%1</i> failed to finish in %2 seconds. - + Фармони <i>%1</i> дар муддати %2 сония ба анҷом нарасид. External command finished with errors. - + Фармони берунӣ бо хатоҳо ба анҷом расид. Command <i>%1</i> finished with exit code %2. - + Фармони <i>%1</i> бо рамзи барориши %2 ба анҷом расид. @@ -2770,7 +2792,7 @@ Output: unformatted - + шаклбандинашуда @@ -2799,32 +2821,32 @@ Output: Path <pre>%1</pre> must be an absolute path. - + Масири <pre>%1</pre> бояд масири мутлақ бошад. Could not create new random file <pre>%1</pre>. - + Файл тасодуфии нави <pre>%1</pre> эҷод карда нашуд. No product - + Ягон маҳсул нест No description provided. - + Ягон тафсилот нест (no mount point) - + (бе нуқтаи васл) Unpartitioned space or unknown partition table - + Фазои диск бо қисми диски ҷудонашуда ё ҷадвали қисми диски номаълум @@ -2833,7 +2855,8 @@ Output: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/> + Танзимот идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд.</p> @@ -2841,7 +2864,7 @@ Output: Remove live user from target system - + Тоза кардани корбари фаъол аз низоми интихобшуда @@ -2873,22 +2896,22 @@ Output: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + Интихоб кунед, ки %1 дар куҷо бояд насб карда шавад.<br/><font color="red">Огоҳӣ: </font>Ин амал ҳамаи файлҳоро дар қисми диски интихобшуда нест мекунад. The selected item does not appear to be a valid partition. - + Чунин менамояд, ки ҷузъи интихобшуда қисми диски дуруст намебошад. %1 cannot be installed on empty space. Please select an existing partition. - + %1 дар фазои холӣ насб карда намешавад. Лутфан, қисми диски мавҷудбударо интихоб намоед. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 дар қисми диски афзуда насб карда намешавад. Лутфан, қисми диски мавҷудбудаи асосӣ ё мантиқиро интихоб намоед. @@ -2913,24 +2936,24 @@ Output: <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>Қисми диски %1 барои %2 хеле хурд аст. Лутфан, қисми дискеро бо ҳаҷми ақаллан %3 ГБ интихоб намоед. <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>Қисми диски низомии EFI дар дохили низоми ҷорӣ ёфт нашуд. Лутфан, ба қафо гузаред ва барои танзим кардани %1 аз имкони қисмбандии диск ба таври дастӣ истифода баред. <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 дар %2 насб карда мешавад.<br/><font color="red">Огоҳӣ: </font>Ҳамаи иттилоот дар қисми диски %2 гум карда мешавад. The EFI system partition at %1 will be used for starting %2. - + Қисми диски низомии EFI дар %1 барои оғоз кардани %2 истифода бурда мешавад. @@ -2944,13 +2967,15 @@ Output: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Ин компютер ба талаботи камтарин барои насбкунии %1 ҷавобгӯ намебошад.<br/> + Насбкунӣ идома дода намешавад.</p> <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/> + Танзимот идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд.</p> @@ -2958,27 +2983,27 @@ Output: Resize Filesystem Job - + Вазифаи ивазкунии андозаи низоми файлӣ Invalid configuration - + Танзимоти нодуруст The file-system resize job has an invalid configuration and will not run. - + Вазифаи ивазкунии андозаи низоми файлӣ танзимоти нодуруст дорад ва иҷро карда намешавад. KPMCore not Available - + KPMCore дастнорас аст Calamares cannot start KPMCore for the file-system resize job. - + Calamares барои вазифаи ивазкунии андозаи низоми файлӣ KPMCore-ро оғоз карда наметавонад. @@ -2992,34 +3017,34 @@ Output: The filesystem %1 could not be found in this system, and cannot be resized. - + Низоми файлии %1 дар ин низом ёфт нашуд ва андозаи он иваз карда намешавад. The device %1 could not be found in this system, and cannot be resized. - + Дастгоҳи %1 дар ин низом ёфт нашуд ва андозаи он иваз карда намешавад. The filesystem %1 cannot be resized. - + Андозаи низоми файлии %1 иваз карда намешавад. The device %1 cannot be resized. - + Андозаи дастгоҳи %1 иваз карда намешавад. The filesystem %1 must be resized, but cannot. - + Андозаи низоми файлии %1 бояд иваз карда шавад, аммо иваз карда намешавад. The device %1 must be resized, but cannot - + Андозаи дастгоҳи %1 бояд иваз карда шавад, аммо иваз карда намешавад. @@ -3032,17 +3057,17 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Андозаи қисми диск бо ҳаҷми <strong>%2MiB</strong> - <strong>%1</strong> ба ҳаҷми<strong>%3MiB</strong> иваз карда мешавад. Resizing %2MiB partition %1 to %3MiB. - + Ивазкунии андозаи қисми диски %1 бо ҳаҷми %2MiB то ҳаҷми %3MiB. The installer failed to resize partition %1 on disk '%2'. - + Насбкунанда андозаи қисми диски %1-ро дар диски '%2' иваз карда натавонист. @@ -3077,7 +3102,7 @@ Output: For best results, please ensure that this computer: - + Барои натиҷаҳои беҳтарин, мутмаин шавед, ки дар ин компютер: @@ -3090,22 +3115,22 @@ Output: This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Ин компютер ба талаботи камтарин барои танзимкунии %1 ҷавобгӯ намебошад.<br/>Танзимот идома дода намешавад. <a href="#details">Тафсилот...</a> This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Ин компютер ба талаботи камтарин барои насбкунии %1 ҷавобгӯ намебошад..<br/>Насбкунӣ идома дода намешавад. <a href="#details">Тафсилот...</a> This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. - + Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/>Танзимот идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/>Насбкунӣ идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. @@ -3118,12 +3143,12 @@ Output: Scanning storage devices... - + Ҷустуҷӯи дастгоҳҳои захирагоҳ... Partitioning - + Қисмбандии диск @@ -3131,17 +3156,17 @@ Output: Set hostname %1 - + Танзими номи мизбони %1 Set hostname <strong>%1</strong>. - + Танзими номи мизбони <strong>%1</strong>. Setting hostname %1. - + Танзимкунии номи мизбони %1. @@ -3153,37 +3178,37 @@ Output: Cannot write hostname to target system - + Номи мизбон ба низоми интихобшуда сабт нашуд SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - Танзимкунии намунаи клавиатура ба %1, тарҳбандӣ ба %2-%3 - - - - Failed to write keyboard configuration for the virtual console. - + Намунаи клавиатура ба %1 ва тарҳбандӣ ба %2-%3 танзим карда мешавад - - + Failed to write keyboard configuration for the virtual console. + Танзимоти клавиатура барои консоли маҷозӣ сабт нашуд. + + + + + Failed to write to %1 - + Ба %1 сабт нашуд - + Failed to write keyboard configuration for X11. - + Танзимоти клавиатура барои X11 сабт нашуд. - + Failed to write keyboard configuration to existing /etc/default directory. - + Танзимоти клавиатура ба феҳристи мавҷудбудаи /etc/default сабт нашуд. @@ -3191,82 +3216,82 @@ Output: Set flags on partition %1. - + Танзим кардани нишонҳо дар қисми диски %1. Set flags on %1MiB %2 partition. - + Танзим кардани нишонҳо дар қисми диски %1MiB %2. Set flags on new partition. - + Танзим кардани нишонҳо дар қисми диски нав. Clear flags on partition <strong>%1</strong>. - + Пок кардани нишонҳо дар қисми диски <strong>%1</strong>. Clear flags on %1MiB <strong>%2</strong> partition. - + Пок кардани нишонҳо дар қисми диски <strong>%2</strong> %1MiB. Clear flags on new partition. - + Пок кардани нишонҳо дар қисми диски нав. Flag partition <strong>%1</strong> as <strong>%2</strong>. - + Нишони қисми диски <strong>%1</strong> ҳамчун <strong>%2</strong> танзим карда мешавад. Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + Нишони қисми диски <strong>%2</strong> бо ҳаҷми %1MiB <strong>%3</strong> танзим карда мешавад. Flag new partition as <strong>%1</strong>. - + Нишони қисми диски нав ҳамчун <strong>%1</strong> танзим карда мешавад. Clearing flags on partition <strong>%1</strong>. - + Поксозии нишонҳо дар қисми диски <strong>%1</strong>. Clearing flags on %1MiB <strong>%2</strong> partition. - + Поксозии нишонҳо дар қисми диски <strong>%2</strong> бо ҳаҷми %1MiB. Clearing flags on new partition. - + Поксозии нишонҳо дар қисми диски нав Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Танзимкунии нишонҳои <strong>%2</strong> дар қисми диски <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + Танзимкунии нишонҳои <strong>%3</strong> дар қисми диски <strong>%2</strong> бо ҳаҷми %1MiB. Setting flags <strong>%1</strong> on new partition. - + Танзимкунии нишонҳои <strong>%1</strong> дар қисми диски нав The installer failed to set flags on partition %1. - + Насбкунанда нишонҳоро дар қисми диски %1 танзим карда натавонист. @@ -3284,22 +3309,22 @@ Output: Bad destination system path. - + Масири ҷойи таъиноти низомӣ нодуруст аст. rootMountPoint is %1 - + rootMountPoint: %1 Cannot disable root account. - + Ҳисоби реша (root) ғайрифаъол карда намешавад. passwd terminated with error code %1. - + passwd бо рамзи хатои %1 қатъ шуд. @@ -3309,7 +3334,7 @@ Output: usermod terminated with error code %1. - + usermod бо рамзи хатои %1 қатъ шуд. @@ -3317,37 +3342,37 @@ Output: Set timezone to %1/%2 - + Минтақаи вақт ба %1/%2 танзим карда мешавад Cannot access selected timezone path. - + Масири минтақаи вақти интихобшуда дастнорас аст Bad path: %1 - + Масири нодуруст: %1 Cannot set timezone. - + Минтақаи вақт танзим карда намешавад Link creation failed, target: %1; link name: %2 - + Пайванд эҷод карда нашуд, вазифа: %1; номи пайванд: %2 Cannot set timezone, - + Минтақаи вақт танзим карда намешавад. Cannot open /etc/timezone for writing - + Файли /etc/timezone барои сабт кушода намешавад @@ -3355,7 +3380,7 @@ Output: Shell Processes Job - + Вазифаи равандҳои восит @@ -3364,7 +3389,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -3372,12 +3397,12 @@ Output: This is an overview of what will happen once you start the setup procedure. - + Дар ин ҷамъбаст шумо мебинед, ки чӣ мешавад пас аз он ки шумо раванди танзимкуниро оғоз мекунед. This is an overview of what will happen once you start the install procedure. - + Дар ин ҷамъбаст шумо мебинед, ки чӣ мешавад пас аз он ки шумо раванди насбкуниро оғоз мекунед. @@ -3393,80 +3418,80 @@ Output: Installation feedback - + Алоқаи бозгашти насбкунӣ Sending installation feedback. - + Фиристодани алоқаи бозгашти насбкунӣ. Internal error in install-tracking. - + Хатои дохилӣ дар пайгирии насб. HTTP request timed out. - + Вақти дархости HTTP ба анҷом расид. TrackingKUserFeedbackJob - + KDE user feedback Изҳори назари корбари KDE - + Configuring KDE user feedback. Танзимкунии изҳори назари корбари KDE. - - + + Error in KDE user feedback configuration. - + Хато дар танзимкунии изҳори назари корбари KDE. - + Could not configure KDE user feedback correctly, script error %1. - + Изҳори назари корбари KDE ба таври дуруст танзим карда нашуд. Хатои нақш: %1. - + Could not configure KDE user feedback correctly, Calamares error %1. - + Изҳори назари корбари KDE ба таври дуруст танзим карда нашуд. Хатои Calamares: %1. TrackingMachineUpdateManagerJob - + Machine feedback - + Низоми изҳори назар ва алоқаи бозгашт - + Configuring machine feedback. - + Танзимкунии алоқаи бозгашти компютерӣ. - - + + Error in machine feedback configuration. - + Хато дар танзимкунии алоқаи бозгашти компютерӣ. - + Could not configure machine feedback correctly, script error %1. - + Алоқаи бозгашти компютерӣ ба таври дуруст танзим карда нашуд. Хатои нақш: %1. - + Could not configure machine feedback correctly, Calamares error %1. - + Алоқаи бозгашти компютерӣ ба таври дуруст танзим карда нашуд. Хатои Calamares: %1. @@ -3479,37 +3504,37 @@ Output: Placeholder - + Пуркунандаи фазо <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Дар ин ҷо зер кунед, то ки <span style=" font-weight:600;">ягон маълумот</span> дар бораи насбкунии шумо фиристода нашавад.</p></body></html> <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Барои гирифтани маълумоти муфассал оид ба изҳори назари корбар, дар ин ҷо зер кунед</span></a></p></body></html> Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. - + Пайгирӣ ба %1 барои дидани шумораи насбҳо, намудҳои сахтафзорҳо ва маҷмӯаи барномаҳои истифодашуда кумак мерасонад. Барои дидани маълумоте, ки фиристода мешавад нишонаи кумакро дар назди ҳар як мавод зер кунед. By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. - + Агар ин имконро интихоб кунед, шумо маълумотро дар бораи насбкунӣ ва сахтафзори худ мефиристонед. Ин маълумот <b>танҳо як маротиба</b> баъд аз анҷоми насбкунӣ фиристода мешавад. By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + Агар ин имконро интихоб кунед, шумо маълумотро ба таври мунтазам дар бораи насбкунӣ, сахтафзор ва барномаҳои <b>компютери</b> худ ба %1 мефиристонед. By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. - + Агар ин имконро интихоб кунед, шумо маълумотро ба таври мунтазам дар бораи насбкунӣ, сахтафзор ва барномаҳои <b>корбари</b> худ ба %1 мефиристонед. @@ -3517,61 +3542,31 @@ Output: Feedback - Изҳори назар + Изҳори назар ва алоқаи бозгашт UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>Агар зиёда аз як корбар ин компютерро истифода барад, шумо метавонед баъд аз танзимкунӣ якчанд ҳисобро эҷод намоед.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - + <small>Агар зиёда аз як корбар ин компютерро истифода барад, шумо метавонед баъд аз насбкунӣ якчанд ҳисобро эҷод намоед.</small> - - Your username is too long. - Номи корбари шумо хеле дароз аст. - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! - + Ниҳонвожаҳои шумо мувофиқат намекунанд! UsersViewStep - + Users Корбарон @@ -3599,7 +3594,7 @@ Output: List of Physical Volumes - + Рӯйхати ҳаҷмҳои ҷисмонӣ @@ -3614,7 +3609,7 @@ Output: Physical Extent Size: - + Андозаи меъёри ҷисмонӣ: @@ -3738,7 +3733,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>барои %3</strong><br/><br/>Ҳуқуқи муаллиф 2014-2017 Тео Марҷавак &lt;teo@kde.org&gt;<br/>Ҳуқуқи муаллиф 2017-2020 Адриан де Грут &lt;groot@kde.org&gt;<br/>Ташаккури зиёд ба <a href="https://calamares.io/team/">дастаи Calamares</a> ва <a href="https://www.transifex.com/calamares/calamares/">гурӯҳи тарҷумонони Calamares</a> (тарҷумаи тоҷикӣ аз ҷониби Виктор Ибрагимов &lt;victor.ibragimov@gmail.com&gt;).<br/><br/>Барномарезии насбкунандаи <a href="https://calamares.io/">Calamares</a> аз тарафи <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software дастгирӣ карда мешавад. @@ -3773,7 +3768,17 @@ Output: development is sponsored by <br/> <a href='http://www.blue-systems.com/'>Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/> + <strong>%2<br/> + барои %3</strong><br/><br/> + Ҳуқуқи муаллиф 2014-2017 Тео Марҷавак &lt;teo@kde.org&gt;<br/> + Ҳуқуқи муаллиф 2017-2020 Адриан де Грут &lt;groot@kde.org&gt;<br/> + Ташаккури зиёд ба <a href='https://calamares.io/team/'>дастаи Calamares</a> + ва <a href='https://www.transifex.com/calamares/calamares/'>гурӯҳи тарҷумонони Calamares</a> (тарҷумаи тоҷикӣ аз ҷониби Виктор Ибрагимов &lt;victor.ibragimov@gmail.com&gt;).<br/><br/> + Барномарезии насбкунандаи <a href='https://calamares.io/'>Calamares</a> + аз тарафи <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software дастгирӣ карда мешавад. @@ -3784,21 +3789,21 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Забонҳо</h1> </br> Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад. Танзими ҷорӣ: <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Маҳаллигардонӣ</h1> </br> Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад. Танзими ҷорӣ: <strong>%1</strong>. - + Back Ба қафо @@ -3806,44 +3811,44 @@ Output: keyboardq - + Keyboard Model Намунаи клавиатура - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Намунаи клавиатураи пазируфтаи худро интихоб кунед ё клавиатураи муқаррареро дар асоси сахтафзори муайяншуда истифода баред - + Refresh Навсозӣ кардан - - + + Layouts Тарҳбандиҳо - - + + Keyboard Layout Тарҳбандии клавиатура - + Models Намунаҳо - + Variants Имконот - + Test your keyboard Клавиатураи худро санҷед @@ -3851,17 +3856,7 @@ Output: localeq - - System language set to %1 - Забони низом ба %1 танзим шуд - - - - Numbers and dates locale set to %1 - Низоми рақамҳо ва санаҳо ба %1 танзим шуд - - - + Change Тағйир додан @@ -3901,7 +3896,27 @@ Output: </ul> <p>The vertical scrollbar is adjustable, current width set to 10.</p> - + <h3>%1</h3> + <p>Ин файли QML-и намунавие мебошад, ки имконотро дар шакли RichText бо муҳтавои зершаванда нишон медиҳад.</p> + + <p>Файли QML бо шакли RichText метавонад барчаспҳои HTML-ро истифода барад, аммо муҳтавои зершаванда барои экранҳои ламсӣ мувофиқ мебошад.</p> + + <p><b>Ин матни ғафс аст</b></p> + <p><i>Ин матни хам аст</i></p> + <p><u>Ин матни бо зерхат аст</u></p> + <p><center>Ин матн дар марказ ҷойгир мешавад.</center></p> + <p><s>Ин матни хатзадашуда аст</s></p> + + <p>Мисоли рамз: + <code>ls -l /home</code></p> + + <p><b>Рӯйхатҳо:</b></p> + <ul> + <li>Низомҳои Intel CPU</li> + <li>Низомҳои AMD CPU</li> + </ul> + + <p>Навори ҳаракати амудӣ танзимпазир аст, паҳнии ҷорӣ ба 10 танзим шудааст.</p> diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 5cd67740a..b71d0af8f 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -255,170 +255,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed การติดตั้งล้มเหลว - + Would you like to paste the install log to the web? - + Error ข้อผิดพลาด - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? ดำเนินการติดตั้งต่อหรือไม่? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ตัวติดตั้ง %1 กำลังพยายามที่จะทำการเปลี่ยนแปลงในดิสก์ของคุณเพื่อติดตั้ง %2<br/><strong>คุณจะไม่สามารถยกเลิกการเปลี่ยนแปลงเหล่านี้ได้</strong> - + &Set up now - + &Install now &ติดตั้งตอนนี้ - + Go &back กลั&บไป - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next &N ถัดไป - + &Back &B ย้อนกลับ - + &Done - + &Cancel &C ยกเลิก - + Cancel setup? - + Cancel installation? ยกเลิกการติดตั้ง? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. คุณต้องการยกเลิกกระบวนการติดตั้งที่กำลังดำเนินการอยู่หรือไม่? @@ -480,12 +480,12 @@ The installer will quit and all changes will be lost. &C ยกเลิก - + %1 Setup Program - + %1 Installer ตัวติดตั้ง %1 @@ -512,9 +512,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: ปัจจุบัน: @@ -525,115 +525,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>กำหนดพาร์ทิชันด้วยตนเอง</strong><br/>คุณสามารถสร้างหรือเปลี่ยนขนาดของพาร์ทิชันได้ด้วยตนเอง - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: ที่อยู่บูตโหลดเดอร์: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. ไม่พบพาร์ทิชันสำหรับระบบ EFI อยู่ที่ไหนเลยในระบบนี้ กรุณากลับไปเลือกใช้การแบ่งพาร์ทิชันด้วยตนเอง เพื่อติดตั้ง %1 - + The EFI system partition at %1 will be used for starting %2. พาร์ทิชันสำหรับระบบ EFI ที่ %1 จะถูกใช้เพื่อเริ่มต้น %2 - + EFI system partition: พาร์ทิชันสำหรับระบบ EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>ติดตั้งควบคู่กับระบบปฏิบัติการเดิม</strong><br/>ตัวติดตั้งจะลดเนื้อที่พาร์ทิชันเพื่อให้มีเนื้อที่สำหรับ %1 - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>แทนที่พาร์ทิชัน</strong><br/>แทนที่พาร์ทิชันด้วย %1 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. อุปกรณ์จัดเก็บนี้มีระบบปฏิบัติการ %1 อยู่ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. อุปกรณ์จัดเก็บนี้มีระบบปฏิบัติการอยู่แล้ว คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. อุปกรณ์จัดเก็บนี้มีหลายระบบปฏิบัติการ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -641,17 +641,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 ล้างจุดเชื่อมต่อสำหรับการแบ่งพาร์ทิชันบน %1 - + Clearing mounts for partitioning operations on %1. กำลังล้างจุดเชื่อมต่อสำหรับการดำเนินงานเกี่ยวกับพาร์ทิชันบน %1 - + Cleared all mounts for %1 ล้างจุดเชื่อมต่อทั้งหมดแล้วสำหรับ %1 @@ -659,22 +659,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. ล้างจุดเชื่อมต่อชั่วคราวทั้งหมด - + Clearing all temporary mounts. กำลังล้างจุดเชื่อมต่อชั่วคราวทุกจุด - + Cannot get list of temporary mounts. ไม่สามารถดึงรายการจุดเชื่อมต่อชั่วคราวได้ - + Cleared all temporary mounts. จุดเชื่อมต่อชั่วคราวทั้งหมดถูกล้างแล้ว @@ -701,30 +701,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> ตั้งค่าโมเดลแป้นพิมพ์เป็น %1<br/> - + Set keyboard layout to %1/%2. ตั้งค่าแบบแป้นพิมพ์เป็น %1/%2 - + + Set timezone to %1/%2. + + + + The system language will be set to %1. ภาษาของระบบจะถูกตั้งค่าเป็น %1 - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - ตั้งโซนเวลาเป็น %1/%2<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -790,6 +790,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + ชื่อผู้ใช้ของคุณยาวเกินไป + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + ชื่อโฮสต์ของคุณสั้นเกินไป + + + + Your hostname is too long. + ชื่อโฮสต์ของคุณยาวเกินไป + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -954,40 +994,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 สร้างผู้ใช้ %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - ไม่สามารถเขียนไดเรคทอรี Sudoers ได้ - - - + Cannot create sudoers file for writing. ไม่สามารถสร้างไฟล์ sudoers เพื่อเขียนได้ - + Cannot chmod sudoers file. ไม่สามารถ chmod ไฟล์ sudoers - - - Cannot open groups file for reading. - ไม่สามารถเปิดไฟล์ groups เพื่ออ่านได้ - CreateVolumeGroupDialog @@ -1225,37 +1255,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information ตั้งค่าข้อมูลพาร์ทิชัน - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1506,12 +1536,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> ตั้งค่าโมเดลแป้นพิมพ์เป็น %1<br/> - + Set keyboard layout to %1/%2. ตั้งค่าแบบแป้นพิมพ์เป็น %1/%2 @@ -1568,32 +1598,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1669,41 +1699,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: ภูมิภาค: - + Zone: โซน: - - + + &Change... &C เปลี่ยนแปลง... - - - The system language will be set to %1. - ภาษาของระบบจะถูกตั้งค่าเป็น %1 - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - ตั้งโซนเวลาเป็น %1/%2<br/> - LocaleQmlViewStep - + Location ตำแหน่ง @@ -1711,7 +1726,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location ตำแหน่ง @@ -1773,7 +1788,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2174,7 +2189,7 @@ The installer will quit and all changes will be lost. ข้อผิดพลาดที่ไม่รู้จัก - + Password is empty รหัสผ่านว่าง @@ -2513,112 +2528,112 @@ The installer will quit and all changes will be lost. กำลังรวบรวมข้อมูลของระบบ... - + Partitions พาร์ทิชัน - + Install %1 <strong>alongside</strong> another operating system. ติดตั้ง %1 <strong>ควบคู่</strong>กับระบบปฏิบัติการเดิม - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: ปัจจุบัน: - + After: หลัง: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2666,17 +2681,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3156,29 +3171,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 ตั้งค่าโมเดลแป้นพิมพ์เป็น %1 แบบ %2-%3 - + Failed to write keyboard configuration for the virtual console. ไม่สามารถเขียนการตั้งค่าแป้นพิมพ์สำหรับคอนโซลเสมือน - - - + + + Failed to write to %1 ไม่สามารถเขียนไปที่ %1 - + Failed to write keyboard configuration for X11. ไม่สามาถเขียนการตั้งค่าแป้นพิมพ์สำหรับ X11 - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3411,28 +3426,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3440,28 +3455,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3520,47 +3535,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - ชื่อผู้ใช้ของคุณยาวเกินไป - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - ชื่อโฮสต์ของคุณสั้นเกินไป - - - - Your hostname is too long. - ชื่อโฮสต์ของคุณยาวเกินไป - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! รหัสผ่านของคุณไม่ตรงกัน! @@ -3568,7 +3553,7 @@ Output: UsersViewStep - + Users ผู้ใช้ @@ -3781,19 +3766,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3801,44 +3786,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3846,17 +3831,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 20203fd02..281dc1c0f 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -220,7 +220,7 @@ QML Adımı <i>%1</i>. - + Loading failed. Yükleme başarısız. @@ -257,171 +257,171 @@ Calamares::ViewManager - + Setup Failed Kurulum Başarısız - + Installation Failed Kurulum Başarısız - + Would you like to paste the install log to the web? Kurulum günlüğünü web'e yapıştırmak ister misiniz? - + Error Hata - - + + &Yes &Evet - - + + &No &Hayır - + &Close &Kapat - + Install Log Paste URL Günlük Yapıştırma URL'sini Yükle - + The upload was unsuccessful. No web-paste was done. Yükleme başarısız oldu. Web yapıştırması yapılmadı. - + Calamares Initialization Failed Calamares Başlatılamadı - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 yüklenemedi. Calamares yapılandırılmış modüllerin bazılarını yükleyemedi. Bu, Calamares'in kullandığınız dağıtıma uyarlamasından kaynaklanan bir sorundur. - + <br/>The following modules could not be loaded: <br/>Aşağıdaki modüller yüklenemedi: - + Continue with setup? Kuruluma devam et? - + Continue with installation? Kurulum devam etsin mi? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sistem kurulum uygulaması,%2 ayarlamak için diskinizde değişiklik yapmak üzere. <br/><strong>Bu değişiklikleri geri alamayacaksınız.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sistem yükleyici %2 yüklemek için diskinizde değişiklik yapacak.<br/><strong>Bu değişiklikleri geri almak mümkün olmayacak.</strong> - + &Set up now &Şimdi kur - + &Install now &Şimdi yükle - + Go &back Geri &git - + &Set up &Kur - + &Install &Yükle - + Setup is complete. Close the setup program. Kurulum tamamlandı. Kurulum programını kapatın. - + The installation is complete. Close the installer. Yükleme işi tamamlandı. Sistem yükleyiciyi kapatın. - + Cancel setup without changing the system. Sistemi değiştirmeden kurulumu iptal edin. - + Cancel installation without changing the system. Sistemi değiştirmeden kurulumu iptal edin. - + &Next &Sonraki - + &Back &Geri - + &Done &Tamam - + &Cancel &Vazgeç - + Cancel setup? Kurulum iptal edilsin mi? - + Cancel installation? Yüklemeyi iptal et? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Mevcut kurulum işlemini gerçekten iptal etmek istiyor musunuz? Kurulum uygulaması sonlandırılacak ve tüm değişiklikler kaybedilecek. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Yükleme işlemini gerçekten iptal etmek istiyor musunuz? @@ -484,12 +484,12 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. &Vazgeç - + %1 Setup Program %1 Kurulum Uygulaması - + %1 Installer %1 Yükleniyor @@ -516,9 +516,9 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - - - + + + Current: Geçerli: @@ -529,116 +529,116 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>El ile bölümleme</strong><br/> Bölümleri kendiniz oluşturabilir veya yeniden boyutlandırabilirsiniz. Bir GPT disk bölümü tablosu ve <strong>fat32 512Mb / önyükleme disk bölümü olması UEFI yüklemeleri için bir gerekliliktir,</strong> ya da mevcut bir bölüm varsa biçimlendirmeden onu kullanın veya bir tane oluşturun. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Elle bölümleme</strong><br/>Bölümler oluşturabilir ve boyutlandırabilirsiniz. - + Reuse %1 as home partition for %2. %2 ev bölümü olarak %1 yeniden kullanılsın. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Küçültmek için bir bölüm seçip alttaki çubuğu sürükleyerek boyutlandır</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1, %2MB'a küçülecek ve %4 için yeni bir %3MB disk bölümü oluşturulacak. - + Boot loader location: Önyükleyici konumu: - + <strong>Select a partition to install on</strong> <strong>Yükleyeceğin disk bölümünü seç</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Bu sistemde EFI disk bölümü bulunamadı. Lütfen geri dönün ve %1 kurmak için gelişmiş kurulum seçeneğini kullanın. - + The EFI system partition at %1 will be used for starting %2. %1 EFI sistem bölümü %2 başlatmak için kullanılacaktır. - + EFI system partition: EFI sistem bölümü: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde yüklü herhangi bir işletim sistemi tespit etmedik. Ne yapmak istersiniz?<br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Diski sil</strong><br/>Seçili depolama bölümündeki mevcut veriler şu anda <font color="red">silinecektir.</font> - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Yanına yükleyin</strong><br/>Sistem yükleyici disk bölümünü küçülterek %1 için yer açacak. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Varolan bir disk bölümüne kur</strong><br/>Varolan bir disk bölümü üzerine %1 kur. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde %1 vardır. Ne yapmak istersiniz?<br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde bir işletim sistemi yüklü. Ne yapmak istersiniz? <br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde birden fazla işletim sistemi var. Ne yapmak istersiniz? <br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - + No Swap Takas alanı yok - + Reuse Swap Yeniden takas alanı - + Swap (no Hibernate) Takas Alanı (uyku modu yok) - + Swap (with Hibernate) Takas Alanı (uyku moduyla) - + Swap to file Takas alanı dosyası @@ -646,17 +646,17 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 bölümleme işlemleri için sorunsuz bağla - + Clearing mounts for partitioning operations on %1. %1 bölümleme işlemleri için bağlama noktaları temizleniyor. - + Cleared all mounts for %1 %1 için tüm bağlı bölümler ayrıldı @@ -664,22 +664,22 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. ClearTempMountsJob - + Clear all temporary mounts. Tüm geçici bağları temizleyin. - + Clearing all temporary mounts. Geçici olarak bağlananlar temizleniyor. - + Cannot get list of temporary mounts. Geçici bağların listesi alınamadı. - + Cleared all temporary mounts. Tüm geçici bağlar temizlendi. @@ -706,30 +706,30 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. Config - + Set keyboard model to %1.<br/> %1 Klavye düzeni olarak seçildi.<br/> - + Set keyboard layout to %1/%2. Alt klavye türevi olarak %1/%2 seçildi. - + + Set timezone to %1/%2. + %1/%2 Zaman dilimi ayarla. + + + The system language will be set to %1. Sistem dili %1 olarak ayarlanacak. - + The numbers and dates locale will be set to %1. Sayılar ve günler için sistem yereli %1 olarak ayarlanacak. - - - Set timezone to %1/%2.<br/> - Bölge ve zaman dilimi %1/%2 olarak ayarlandı.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -797,6 +797,46 @@ Kurulum devam edebilir fakat bazı özellikler devre dışı kalabilir.<h1>Welcome to the %1 installer</h1> <h1>%1 Sistem Yükleyiciye Hoşgeldiniz</h1> + + + Your username is too long. + Kullanıcı adınız çok uzun. + + + + '%1' is not allowed as username. + '%1' kullanıcı adı olarak izin verilmiyor. + + + + Your username must start with a lowercase letter or underscore. + Kullanıcı adınız küçük harf veya alt çizgi ile başlamalıdır. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Sadece küçük harflere, sayılara, alt çizgi ve kısa çizgilere izin verilir. + + + + Your hostname is too short. + Makine adınız çok kısa. + + + + Your hostname is too long. + Makine adınız çok uzun. + + + + '%1' is not allowed as hostname. + '%1' ana bilgisayar adı olarak kullanılamaz. + + + + Only letters, numbers, underscore and hyphen are allowed. + Sadece harfler, rakamlar, alt çizgi ve kısa çizgi izin verilir. + ContextualProcessJob @@ -961,40 +1001,30 @@ Kurulum devam edebilir fakat bazı özellikler devre dışı kalabilir. CreateUserJob - + Create user %1 %1 Kullanıcısı oluşturuluyor... - + Create user <strong>%1</strong>. <strong>%1</strong> kullanıcı oluştur. - + Creating user %1. %1 Kullanıcısı oluşturuluyor... - - Sudoers dir is not writable. - Sudoers dosyası yazılabilir değil. - - - + Cannot create sudoers file for writing. sudoers dosyası oluşturulamadı ve yazılamadı. - + Cannot chmod sudoers file. Sudoers dosya izinleri ayarlanamadı. - - - Cannot open groups file for reading. - groups dosyası okunamadı. - CreateVolumeGroupDialog @@ -1232,37 +1262,37 @@ Kurulum devam edebilir fakat bazı özellikler devre dışı kalabilir. FillGlobalStorageJob - + Set partition information Bölüm bilgilendirmesini ayarla - + Install %1 on <strong>new</strong> %2 system partition. %2 <strong>yeni</strong> sistem diskine %1 yükle. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. %2 <strong>yeni</strong> disk bölümünü <strong>%1</strong> ile ayarlayıp bağla. - + Install %2 on %3 system partition <strong>%1</strong>. %3 <strong>%1</strong> sistem diskine %2 yükle. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 diskine<strong>%1</strong> ile <strong>%2</strong> bağlama noktası ayarla. - + Install boot loader on <strong>%1</strong>. <strong>%1</strong> üzerine sistem ön yükleyiciyi kur. - + Setting up mount points. Bağlama noktalarını ayarla. @@ -1514,12 +1544,12 @@ Sistem güç kaynağına bağlı değil. KeyboardPage - + Set keyboard model to %1.<br/> %1 Klavye düzeni olarak seçildi.<br/> - + Set keyboard layout to %1/%2. Alt klavye türevi olarak %1/%2 seçildi. @@ -1576,32 +1606,32 @@ Sistem güç kaynağına bağlı değil. <h1>Lisans Anlaşması</h1> - + I accept the terms and conditions above. Yukarıdaki şartları ve koşulları kabul ediyorum. - + Please review the End User License Agreements (EULAs). Lütfen Son Kullanıcı Lisans Sözleşmelerini (EULA) inceleyin. - + This setup procedure will install proprietary software that is subject to licensing terms. Bu kurulum prosedürü, lisanslama koşullarına tabi olan tescilli yazılımı kuracaktır. - + If you do not agree with the terms, the setup procedure cannot continue. Koşulları kabul etmiyorsanız kurulum prosedürü devam edemez. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Bu kurulum prosedürü, ek özellikler sağlamak ve kullanıcı deneyimini geliştirmek için lisans koşullarına tabi olan özel yazılımlar yükleyebilir. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Koşulları kabul etmiyorsanız, tescilli yazılım yüklenmeyecek ve bunun yerine açık kaynak alternatifleri kullanılacaktır. @@ -1677,41 +1707,26 @@ Sistem güç kaynağına bağlı değil. LocalePage - + Region: Bölge: - + Zone: Şehir: - - + + &Change... &Değiştir... - - - The system language will be set to %1. - Sistem dili %1 olarak ayarlanacak. - - - - The numbers and dates locale will be set to %1. - Sayılar ve günler için sistem yereli %1 olarak ayarlanacak. - - - - Set timezone to %1/%2.<br/> - Bölge ve zaman dilimi %1/%2 olarak ayarlandı.<br/> - LocaleQmlViewStep - + Location Sistem Yereli @@ -1719,7 +1734,7 @@ Sistem güç kaynağına bağlı değil. LocaleViewStep - + Location Sistem Yereli @@ -1781,7 +1796,7 @@ Sistem güç kaynağına bağlı değil. Map - + 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. @@ -2184,7 +2199,7 @@ Sistem güç kaynağına bağlı değil. Bilinmeyen hata - + Password is empty Şifre boş @@ -2523,113 +2538,113 @@ Sistem güç kaynağına bağlı değil. Sistem bilgileri toplanıyor... - + Partitions Disk Bölümleme - + Install %1 <strong>alongside</strong> another operating system. Diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk and install %1. Diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition with %1. %1 ile disk bölümünün üzerine <strong>yaz</strong>. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> bölümleme. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). <strong>%2</strong> (%3) diskindeki diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3) diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) disk bölümünün %1 ile <strong>üzerine yaz</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) disk bölümünü <strong>manuel</strong> bölümle. - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Geçerli: - + After: Sonra: - + No EFI system partition configured EFI sistem bölümü yapılandırılmamış - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 başlatmak için bir EFI sistem disk bölümü gereklidir.<br/><br/>Bir EFI sistem disk bölümü yapılandırmak için geri dönün ve <strong>%3</strong> bayrağı etkin ve <strong>%2</strong>bağlama noktası ile bir FAT32 dosya sistemi seçin veya oluşturun.<br/><br/>Bir EFI sistem disk bölümü kurmadan devam edebilirsiniz, ancak sisteminiz başlatılamayabilir. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 başlatmak için bir EFI sistem disk bölümü gereklidir.<br/><br/>Bir disk bölümü bağlama noktası <strong>%2</strong> olarak yapılandırıldı fakat <strong>%3</strong>bayrağı ayarlanmadı.<br/>Bayrağı ayarlamak için, geri dönün ve disk bölümü düzenleyin.<br/><br/>Sen bayrağı ayarlamadan devam edebilirsin fakat işletim sistemi başlatılamayabilir. - + EFI system partition flag not set EFI sistem bölümü bayrağı ayarlanmadı - + Option to use GPT on BIOS BIOS'ta GPT kullanma seçeneği - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT disk bölümü tablosu tüm sistemler için en iyi seçenektir. Bu yükleyici klasik BIOS sistemler için de böyle bir kurulumu destekler. <br/><br/>Klasik BIOS sistemlerde disk bölümü tablosu GPT tipinde yapılandırmak için (daha önce yapılmadıysa) geri gidin ve disk bölümü tablosu GPT olarak ayarlayın ve ardından <strong>bios_grub</strong> bayrağı ile etiketlenmiş 8 MB biçimlendirilmemiş bir disk bölümü oluşturun.<br/> <br/>GPT disk yapısı ile kurulan klasik BIOS sistemi %1 başlatmak için biçimlendirilmemiş 8 MB bir disk bölümü gereklidir. - + Boot partition not encrypted Önyükleme yani boot diski şifrelenmedi - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Ayrı bir önyükleme yani boot disk bölümü, şifrenmiş bir kök bölüm ile birlikte ayarlandı, fakat önyükleme bölümü şifrelenmedi.<br/><br/>Bu tip kurulumun güvenlik endişeleri vardır, çünkü önemli sistem dosyaları şifrelenmemiş bir bölümde saklanır.<br/>İsterseniz kuruluma devam edebilirsiniz, fakat dosya sistemi kilidi daha sonra sistem başlatılırken açılacak.<br/> Önyükleme bölümünü şifrelemek için geri dönün ve bölüm oluşturma penceresinde <strong>Şifreleme</strong>seçeneği ile yeniden oluşturun. - + has at least one disk device available. Mevcut en az bir disk aygıtı var. - + There are no partitions to install on. Kurulacak disk bölümü yok. @@ -2677,17 +2692,17 @@ Sistem güç kaynağına bağlı değil. PreserveFiles - + Saving files for later ... Dosyalar daha sonrası için kaydediliyor ... - + No files configured to save for later. Daha sonra kaydetmek için dosya yapılandırılmamış. - + Not all of the configured files could be preserved. Yapılandırılmış dosyaların tümü korunamadı. @@ -3175,29 +3190,29 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Klavye düzeni %1 olarak, alt türevi %2-%3 olarak ayarlandı. - + Failed to write keyboard configuration for the virtual console. Uçbirim için klavye yapılandırmasını kaydetmek başarısız oldu. - - - + + + Failed to write to %1 %1 üzerine kaydedilemedi - + Failed to write keyboard configuration for X11. X11 için klavye yapılandırmaları kaydedilemedi. - + Failed to write keyboard configuration to existing /etc/default directory. /etc/default dizine klavye yapılandırması yazılamadı. @@ -3430,28 +3445,28 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. TrackingKUserFeedbackJob - + KDE user feedback KDE kullanıcı geri bildirimi - + Configuring KDE user feedback. KDE kullanıcı geri bildirimleri yapılandırılıyor. - - + + Error in KDE user feedback configuration. KDE kullanıcı geri bildirimi yapılandırmasında hata. - + Could not configure KDE user feedback correctly, script error %1. KDE kullanıcı geri bildirimi doğru yapılandırılamadı, komut dosyası hatası %1. - + Could not configure KDE user feedback correctly, Calamares error %1. KDE kullanıcı geri bildirimi doğru şekilde yapılandırılamadı, %1 Calamares hatası. @@ -3459,28 +3474,28 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. TrackingMachineUpdateManagerJob - + Machine feedback Makine geri bildirimi - + Configuring machine feedback. Makine geribildirimini yapılandırma. - - + + Error in machine feedback configuration. Makine geri bildirim yapılandırma hatası var. - + Could not configure machine feedback correctly, script error %1. Makine geribildirimi doğru yapılandırılamadı, betik hatası %1. - + Could not configure machine feedback correctly, Calamares error %1. Makine geribildirimini doğru bir şekilde yapılandıramadı, Calamares hata %1. @@ -3539,47 +3554,17 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Bu bilgisayarı birden fazla kişi kullanacaksa, kurulumdan sonra birden fazla kullanıcı hesabı oluşturabilirsiniz.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Bu bilgisayarı birden fazla kişi kullanacaksa, kurulum bittikten sonra birden fazla kullanıcı hesabı oluşturabilirsiniz.</small> - - Your username is too long. - Kullanıcı adınız çok uzun. - - - - Your username must start with a lowercase letter or underscore. - Kullanıcı adınız küçük harf veya alt çizgi ile başlamalıdır. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Sadece küçük harflere, sayılara, alt çizgi ve kısa çizgilere izin verilir. - - - - Your hostname is too short. - Makine adınız çok kısa. - - - - Your hostname is too long. - Makine adınız çok uzun. - - - - Only letters, numbers, underscore and hyphen are allowed. - Sadece harfler, rakamlar, alt çizgi ve kısa çizgi izin verilir. - - - + Your passwords do not match! Parolanız eşleşmiyor! @@ -3587,7 +3572,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. UsersViewStep - + Users Kullanıcı Tercihleri @@ -3812,21 +3797,21 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Dil</h1> </br> Sistem yerel ayarı, bazı komut satırı kullanıcı arabirimi öğelerinin dilini ve karakter kümesini etkiler. Geçerli ayar <strong>%1</strong>'dir - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - <h1>Yerel</h1> </br> -Sistem yerel ayarı, bazı komut satırı kullanıcı arabirimi öğelerinin dilini ve karakter kümesini etkiler. Geçerli ayar <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + <h1>Yerelleştirme</h1> </br> + Sistem yerel ayarı, sayıları ve tarih biçimini etkiler. Geçerli yerel ayarı <strong>%1</strong>. - + Back Geri @@ -3834,44 +3819,44 @@ Sistem yerel ayarı, bazı komut satırı kullanıcı arabirimi öğelerinin dil keyboardq - + Keyboard Model Klavye Modeli - + Pick your preferred keyboard model or use the default one based on the detected hardware Tercih ettiğiniz klavye modelini seçin veya algılanan donanıma göre varsayılan modeli kullanın - + Refresh Yenile - - + + Layouts Düzenler - - + + Keyboard Layout Klavye Düzeni - + Models Modeller - + Variants Türevler - + Test your keyboard Klavyeni test et @@ -3879,17 +3864,7 @@ Sistem yerel ayarı, bazı komut satırı kullanıcı arabirimi öğelerinin dil localeq - - System language set to %1 - Sistem dili %1 olarak ayarlandı - - - - Numbers and dates locale set to %1 - Sayılar ve tarih yerel ayarı %1 olarak ayarlandı - - - + Change Değiştir diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index d5c4fb97a..764ac3f23 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -220,7 +220,7 @@ Крок QML <i>%1</i>. - + Loading failed. Не вдалося завантажити. @@ -261,171 +261,171 @@ Calamares::ViewManager - + Setup Failed Помилка встановлення - + Installation Failed Помилка під час встановлення - + Would you like to paste the install log to the web? Хочете викласти журнал встановлення у мережі? - + Error Помилка - - + + &Yes &Так - - + + &No &Ні - + &Close &Закрити - + Install Log Paste URL Адреса для вставлення журналу встановлення - + The upload was unsuccessful. No web-paste was done. Не вдалося вивантажити дані. - + Calamares Initialization Failed Помилка ініціалізації Calamares - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 неможливо встановити. Calamares не зміг завантажити всі налаштовані модулі. Ця проблема зв'язана з тим, як Calamares використовується дистрибутивом. - + <br/>The following modules could not be loaded: <br/>Не вдалося завантажити наступні модулі: - + Continue with setup? Продовжити встановлення? - + Continue with installation? Продовжити встановлення? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> Програма налаштування %1 збирається внести зміни до вашого диска, щоб налаштувати %2. <br/><strong> Ви не зможете скасувати ці зміни.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Засіб встановлення %1 має намір внести зміни до розподілу вашого диска, щоб встановити %2.<br/><strong>Ці зміни неможливо буде скасувати.</strong> - + &Set up now &Налаштувати зараз - + &Install now &Встановити зараз - + Go &back Перейти &назад - + &Set up &Налаштувати - + &Install &Встановити - + Setup is complete. Close the setup program. Встановлення виконано. Закрити програму встановлення. - + The installation is complete. Close the installer. Встановлення виконано. Завершити роботу засобу встановлення. - + Cancel setup without changing the system. Скасувати налаштування без зміни системи. - + Cancel installation without changing the system. Скасувати встановлення без зміни системи. - + &Next &Вперед - + &Back &Назад - + &Done &Закінчити - + &Cancel &Скасувати - + Cancel setup? Скасувати налаштування? - + Cancel installation? Скасувати встановлення? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Ви насправді бажаєте скасувати поточну процедуру налаштовування? Роботу програми для налаштовування буде завершено, а усі зміни буде втрачено. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Чи ви насправді бажаєте скасувати процес встановлення? @@ -488,12 +488,12 @@ The installer will quit and all changes will be lost. &Скасувати - + %1 Setup Program Програма для налаштовування %1 - + %1 Installer Засіб встановлення %1 @@ -520,9 +520,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: Зараз: @@ -533,115 +533,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>Поділ на розділи вручну</strong><br/>Ви можете створити розділи або змінити розміри наявних розділів власноруч. Обов'язково слід мати таблицю розділів GPT і <strong>розділ /boot у форматі fat32 розміром 512МБ, якщо встановлення відбувається у системі з UEFI</strong>. Скористайтеся вже створеним розділом без його форматування або створіть новий. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>Розподілення вручну</strong><br/>Ви можете створити або змінити розмір розділів власноруч. - + Reuse %1 as home partition for %2. Використати %1 як домашній розділ (home) для %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Оберіть розділ для зменшення, потім тягніть повзунок, щоб змінити розмір</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 буде стиснуто до %2 МіБ. Натомість буде створено розділ розміром %3 МіБ для %4. - + Boot loader location: Розташування завантажувача: - + <strong>Select a partition to install on</strong> <strong>Оберіть розділ, на який встановити</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. В цій системі не знайдено жодного системного розділу EFI. Щоб встановити %1, будь ласка, поверніться та оберіть розподілення вручну. - + The EFI system partition at %1 will be used for starting %2. Системний розділ EFI %1 буде використано для встановлення %2. - + EFI system partition: Системний розділ EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Цей пристрій зберігання, схоже, не має жодної операційної системи. Що ви бажаєте зробити?<br/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Очистити диск</strong><br/>Це <font color="red">знищить</font> всі данні, присутні на обраному пристрої зберігання. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Встановити поруч</strong><br/>Засіб встановлення зменшить розмір розділу, щоб вивільнити простір для %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Замінити розділ</strong><br/>Замінити розділу на %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На цьому пристрої зберігання є %1. Що ви бажаєте зробити?<br/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На цьому пристрої зберігання вже є операційна система. Що ви бажаєте зробити?<br/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На цьому пристрої зберігання вже є декілька операційних систем. Що ви бажаєте зробити?<br/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. - + No Swap Без резервної пам'яті - + Reuse Swap Повторно використати резервну пам'ять - + Swap (no Hibernate) Резервна пам'ять (без присипляння) - + Swap (with Hibernate) Резервна пам'ять (із присиплянням) - + Swap to file Резервна пам'ять у файлі @@ -649,17 +649,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Очистити точки підключення для операцій над розділами на %1 - + Clearing mounts for partitioning operations on %1. Очищення точок підключення для операцій над розділами на %1. - + Cleared all mounts for %1 Очищено всі точки підключення для %1 @@ -667,22 +667,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Очистити всі тимчасові точки підключення. - + Clearing all temporary mounts. Очищення всіх тимчасових точок підключення. - + Cannot get list of temporary mounts. Неможливо отримати список тимчасових точок підключення. - + Cleared all temporary mounts. Очищено всі тимчасові точки підключення. @@ -709,30 +709,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> Встановити модель клавіатури як %1.<br/> - + Set keyboard layout to %1/%2. Встановити розкладку клавіатури як %1/%2. - + + Set timezone to %1/%2. + Встановити часовий пояс %1/%2. + + + The system language will be set to %1. Мову %1 буде встановлено як системну. - + The numbers and dates locale will be set to %1. %1 буде встановлено як локаль чисел та дат. - - - Set timezone to %1/%2.<br/> - Встановити зону %1/%2.<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -798,6 +798,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>Ласкаво просимо до засобу встановлення %1</h1> + + + Your username is too long. + Ваше ім'я задовге. + + + + '%1' is not allowed as username. + «%1» не можна використовувати як ім'я користувача. + + + + Your username must start with a lowercase letter or underscore. + Ваше ім'я користувача має починатися із малої літери або символу підкреслювання. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + Можна використовувати лише латинські літери нижнього регістру, цифри, символи підкреслювання та дефіси. + + + + Your hostname is too short. + Назва вузла є надто короткою. + + + + Your hostname is too long. + Назва вузла є надто довгою. + + + + '%1' is not allowed as hostname. + «%1» не можна використовувати як назву вузла. + + + + Only letters, numbers, underscore and hyphen are allowed. + Можна використовувати лише латинські літери, цифри, символи підкреслювання та дефіси. + ContextualProcessJob @@ -962,40 +1002,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Створити користувача %1 - + Create user <strong>%1</strong>. Створити користувача <strong>%1</strong>. - + Creating user %1. Створення користувача %1. - - Sudoers dir is not writable. - Каталог sudoers є непридатним до запису. - - - + Cannot create sudoers file for writing. Неможливо створити файл sudoers для запису. - + Cannot chmod sudoers file. Неможливо встановити права на файл sudoers. - - - Cannot open groups file for reading. - Неможливо відкрити файл груп для читання. - CreateVolumeGroupDialog @@ -1233,37 +1263,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information Ввести інформацію про розділ - + Install %1 on <strong>new</strong> %2 system partition. Встановити %1 на <strong>новий</strong> системний розділ %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Налаштувати <strong>новий</strong> розділ %2 з точкою підключення <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Встановити %2 на системний розділ %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Налаштувати розділ %3 <strong>%1</strong> з точкою підключення <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Встановити завантажувач на <strong>%1</strong>. - + Setting up mount points. Налаштування точок підключення. @@ -1514,12 +1544,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Встановити модель клавіатури як %1.<br/> - + Set keyboard layout to %1/%2. Встановити розкладку клавіатури як %1/%2. @@ -1576,32 +1606,32 @@ The installer will quit and all changes will be lost. <h1>Ліцензійна угода</h1> - + I accept the terms and conditions above. Я приймаю положення та умови, що наведені вище. - + Please review the End User License Agreements (EULAs). Будь ласка, перегляньте ліцензійні угоди із кінцевим користувачем (EULA). - + This setup procedure will install proprietary software that is subject to licensing terms. Під час цієї процедури налаштовування буде встановлено закрите програмне забезпечення, використання якого передбачає згоду із умовами ліцензійної угоди. - + If you do not agree with the terms, the setup procedure cannot continue. Якщо ви не погодитеся із умовами, виконання подальшої процедури налаштовування стане неможливим. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. Під час цієї процедури налаштовування може бути встановлено закрите програмне забезпечення з метою забезпечення реалізації та розширення додаткових можливостей. Використання цього програмного забезпечення передбачає згоду із умовами ліцензійної угоди. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Якщо ви не погодитеся із умовами ліцензування, закрите програмне забезпечення не буде встановлено. Замість нього буде використано альтернативи із відкритим кодом. @@ -1677,41 +1707,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Регіон: - + Zone: Зона: - - + + &Change... &Змінити... - - - The system language will be set to %1. - Мову %1 буде встановлено як системну. - - - - The numbers and dates locale will be set to %1. - %1 буде встановлено як локаль чисел та дат. - - - - Set timezone to %1/%2.<br/> - Встановити зону %1/%2.<br/> - LocaleQmlViewStep - + Location Розташування @@ -1719,7 +1734,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Розташування @@ -1781,7 +1796,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2185,7 +2200,7 @@ The installer will quit and all changes will be lost. Невідома помилка - + Password is empty Пароль є порожнім @@ -2524,112 +2539,112 @@ The installer will quit and all changes will be lost. Збір інформації про систему... - + Partitions Розділи - + Install %1 <strong>alongside</strong> another operating system. Встановити %1 <strong>поруч</strong> з іншою операційною системою. - + <strong>Erase</strong> disk and install %1. <strong>Очистити</strong> диск та встановити %1. - + <strong>Replace</strong> a partition with %1. <strong>Замінити</strong> розділ на %1. - + <strong>Manual</strong> partitioning. Розподіл диска <strong>вручну</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Встановити %1 <strong>поруч</strong> з іншою операційною системою на диск <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Очистити</strong> диск <strong>%2</strong> (%3) та встановити %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замінити</strong> розділ на диску <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Розподіл диска <strong>%1</strong> (%2) <strong>вручну</strong>. - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Зараз: - + After: Після: - + No EFI system partition configured Не налаштовано жодного системного розділу EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Щоб запустити %1, потрібен системний розділ EFI.<br/><br/>Щоб налаштувати системний розділ EFI, поверніться і виберіть або створіть файлову систему FAT32 з увімкненим параметром <strong>%3</strong> та точкою монтування <strong>%2</strong>.<br/><br/>Ви можете продовжити, не налаштовуючи системний розділ EFI, але тоді у вашої системи можуть виникнути проблеми із запуском. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Для запуску %1 потрібен системний розділ EFI.<br/><br/>Розділ налаштовано з точкою підключення <strong>%2</strong>, але опція <strong>%3</strong> не встановлено.<br/>Щоб встановити опцію, поверніться та відредагуйте розділ.<br/><br/>Ви можете продовжити не налаштовуючи цю опцію, але ваша система може не запускатись. - + EFI system partition flag not set Опцію системного розділу EFI не встановлено - + Option to use GPT on BIOS Варіант із використанням GPT на BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. Таблиця розділів GPT є найкращим варіантом для усіх систем. У цьому засобі встановлення передбачено підтримку відповідних налаштувань і для систем BIOS.<br/><br/>Щоб скористатися таблицею розділів GPT у системі з BIOS, (якщо цього ще не було зроблено) поверніться назад і встановіть для таблиці розділів значення GPT, далі створіть неформатований розділ розміром 8 МБ з увімкненим прапорцем <strong>bios_grub</strong>.<br/><br/>Неформатований розділ розміром 8 МБ потрібен для запуску %1 на системі з BIOS за допомогою GPT. - + Boot partition not encrypted Завантажувальний розділ незашифрований - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. Було налаштовано окремий завантажувальний розділ поряд із зашифрованим кореневим розділом, але завантажувальний розділ незашифрований.<br/><br/>Існують проблеми з безпекою такого типу, оскільки важливі системні файли зберігаються на незашифрованому розділі.<br/>Ви можете продовжувати, якщо бажаєте, але розблокування файлової системи відбудеться пізніше під час запуску системи.<br/>Щоб зашифрувати завантажувальний розділ, поверніться і створіть його знов, обравши <strong>Зашифрувати</strong> у вікні створення розділів. - + has at least one disk device available. має принаймні один доступний дисковий пристрій. - + There are no partitions to install on. Немає розділів для встановлення. @@ -2677,17 +2692,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... Збереження файлів на потім ... - + No files configured to save for later. Не налаштовано файлів для зберігання на майбутнє. - + Not all of the configured files could be preserved. Не усі налаштовані файли може бути збережено. @@ -3173,29 +3188,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Встановити модель клавіатури %1, розкладку %2-%3 - + Failed to write keyboard configuration for the virtual console. Не вдалося записати налаштування клавіатури для віртуальної консолі. - - - + + + Failed to write to %1 Невдача під час запису до %1 - + Failed to write keyboard configuration for X11. Невдача під час запису конфігурації клавіатури для X11. - + Failed to write keyboard configuration to existing /etc/default directory. Не вдалося записати налаштування клавіатури до наявного каталогу /etc/default. @@ -3428,28 +3443,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback Зворотних зв'язок для користувачів KDE - + Configuring KDE user feedback. Налаштовування зворотного зв'язку для користувачів KDE. - - + + Error in KDE user feedback configuration. Помилка у налаштуваннях зворотного зв'язку користувачів KDE. - + Could not configure KDE user feedback correctly, script error %1. Не вдалося налаштувати належним чином зворотний зв'язок для користувачів KDE. Помилка скрипту %1. - + Could not configure KDE user feedback correctly, Calamares error %1. Не вдалося налаштувати належним чином зворотний зв'язок для користувачів KDE. Помилка Calamares %1. @@ -3457,28 +3472,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback Дані щодо комп'ютера - + Configuring machine feedback. Налаштовування надсилання даних щодо комп'ютера. - - + + Error in machine feedback configuration. Помилка у налаштуваннях надсилання даних щодо комп'ютера. - + Could not configure machine feedback correctly, script error %1. Не вдалося налаштувати надсилання даних щодо комп'ютера належним чином. Помилка скрипту: %1. - + Could not configure machine feedback correctly, Calamares error %1. Не вдалося налаштувати надсилання даних щодо комп'ютера належним чином. Помилка у Calamares: %1. @@ -3537,47 +3552,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>Якщо за цим комп'ютером працюватимуть декілька користувачів, ви можете створити декілька облікових записів після налаштовування.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>Якщо за цим комп'ютером працюватимуть декілька користувачів, ви можете створити декілька облікових записів після встановлення.</small> - - Your username is too long. - Ваше ім'я задовге. - - - - Your username must start with a lowercase letter or underscore. - Ваше ім'я користувача має починатися із малої літери або символу підкреслювання. - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - Можна використовувати лише латинські літери нижнього регістру, цифри, символи підкреслювання та дефіси. - - - - Your hostname is too short. - Назва вузла є надто короткою. - - - - Your hostname is too long. - Назва вузла є надто довгою. - - - - Only letters, numbers, underscore and hyphen are allowed. - Можна використовувати лише латинські літери, цифри, символи підкреслювання та дефіси. - - - + Your passwords do not match! Паролі не збігаються! @@ -3585,7 +3570,7 @@ Output: UsersViewStep - + Users Користувачі @@ -3808,21 +3793,21 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>Мови</h1></br> Налаштування системної локалі впливає на мову та набір символів для деяких елементів інтерфейсу командного рядка. Зараз встановлено значення локалі <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>Локалі</h1></br> -Налаштування системної локалі впливає на мову та набір символів для деяких елементів інтерфейсу командного рядка. Зараз встановлено значення локалі <strong>%1</strong>. +Налаштування системної локалі впливає на показ чисел та формат дат. Зараз встановлено значення локалі <strong>%1</strong>. - + Back Назад @@ -3830,44 +3815,44 @@ Output: keyboardq - + Keyboard Model Модель клавіатури - + Pick your preferred keyboard model or use the default one based on the detected hardware Виберіть бажану для вас модель клавіатури або скористайтеся типовою, визначеною на основі виявленого обладнання - + Refresh Освіжити - - + + Layouts Розкладки - - + + Keyboard Layout Розкладка клавіатури - + Models Моделі - + Variants Варіанти - + Test your keyboard Перевірте вашу клавіатуру @@ -3875,17 +3860,7 @@ Output: localeq - - System language set to %1 - Мову %1 встановлено як мову системи - - - - Numbers and dates locale set to %1 - %1 встановлено як локаль чисел та дат. - - - + Change Змінити diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index 89485037c..329e06d5f 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,170 +257,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -481,12 +481,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -513,9 +513,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -526,115 +526,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -642,17 +642,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -660,22 +660,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -702,30 +702,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,6 +791,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -955,40 +995,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1226,37 +1256,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1507,12 +1537,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1569,32 +1599,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1670,41 +1700,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1789,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2175,7 +2190,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2514,112 +2529,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2667,17 +2682,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3157,29 +3172,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3412,28 +3427,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3441,28 +3456,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3521,47 +3536,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3569,7 +3554,7 @@ Output: UsersViewStep - + Users @@ -3782,19 +3767,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3802,44 +3787,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3847,17 +3832,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index 11dec16dd..e471101ea 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -220,7 +220,7 @@ - + Loading failed. @@ -255,170 +255,170 @@ Calamares::ViewManager - + Setup Failed - + Installation Failed - + Would you like to paste the install log to the web? - + Error - - + + &Yes - - + + &No - + &Close - + Install Log Paste URL - + The upload was unsuccessful. No web-paste was done. - + Calamares Initialization Failed - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + <br/>The following modules could not be loaded: - + Continue with setup? - + Continue with installation? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Set up now - + &Install now - + Go &back - + &Set up - + &Install - + Setup is complete. Close the setup program. - + The installation is complete. Close the installer. - + Cancel setup without changing the system. - + Cancel installation without changing the system. - + &Next - + &Back - + &Done - + &Cancel - + Cancel setup? - + Cancel installation? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -479,12 +479,12 @@ The installer will quit and all changes will be lost. - + %1 Setup Program - + %1 Installer @@ -511,9 +511,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @@ -524,115 +524,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file @@ -640,17 +640,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -658,22 +658,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -700,30 +700,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. - + + Set timezone to %1/%2. + + + + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - - - Set timezone to %1/%2.<br/> - - Network Installation. (Disabled: Incorrect configuration) @@ -789,6 +789,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + ContextualProcessJob @@ -953,40 +993,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - - Sudoers dir is not writable. - - - - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - - - Cannot open groups file for reading. - - CreateVolumeGroupDialog @@ -1224,37 +1254,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -1505,12 +1535,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1567,32 +1597,32 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + Please review the End User License Agreements (EULAs). - + This setup procedure will install proprietary software that is subject to licensing terms. - + If you do not agree with the terms, the setup procedure cannot continue. - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1668,41 +1698,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: - + Zone: - - + + &Change... - - - The system language will be set to %1. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1710,7 +1725,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1772,7 +1787,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2173,7 +2188,7 @@ The installer will quit and all changes will be lost. - + Password is empty @@ -2512,112 +2527,112 @@ The installer will quit and all changes will be lost. - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI system partition flag not set - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -2665,17 +2680,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... - + No files configured to save for later. - + Not all of the configured files could be preserved. @@ -3155,29 +3170,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - - + + + Failed to write to %1 - + Failed to write keyboard configuration for X11. - + Failed to write keyboard configuration to existing /etc/default directory. @@ -3410,28 +3425,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3439,28 +3454,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback - + Configuring machine feedback. - - + + Error in machine feedback configuration. - + Could not configure machine feedback correctly, script error %1. - + Could not configure machine feedback correctly, Calamares error %1. @@ -3519,47 +3534,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - - Your username is too long. - - - - - Your username must start with a lowercase letter or underscore. - - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - - - - - Your hostname is too short. - - - - - Your hostname is too long. - - - - - Only letters, numbers, underscore and hyphen are allowed. - - - - + Your passwords do not match! @@ -3567,7 +3552,7 @@ Output: UsersViewStep - + Users @@ -3780,19 +3765,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back @@ -3800,44 +3785,44 @@ Output: keyboardq - + Keyboard Model - + Pick your preferred keyboard model or use the default one based on the detected hardware - + Refresh - - + + Layouts - - + + Keyboard Layout - + Models - + Variants - + Test your keyboard @@ -3845,17 +3830,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index 943cbfe9e..149f2bc74 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -221,7 +221,7 @@ QML 步骤 <i>%1</i>. - + Loading failed. 加载失败。 @@ -256,171 +256,171 @@ Calamares::ViewManager - + Setup Failed 安装失败 - + Installation Failed 安装失败 - + Would you like to paste the install log to the web? 需要将安装日志粘贴到网页吗? - + Error 错误 - - + + &Yes &是 - - + + &No &否 - + &Close &关闭 - + Install Log Paste URL 安装日志粘贴 URL - + The upload was unsuccessful. No web-paste was done. 上传失败,未完成网页粘贴。 - + Calamares Initialization Failed Calamares初始化失败 - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1无法安装。 Calamares无法加载所有已配置的模块。这个问题是发行版配置Calamares不当导致的。 - + <br/>The following modules could not be loaded: <br/>无法加载以下模块: - + Continue with setup? 要继续安装吗? - + Continue with installation? 继续安装? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> 为了安装%2, %1 安装程序即将对磁盘进行更改。<br/><strong>这些更改无法撤销。</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安装程序将在您的磁盘上做出变更以安装 %2。<br/><strong>您将无法复原这些变更。</strong> - + &Set up now 现在安装(&S) - + &Install now 现在安装 (&I) - + Go &back 返回 (&B) - + &Set up 安装(&S) - + &Install 安装(&I) - + Setup is complete. Close the setup program. 安装完成。关闭安装程序。 - + The installation is complete. Close the installer. 安装已完成。请关闭安装程序。 - + Cancel setup without changing the system. 取消安装,保持系统不变。 - + Cancel installation without changing the system. 取消安装,并不做任何更改。 - + &Next 下一步(&N) - + &Back 后退(&B) - + &Done &完成 - + &Cancel 取消(&C) - + Cancel setup? 取消安装? - + Cancel installation? 取消安装? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. 确定要取消当前安装吗? 安装程序将会退出,所有修改都会丢失。 - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 确定要取消当前的安装吗? @@ -483,12 +483,12 @@ The installer will quit and all changes will be lost. 取消(&C) - + %1 Setup Program %1 安装程序 - + %1 Installer %1 安装程序 @@ -515,9 +515,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: 当前: @@ -528,115 +528,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>手动分区</strong><br/>分区你可以自行创建或调整分区。一个 GPT 分区表和<strong>一个 512MB 的 fat32 /boot 分区对于 UEFI 模式下的安装来说是必须的</strong>,你可以使用原有的 /boot 分区,无需格式化,也可以创建一个新的。 + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>手动分区</strong><br/>您可以自行创建或重新调整分区大小。 - + Reuse %1 as home partition for %2. 重复使用 %1 作为 %2 的 home 分区。 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>选择要缩小的分区,然后拖动底栏改变大小</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 将会缩减未 %2MiB,然后为 %4 创建一个 %3MiB 分区。 - + Boot loader location: 引导程序位置: - + <strong>Select a partition to install on</strong> <strong>选择要安装到的分区</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. 在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 - + The EFI system partition at %1 will be used for starting %2. %1 处的 EFI 系统分区将被用来启动 %2。 - + EFI system partition: EFI 系统分区: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上似乎还没有操作系统。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>抹除磁盘</strong><br/>这将会<font color="red">删除</font>目前选定的存储器上所有的数据。 - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>并存安装</strong><br/>安装程序将会缩小一个分区,为 %1 腾出空间。 - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>取代一个分区</strong><br/>以 %1 <strong>替代</strong>一个分区。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有 %1 了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有一个操作系统了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有多个操作系统了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - + No Swap 无交换分区 - + Reuse Swap 重用交换分区 - + Swap (no Hibernate) 交换分区(无休眠) - + Swap (with Hibernate) 交换分区(带休眠) - + Swap to file 交换到文件 @@ -644,17 +644,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 清理挂载了的分区以在 %1 进行分区操作 - + Clearing mounts for partitioning operations on %1. 正在清理挂载了的分区以在 %1 进行分区操作。 - + Cleared all mounts for %1 已清除 %1 的所有挂载点 @@ -662,22 +662,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. 清除所有临时挂载点。 - + Clearing all temporary mounts. 正在清除所有临时挂载点。 - + Cannot get list of temporary mounts. 无法获取临时挂载点列表。 - + Cleared all temporary mounts. 所有临时挂载点都已经清除。 @@ -704,30 +704,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> 设置键盘型号为 %1。<br/> - + Set keyboard layout to %1/%2. 设置键盘布局为 %1/%2。 - + + Set timezone to %1/%2. + + + + The system language will be set to %1. 系统语言将设置为 %1。 - + The numbers and dates locale will be set to %1. 数字和日期地域将设置为 %1。 - - - Set timezone to %1/%2.<br/> - 设置时区为 %1/%2。<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -795,6 +795,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> + + + Your username is too long. + 用户名太长。 + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + 用户名必须以小写字母或下划线"_"开头 + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 只允许小写字母、数组、下划线"_" 和 连字符"-" + + + + Your hostname is too short. + 主机名太短。 + + + + Your hostname is too long. + 主机名太长。 + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + 只允许字母、数组、下划线"_" 和 连字符"-" + ContextualProcessJob @@ -959,40 +999,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 创建用户 %1 - + Create user <strong>%1</strong>. 创建用户 <strong>%1</strong>。 - + Creating user %1. 正在创建用户 %1。 - - Sudoers dir is not writable. - Sudoers 目录不可写。 - - - + Cannot create sudoers file for writing. 无法创建要写入的 sudoers 文件。 - + Cannot chmod sudoers file. 无法修改 sudoers 文件权限。 - - - Cannot open groups file for reading. - 无法打开要读取的 groups 文件。 - CreateVolumeGroupDialog @@ -1231,37 +1261,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information 设置分区信息 - + Install %1 on <strong>new</strong> %2 system partition. 在 <strong>新的</strong>系统分区 %2 上安装 %1。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. 设置 <strong>新的</strong> 含挂载点 <strong>%1</strong> 的 %2 分区。 - + Install %2 on %3 system partition <strong>%1</strong>. 在 %3 系统割区 <strong>%1</strong> 上安装 %2。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. 为分区 %3 <strong>%1</strong> 设置挂载点 <strong>%2</strong>。 - + Install boot loader on <strong>%1</strong>. 在 <strong>%1</strong>上安装引导程序。 - + Setting up mount points. 正在设置挂载点。 @@ -1512,12 +1542,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 设置键盘型号为 %1。<br/> - + Set keyboard layout to %1/%2. 设置键盘布局为 %1/%2。 @@ -1574,32 +1604,32 @@ The installer will quit and all changes will be lost. <h1>许可证</h1> - + I accept the terms and conditions above. 我同意如上条款。 - + Please review the End User License Agreements (EULAs). 请查阅最终用户许可协议 (EULAs)。 - + This setup procedure will install proprietary software that is subject to licensing terms. 此安装过程会安装受许可条款约束的专有软件。 - + If you do not agree with the terms, the setup procedure cannot continue. 如果您不同意这些条款,安装过程将无法继续。 - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. 此安装过程会安装受许可条款约束的专有软件,用于提供额外功能和提升用户体验。 - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 如果您不同意这些条款,专有软件不会被安装,相应的开源软件替代品将被安装。 @@ -1675,41 +1705,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: 地区: - + Zone: 区域: - - + + &Change... 更改 (&C) ... - - - The system language will be set to %1. - 系统语言将设置为 %1。 - - - - The numbers and dates locale will be set to %1. - 数字和日期地域将设置为 %1。 - - - - Set timezone to %1/%2.<br/> - 设置时区为 %1/%2。<br/> - LocaleQmlViewStep - + Location 位置 @@ -1717,7 +1732,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 位置 @@ -1779,7 +1794,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2180,7 +2195,7 @@ The installer will quit and all changes will be lost. 未知错误 - + Password is empty 密码是空 @@ -2519,112 +2534,112 @@ The installer will quit and all changes will be lost. 正在收集系统信息... - + Partitions 分区 - + Install %1 <strong>alongside</strong> another operating system. 将 %1 安装在其他操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁盘并安装 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>替代</strong>一个分区。 - + <strong>Manual</strong> partitioning. <strong>手动</strong>分区 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 将 %1 安装在磁盘 <strong>%2</strong> (%3) 上的另一个操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁盘 <strong>%2</strong> (%3) 并且安装 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>替代</strong> 一个在磁盘 <strong>%2</strong> (%3) 上的分区。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁盘 <strong>%1</strong> (%2) 上<strong>手动</strong>分区。 - + Disk <strong>%1</strong> (%2) 磁盘 <strong>%1</strong> (%2) - + Current: 当前: - + After: 之后: - + No EFI system partition configured 未配置 EFI 系统分区 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. 必须有 EFI 系统分区才能启动 %1 。<br/><br/>要配置 EFI 系统分区,后退一步,然后创建或选中一个 FAT32 分区并为之设置 <strong>%3</strong> 标记及挂载点 <strong>%2</strong>。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. 必须有 EFI 系统分区才能启动 %1 。<br/><br/>已有挂载点为 <strong>%2</strong> 的分区,但是未设置 <strong>%3</strong> 标记。<br/>要设置此标记,后退并编辑分区。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + EFI system partition flag not set 未设置 EFI 系统分区标记 - + Option to use GPT on BIOS 在 BIOS 上使用 GPT - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT 分区表对于所有系统来说都是最佳选项。本安装程序支持在 BIOS 模式下设置 GPT 分区表。<br/><br/>要在 BIOS 模式下配置 GPT 分区表,(若你尚未配置好)返回并设置分区表为 GPT,然后创建一个 8MB 的、未经格式化的、启用<strong>bios_grub</strong> 标记的分区。<br/><br/>一个未格式化的 8MB 的分区对于在 BIOS 模式下使用 GPT 启动 %1 来说是非常有必要的。 - + Boot partition not encrypted 引导分区未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 - + has at least one disk device available. 有至少一个可用的磁盘设备。 - + There are no partitions to install on. 无可用于安装的分区。 @@ -2672,17 +2687,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... 保存文件以供日后使用 - + No files configured to save for later. 没有已保存且供日后使用的配置文件。 - + Not all of the configured files could be preserved. 并不是所有配置文件都可以被保留 @@ -3167,29 +3182,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 将键盘型号设置为 %1,布局设置为 %2-%3 - + Failed to write keyboard configuration for the virtual console. 无法将键盘配置写入到虚拟控制台。 - - - + + + Failed to write to %1 写入到 %1 失败 - + Failed to write keyboard configuration for X11. 无法为 X11 写入键盘配置。 - + Failed to write keyboard configuration to existing /etc/default directory. 无法将键盘配置写入到现有的 /etc/default 目录。 @@ -3422,28 +3437,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback - + Configuring KDE user feedback. - - + + Error in KDE user feedback configuration. - + Could not configure KDE user feedback correctly, script error %1. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3451,28 +3466,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback 机器反馈 - + Configuring machine feedback. 正在配置机器反馈。 - - + + Error in machine feedback configuration. 机器反馈配置中存在错误。 - + Could not configure machine feedback correctly, script error %1. 无法正确配置机器反馈,脚本错误代码 %1。 - + Could not configure machine feedback correctly, Calamares error %1. 无法正确配置机器反馈,Calamares 错误代码 %1。 @@ -3531,47 +3546,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>如果有多人要使用此计算机,您可以在安装后创建多个账户。</small> - - Your username is too long. - 用户名太长。 - - - - Your username must start with a lowercase letter or underscore. - 用户名必须以小写字母或下划线"_"开头 - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - 只允许小写字母、数组、下划线"_" 和 连字符"-" - - - - Your hostname is too short. - 主机名太短。 - - - - Your hostname is too long. - 主机名太长。 - - - - Only letters, numbers, underscore and hyphen are allowed. - 只允许字母、数组、下划线"_" 和 连字符"-" - - - + Your passwords do not match! 密码不匹配! @@ -3579,7 +3564,7 @@ Output: UsersViewStep - + Users 用户 @@ -3803,19 +3788,19 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + Back 后退 @@ -3823,44 +3808,44 @@ Output: keyboardq - + Keyboard Model 键盘型号 - + Pick your preferred keyboard model or use the default one based on the detected hardware 请选择首选的键盘型号或根据检测到的硬件使用默认的键盘型号 - + Refresh 刷新 - - + + Layouts 布局 - - + + Keyboard Layout 键盘布局 - + Models 型号 - + Variants 变体 - + Test your keyboard 测试您的键盘 @@ -3868,17 +3853,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 337431a0b..5c53795a4 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -220,7 +220,7 @@ QML 第 <i>%1</i> 步 - + Loading failed. 載入失敗。 @@ -255,171 +255,171 @@ Calamares::ViewManager - + Setup Failed 設定失敗 - + Installation Failed 安裝失敗 - + Would you like to paste the install log to the web? 想要將安裝紀錄檔貼到網路上嗎? - + Error 錯誤 - - + + &Yes 是(&Y) - - + + &No 否(&N) - + &Close 關閉(&C) - + Install Log Paste URL 安裝紀錄檔張貼 URL - + The upload was unsuccessful. No web-paste was done. 上傳不成功。並未完成網路張貼。 - + Calamares Initialization Failed Calamares 初始化失敗 - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. %1 無法安裝。Calamares 無法載入所有已設定的模組。散佈版使用 Calamares 的方式有問題。 - + <br/>The following modules could not be loaded: <br/>以下的模組無法載入: - + Continue with setup? 繼續安裝? - + Continue with installation? 繼續安裝? - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 設定程式將在您的磁碟上做出變更以設定 %2。<br/><strong>您將無法復原這些變更。</strong> - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> - + &Set up now 馬上進行設定 (&S) - + &Install now 現在安裝 (&I) - + Go &back 上一步 (&B) - + &Set up 設定 (&S) - + &Install 安裝(&I) - + Setup is complete. Close the setup program. 設定完成。關閉設定程式。 - + The installation is complete. Close the installer. 安裝完成。關閉安裝程式。 - + Cancel setup without changing the system. 取消安裝,不更改系統。 - + Cancel installation without changing the system. 不變更系統並取消安裝。 - + &Next 下一步 (&N) - + &Back 返回 (&B) - + &Done 完成(&D) - + &Cancel 取消(&C) - + Cancel setup? 取消設定? - + Cancel installation? 取消安裝? - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. 真的想要取消目前的設定程序嗎? 設定程式將會結束,所有變更都將會遺失。 - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 您真的想要取消目前的安裝程序嗎? @@ -482,12 +482,12 @@ The installer will quit and all changes will be lost. 取消(&C) - + %1 Setup Program %1 設定程式 - + %1 Installer %1 安裝程式 @@ -514,9 +514,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: 目前: @@ -527,115 +527,115 @@ The installer will quit and all changes will be lost. - <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - <strong>手動分割</strong><br/>您可以自行建立或調整分割區大小。要用 GPT 分割表<strong>與 512Mb /boot 分割區必須是 UEFI 安裝</strong>,不管是使用現有的分割區或建立新的都可以。 + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>手動分割</strong><br/>可以自行建立或重新調整分割區大小。 - + Reuse %1 as home partition for %2. 重新使用 %1 作為 %2 的家目錄分割區。 - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>選取要縮減的分割區,然後拖曳底部條狀物來調整大小</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 會縮減到 %2MiB,並且會為 %4 建立新的 %3MiB 分割區。 - + Boot loader location: 開機載入器位置: - + <strong>Select a partition to install on</strong> <strong>選取分割區以安裝在其上</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. 在這個系統找不到 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 - + The EFI system partition at %1 will be used for starting %2. 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 - + EFI system partition: EFI 系統分割區: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上似乎還沒有作業系統。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置所有的資料。 - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>並存安裝</strong><br/>安裝程式會縮小一個分割區,以讓出空間給 %1。 - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>取代一個分割區</strong><br/>用 %1 取代一個分割區。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有 %1 了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有一個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有多個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - + No Swap 沒有 Swap - + Reuse Swap 重用 Swap - + Swap (no Hibernate) Swap(沒有冬眠) - + Swap (with Hibernate) Swap(有冬眠) - + Swap to file Swap 到檔案 @@ -643,17 +643,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 為了準備分割區操作而完全卸載 %1 - + Clearing mounts for partitioning operations on %1. 正在為了準備分割區操作而完全卸載 %1 - + Cleared all mounts for %1 已清除所有與 %1 相關的掛載 @@ -661,22 +661,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. 清除所有暫時掛載。 - + Clearing all temporary mounts. 正在清除所有暫時掛載。 - + Cannot get list of temporary mounts. 無法取得暫時掛載的列表。 - + Cleared all temporary mounts. 已清除所有暫時掛載。 @@ -703,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> 設定鍵盤型號為 %1 。<br/> - + Set keyboard layout to %1/%2. 設定鍵盤佈局為 %1/%2 。 - + + Set timezone to %1/%2. + 設定時區為 %1/%2。 + + + The system language will be set to %1. 系統語言會設定為%1。 - + The numbers and dates locale will be set to %1. 數字與日期語系會設定為%1。 - - - Set timezone to %1/%2.<br/> - 設定時區為 %1/%2 。<br/> - Network Installation. (Disabled: Incorrect configuration) @@ -792,6 +792,46 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> <h1>歡迎使用 %1 安裝程式</h1> + + + Your username is too long. + 您的使用者名稱太長了。 + + + + '%1' is not allowed as username. + 「%1」無法作為使用者名稱。 + + + + Your username must start with a lowercase letter or underscore. + 您的使用者名稱必須以小寫字母或底線開頭。 + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 僅允許小寫字母、數字、底線與連接號。 + + + + Your hostname is too short. + 您的主機名稱太短了。 + + + + Your hostname is too long. + 您的主機名稱太長了。 + + + + '%1' is not allowed as hostname. + 「%1」無法作為主機名稱。 + + + + Only letters, numbers, underscore and hyphen are allowed. + 僅允許字母、數字、底線與連接號。 + ContextualProcessJob @@ -956,40 +996,30 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 建立使用者 %1 - + Create user <strong>%1</strong>. 建立使用者 <strong>%1</strong>。 - + Creating user %1. 正在建立使用者 %1。 - - Sudoers dir is not writable. - Sudoers 目錄不可寫入。 - - - + Cannot create sudoers file for writing. 無法建立要寫入的 sudoers 檔案。 - + Cannot chmod sudoers file. 無法修改 sudoers 檔案權限。 - - - Cannot open groups file for reading. - 無法開啟要讀取的 groups 檔案。 - CreateVolumeGroupDialog @@ -1227,37 +1257,37 @@ The installer will quit and all changes will be lost. FillGlobalStorageJob - + Set partition information 設定分割區資訊 - + Install %1 on <strong>new</strong> %2 system partition. 在 <strong>新的</strong>系統分割區 %2 上安裝 %1。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. 設定 <strong>新的</strong> 不含掛載點 <strong>%1</strong> 的 %2 分割區。 - + Install %2 on %3 system partition <strong>%1</strong>. 在 %3 系統分割區 <strong>%1</strong> 上安裝 %2。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong>。 - + Install boot loader on <strong>%1</strong>. 安裝開機載入器於 <strong>%1</strong>。 - + Setting up mount points. 正在設定掛載點。 @@ -1508,12 +1538,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 設定鍵盤型號為 %1 。<br/> - + Set keyboard layout to %1/%2. 設定鍵盤佈局為 %1/%2 。 @@ -1570,32 +1600,32 @@ The installer will quit and all changes will be lost. <h1>授權條款</h1> - + I accept the terms and conditions above. 我接受上述的條款與條件。 - + Please review the End User License Agreements (EULAs). 請審閱終端使用者授權條款 (EULAs)。 - + This setup procedure will install proprietary software that is subject to licensing terms. 此設定過程將會安裝需要同意其授權條款的專有軟體。 - + If you do not agree with the terms, the setup procedure cannot continue. 如果您不同意此條款,安裝程序就無法繼續。 - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. 此設定過程會安裝需要同意授權條款的專有軟體以提供附加功能並強化使用者體驗。 - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 如果您不同意條款,就不會安裝專有軟體,而將會使用開放原始碼的替代方案。 @@ -1671,41 +1701,26 @@ The installer will quit and all changes will be lost. LocalePage - + Region: 地區 - + Zone: 時區 - - + + &Change... 變更...(&C) - - - The system language will be set to %1. - 系統語言會設定為%1。 - - - - The numbers and dates locale will be set to %1. - 數字與日期語系會設定為%1。 - - - - Set timezone to %1/%2.<br/> - 設定時區為 %1/%2 。<br/> - LocaleQmlViewStep - + Location 位置 @@ -1713,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 位置 @@ -1775,7 +1790,7 @@ The installer will quit and all changes will be lost. Map - + 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. @@ -2178,7 +2193,7 @@ The installer will quit and all changes will be lost. 未知的錯誤 - + Password is empty 密碼為空 @@ -2517,112 +2532,112 @@ The installer will quit and all changes will be lost. 蒐集系統資訊中... - + Partitions 分割區 - + Install %1 <strong>alongside</strong> another operating system. 將 %1 安裝在其他作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁碟並安裝 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>取代</strong>一個分割區。 - + <strong>Manual</strong> partitioning. <strong>手動</strong>分割 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 將 %1 安裝在磁碟 <strong>%2</strong> (%3) 上的另一個作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁碟 <strong>%2</strong> (%3) 並且安裝 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>取代</strong> 一個在磁碟 <strong>%2</strong> (%3) 上的分割區。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁碟 <strong>%1</strong> (%2) 上<strong>手動</strong>分割。 - + Disk <strong>%1</strong> (%2) 磁碟 <strong>%1</strong> (%2) - + Current: 目前: - + After: 之後: - + No EFI system partition configured 未設定 EFI 系統分割區 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. 需要 EFI 系統分割區以啟動 %1。<br/><br/>要設定 EFI 系統分割區,回到上一步並選取或建立一個包含啟用 <strong>%3</strong> 旗標以及掛載點位於 <strong>%2</strong> 的 FAT32 檔案系統。<br/><br/>您也可以不設定 EFI 系統分割區並繼續,但是您的系統可能會無法啟動。 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. 需要 EFI 系統分割區以啟動 %1。<br/><br/>有一個分割區的掛載點設定為 <strong>%2</strong>,但未設定 <strong>%3</strong> 旗標。<br/>要設定此旗標,回到上一步並編輯分割區。<br/><br/>您也可以不設定旗標並繼續,但您的系統可能會無法啟動。 - + EFI system partition flag not set 未設定 EFI 系統分割區旗標 - + Option to use GPT on BIOS 在 BIOS 上使用 GPT 的選項 - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. GPT 分割表對所有系統都是最佳選項。此安裝程式同時也支援 BIOS 系統。<br/><br/>要在 BIOS 上設定 GPT 分割表,(如果還沒有完成的話)請回上一步並將分割表設定為 GPT,然後建立 8 MB 的未格式化分割區,並啟用 <strong>bios_grub</strong> 旗標。<br/>要在 BIOS 系統上使用 GPT 分割區啟動 %1 則必須使用未格式化的 8MB 分割區。 - + Boot partition not encrypted 開機分割區未加密 - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. 設定了單獨的開機分割區以及加密的根分割區,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全問題,因為重要的系統檔案是放在未加密的分割區中。<br/>您也可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,並在分割區建立視窗選取<strong>加密</strong>。 - + has at least one disk device available. 有至少一個可用的磁碟裝置。 - + There are no partitions to install on. 沒有可用於安裝的分割區。 @@ -2670,17 +2685,17 @@ The installer will quit and all changes will be lost. PreserveFiles - + Saving files for later ... 稍後儲存檔案…… - + No files configured to save for later. 沒有檔案被設定為稍後儲存。 - + Not all of the configured files could be preserved. 並非所有已設定的檔案都可以被保留。 @@ -3166,29 +3181,29 @@ Output: SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 將鍵盤型號設定為 %1,佈局為 %2-%3 - + Failed to write keyboard configuration for the virtual console. 為虛擬終端機寫入鍵盤設定失敗。 - - - + + + Failed to write to %1 寫入到 %1 失敗 - + Failed to write keyboard configuration for X11. 為 X11 寫入鍵盤設定失敗。 - + Failed to write keyboard configuration to existing /etc/default directory. 寫入鍵盤設定到已存在的 /etc/default 目錄失敗。 @@ -3421,28 +3436,28 @@ Output: TrackingKUserFeedbackJob - + KDE user feedback KDE 使用者回饋 - + Configuring KDE user feedback. 設定 KDE 使用者回饋。 - - + + Error in KDE user feedback configuration. KDE 使用者回饋設定錯誤。 - + Could not configure KDE user feedback correctly, script error %1. 無法正確設定 KDE 使用者回饋,指令稿錯誤 %1。 - + Could not configure KDE user feedback correctly, Calamares error %1. 無法正確設定 KDE 使用者回饋,Calamares 錯誤 %1。 @@ -3450,28 +3465,28 @@ Output: TrackingMachineUpdateManagerJob - + Machine feedback 機器回饋 - + Configuring machine feedback. 設定機器回饋。 - - + + Error in machine feedback configuration. 在機器回饋設定中的錯誤。 - + Could not configure machine feedback correctly, script error %1. 無法正確設定機器回饋,指令稿錯誤 %1。 - + Could not configure machine feedback correctly, Calamares error %1. 無法正確設定機器回饋,Calamares 錯誤 %1。 @@ -3530,47 +3545,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>如果將會有多於一人使用這臺電腦,您可以在安裝後設定多個帳號。</small> - - Your username is too long. - 您的使用者名稱太長了。 - - - - Your username must start with a lowercase letter or underscore. - 您的使用者名稱必須以小寫字母或底線開頭。 - - - - Only lowercase letters, numbers, underscore and hyphen are allowed. - 僅允許小寫字母、數字、底線與連接號。 - - - - Your hostname is too short. - 您的主機名稱太短了。 - - - - Your hostname is too long. - 您的主機名稱太長了。 - - - - Only letters, numbers, underscore and hyphen are allowed. - 僅允許字母、數字、底線與連接號。 - - - + Your passwords do not match! 密碼不符! @@ -3578,7 +3563,7 @@ Output: UsersViewStep - + Users 使用者 @@ -3802,21 +3787,21 @@ Output: i18n - + <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. <h1>語言</h1> </br> 系統語系設定會影響某些命令列使用者介面元素的語言與字元集。目前的設定為 <strong>%1</strong>。 - + <h1>Locales</h1> </br> - The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. <h1>語系</h1> </br> - 系統語系設定會影響某些命令列使用者介面元素的語言與字元集。目前的設定為 <strong>%1</strong>。 + 系統語系設定會影響數字與日期格式。目前的設定為 <strong>%1</strong>。 - + Back 返回 @@ -3824,44 +3809,44 @@ Output: keyboardq - + Keyboard Model 鍵盤型號 - + Pick your preferred keyboard model or use the default one based on the detected hardware 挑選您偏好的鍵盤型號或使用基於偵測到的硬體的預設值 - + Refresh 重新整理 - - + + Layouts 佈局 - - + + Keyboard Layout 鍵盤佈局 - + Models 型號 - + Variants 變種 - + Test your keyboard 測試您的鍵盤 @@ -3869,17 +3854,7 @@ Output: localeq - - System language set to %1 - 系統語言設定為 %1 - - - - Numbers and dates locale set to %1 - 數字與日期語系設定為 %1 - - - + Change 變更 From eca56c7684b4910851570576180bd6303578d490 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 31 Jul 2020 10:29:02 +0200 Subject: [PATCH 127/399] i18n: [desktop] Automatic merge of Transifex translations --- calamares.desktop | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/calamares.desktop b/calamares.desktop index a70f377cf..82c94485e 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -190,8 +190,8 @@ GenericName[sv]=Systeminstallerare Comment[sv]=Calamares — Systeminstallerare Name[tg]=Насбкунии низом Icon[tg]=calamares -GenericName[tg]=Насбкунандаи низом -Comment[tg]=Calamares — Насбкунандаи низом +GenericName[tg]=Насбкунандаи низомӣ +Comment[tg]=Calamares — Насбкунандаи низомӣ Name[th]=ติดตั้งระบบ Name[uk]=Встановити Систему Icon[uk]=calamares From 40f5440517e9eefb2f320bb9576eb8191cc2fa70 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Fri, 31 Jul 2020 10:29:03 +0200 Subject: [PATCH 128/399] i18n: [python] Automatic merge of Transifex translations --- lang/python.pot | 2 +- lang/python/ar/LC_MESSAGES/python.po | 2 +- lang/python/as/LC_MESSAGES/python.po | 2 +- lang/python/ast/LC_MESSAGES/python.po | 2 +- lang/python/az/LC_MESSAGES/python.po | 2 +- lang/python/az_AZ/LC_MESSAGES/python.po | 2 +- lang/python/be/LC_MESSAGES/python.po | 2 +- lang/python/bg/LC_MESSAGES/python.po | 2 +- lang/python/bn/LC_MESSAGES/python.po | 2 +- lang/python/ca/LC_MESSAGES/python.po | 2 +- lang/python/ca@valencia/LC_MESSAGES/python.po | 2 +- lang/python/cs_CZ/LC_MESSAGES/python.po | 2 +- lang/python/da/LC_MESSAGES/python.po | 2 +- lang/python/de/LC_MESSAGES/python.mo | Bin 8228 -> 8210 bytes lang/python/de/LC_MESSAGES/python.po | 8 +- lang/python/el/LC_MESSAGES/python.po | 2 +- lang/python/en_GB/LC_MESSAGES/python.po | 2 +- lang/python/eo/LC_MESSAGES/python.po | 2 +- lang/python/es/LC_MESSAGES/python.po | 2 +- lang/python/es_MX/LC_MESSAGES/python.po | 2 +- lang/python/es_PR/LC_MESSAGES/python.po | 2 +- lang/python/et/LC_MESSAGES/python.po | 2 +- lang/python/eu/LC_MESSAGES/python.po | 2 +- lang/python/fa/LC_MESSAGES/python.po | 2 +- lang/python/fi_FI/LC_MESSAGES/python.po | 2 +- lang/python/fr/LC_MESSAGES/python.po | 2 +- lang/python/fr_CH/LC_MESSAGES/python.po | 2 +- lang/python/gl/LC_MESSAGES/python.po | 2 +- lang/python/gu/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.po | 2 +- lang/python/hi/LC_MESSAGES/python.po | 2 +- lang/python/hr/LC_MESSAGES/python.po | 2 +- lang/python/hu/LC_MESSAGES/python.po | 2 +- lang/python/id/LC_MESSAGES/python.po | 2 +- lang/python/ie/LC_MESSAGES/python.mo | Bin 384 -> 2906 bytes lang/python/ie/LC_MESSAGES/python.po | 60 ++++---- lang/python/is/LC_MESSAGES/python.po | 2 +- lang/python/it_IT/LC_MESSAGES/python.po | 2 +- lang/python/ja/LC_MESSAGES/python.po | 2 +- lang/python/kk/LC_MESSAGES/python.po | 2 +- lang/python/kn/LC_MESSAGES/python.po | 2 +- lang/python/ko/LC_MESSAGES/python.po | 2 +- lang/python/lo/LC_MESSAGES/python.po | 2 +- lang/python/lt/LC_MESSAGES/python.po | 2 +- lang/python/lv/LC_MESSAGES/python.po | 2 +- lang/python/mk/LC_MESSAGES/python.po | 2 +- lang/python/ml/LC_MESSAGES/python.po | 2 +- lang/python/mr/LC_MESSAGES/python.po | 2 +- lang/python/nb/LC_MESSAGES/python.po | 2 +- lang/python/ne_NP/LC_MESSAGES/python.po | 2 +- lang/python/nl/LC_MESSAGES/python.mo | Bin 2048 -> 8059 bytes lang/python/nl/LC_MESSAGES/python.po | 107 +++++++------ lang/python/pl/LC_MESSAGES/python.po | 2 +- lang/python/pt_BR/LC_MESSAGES/python.po | 2 +- lang/python/pt_PT/LC_MESSAGES/python.po | 2 +- lang/python/ro/LC_MESSAGES/python.po | 4 +- lang/python/ru/LC_MESSAGES/python.po | 2 +- lang/python/sk/LC_MESSAGES/python.po | 2 +- lang/python/sl/LC_MESSAGES/python.po | 2 +- lang/python/sq/LC_MESSAGES/python.po | 2 +- lang/python/sr/LC_MESSAGES/python.po | 2 +- lang/python/sr@latin/LC_MESSAGES/python.po | 2 +- lang/python/sv/LC_MESSAGES/python.po | 2 +- lang/python/tg/LC_MESSAGES/python.mo | Bin 661 -> 9876 bytes lang/python/tg/LC_MESSAGES/python.po | 140 ++++++++++-------- lang/python/th/LC_MESSAGES/python.po | 2 +- lang/python/tr_TR/LC_MESSAGES/python.po | 2 +- lang/python/uk/LC_MESSAGES/python.po | 2 +- lang/python/ur/LC_MESSAGES/python.po | 2 +- lang/python/uz/LC_MESSAGES/python.po | 2 +- lang/python/zh_CN/LC_MESSAGES/python.po | 2 +- lang/python/zh_TW/LC_MESSAGES/python.po | 2 +- 72 files changed, 245 insertions(+), 200 deletions(-) diff --git a/lang/python.pot b/lang/python.pot index 95fc5da04..1c20ae7b5 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index bea1c8aea..ab3a2fd93 100644 --- a/lang/python/ar/LC_MESSAGES/python.po +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: aboodilankaboot, 2019\n" "Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" diff --git a/lang/python/as/LC_MESSAGES/python.po b/lang/python/as/LC_MESSAGES/python.po index c50cfdbfe..feeae1195 100644 --- a/lang/python/as/LC_MESSAGES/python.po +++ b/lang/python/as/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Deep Jyoti Choudhury , 2020\n" "Language-Team: Assamese (https://www.transifex.com/calamares/teams/20061/as/)\n" diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index 502b9a6ed..c9c7ae5d9 100644 --- a/lang/python/ast/LC_MESSAGES/python.po +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: enolp , 2020\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" diff --git a/lang/python/az/LC_MESSAGES/python.po b/lang/python/az/LC_MESSAGES/python.po index 8c93c8d96..1fcf70cbc 100644 --- a/lang/python/az/LC_MESSAGES/python.po +++ b/lang/python/az/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Xəyyam Qocayev , 2020\n" "Language-Team: Azerbaijani (https://www.transifex.com/calamares/teams/20061/az/)\n" diff --git a/lang/python/az_AZ/LC_MESSAGES/python.po b/lang/python/az_AZ/LC_MESSAGES/python.po index ede276cf7..93063ff7a 100644 --- a/lang/python/az_AZ/LC_MESSAGES/python.po +++ b/lang/python/az_AZ/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Xəyyam Qocayev , 2020\n" "Language-Team: Azerbaijani (Azerbaijan) (https://www.transifex.com/calamares/teams/20061/az_AZ/)\n" diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po index f4c7e65e2..fb1183a06 100644 --- a/lang/python/be/LC_MESSAGES/python.po +++ b/lang/python/be/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Zmicer Turok , 2020\n" "Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index b05e10126..7054ad013 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Georgi Georgiev , 2020\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" diff --git a/lang/python/bn/LC_MESSAGES/python.po b/lang/python/bn/LC_MESSAGES/python.po index ee7b2e059..f131948d9 100644 --- a/lang/python/bn/LC_MESSAGES/python.po +++ b/lang/python/bn/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: 508a8b0ef95404aa3dc5178f0ccada5e_017b8a4 , 2020\n" "Language-Team: Bengali (https://www.transifex.com/calamares/teams/20061/bn/)\n" diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 4549b1e17..a1c60490c 100644 --- a/lang/python/ca/LC_MESSAGES/python.po +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Davidmp , 2020\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" diff --git a/lang/python/ca@valencia/LC_MESSAGES/python.po b/lang/python/ca@valencia/LC_MESSAGES/python.po index e33bba2dd..376ceb3e9 100644 --- a/lang/python/ca@valencia/LC_MESSAGES/python.po +++ b/lang/python/ca@valencia/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Catalan (Valencian) (https://www.transifex.com/calamares/teams/20061/ca@valencia/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index e2b0e6596..2d82738f5 100644 --- a/lang/python/cs_CZ/LC_MESSAGES/python.po +++ b/lang/python/cs_CZ/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Pavel Borecki , 2020\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po index 3aa90eaad..cd12d0d79 100644 --- a/lang/python/da/LC_MESSAGES/python.po +++ b/lang/python/da/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: scootergrisen, 2020\n" "Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index beb4ce7b3d137615d5b5238fb0ea631315b6e1ab..fb100aa4b2f7de4108cb06512c92e13fc55c33e6 100644 GIT binary patch delta 608 zcmXZZJxfAi6u|Lg^ajz3z4%t94P|9YSwcmSAw@$(>5Xa#auHobs;T7`SkTho5VW)u zSc4!)V|@XqAg4Y+P|(;E(f_1yxxaHBp68r%pL-X{M@mM6nX-sPtRjYpJapIm#SnSC zM`Q@kaS88n0zYsW?Y%YkFiL(~&)?BU9_XVsZs81GVHhhoix!)h{|oar5za^!sV!&N zkJoh{ae({<{rH8`=&~~euJdwZ5}laCLA*h2^n_jbjXcug5Xqp&VTuF^E?EfR6KbPR z)QzoF)4{yRrAQd3a253?j#1AQa1yJi=bBx$0S9rBJcc@W9#`-gH?hg&Gsg(FQ8%2T z7A&F{-%tnoL1q#s$uNd+1b0vyo0!59>cCE}LmLFqz>~UF)PCb!PYmY_f+Rr!wLynR wWE6eai5s|v`?!Eb)PMU?zG(EfcSchO>BFORBIAu`6Nyau)tYN7@471ue}Vi(&;S4c delta 627 zcmXZZ&nv@m7{KvoOF2k0KlTIT>)_YMY|7rAJKqXVT} zs5zJeNx3Ng0VfA8{s3jg`|#P*jNm=$+g8haHGz6#DpklXFXxO@+DH`g`As9Tro=W<>0rLFHd%gj N?$+6Y<%I9q{s(S$O>O`H diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index 107847889..f154c4145 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -4,18 +4,18 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Christian Spaan, 2020 # Andreas Eitel , 2020 # Adriaan de Groot , 2020 +# Christian Spaan, 2020 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Adriaan de Groot , 2020\n" +"Last-Translator: Christian Spaan, 2020\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -140,7 +140,7 @@ msgstr "Ungültige unsquash-Konfiguration" #: src/modules/unpackfs/main.py:439 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" msgstr "" -"Das Dateisystem für \"{}\". ({}) wird von Ihrem aktuellen Kernel nicht " +"Das Dateisystem für \"{}\" ({}) wird von Ihrem aktuellen Kernel nicht " "unterstützt" #: src/modules/unpackfs/main.py:443 diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index 95a2c90eb..ff6bc27a6 100644 --- a/lang/python/el/LC_MESSAGES/python.po +++ b/lang/python/el/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Efstathios Iosifidis , 2017\n" "Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po index 17fc8db1e..b67ebbc73 100644 --- a/lang/python/en_GB/LC_MESSAGES/python.po +++ b/lang/python/en_GB/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Jason Collins , 2018\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index b8c83ed0a..93839a43f 100644 --- a/lang/python/eo/LC_MESSAGES/python.po +++ b/lang/python/eo/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Kurt Ankh Phoenix , 2018\n" "Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n" diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index 3246f7d1f..648b8eeb0 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Pier Jose Gotta Perez , 2020\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index 7b0933ed9..5e0d9ceb9 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Logan 8192 , 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 503461528..5556a6683 100644 --- a/lang/python/es_PR/LC_MESSAGES/python.po +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index 73b642c14..a6a927630 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Madis Otenurm, 2019\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index 540f048b9..205129139 100644 --- a/lang/python/eu/LC_MESSAGES/python.po +++ b/lang/python/eu/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Ander Elortondo, 2019\n" "Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 82f63fbda..71a853cd3 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Danial Behzadi , 2020\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index 3df0a0d0c..1895e5fb4 100644 --- a/lang/python/fi_FI/LC_MESSAGES/python.po +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Kimmo Kujansuu , 2020\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index 24f71ecb0..e89daf3e9 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Arnaud Ferraris , 2019\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index fdfb24597..f2b66dc6a 100644 --- a/lang/python/fr_CH/LC_MESSAGES/python.po +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index f072a2efe..f419bffb5 100644 --- a/lang/python/gl/LC_MESSAGES/python.po +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Xosé, 2018\n" "Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 601ec8021..f51975ca0 100644 --- a/lang/python/gu/LC_MESSAGES/python.po +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 229d2ff78..3da19651a 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Yaron Shahrabani , 2020\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index 40fbd2e72..0c3b7260f 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Panwar108 , 2020\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index c5dc0e9b3..2a49c9c92 100644 --- a/lang/python/hr/LC_MESSAGES/python.po +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Lovro Kudelić , 2020\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 2b2d42bd2..4ea6b83bf 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Lajos Pasztor , 2019\n" "Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index 918423b8d..0bf6f2af7 100644 --- a/lang/python/id/LC_MESSAGES/python.po +++ b/lang/python/id/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Wantoyèk , 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" diff --git a/lang/python/ie/LC_MESSAGES/python.mo b/lang/python/ie/LC_MESSAGES/python.mo index 1f1e0d4d55d5df0ea52fe62ec7f76d4c7780189f..4dfdef0e7aa855352832c24e38aa262c4c7fb0fd 100644 GIT binary patch literal 2906 zcmbuAJ!~9B6vqb$2^{7td2uy!Ri%51!;<#@+$%6#N!Eh4zU@7`qG(foH&V@GRH@&w-zV&w)RHPlNZt zSHR!Fm%-!5@^wywFQQ!op9kLsUjpmktKf$qt@A1PEcg}p4EP;*2K*5`3;qGpzNa3| z*O>(0M0*{i@w-L;*WgoVe-8#Y<4@o++G8hjehdzw{R=n=vd0)30j9u9;3jwl`~oCD ze*;f~4?qqMJf7172hm;x$u0q306zlh{GWm3|2H7T^XFpxPmtm;P-5&NI0$;+B3K1K z0BM~sK|0^PV*CMk8trpWD-|{!usOjbcst zp0}61<}<*KBynw1y{Ai;Yn7e7AsGX*QKFd48Oh7Ln|nqTHUeWfYEhoruaaZq75bN*-^wyuou6x0O8@=V znv%$spbK2jZi%d3uh)wlU@wRY+98&y1| zd10NmW`wq(aIvZJDIrXxF2a0-Ms*`ahP*W?q8gvmPMQ!7rjnm;I+xg5rLwiPRYuil ztLk#Q?8i|B)gmGU%T^qw*~&<@dS$qxWaUC>VQyi%bC%(9wS>}iQp1Ox1Wr1+?J7wq zlpce22xFz2xVbjtjdtv4tGYDaw1$kpml_}4P;SrF8dtKk9OBxC-b`#FTjM&(ns#Dj zjOTwR&TBq6!G|x5l~8({sBcO*l3NHtUtQ~xG!vs%d8m5y?63vH}}vTE`Y4X{ql^YvGabo!S(JJj?Y>#dNgx)$gNqT}xQssB8g}IGXHt2@^VSLA!VT z_bGH=|MQ&u`m#(44|=kvYywr(qmNlvI{=mrk?Upm90Up99YMow(d;(pTA_$xx5Xi{ zneBZ*H?!XT!r2w`Ktd1wJZ}dDG+$92rlZ+VHg~_4wkPCzI+N!yJT#HHy6Q}j@D*nL zjWfy3wD?HYh4%JLSjexu>}V@}0v1zzCHBOZL+LZEg+fB$cxtm0^++y0J$=uWsc_HE d^Tl07vY}*=()qo|wULhWcNJydR)Ru<{|4sJQ4jzC delta 69 zcmca5*1&9WPl#nI0}wC*u?!Ha05LNV>i{tbSOBpbP|^}egVeyl, YEAR. # +# Translators: +# Caarmi, 2020 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Last-Translator: Caarmi, 2020\n" "Language-Team: Interlingue (https://www.transifex.com/calamares/teams/20061/ie/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +23,11 @@ msgstr "" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "" +msgstr "Configurante GRUB." #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "Montente partitiones." #: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 #: src/modules/initcpiocfg/main.py:209 @@ -35,18 +39,18 @@ msgstr "" #: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Errore de configuration" #: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 #: src/modules/fstab/main.py:333 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "Null partition es definit por usa de
{!s}
." #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "Configurante servicios de systemd" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 @@ -57,11 +61,13 @@ msgstr "" msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Invocation de systemctl {arg!s} in chroot retrodat li code " +"{num!s}." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." -msgstr "" +msgstr "Ne successat activar li servicio de systemd {name!s}." #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." @@ -103,7 +109,7 @@ msgstr "" #: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 msgid "Failed to unpack image \"{}\"" -msgstr "" +msgstr "Ne successat depaccar li image \"{}\"" #: src/modules/unpackfs/main.py:415 msgid "No mount point for root partition" @@ -124,7 +130,7 @@ msgstr "" #: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 #: src/modules/unpackfs/main.py:462 msgid "Bad unsquash configuration" -msgstr "" +msgstr "Ínvalid configuration de unsquash" #: src/modules/unpackfs/main.py:439 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" @@ -146,27 +152,27 @@ msgstr "" #: src/modules/displaymanager/main.py:523 msgid "Cannot write KDM configuration file" -msgstr "" +msgstr "Ne successat scrir li file de configuration de KDM" #: src/modules/displaymanager/main.py:524 msgid "KDM config file {!s} does not exist" -msgstr "" +msgstr "File del configuration de KDM {!s} ne existe" #: src/modules/displaymanager/main.py:585 msgid "Cannot write LXDM configuration file" -msgstr "" +msgstr "Ne successat scrir li file de configuration de LXDM" #: src/modules/displaymanager/main.py:586 msgid "LXDM config file {!s} does not exist" -msgstr "" +msgstr "File del configuration de LXDM {!s} ne existe" #: src/modules/displaymanager/main.py:669 msgid "Cannot write LightDM configuration file" -msgstr "" +msgstr "Ne successat scrir li file de configuration de LightDM" #: src/modules/displaymanager/main.py:670 msgid "LightDM config file {!s} does not exist" -msgstr "" +msgstr "File del configuration de LightDM {!s} ne existe" #: src/modules/displaymanager/main.py:744 msgid "Cannot configure LightDM" @@ -182,7 +188,7 @@ msgstr "" #: src/modules/displaymanager/main.py:777 msgid "SLIM config file {!s} does not exist" -msgstr "" +msgstr "File del configuration de SLIM {!s} ne existe" #: src/modules/displaymanager/main.py:903 msgid "No display managers selected for the displaymanager module." @@ -200,7 +206,7 @@ msgstr "" #: src/modules/initcpiocfg/main.py:37 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "Configurante mkinitcpio." #: src/modules/initcpiocfg/main.py:210 #: src/modules/luksopenswaphookcfg/main.py:100 @@ -216,11 +222,11 @@ msgstr "" #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Installante li data." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "" +msgstr "Configurante servicios de OpenRC" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." @@ -240,6 +246,8 @@ msgstr "" msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Invocation de rc-update {arg!s} in chroot retrodat li code " +"{num!s}." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" @@ -263,12 +271,12 @@ msgstr "" #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "" +msgstr "Configurante li tema de Plymouth" #: src/modules/packages/main.py:59 src/modules/packages/main.py:68 #: src/modules/packages/main.py:78 msgid "Install packages." -msgstr "" +msgstr "Installante paccages." #: src/modules/packages/main.py:66 #, python-format @@ -291,7 +299,7 @@ msgstr[1] "" #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Installante li bootloader." #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." @@ -307,11 +315,11 @@ msgstr "" #: src/modules/dracut/main.py:59 msgid "The exit code was {}" -msgstr "" +msgstr "Li code de termination esset {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "Configurante initramfs." #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." @@ -319,7 +327,7 @@ msgstr "" #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "Scrition de fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -332,7 +340,7 @@ msgstr "" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "Configurante locales." #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 6a5bd68ff..58eeb89c1 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Kristján Magnússon, 2018\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index b556b5963..54af2cda9 100644 --- a/lang/python/it_IT/LC_MESSAGES/python.po +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Saverio , 2020\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index ebbf60f56..2c6ae761f 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: UTUMI Hirosi , 2020\n" "Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 0e9162ef5..62c8f15d1 100644 --- a/lang/python/kk/LC_MESSAGES/python.po +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 704155d87..dd1988cab 100644 --- a/lang/python/kn/LC_MESSAGES/python.po +++ b/lang/python/kn/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Kannada (https://www.transifex.com/calamares/teams/20061/kn/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po index 9ce0aff53..070af8d10 100644 --- a/lang/python/ko/LC_MESSAGES/python.po +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: MarongHappy , 2020\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 3c2ab81cb..70bd331a3 100644 --- a/lang/python/lo/LC_MESSAGES/python.po +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index 733d46f04..db71180d1 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Moo, 2020\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" diff --git a/lang/python/lv/LC_MESSAGES/python.po b/lang/python/lv/LC_MESSAGES/python.po index d4ac4ed03..a3f373530 100644 --- a/lang/python/lv/LC_MESSAGES/python.po +++ b/lang/python/lv/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Latvian (https://www.transifex.com/calamares/teams/20061/lv/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/mk/LC_MESSAGES/python.po b/lang/python/mk/LC_MESSAGES/python.po index 98853a9b6..12c8488b1 100644 --- a/lang/python/mk/LC_MESSAGES/python.po +++ b/lang/python/mk/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Martin Ristovski , 2018\n" "Language-Team: Macedonian (https://www.transifex.com/calamares/teams/20061/mk/)\n" diff --git a/lang/python/ml/LC_MESSAGES/python.po b/lang/python/ml/LC_MESSAGES/python.po index e510dc364..b5d055596 100644 --- a/lang/python/ml/LC_MESSAGES/python.po +++ b/lang/python/ml/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Balasankar C , 2019\n" "Language-Team: Malayalam (https://www.transifex.com/calamares/teams/20061/ml/)\n" diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index 7440713a1..03e31e2bd 100644 --- a/lang/python/mr/LC_MESSAGES/python.po +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index 4a1c802db..cc25bffd4 100644 --- a/lang/python/nb/LC_MESSAGES/python.po +++ b/lang/python/nb/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: 865ac004d9acf2568b2e4b389e0007c7_fba755c <3516cc82d94f87187da1e036e5f09e42_616112>, 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" diff --git a/lang/python/ne_NP/LC_MESSAGES/python.po b/lang/python/ne_NP/LC_MESSAGES/python.po index 028b51b53..7712c05e1 100644 --- a/lang/python/ne_NP/LC_MESSAGES/python.po +++ b/lang/python/ne_NP/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Nepali (Nepal) (https://www.transifex.com/calamares/teams/20061/ne_NP/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index 2c89bbca4029f9a07a64dcd79e6c2b240ad8aab4..4c862621f9ae4faf66ff3b5c949f294f5d7781db 100644 GIT binary patch literal 8059 zcmbuEUyNK;9mlT~L>5s%MFD}+Vs%$`X16Vrvfb9w?zYyp>}I>AO~8aZGiPS*&i&{8 zv)g6u3yDSy5nqTrh>1ocF$Nzr>XR`c_}~NbB0iXq5G87S@Xdtq;^%knxifQjcDn^` zdiFc_{P~^V`TaY;-|d^XUH81hbBgvk+VU>PalvP=;}6d*A90+og11_H0^Gy<&%isu zKY<6px53YXciiAO4}kkEc0d{b0XPM|4t^SRKI%A!fZM_QzyChD13hn6uo={WGm+-JN|p{BJY0%WqgW7UjiQoh0eD?ng1h@Eu7ziV#lw6`@nyJ zGXG9GYv4R6{V9kDou7hx!QX+8fN$D&1#x*l37!JK4GNvtL0SJUSO;qyUe5ajNSE`J zeShA*{|bZ!=QZ#_@Sk7{yqlmPd_N5?f-it)!GD8iz=IGKyLlSC1pWfl;PnU#7M&g_ z`+pM@ef$~}K3@gJ?rz2z#UCH%4`$=+qRrCeIZAtgCVb0toOXbAoxBV^irXTAVqlcFEo)I1{d zhiM{9Ij20Bt}|wS6|vzMzfaI6X%ErF{`S-4*+V15nMdsQCfW>5WH(JiEe@f!|A>sQ zw{OPo_$~fZK4LQ;riqTk?nIaJpgv;LBg_L<)GeuWJbTodL6nD? ziX)G|Z8kFu#BP##nHPnQOv%Ia>$#hDVI*vOojh^P&z$u>&nHbsN4`#qnAyLrywVh4@P9R%-Qfkq#?s zN@m{EqHEeHaMNC&wLJ88Vl0SSUVFWiPRVYfgJ_i_ZkAa)iGr(2Z7uOIoilUis)|r; z&(|gKV$Ru1*D|RP{f@-WpFO?xj>FcV=EYQ<6ShyQQ%e_)qoMx$Laf836XmJXp^-&@ z9V5)TD(mWigY=h_Mqnj1SmT8qW$CqoX0je}KpmOincB5Ai+$wdTQmD{-57R(IySH1^$f6}X|>(c-*AKBLy$l!eVG zh<%-DXD$zdbrr8?-6&KmQG?~fJ-B$RHm*1)T{Mg{M5sC(_+vYrWSbtQlqXuPN4e^{ z7#3nwg~PVfS{6lqs$#d~T(d zzAr+^V`F`VrjXj{VguD6jQNq<(#fFDGBKDX1c-)ie~NTOp)T32^zR)f08X^ZF{lh2 z!SJ9qB=EE%ohk`S`m&d1&X6NqWm3fvwx4%SLZ$H7507y1XjH~9)k!o;O$JgnqlC0! zgGez|UpF)KDdAS+ZD*7gL)6H9ZPxA(oY{N8igGc6mc~LX>Df5ZM@1;JQ}Rp9Cr=By zCddyH_fpmIR&{82+HT=u5;b+277{Q9m8$W*<4q9@nwe62$Fm6gnrKZpOA_Qp^x5wn z)#gx?*2LL7M@QKw-)_)pBvQVE)A| zwaIeqa2cgHkBZuK3RQC#8mB<-L+)em358_MEs2&B)E*`4&hm)PQ{`i=GFJz2wyrRY zJS=qy*+!IgJATw~{S*q~g)VWRYBzO>G<8E9+s_aVS%btIIV(HLEm8QXQL?zP8sE4w zQF55(aU3OLmyLA^CWNj$Ni=CePm_%JhDhuZ>P(tYimiXS3mtpq$}D4dCcBwbYhABN zgsiw`!D*jfDd+Nze_zy6xF!o3I;lBjbz|p3*bAezu)H#AZd1~klJ{z2CPy7*E!_H= z?h`h-SqlvW_;jl;7W+PsjM1W%S(>-o-sPb&+1lh7rAX>8>>w+C93wQZMN!(V2m0tFRQAiFu#@9{wPo!F zGiol+u76@n+pA@iLrC1 z&&>}Gx34}uM&gsZIR--VG`+B zj9|D_NpnBbIw9E5+a{5FPvy${Bf1c-MH8{T7MfP6W!@aWftCGeqVqoTbd8@pQiobGA^sHX=j3Y+v<^9H^tE zUcxep!`O1Chd76i-O+2_%2Qsabrof->V!!olZa_`8+DwgcJ@|8VWI0Ls>``a5NoAU zxTbZ33tR3@VpZU!e%{NJv&AyW8FyH><+37+d><<%_1S3|!J#a@wK$n0^_9sqHTirv zC}MEMvNp1oojR2Y%N?v5)LJYmt)yI~2BW3ix2w4%>o;r|?VzpH*Ev17V^MfjC-f^P zasb!$DbtjcU1(^)T9Nw?hz?3Hr@vfWQ|g~k1!(&k3a}y{D(f$uIgb%E8X88`qN%}Z znd|mOdodeRhm{{f+T?T+BszLEB25b?6=(L^p2(hpMy+ULekO!V|1Xr$%`?DDqHi+|KdB-iyJ26;ZsJ7uI6y zG+}s9syT~7IO7sBdXPd9&Evh)XeJDbQ+bweGg2(5_Sw|lFgZ$VJD)Vgn>h{g6XDh! z30>Db-ORS(cuQXz*?`lUk6hG?<{FWcp3gYz2dsv7)PdAF%{qKBoRbovY zjqQpJ$*s8)88u`W5{h*q<~OMPDutgliJ_2PcScO2GAerBHUy5U?NN$9IH)KY%O;I; zIdL`8l$Bu5k9xR6#|uL^muSIlYb>;IBXZ<9xg7iV{IDgOp)yOT4rnFsItU~wGPMRd zka&rBZRwMU+e8bot-y`tX0MusRDUZ)`R8lRCy+K@K`PpYYD0U3Q~p)6cW73L*)ot# z+%|U{pRI=KKoPY$0aZ!Ko-u(zH7MCg;ejy0mCNxcML7_LB5^JES|0VMtqFx-%qL<) zq%XaGmUOi$PWybhGJ>%(H7?vIRto$B&}t-6xcRi^pmsyEyR*O?>>0`0Eu|jRWu8%)X?K^Vmn+q)8AZ8A7o5)Q^jDnhe+wIo#iny_+Ef_=Rj{<#|l zCT}Z5yMzw}QY4z8l7T zRdDa{Ll?n8K}0%O!BICyu|siiaFT*U2S;(x@3qk%{NCq&@9y63-u*uJAhGhTH}Y5! zz2qTsjm(kdJv@jvIDqT8A2;y;e#a#KYSpnerTVEgrm>7}{wkiuIXr?-@dUod5v5kt z4+gGbwq2kp2dU5C zDZGS(^jG&7xP{MK6Q9r>=ugXBhf+oA5>DVeUdFe`d3J&x|D&6cyG<88B>$)4t{^(e zE|O0xwyX9CkA$p8`rO^`T$s~cw2OUYjFgwrLg9R1=X`IuY4pUEYvV=rulB8{8^Nt= z!z>kLsOz+RCR4GLlw!kelYzXBYWdPVBh&G`tj1HakQk6>iHA~2hKI*$O}|>Ty2eMF zK@jS)=cv?crWiCm*+_25Y~S%7*HQa+DKw3Su`-m-$*c59xt_V$IaRIKO&Id_Yo;PP qdsH^EH|0iuJ~wVW-&$k!f(iAqA1=C;R^O)I-TU$=KO!IVPyPb)>TVeT diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index cfb1913bc..da5191f21 100644 --- a/lang/python/nl/LC_MESSAGES/python.po +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -5,15 +5,16 @@ # # Translators: # Adriaan de Groot , 2020 +# Tristan , 2020 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Adriaan de Groot , 2020\n" +"Last-Translator: Tristan , 2020\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,7 +28,7 @@ msgstr "GRUB instellen." #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "Partities mounten." #: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 #: src/modules/initcpiocfg/main.py:209 @@ -39,55 +40,60 @@ msgstr "" #: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Configuratiefout" #: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 #: src/modules/fstab/main.py:333 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "Geen partities gedefinieerd voor
{!s}
om te gebruiken." #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "Configureer systemd services " #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "" +msgstr "De service kan niet worden gewijzigd" #: src/modules/services-systemd/main.py:69 msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" +"systemctl {arg!s} aanroeping in chroot resulteerde in foutcode " +"{num!s}." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." msgstr "" +"De systemd service {name!s} kon niet worden ingeschakeld." #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." -msgstr "" +msgstr "Het systemd doel {name!s} kon niet worden ingeschakeld." #: src/modules/services-systemd/main.py:78 msgid "Cannot disable systemd target {name!s}." -msgstr "" +msgstr "De systemd service {name!s} kon niet worden uitgeschakeld." #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "De systemd unit {name!s} kon niet worden gemaskerd." #: src/modules/services-systemd/main.py:82 msgid "" "Unknown systemd commands {command!s} and " "{suffix!s} for unit {name!s}." msgstr "" +"Onbekende systemd opdrachten {command!s} en " +"{suffix!s} voor unit {name!s}. " #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Unmount bestandssystemen." #: src/modules/unpackfs/main.py:44 msgid "Filling up filesystems." @@ -95,7 +101,7 @@ msgstr "Bestandssystemen opvullen." #: src/modules/unpackfs/main.py:257 msgid "rsync failed with error code {}." -msgstr "" +msgstr "rsync mislukte met foutcode {}." #: src/modules/unpackfs/main.py:302 msgid "Unpacking image {}/{}, file {}/{}" @@ -130,83 +136,89 @@ msgstr "" #: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 #: src/modules/unpackfs/main.py:462 msgid "Bad unsquash configuration" -msgstr "" +msgstr "Foutieve unsquash configuratie" #: src/modules/unpackfs/main.py:439 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" msgstr "" +"Het bestandssysteem voor \"{}\" ({}) wordt niet ondersteund door je huidige " +"kernel" #: src/modules/unpackfs/main.py:443 msgid "The source filesystem \"{}\" does not exist" -msgstr "" +msgstr "Het bronbestandssysteem \"{}\" bestaat niet" #: src/modules/unpackfs/main.py:449 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" +"unsquashfs niet gevonden, verifieer dat je het squashfs-tools pakket heb " +"geïnstalleerd" #: src/modules/unpackfs/main.py:463 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "" +msgstr "De bestemming \"{}\" in het doelsysteem is niet een map" #: src/modules/displaymanager/main.py:523 msgid "Cannot write KDM configuration file" -msgstr "" +msgstr "Schrijven naar het KDM-configuratiebestand is mislukt " #: src/modules/displaymanager/main.py:524 msgid "KDM config file {!s} does not exist" -msgstr "" +msgstr "KDM-configuratiebestand {!s} bestaat niet." #: src/modules/displaymanager/main.py:585 msgid "Cannot write LXDM configuration file" -msgstr "" +msgstr "Schrijven naar het LXDM-configuratiebestand is mislukt" #: src/modules/displaymanager/main.py:586 msgid "LXDM config file {!s} does not exist" -msgstr "" +msgstr "Het KDM-configuratiebestand {!s} bestaat niet" #: src/modules/displaymanager/main.py:669 msgid "Cannot write LightDM configuration file" -msgstr "" +msgstr "Schrijven naar het LightDM-configuratiebestand is mislukt" #: src/modules/displaymanager/main.py:670 msgid "LightDM config file {!s} does not exist" -msgstr "" +msgstr "Het LightDM-configuratiebestand {!s} bestaat niet" #: src/modules/displaymanager/main.py:744 msgid "Cannot configure LightDM" -msgstr "" +msgstr "Kon LightDM niet configureren" #: src/modules/displaymanager/main.py:745 msgid "No LightDM greeter installed." -msgstr "" +msgstr "Geen LightDM begroeter geïnstalleerd" #: src/modules/displaymanager/main.py:776 msgid "Cannot write SLIM configuration file" -msgstr "" +msgstr "Schrijven naar het SLIM-configuratiebestand is mislukt" #: src/modules/displaymanager/main.py:777 msgid "SLIM config file {!s} does not exist" -msgstr "" +msgstr "Het SLIM-configuratiebestand {!s} bestaat niet" #: src/modules/displaymanager/main.py:903 msgid "No display managers selected for the displaymanager module." -msgstr "" +msgstr "Geen display managers geselecteerd voor de displaymanager module." #: src/modules/displaymanager/main.py:904 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" +"De displaymanagers lijst is leeg of ongedefinieerd in beide de globalstorage" +" en displaymanager.conf." #: src/modules/displaymanager/main.py:986 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "Display manager configuratie was incompleet" #: src/modules/initcpiocfg/main.py:37 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "Instellen van mkinitcpio" #: src/modules/initcpiocfg/main.py:210 #: src/modules/luksopenswaphookcfg/main.py:100 @@ -215,61 +227,68 @@ msgstr "" #: src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" +"Geen hoofd mount punt is gegeven voor
{!s}
om te gebruiken. " #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "Instellen van versleutelde swap." #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Data aan het installeren." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "" +msgstr "Configureer OpenRC services" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "" +msgstr "Kon service {name!s} niet toegoeven aan runlevel {level!s}." #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "" +msgstr "Kon service {name!s} niet verwijderen van runlevel {level!s}." #: src/modules/services-openrc/main.py:70 msgid "" "Unknown service-action {arg!s} for service {name!s} in run-" "level {level!s}." msgstr "" +"Onbekende serviceactie {arg!s} voor service {name!s} in " +"runlevel {level!s}." #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" +"rc-update {arg!s} aanroeping in chroot resulteerde in foutcode " +"{num!s}." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "Doel runlevel bestaat niet" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." msgstr "" +"Het pad voor runlevel {level!s} is {path!s}, welke niet bestaat" #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "Doelservice bestaat niet" #: src/modules/services-openrc/main.py:120 msgid "" "The path for service {name!s} is {path!s}, which does not " "exist." msgstr "" +"Het pad voor service {level!s} is {path!s}, welke niet bestaat" #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "" +msgstr "Plymouth thema instellen" #: src/modules/packages/main.py:59 src/modules/packages/main.py:68 #: src/modules/packages/main.py:78 @@ -297,35 +316,35 @@ msgstr[1] "%(num)dpakketten verwijderen." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Installeer bootloader" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "Instellen van hardwareklok" #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "initramfs aanmaken met dracut." #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "Uitvoeren van dracut op het doel is mislukt" #: src/modules/dracut/main.py:59 msgid "The exit code was {}" -msgstr "" +msgstr "De afsluitcode was {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "Instellen van initramfs." #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" +msgstr "Configureren van OpenRC dmcrypt service." #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "fstab schrijven." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index 967fae876..4e6d8ab0f 100644 --- a/lang/python/pl/LC_MESSAGES/python.po +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Piotr Strębski , 2020\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index d3d17a2d5..760f9f23a 100644 --- a/lang/python/pt_BR/LC_MESSAGES/python.po +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Guilherme, 2020\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 377c9a553..620c287d7 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Ricardo Simões , 2020\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index f90faa939..a1f612136 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -4,7 +4,7 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Baadur Jobava , 2018 +# Jobava Jobava , 2018 # Sebastian Brici , 2018 # #, fuzzy @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Sebastian Brici , 2018\n" "Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index b950fb3b5..531d056b5 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: ZIzA, 2020\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 99cbec3c1..d25ae69f1 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Dušan Kazik , 2020\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 3d23de20e..c536dedf7 100644 --- a/lang/python/sl/LC_MESSAGES/python.po +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index a0f9279f6..f5062c3f3 100644 --- a/lang/python/sq/LC_MESSAGES/python.po +++ b/lang/python/sq/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Besnik Bleta , 2020\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 232966a9c..656252cb6 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Slobodan Simić , 2020\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index 947a3ac0c..e47ce00c2 100644 --- a/lang/python/sr@latin/LC_MESSAGES/python.po +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 8248bddee..89da13dcf 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Tobias Olausson , 2020\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" diff --git a/lang/python/tg/LC_MESSAGES/python.mo b/lang/python/tg/LC_MESSAGES/python.mo index 1b88d83072b32a1b3a75791b2f5df45ad88b6f02..fc92ff37eb9c67f51543be108be8e4b339430473 100644 GIT binary patch literal 9876 zcmb`MZ*UxC9mf|$p+Qvsh=52R3WY>+N!s$Kq<@6AX$`cr)25{=qipUrmu>ELkKMhb znOKKXz{)Tnhyw!@kUu)U5K`Kb(2|HU^1@ep>Bt*rm_Y}9A->cZ2FLO9dv^D3FS$z_ zVP`hq+kKwr_x%3<6Ynqo__^i z2L2IT0e%Qx0$zHyVO$R`k1-F*__JUq7=m8~jdKiRC2%o#6}T0=8uY9Lpz!lCDC^EU7af6%L6N%)6h16arUI)Ghc7bP}7tvb*%KF`)@G}gGJ|6+E0AG&B-vL+i`~i3u zc*U2Z{l~x!JpUBj3jPV)0xm_lZJ-bC1`mOEgZ~DF{+$RZd=^2L7>|NN=Q&X1_$#Qu z#VF;0GYsPv@P|CVdqITjQQCKSej8i?UWPL62JZlugRg-W_!m&-eVa|c2fhf(^MAn` zz}*;C_u=11a_c|+rVK^o_`05oflma`AHkt&ht936?DN2_!KB~-vwpee?XCQ z15UOQ900`+o(DxgzX!h$egrNBZ^!ur?*T>LC&3=@BAjL!_+9Wu@L_Nb_zo!a&bU0X z=hdL_-3zV-p8&rFo&?u{7h-JjgI%ETc^_B+C&As|QjG3^KLYoF{{&ZoyAi$@d;%1D z?}M`b3Kd}=$W-GYa5eaAQ0Dy&90IRF31#qckgbe!V0u{IgZsfl;Dg{|oL%JoCHQ0T zBT(K4IREwFC!p}tg_2O2Q2>SC2SFSB7bx?7a1A;E&*T<<$t^t&XR}J zrT8tj!qv4*h-#e8EqvEvgD};X*!*U0+(`SAyu_uA7Wu)2dW>7R*K>AXoe>O8gv)Ys~)o3qw> z*-W{VGXqPFnO^=%f8Xj({a$6wLP6P%$_{$28z|2T%ARB8l;wG@r(}*AbIL_lbQlpS zf7B1GVm2sz8dB@boGQ9yCr~BV=I;QTX$DHB7ubRAI)+RsJN`Xo(;tKpXTZ*vJyQ>@ zHysCN&0J3TmN#r?g-Nq$!KDgZ<&~XG!5X&UP=jVZUXu{A)Mh(B7;M;L!~;3oH~R~g zip0yQ06kfOieyfx$6D)17FkZ+nuM7JEjq1@il#qQWv%Skr(&$==InvdL^}z)o>g>* z5plN820XVouhvF98`rsg!=|vHMWyiF}++d>y4Iz zgl=s|nPWM6kU;WB%u@ZBjrlyYIN;a6F1W;^HS1+@NM>hCw##JC!u=s$C7?!Zn9q4; zwj6XA8*IN+Fh^C=4|rwI7gb ztXzsDaT+tPU_us0v5=Zlc7%Yki$Y_`*uEvkM!QfDC6r6r`yxxBwccn0)lV8LxMt4s zYVTquYO{m@+0d*`kr%FGCG6I{U)o9nY|ABMP^kri=0S}~;>o#|uOuy5du=~3Qh_kf zq`E+8K5vVpO5w4Z9^v8+H_2ft?^zhtt7%z}lG4%+;p3_WD;r=>Nw=c!ct+weWQ}sc z(rZtVoY}j^iZXG6oP~$Pq*s?bYpp0{b*KCi_bK}kU7h69#BE>Y?P1H&JT+Um&2zJs z??)QY4&|%XrL9>}3zq3rOIrgM|7y#%8QUev&9P_o?Obc7vP^Re>@YP=#|lPVZ>T=D zI*c7wpv^OAdbttNMwVzE;yn(n2SfvrD-%?GQE9>bqbfDabK>D7OV1t^vspe=buH9E zf!$N#6W0laW_6Xs${uESy-}lYj?H~lz*}XmRV)Rg3dblri7g@9?*@bUg4=Hvd?-j1 zn&g3czv+-n)1isu`vJ)5`wghRhvD!HEcW&fxo6H-^% z^DNqeA&X|Dpox@BQk`xS617!}yU>YCuFTSYr@NbWH8N;t$&huS8F5;rm*_dE@&6Y! zAFk;_Qj%&Z>o+!bIzx^-;v^*_V`inDNqDbs%tX|=tT~O#bd|8~&2m_vNKEIdYKfm~ zn$cE_b>^1`2JF45G1*%87>P?15is^IGSE)#(h_S?f*#w~IkvAo4kGz&+)3jg z;{#-WYD~Q+Rkefv1SZaAswI*ibhg_jec=*3V6+|k2@RZi5H#wih`B`9jcq+=tv~8y z)j(9$boER(y7ahYnmq(drZ<<_WqCg4=~mlrU4Q$nn|jo)p6xq&x8BjR-4b`rZ1MAU zF0-zj_cMKNw`$q8HM89swq;Fb1Fd$qTHdwnrcBq$OxMk7Sy%Up>#ytLYT0c1L8i|$ z9lu}_Q{8HpEzzlZ`-v}`IyH%gL z#~xCxgF#U8yE{8aMn*d5F&y6>u=dKbPI?QoNM`ao0~Yw5%e%U6T-F)nJKI{e^ls^? z3A?PLtA$1=ApA0Yqa~yWti3@eg~WDNaZE5h-wM|3?Aw@GS(_(Y4Om{LhXx~ujk?v! zemkf#35|TqwgT;YA+yo-ihj3pO8U`XvwW3`ey(YC)Rk-0vbI$%M)*WHUb(mOKsa65 zU%4-wj6_=jz9o0XN^OM12m4k@cDgo1GgfBvKO0>evX|2`j@oFyhaoNNOUt#u9=8F6?IQ(vuLJ7GSPK>2vb_%n7R4a7~xallyD>70Uwjeu_(jO zh6gV-^D{Pk6MiQv_ruLYtUEFPCOAR8P7*=gt{{4F!5 zm_Hp(EkqyMS}65R6nd|?9G=qERIi%G0gfELpb!4Pn2YDv- zF_mx_4-ZS2%tyzVkBn~MKMOi>kN+8v(w*w*(s@M(t>lL~4IL-nO`Uwn2cua+pqPM0C z)5rYqH#2a=vYG_doh9o}R}cK*3tH2X)k*tmu9>ycwD?jMkTJ=@ctz!4Tm)IJH+)ME zGK!8#7=1eEFlL@+0JR}|lR0t>NGi>MuPTpK?w7!%8bm5@ zSHdFPi{p@xlvFJ|=va7^At`0L+(;uJe9Zd5py})n52qtNF{Ow?6^lNQNTQM^L5v|b zj~He@=*Gn)Sw{h*FVKBLl}qt1DkmDCdccP6?=@pmgyZHR&VmsgBYa-!wU~^*aomY4 zv>#O-;&9SBCZC;r2_HG6O>j8n0BIU1LF^s7v84Ox1$nc{YWfM(D`Lh@*kFUnXab^5 zOLNeWi^`+n@suqZ&Pk5fS~J>YOglxg)}K$(%@|5YLeUyH?{b}_Kh63$IiHFIp@8L2 zq)d`DU9kb-S9-AHNc#%fKB)amq?oLJq^Wso)v1tAyC|z(BVFh^EZM4QxQbIsK+wTS zH>f?a{xFX3rd>J}XN@+SYS3*)CSE{mDSI4?`o%z7JLr4Zm9}IK`KFn*nC)C`yuIf}69Srz6UU@(W zk;rsCWz}=Eh$2*+zi}w+Lfzp76(RZhB`tNm%hs}R>U=gUCDeE43tm6-2At8pYS}pu z5HgbWcoC)b)2|fBdu-;277UNp(ME6{(+OM380qT;I-xgdT_RQ0N2{MyrMchPq^30b z(54_o2|D?bsyrt9Ng9Vl86`YWBt zqVO0^8LIew+%ky*rE4M^MRG_`bNr~>3wN+49HfqWM)<4{k@56Si6_+lTPMB7L~@v` z|D-3r5*1X`8B0r-AUkO;bP8?eH#lWO4rcY0^~aQkUluN^o2H7Pnx)}1})xMC%8rr1UdQ9`4>frPm$puNX zClRB+YbJpbzc9jIK!-zSDz7*E&MEw8vq(2E`wM6MJu1#P*ga}db?8K~#9|uZnIqQB z1fsd6II^tp_$a(eikbCAly?(xB5N2dx}|RBRj1fVe?OH7tev5>Gf8q2-Hz>(&rv*8 L9*S}UA9?-6MiGe`^NCyCEZ6KWqq=C{5%s>n>8_0zK=ls01%=FTt#FEVXJcY@hImCp0^Gowe eGV{_E3KEM-GC|_So9zTU87Ff|SWXU?)dm2alN*)* diff --git a/lang/python/tg/LC_MESSAGES/python.po b/lang/python/tg/LC_MESSAGES/python.po index a5ff5ce5e..ea004f80c 100644 --- a/lang/python/tg/LC_MESSAGES/python.po +++ b/lang/python/tg/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Victor Ibragimov , 2020\n" "Language-Team: Tajik (https://www.transifex.com/calamares/teams/20061/tg/)\n" @@ -46,165 +46,175 @@ msgstr "Хатои танзимкунӣ" #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 #: src/modules/fstab/main.py:333 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "Ягон қисми диск барои истифодаи
{!s}
муайян карда нашуд." #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "Танзимоти хидматҳои systemd" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "" +msgstr "Хидмат тағйир дода намешавад" #: src/modules/services-systemd/main.py:69 msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Дархости systemctl {arg!s} дар chroot рамзи хатои {num!s}-ро ба" +" вуҷуд овард." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." -msgstr "" +msgstr "Хидмати systemd-и {name!s} фаъол карда намешавад." #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." -msgstr "" +msgstr "Интихоби systemd-и {name!s} фаъол карда намешавад." #: src/modules/services-systemd/main.py:78 msgid "Cannot disable systemd target {name!s}." -msgstr "" +msgstr "Интихоби systemd-и {name!s} ғайрифаъол карда намешавад." #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "Воҳиди systemd-и {name!s} пинҳон карда намешавад." #: src/modules/services-systemd/main.py:82 msgid "" "Unknown systemd commands {command!s} and " "{suffix!s} for unit {name!s}." msgstr "" +"Фармонҳои systemd-и номаълум {command!s} ва " +"{suffix!s} барои воҳиди {name!s}." #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Ҷудо кардани низомҳои файлӣ." #: src/modules/unpackfs/main.py:44 msgid "Filling up filesystems." -msgstr "" +msgstr "Пурборкунӣ бо низомҳои файлӣ." #: src/modules/unpackfs/main.py:257 msgid "rsync failed with error code {}." -msgstr "" +msgstr "rsync бо рамзи хатои {} қатъ шуд." #: src/modules/unpackfs/main.py:302 msgid "Unpacking image {}/{}, file {}/{}" -msgstr "" +msgstr "Баровардани тимсол: {}/{}, файл: {}/{}" #: src/modules/unpackfs/main.py:317 msgid "Starting to unpack {}" -msgstr "" +msgstr "Оғози барориши {}" #: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 msgid "Failed to unpack image \"{}\"" -msgstr "" +msgstr "Тимсоли \"{}\" бароварда нашуд" #: src/modules/unpackfs/main.py:415 msgid "No mount point for root partition" -msgstr "" +msgstr "Ягон нуқтаи васл барои қисми диски реша (root) нест" #: src/modules/unpackfs/main.py:416 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" +"globalstorage калиди \"rootMountPoint\"-ро дар бар намегирад, ҳeҷ кop " +"намeкyнад" #: src/modules/unpackfs/main.py:421 msgid "Bad mount point for root partition" -msgstr "" +msgstr "Нуқтаи васли нодуруст барои қисми диски реша (root)" #: src/modules/unpackfs/main.py:422 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "" +msgstr "rootMountPoint аз \"{}\" иборат аст, ки вуҷуд надорад, ҳeҷ кop намeкyнад" #: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 #: src/modules/unpackfs/main.py:462 msgid "Bad unsquash configuration" -msgstr "" +msgstr "Танзимоти unsquash нодуруст аст" #: src/modules/unpackfs/main.py:439 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" -msgstr "" +msgstr "Низоми файлӣ барои \"{}\" ({}) бо ҳастаи ҷории шумо дастгирӣ намешавад" #: src/modules/unpackfs/main.py:443 msgid "The source filesystem \"{}\" does not exist" -msgstr "" +msgstr "Низоми файлии манбаи \"{}\" вуҷуд надорад" #: src/modules/unpackfs/main.py:449 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" +"unsquashfs ёфт нашуд, мутмаин шавед, ки бастаи squashfs-tools насб карда " +"шудааст" #: src/modules/unpackfs/main.py:463 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "" +msgstr "Ҷойи таъиноти \"{}\" дар низоми интихобшуда феҳрист намебошад" #: src/modules/displaymanager/main.py:523 msgid "Cannot write KDM configuration file" -msgstr "" +msgstr "Файли танзимии KDM сабт карда намешавад" #: src/modules/displaymanager/main.py:524 msgid "KDM config file {!s} does not exist" -msgstr "" +msgstr "Файли танзимии KDM {!s} вуҷуд надорад" #: src/modules/displaymanager/main.py:585 msgid "Cannot write LXDM configuration file" -msgstr "" +msgstr "Файли танзимии LXDM сабт карда намешавад" #: src/modules/displaymanager/main.py:586 msgid "LXDM config file {!s} does not exist" -msgstr "" +msgstr "Файли танзимии LXDM {!s} вуҷуд надорад" #: src/modules/displaymanager/main.py:669 msgid "Cannot write LightDM configuration file" -msgstr "" +msgstr "Файли танзимии LightDM сабт карда намешавад" #: src/modules/displaymanager/main.py:670 msgid "LightDM config file {!s} does not exist" -msgstr "" +msgstr "Файли танзимии LightDM {!s} вуҷуд надорад" #: src/modules/displaymanager/main.py:744 msgid "Cannot configure LightDM" -msgstr "" +msgstr "LightDM танзим карда намешавад" #: src/modules/displaymanager/main.py:745 msgid "No LightDM greeter installed." -msgstr "" +msgstr "Хушомади LightDM насб нашудааст." #: src/modules/displaymanager/main.py:776 msgid "Cannot write SLIM configuration file" -msgstr "" +msgstr "Файли танзимии SLIM сабт карда намешавад" #: src/modules/displaymanager/main.py:777 msgid "SLIM config file {!s} does not exist" -msgstr "" +msgstr "Файли танзимии SLIM {!s} вуҷуд надорад" #: src/modules/displaymanager/main.py:903 msgid "No display managers selected for the displaymanager module." -msgstr "" +msgstr "Ягон мудири намоиш барои модули displaymanager интихоб нашудааст." #: src/modules/displaymanager/main.py:904 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" +"Рӯйхати displaymanagers дар bothglobalstorage ва displaymanager.conf холӣ ё " +"номаълум аст." #: src/modules/displaymanager/main.py:986 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "Раванди танзимкунии мудири намоиш ба анҷом нарасид" #: src/modules/initcpiocfg/main.py:37 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "Танзимкунии mkinitcpio." #: src/modules/initcpiocfg/main.py:210 #: src/modules/luksopenswaphookcfg/main.py:100 @@ -212,132 +222,140 @@ msgstr "" #: src/modules/fstab/main.py:339 src/modules/localecfg/main.py:145 #: src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." -msgstr "" +msgstr "Нуқтаи васли реша (root) барои истифодаи
{!s}
дода нашуд." #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "Танзимкунии мубодилаи рамзгузоришуда." #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Насбкунии иттилоот." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "" +msgstr "Танзимоти хидматҳои OpenRC" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "" +msgstr "Хидмати {name!s} барои run-level {level!s} илова карда намешавад." #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "" +msgstr "Хидмати {name!s} аз run-level {level!s} тоза карда намешавад." #: src/modules/services-openrc/main.py:70 msgid "" "Unknown service-action {arg!s} for service {name!s} in run-" "level {level!s}." msgstr "" +"Хидмати амалии {arg!s} барои хидмати {name!s} дар run-level " +"{level!s} номаълум аст." #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Дархости rc-update {arg!s} дар chroot рамзи хатои {num!s}-ро ба" +" вуҷуд овард." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "runlevel-и интихобшуда вуҷуд надорад" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." msgstr "" +"Масир барои runlevel {level!s} аз {path!s} иборат аст, аммо он " +"вуҷуд надорад." #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "Хидмати интихобшуда вуҷуд надорад" #: src/modules/services-openrc/main.py:120 msgid "" "The path for service {name!s} is {path!s}, which does not " "exist." msgstr "" +"Масир барои хидмати {name!s} аз {path!s} иборат аст, аммо он " +"вуҷуд надорад." #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "" +msgstr "Танзимоти мавзӯи Plymouth" #: src/modules/packages/main.py:59 src/modules/packages/main.py:68 #: src/modules/packages/main.py:78 msgid "Install packages." -msgstr "" +msgstr "Насбкунии қуттиҳо." #: src/modules/packages/main.py:66 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Коргузории қуттиҳо (%(count)d / %(total)d)" #: src/modules/packages/main.py:71 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Насбкунии як баста." +msgstr[1] "Насбкунии %(num)d баста." #: src/modules/packages/main.py:74 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Тозакунии як баста" +msgstr[1] "Тозакунии %(num)d баста." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Насбкунии боркунандаи роҳандозӣ." #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "Танзимкунии соати сахтафзор." #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "Эҷодкунии initramfs бо dracut." #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "dracut дар низоми интихобшуда иҷро нашуд" #: src/modules/dracut/main.py:59 msgid "The exit code was {}" -msgstr "" +msgstr "Рамзи барориш: {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "Танзимкунии initramfs." #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" +msgstr "Танзимкунии хидмати OpenRC dmcrypt." #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "Сабткунии fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Вазифаи амсилаи python." #: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 #: src/modules/dummypython/main.py:103 msgid "Dummy python step {}" -msgstr "" +msgstr "Қадами амсилаи python {}" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "Танзимкунии маҳаллигардониҳо." #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "Нигоҳдории танзимоти шабака." diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index d042d58fe..c3263f45f 100644 --- a/lang/python/th/LC_MESSAGES/python.po +++ b/lang/python/th/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index bf26b5ad8..3d54dcc9c 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Demiray Muhterem , 2020\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 428dea6c2..c4b4b4724 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Yuri Chornoivan , 2020\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index 4ccb1881a..a9dbd6791 100644 --- a/lang/python/ur/LC_MESSAGES/python.po +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index 3d002fc5e..dd42181eb 100644 --- a/lang/python/uz/LC_MESSAGES/python.po +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" "MIME-Version: 1.0\n" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index b51e4c766..6db27e533 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: 玉堂白鹤 , 2020\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index 553977d26..f19e49380 100644 --- a/lang/python/zh_TW/LC_MESSAGES/python.po +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Walter Cheuk , 2020\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" From eacaa9960974ae4c62a688f72a4edb60bb55f5b6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 10:32:46 +0200 Subject: [PATCH 129/399] Changes: welcome to a complete Tajik translation. FIXES #1468 --- CHANGES | 5 +++-- CMakeLists.txt | 15 +++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index 3d930c30d..4d5e19888 100644 --- a/CHANGES +++ b/CHANGES @@ -8,12 +8,13 @@ website will have to do for older versions. This release contains contributions from (alphabetically by first name): - Anke Boersma - apt-ghetto + - Victor Ibragimov ## Core ## - A new object *Network* is available to QML modules in `io.calamares.core`. It exposes network status through the *hasInternet* property. - - Welcome to Tajik translations. This has reached sufficient completion - to be included in the drop-down list of languages on the welcome page. + - Welcome to Tajik translations. The Tajik language has quickly reached + 100% completion. - Welcome to [Interlingue](https://en.wikipedia.org/wiki/Interlingue). The translation is at an early stage. diff --git a/CMakeLists.txt b/CMakeLists.txt index 3dec2e55f..cabd72700 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,14 +148,13 @@ set( CALAMARES_DESCRIPTION_SUMMARY # the original four lines with the current translations). # # Total 68 languages -set( _tx_complete az az_AZ ca da fi_FI he hi hr ja pt_BR sq tr_TR - uk zh_TW ) -set( _tx_good as ast be cs_CZ de es fr hu it_IT ko lt ml nl pt_PT - ru sk sv zh_CN ) -set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id is mr nb pl - ro sl sr sr@latin tg th ) -set( _tx_incomplete bn ca@valencia eo fr_CH gu ie kk kn lo lv mk - ne_NP ur uz ) +set( _tx_complete ca fi_FI he hr nl pt_BR sq tg tr_TR uk zh_TW ) +set( _tx_good as ast az az_AZ be cs_CZ da de es fr hi hu it_IT ja + ko lt ml pt_PT ru sk sv zh_CN ) +set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id ie is mr nb + pl ro sl sr sr@latin th ) +set( _tx_incomplete bn ca@valencia eo fr_CH gu kk kn lo lv mk ne_NP + ur uz ) ### Required versions # From fad364993c6758a493a28732defcaa4b05db17d7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 10:46:54 +0200 Subject: [PATCH 130/399] i18n: use modern argument-handling in the TX statistics script --- ci/txstats.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ci/txstats.py b/ci/txstats.py index 139ebe523..3e85a7c27 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -8,6 +8,7 @@ # Run it with a -v command-line option to get extra output on # actual translation percentages. import sys +import argparse def get_tx_credentials(): """ @@ -101,10 +102,12 @@ def get_tx_stats(token, verbose): def main(): - verbose = (sys.argv[-1] == "-v") + parser = argparse.ArgumentParser(description="Update Transifex Statistics") + parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true") + args = parser.parse_args() cred = get_tx_credentials() if cred: - return get_tx_stats(cred, verbose) + return get_tx_stats(cred, args.verbose) else: print("! Could not find API token in ~/.transifexrc") return 1 From 3762d4df050cbc40434ea8179a4c792b15637bec Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 12:07:01 +0200 Subject: [PATCH 131/399] i18n: refactoring txstats --- ci/txstats.py | 83 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 31 deletions(-) diff --git a/ci/txstats.py b/ci/txstats.py index 3e85a7c27..0f955421e 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -10,22 +10,51 @@ import sys import argparse -def get_tx_credentials(): - """ - Gets the API token out of the user's .transifexrc (this is supposed - to be secure). - """ - import configparser - import os - txconfig_name = os.path.expanduser("~/.transifexrc") - try: - with open(txconfig_name, "r") as f: - parser = configparser.ConfigParser() - parser.read_file(f) +class TXError(Exception): + pass + + +class TransifexGetter(object): + """ + Get language data from Transifex. + + The object does all the work in __init__, after that + the only relevant data is .languages, a dictionary + of language data. + """ + def __init__(self): + token = self.get_tx_credentials() + if token is None: + raise TXError("Could not get Transifex API token") + + import requests + r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares/", auth=("api", token)) + if r.status_code != 200: + raise TXError("Could not get Transifex data from API") + + j = r.json() + self.languages = j["stats"] + + + def get_tx_credentials(self): + """ + Gets the API token out of the user's .transifexrc (this is supposed + to be secure). + """ + import configparser + import os + txconfig_name = os.path.expanduser("~/.transifexrc") + try: + with open(txconfig_name, "r") as f: + parser = configparser.ConfigParser() + parser.read_file(f) + + return parser.get("https://www.transifex.com", "password") + except IOError as e: + return None + + - return parser.get("https://www.transifex.com", "password") - except IOError as e: - return None def output_langs(all_langs, label, filterfunc): """ @@ -48,7 +77,8 @@ def output_langs(all_langs, label, filterfunc): prefix = " " print("%s%s" % (prefix, out)) -def get_tx_stats(token, verbose): + +def get_tx_stats(languages, verbose): """ Does an API request to Transifex with the given API @p token, getting the translation statistics for the main body of texts. Then prints @@ -57,12 +87,6 @@ def get_tx_stats(token, verbose): If @p verbose is True, prints out language stats as well. """ - import requests - - r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares/", auth=("api", token)) - if r.status_code != 200: - return 1 - suppressed_languages = ( "es_ES", ) # In Transifex, but not used # Some languages go into the "incomplete" list by definition, # regardless of their completion status: this can have various reasons. @@ -75,9 +99,6 @@ def get_tx_stats(token, verbose): ) all_langs = [] - - j = r.json() - languages = j["stats"] print("# Total %d languages" % len(languages)) for lang_name in languages: if lang_name in suppressed_languages: @@ -105,12 +126,12 @@ def main(): parser = argparse.ArgumentParser(description="Update Transifex Statistics") parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true") args = parser.parse_args() - cred = get_tx_credentials() - if cred: - return get_tx_stats(cred, args.verbose) - else: - print("! Could not find API token in ~/.transifexrc") - return 1 + try: + getter = TransifexGetter() + return get_tx_stats(getter.languages, args.verbose) + except TXError as e: + print("! " + str(e)) + return 1; return 0 if __name__ == "__main__": From a66eabe9efbfad07a2869ab2541fc219916cf7ab Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 12:17:07 +0200 Subject: [PATCH 132/399] i18n: support bogus TX data for testing --- ci/txstats.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ci/txstats.py b/ci/txstats.py index 0f955421e..dbc6fc191 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -54,6 +54,17 @@ class TransifexGetter(object): return None +class BogusGetter(object): + """ + Fake language data. + + This object pretends to retrieve data, and returns fixed language lists and percentages, + for testing purposes without hitting Transifex servers all the time. + """ + def __init__(self): + self.languages = dict() + for lang, completion in ( ("sq", 100), ("ar", 44), ("as", 28), ("de", 15), ("da", 4), ("ts", 82) ): + self.languages[lang] = dict(translated=dict(stringcount=686, percentage=(completion/100.0))) def output_langs(all_langs, label, filterfunc): @@ -125,9 +136,13 @@ def get_tx_stats(languages, verbose): def main(): parser = argparse.ArgumentParser(description="Update Transifex Statistics") parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true") + parser.add_argument("--bogus", "-n", help="Use bogus data (do not query Transifex)", action="store_true") args = parser.parse_args() try: - getter = TransifexGetter() + if args.bogus: + getter = BogusGetter() + else: + getter = TransifexGetter() return get_tx_stats(getter.languages, args.verbose) except TXError as e: print("! " + str(e)) From dacd236f6a2644e76b2c8d380cf812230d61e18a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 12:22:40 +0200 Subject: [PATCH 133/399] i18n: factor out output method for txstats --- ci/txstats.py | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/ci/txstats.py b/ci/txstats.py index dbc6fc191..23a00bbd5 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -67,7 +67,24 @@ class BogusGetter(object): self.languages[lang] = dict(translated=dict(stringcount=686, percentage=(completion/100.0))) -def output_langs(all_langs, label, filterfunc): +class PrintOutputter(object): + """ + Output via print-statements. + """ + def __init__(self): + pass + + def print(self, s): + print(s) + + def __enter__(self): + return self + + def __exit__(self, e, v, tb): + pass + + +def output_langs(all_langs, outputter, label, filterfunc): """ Output (via print) all of the languages in @p all_langs that satisfy the translation-percentage filter @p filterfunc. @@ -83,13 +100,13 @@ def output_langs(all_langs, label, filterfunc): while len(out) > width - len(prefix): chunk = out[:out[:width].rfind(" ")] - print("%s%s" % (prefix, chunk)) + outputter.print("%s%s" % (prefix, chunk)) out = out[len(chunk)+1:] prefix = " " - print("%s%s" % (prefix, out)) + outputter.print("%s%s" % (prefix, out)) -def get_tx_stats(languages, verbose): +def get_tx_stats(languages, outputter, verbose): """ Does an API request to Transifex with the given API @p token, getting the translation statistics for the main body of texts. Then prints @@ -110,7 +127,7 @@ def get_tx_stats(languages, verbose): ) all_langs = [] - print("# Total %d languages" % len(languages)) + outputter.print("# Total %d languages" % len(languages)) for lang_name in languages: if lang_name in suppressed_languages: continue @@ -124,15 +141,18 @@ def get_tx_stats(languages, verbose): if verbose: for s, l in sorted(all_langs, reverse=True): - print("# %16s\t%6.2f" % (l, s * 100.0)) - output_langs(all_langs, "complete", lambda s : s == 1.0) - output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75) - output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05) - output_langs(all_langs, "incomplete", lambda s : 0.05 > s) + outputter.print("# %16s\t%6.2f" % (l, s * 100.0)) + output_langs(all_langs, outputter, "complete", lambda s : s == 1.0) + output_langs(all_langs, outputter, "good", lambda s : 1.0 > s >= 0.75) + output_langs(all_langs, outputter, "ok", lambda s : 0.75 > s >= 0.05) + output_langs(all_langs, outputter, "incomplete", lambda s : 0.05 > s) return 0 +def get_outputter(): + return PrintOutputter() + def main(): parser = argparse.ArgumentParser(description="Update Transifex Statistics") parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true") @@ -143,7 +163,8 @@ def main(): getter = BogusGetter() else: getter = TransifexGetter() - return get_tx_stats(getter.languages, args.verbose) + with get_outputter() as outputter: + return get_tx_stats(getter.languages, outputter, args.verbose) except TXError as e: print("! " + str(e)) return 1; From 1a87879f9bdbf478753c03723df25e5f75598216 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 12:43:52 +0200 Subject: [PATCH 134/399] i18n: enable updating stats-in-place --- ci/txstats.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/ci/txstats.py b/ci/txstats.py index 23a00bbd5..85b3896fe 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -84,6 +84,56 @@ class PrintOutputter(object): pass +class EditingOutputter(object): + """ + Edit CMakeLists in-place. + """ + def __init__(self): + with open("CMakeLists.txt", "r") as f: + lines = f.readlines() + + mark = None + for l in lines: + # Note that we didn't strip the lines, so need the \n here + if l.startswith("# Total ") and l.endswith(" languages\n"): + mark = lines.index(l) + break + if mark is None: + raise TXError("No CMakeLists.txt lines for TX stats found") + self.pre_lines = lines[:mark] + + nextmark = mark + 1 + for l in lines[mark+1:]: + if l.startswith("set( _tx_"): + nextmark += 1 + continue + if l.startswith(" "): + nextmark += 1 + continue + break + if nextmark > mark + 12 or nextmark > len(lines) - 4: + # Try to catch runaway nextmarks: we know there should + # be four set-lines, which are unlikely to be 3 lines each; + # similarly the CMakeLists.txt is supposed to end with + # some boilerplate. + raise TXError("Could not find end of TX settings in CMakeLists.txt") + self.post_lines = lines[nextmark:] + + self.mid_lines = [] + + def print(self, s): + # Add the implicit \n from print() + self.mid_lines.append(s + "\n") + + def __enter__(self): + return self + + def __exit__(self, e, v, tb): + if e is None: + with open("CMakeLists.txt", "w") as f: + f.write("".join(self.pre_lines + self.mid_lines + self.post_lines)) + + def output_langs(all_langs, outputter, label, filterfunc): """ Output (via print) all of the languages in @p all_langs @@ -150,20 +200,22 @@ def get_tx_stats(languages, outputter, verbose): return 0 -def get_outputter(): - return PrintOutputter() - def main(): parser = argparse.ArgumentParser(description="Update Transifex Statistics") parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true") parser.add_argument("--bogus", "-n", help="Use bogus data (do not query Transifex)", action="store_true") + parser.add_argument("--edit", "-e", help="Edit CMakeLists.txt in-place", action="store_true") args = parser.parse_args() try: if args.bogus: getter = BogusGetter() else: getter = TransifexGetter() - with get_outputter() as outputter: + if args.edit: + outputter = EditingOutputter() + else: + outputter = PrintOutputter() + with outputter: return get_tx_stats(getter.languages, outputter, args.verbose) except TXError as e: print("! " + str(e)) From 5380f8062d7c7286cf665da97dd11099eddd84ef Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 12:46:52 +0200 Subject: [PATCH 135/399] i18n: when editing CMakeLists in-place, be a little more verbose --- ci/txstats.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ci/txstats.py b/ci/txstats.py index 85b3896fe..a9f412743 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -120,10 +120,13 @@ class EditingOutputter(object): self.post_lines = lines[nextmark:] self.mid_lines = [] + print("# Editing CMakeLists.txt in-place") def print(self, s): # Add the implicit \n from print() self.mid_lines.append(s + "\n") + if s.startswith("#"): + print(s) def __enter__(self): return self @@ -132,6 +135,7 @@ class EditingOutputter(object): if e is None: with open("CMakeLists.txt", "w") as f: f.write("".join(self.pre_lines + self.mid_lines + self.post_lines)) + print("# CMakeLists.txt updated") def output_langs(all_langs, outputter, label, filterfunc): From 380e2b361323768fbe3d1e72d38d93c81f9581a0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 31 Jul 2020 14:13:08 +0200 Subject: [PATCH 136/399] [partition] Fix up schema file --- src/modules/partition/partition.schema.yaml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/partition.schema.yaml b/src/modules/partition/partition.schema.yaml index 198123dd5..d08f4a6cd 100644 --- a/src/modules/partition/partition.schema.yaml +++ b/src/modules/partition/partition.schema.yaml @@ -4,8 +4,23 @@ $id: https://calamares.io/schemas/partition additionalProperties: false type: object properties: - efiSystemPartition: { type: string, required: true } - ensureSuspendToDisk: { type: boolean, default: true } + efiSystemPartition: { type: string } # Mount point + efiSystemPartitionSize: { type: string } + efiSystemPartitionName: { type: string } + + userSwapChoices: { type: array, items: { type: string, enum: [ none, reuse, small, suspend, file ] } } + # ensureSuspendToDisk: { type: boolean, default: true } # Legacy + # neverCreateSwap: { type: boolean, default: false } # Legacy + drawNestedPartitions: { type: boolean, default: false } alwaysShowPartitionLabels: { type: boolean, default: true } - defaultFileSystemType: { type: string, required: true } + + defaultFileSystemType: { type: string } + enableLuksAutomatedPartitioning: { type: boolean, default: false } + allowManualPartitioning: { type: boolean, default: true } + partitionLayout: { type: array } # TODO: specify items + + requiredStorage: { type: number } +required: + - efiSystemPartition + - userSwapChoices From e21a2f0676a7dfa17ca31be89545760c4cdd8273 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 30 Jul 2020 11:36:59 +0200 Subject: [PATCH 137/399] [partition] Add InitialInstallChoice to Config - add an option to select what button should be selected when the partitioning module is started; TODO: the actual functionality is **not** implemented. - drop the previously suggested name, which didn't get beyond the comments-in-the-config-file stage (but which intended to do the same things as this one) - add option to schema already, even if it's not implemented. See #1297 FIXUP conf --- src/modules/partition/core/Config.cpp | 3 ++ src/modules/partition/core/Config.h | 8 ++++ .../partition/core/PartitionActions.cpp | 13 ++++++ src/modules/partition/core/PartitionActions.h | 11 ++++- src/modules/partition/partition.conf | 43 ++++++++++--------- src/modules/partition/partition.schema.yaml | 1 + 6 files changed, 58 insertions(+), 21 deletions(-) diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index 7af004942..086d87da5 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -123,6 +123,9 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) // Settings that overlap with the Welcome module m_requiredStorageGiB = CalamaresUtils::getDouble( configurationMap, "requiredStorage", -1.0 ); m_swapChoices = getSwapChoices( configurationMap ); + + bool nameFound = false; // In the name table (ignored, falls back to first entry in table) + m_initialInstallChoice = PartitionActions::Choices::installChoiceNames().find( CalamaresUtils::getString( configurationMap, "initialPartitioningChoice" ), nameFound ); } void diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index f6823e640..fb2f8116c 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -38,8 +38,16 @@ public: PartitionActions::Choices::SwapChoiceSet swapChoices() const { return m_swapChoices; } + /** + * @brief What kind of installation (partitioning) is requested **initially**? + * + * @return the partitioning choice (may by @c NoChoice) + */ + PartitionActions::Choices::InstallChoice initialInstallChoice() const { return m_initialInstallChoice; } + private: PartitionActions::Choices::SwapChoiceSet m_swapChoices; + PartitionActions::Choices::InstallChoice m_initialInstallChoice = PartitionActions::Choices::NoChoice; qreal m_requiredStorageGiB = 0.0; // May duplicate setting in the welcome module }; diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index dc4d4eeb4..cae5025bf 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -288,6 +288,19 @@ pickOne( const SwapChoiceSet& s ) return *( s.begin() ); } +const NamedEnumTable< InstallChoice >& +installChoiceNames() +{ + static const NamedEnumTable< InstallChoice > names { { QStringLiteral( "none" ), InstallChoice::NoChoice }, + { QStringLiteral( "nochoice" ), InstallChoice::NoChoice }, + { QStringLiteral( "alongside" ), InstallChoice::Alongside }, + { QStringLiteral( "erase" ), InstallChoice::Erase }, + { QStringLiteral( "replace" ), InstallChoice::Replace }, + { QStringLiteral( "manual" ), InstallChoice::Manual } }; + return names; +} + + } // namespace Choices } // namespace PartitionActions diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index 706fbaea3..6f4b41cc8 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -46,7 +46,6 @@ enum SwapChoice SwapFile // use a file (if supported) }; using SwapChoiceSet = QSet< SwapChoice >; - const NamedEnumTable< SwapChoice >& swapChoiceNames(); /** @brief Given a set of swap choices, return a sensible value from it. @@ -57,6 +56,16 @@ const NamedEnumTable< SwapChoice >& swapChoiceNames(); */ SwapChoice pickOne( const SwapChoiceSet& s ); +enum InstallChoice +{ + NoChoice, + Alongside, + Erase, + Replace, + Manual +}; +const NamedEnumTable< InstallChoice >& installChoiceNames(); + struct ReplacePartitionOptions { QString defaultFsType; // e.g. "ext4" or "btrfs" diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 5413c10f1..363ef7db1 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -39,16 +39,6 @@ userSwapChoices: # - reuse # Re-use existing swap, but don't create any (unsupported right now) # - file # To swap file instead of partition (unsupported right now) -# By default, when the user arrives at the partitioning page, no action -# is selected (out of erase, reuse, ...). You can explicitly set None -# here to select no action on arrival, **or** pick one of these -# actions and that will be selected if it is available. If it isn't -# available on arrival, no action will be selected. -# - erase -# - replace -# - alongside -userDefaultAction: None - # LEGACY SETTINGS (these will generate a warning) # ensureSuspendToDisk: true # neverCreateSwap: false @@ -59,6 +49,29 @@ drawNestedPartitions: false # Show/hide partition labels on manual partitioning page. alwaysShowPartitionLabels: true +# Allow manual partitioning. +# +# When set to false, this option hides the "Manual partitioning" button, +# limiting the user's choice to "Erase", "Replace" or "Alongside". +# This can be useful when using a custom partition layout we don't want +# the user to modify. +# +# If nothing is specified, manual partitioning is enabled. +#allowManualPartitioning: true + +# Initial selection on the Choice page +# +# There are four radio buttons (in principle: erase, replace, alongside, manual), +# and you can pick which of them, if any, is initially selected. For most +# installers, "none" is the right choice: it makes the user pick something specific, +# rather than accidentally being able to click past an important choice (in particular, +# "erase" is a dangerous choice). +# +# The default is "none" +# +# TODO: this isn't implemented +# initialPartitioningChoice: none + # Default filesystem type, used when a "new" partition is made. # # When replacing a partition, the existing filesystem inside the @@ -96,16 +109,6 @@ defaultFileSystemType: "ext4" # If nothing is specified, LUKS is enabled in automated modes. #enableLuksAutomatedPartitioning: true -# Allow manual partitioning. -# -# When set to false, this option hides the "Manual partitioning" button, -# limiting the user's choice to "Erase", "Replace" or "Alongside". -# This can be useful when using a custom partition layout we don't want -# the user to modify. -# -# If nothing is specified, manual partitioning is enabled. -#allowManualPartitioning: true - # To apply a custom partition layout, it has to be defined this way : # # partitionLayout: diff --git a/src/modules/partition/partition.schema.yaml b/src/modules/partition/partition.schema.yaml index d08f4a6cd..157f416d7 100644 --- a/src/modules/partition/partition.schema.yaml +++ b/src/modules/partition/partition.schema.yaml @@ -19,6 +19,7 @@ properties: enableLuksAutomatedPartitioning: { type: boolean, default: false } allowManualPartitioning: { type: boolean, default: true } partitionLayout: { type: array } # TODO: specify items + initialPartitioningChoice: { type: string, enum: [ none, erase, replace, alongside, manual ] } requiredStorage: { type: number } required: From 41ce42cd4b8ed0f33283ec0ef49794189d620461 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 30 Jul 2020 11:51:26 +0200 Subject: [PATCH 138/399] [partition] Drop InstallChoice enum from Page - The enum for install choice was copied into PartitionActions and used in the Config object; its definition does not belong in the UI. - Chase the renamings required. --- src/modules/partition/gui/ChoicePage.cpp | 68 +++++++++---------- src/modules/partition/gui/ChoicePage.h | 9 +-- .../partition/gui/PartitionViewStep.cpp | 30 ++++---- 3 files changed, 50 insertions(+), 57 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 055595ba0..d7b5e497e 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -80,7 +80,7 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) , m_config( config ) , m_nextEnabled( false ) , m_core( nullptr ) - , m_choice( NoChoice ) + , m_choice( InstallChoice::NoChoice ) , m_isEfi( false ) , m_grp( nullptr ) , m_alongsideButton( nullptr ) @@ -242,14 +242,14 @@ ChoicePage::setupChoices() m_alongsideButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionAlongside, CalamaresUtils::Original, iconSize ) ); - m_alongsideButton->addToGroup( m_grp, Alongside ); + m_alongsideButton->addToGroup( m_grp, InstallChoice::Alongside ); m_eraseButton = new PrettyRadioButton; m_eraseButton->setIconSize( iconSize ); m_eraseButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionEraseAuto, CalamaresUtils::Original, iconSize ) ); - m_eraseButton->addToGroup( m_grp, Erase ); + m_eraseButton->addToGroup( m_grp, InstallChoice::Erase ); m_replaceButton = new PrettyRadioButton; @@ -257,7 +257,7 @@ ChoicePage::setupChoices() m_replaceButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionReplaceOs, CalamaresUtils::Original, iconSize ) ); - m_replaceButton->addToGroup( m_grp, Replace ); + m_replaceButton->addToGroup( m_grp, InstallChoice::Replace ); // Fill up swap options // .. TODO: only if enabled in the config @@ -277,7 +277,7 @@ ChoicePage::setupChoices() CalamaresUtils::Original, iconSize ) ); m_itemsLayout->addWidget( m_somethingElseButton ); - m_somethingElseButton->addToGroup( m_grp, Manual ); + m_somethingElseButton->addToGroup( m_grp, InstallChoice::Manual ); m_itemsLayout->addStretch(); @@ -295,7 +295,7 @@ ChoicePage::setupChoices() { if ( m_grp->checkedButton() == nullptr ) // If no other action is chosen, we must { // set m_choice to NoChoice and reset previews. - m_choice = NoChoice; + m_choice = InstallChoice::NoChoice; updateNextEnabled(); emit actionChosen(); @@ -441,7 +441,7 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) switch ( choice ) { - case Erase: + case InstallChoice::Erase: { auto gs = Calamares::JobQueue::instance()->globalStorage(); @@ -474,7 +474,7 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) } } break; - case Replace: + case InstallChoice::Replace: if ( m_core->isDirty() ) { ScanningDialog::run( QtConcurrent::run( [ = ] @@ -492,7 +492,7 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) Qt::UniqueConnection ); break; - case Alongside: + case InstallChoice::Alongside: if ( m_core->isDirty() ) { ScanningDialog::run( QtConcurrent::run( [ = ] @@ -515,8 +515,8 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) this, SLOT( doAlongsideSetupSplitter( QModelIndex, QModelIndex ) ), Qt::UniqueConnection ); break; - case NoChoice: - case Manual: + case InstallChoice::NoChoice: + case InstallChoice::Manual: break; } updateActionChoicePreview( choice ); @@ -571,13 +571,13 @@ void ChoicePage::onEncryptWidgetStateChanged() { EncryptWidget::Encryption state = m_encryptWidget->state(); - if ( m_choice == Erase ) + if ( m_choice == InstallChoice::Erase ) { if ( state == EncryptWidget::Encryption::Confirmed || state == EncryptWidget::Encryption::Disabled ) applyActionChoice( m_choice ); } - else if ( m_choice == Replace ) + else if ( m_choice == InstallChoice::Replace ) { if ( m_beforePartitionBarsView && m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() && @@ -596,7 +596,7 @@ ChoicePage::onEncryptWidgetStateChanged() void ChoicePage::onHomeCheckBoxStateChanged() { - if ( currentChoice() == Replace && + if ( currentChoice() == InstallChoice::Replace && m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() ) { doReplaceSelectedPartition( m_beforePartitionBarsView-> @@ -609,10 +609,10 @@ ChoicePage::onHomeCheckBoxStateChanged() void ChoicePage::onLeave() { - if ( m_choice == Alongside ) + if ( m_choice == InstallChoice::Alongside ) doAlongsideApply(); - if ( m_isEfi && ( m_choice == Alongside || m_choice == Replace ) ) + if ( m_isEfi && ( m_choice == InstallChoice::Alongside || m_choice == InstallChoice::Replace ) ) { QList< Partition* > efiSystemPartitions = m_core->efiSystemPartitions(); if ( efiSystemPartitions.count() == 1 ) @@ -879,8 +879,8 @@ ChoicePage::updateDeviceStatePreview() switch ( m_choice ) { - case Replace: - case Alongside: + case InstallChoice::Replace: + case InstallChoice::Alongside: m_beforePartitionBarsView->setSelectionMode( QAbstractItemView::SingleSelection ); m_beforePartitionLabelsView->setSelectionMode( QAbstractItemView::SingleSelection ); break; @@ -931,7 +931,7 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) switch ( choice ) { - case Alongside: + case InstallChoice::Alongside: { if ( m_enableEncryptionWidget ) m_encryptWidget->show(); @@ -975,8 +975,8 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) break; } - case Erase: - case Replace: + case InstallChoice::Erase: + case InstallChoice::Replace: { if ( m_enableEncryptionWidget ) m_encryptWidget->show(); @@ -1042,7 +1042,7 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) m_previewAfterFrame->show(); m_previewAfterLabel->show(); - if ( m_choice == Erase ) + if ( m_choice == InstallChoice::Erase ) m_selectLabel->hide(); else { @@ -1062,8 +1062,8 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) break; } - case NoChoice: - case Manual: + case InstallChoice::NoChoice: + case InstallChoice::Manual: m_selectLabel->hide(); m_previewAfterFrame->hide(); m_previewBeforeLabel->setText( tr( "Current:" ) ); @@ -1072,7 +1072,7 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) break; } - if ( m_isEfi && ( m_choice == Alongside || m_choice == Replace ) ) + if ( m_isEfi && ( m_choice == InstallChoice::Alongside || m_choice == InstallChoice::Replace ) ) { QHBoxLayout* efiLayout = new QHBoxLayout; layout->addLayout( efiLayout ); @@ -1089,8 +1089,8 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) QAbstractItemView::SelectionMode previewSelectionMode; switch ( m_choice ) { - case Replace: - case Alongside: + case InstallChoice::Replace: + case InstallChoice::Alongside: previewSelectionMode = QAbstractItemView::SingleSelection; break; default: @@ -1433,11 +1433,11 @@ ChoicePage::calculateNextEnabled() const switch ( m_choice ) { - case NoChoice: + case InstallChoice::NoChoice: cDebug() << "No partitioning choice"; return false; - case Replace: - case Alongside: + case InstallChoice::Replace: + case InstallChoice::Alongside: if ( !( sm_p && sm_p->currentIndex().isValid() ) ) { cDebug() << "No partition selected"; @@ -1445,8 +1445,8 @@ ChoicePage::calculateNextEnabled() const } enabled = true; break; - case Erase: - case Manual: + case InstallChoice::Erase: + case InstallChoice::Manual: enabled = true; } @@ -1457,7 +1457,7 @@ ChoicePage::calculateNextEnabled() const } - if ( m_isEfi && ( m_choice == Alongside || m_choice == Replace ) ) + if ( m_isEfi && ( m_choice == InstallChoice::Alongside || m_choice == InstallChoice::Replace ) ) { if ( m_core->efiSystemPartitions().count() == 0 ) { @@ -1466,7 +1466,7 @@ ChoicePage::calculateNextEnabled() const } } - if ( m_choice != Manual && m_encryptWidget->isVisible() ) + if ( m_choice != InstallChoice::Manual && m_encryptWidget->isVisible() ) { switch ( m_encryptWidget->state() ) { diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index f985178d5..af8ee9060 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -62,14 +62,7 @@ class ChoicePage : public QWidget, private Ui::ChoicePage { Q_OBJECT public: - enum InstallChoice - { - NoChoice, - Alongside, - Erase, - Replace, - Manual - }; + using InstallChoice = PartitionActions::Choices::InstallChoice; explicit ChoicePage( Config* config, QWidget* parent = nullptr ); virtual ~ChoicePage(); diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 999c94505..c05ed3177 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -167,20 +167,20 @@ PartitionViewStep::createSummaryWidget() const QString modeText; switch ( choice ) { - case ChoicePage::Alongside: + case ChoicePage::InstallChoice::Alongside: modeText = tr( "Install %1 alongside another operating system." ) .arg( branding->shortVersionedName() ); break; - case ChoicePage::Erase: + case ChoicePage::InstallChoice::Erase: modeText = tr( "Erase disk and install %1." ).arg( branding->shortVersionedName() ); break; - case ChoicePage::Replace: + case ChoicePage::InstallChoice::Replace: modeText = tr( "Replace a partition with %1." ).arg( branding->shortVersionedName() ); break; - case ChoicePage::NoChoice: - case ChoicePage::Manual: + case ChoicePage::InstallChoice::NoChoice: + case ChoicePage::InstallChoice::Manual: modeText = tr( "Manual partitioning." ); } modeLabel->setText( modeText ); @@ -193,27 +193,27 @@ PartitionViewStep::createSummaryWidget() const QString modeText; switch ( choice ) { - case ChoicePage::Alongside: + case ChoicePage::InstallChoice::Alongside: modeText = tr( "Install %1 alongside another operating system on disk " "%2 (%3)." ) .arg( branding->shortVersionedName() ) .arg( info.deviceNode ) .arg( info.deviceName ); break; - case ChoicePage::Erase: + case ChoicePage::InstallChoice::Erase: modeText = tr( "Erase disk %2 (%3) and install %1." ) .arg( branding->shortVersionedName() ) .arg( info.deviceNode ) .arg( info.deviceName ); break; - case ChoicePage::Replace: + case ChoicePage::InstallChoice::Replace: modeText = tr( "Replace a partition on disk %2 (%3) with %1." ) .arg( branding->shortVersionedName() ) .arg( info.deviceNode ) .arg( info.deviceName ); break; - case ChoicePage::NoChoice: - case ChoicePage::Manual: + case ChoicePage::InstallChoice::NoChoice: + case ChoicePage::InstallChoice::Manual: modeText = tr( "Manual partitioning on disk %1 (%2)." ) .arg( info.deviceNode ) .arg( info.deviceName ); @@ -296,7 +296,7 @@ PartitionViewStep::next() { if ( m_choicePage == m_widget->currentWidget() ) { - if ( m_choicePage->currentChoice() == ChoicePage::Manual ) + if ( m_choicePage->currentChoice() == ChoicePage::InstallChoice::Manual ) { if ( !m_manualPartitionPage ) { @@ -378,8 +378,8 @@ PartitionViewStep::isAtEnd() const { if ( m_widget->currentWidget() == m_choicePage ) { - if ( m_choicePage->currentChoice() == ChoicePage::Erase || m_choicePage->currentChoice() == ChoicePage::Replace - || m_choicePage->currentChoice() == ChoicePage::Alongside ) + if ( m_choicePage->currentChoice() == ChoicePage::InstallChoice::Erase || m_choicePage->currentChoice() == ChoicePage::InstallChoice::Replace + || m_choicePage->currentChoice() == ChoicePage::InstallChoice::Alongside ) { return true; } @@ -395,9 +395,9 @@ PartitionViewStep::onActivate() m_config->updateGlobalStorage(); // if we're coming back to PVS from the next VS - if ( m_widget->currentWidget() == m_choicePage && m_choicePage->currentChoice() == ChoicePage::Alongside ) + if ( m_widget->currentWidget() == m_choicePage && m_choicePage->currentChoice() == ChoicePage::InstallChoice::Alongside ) { - m_choicePage->applyActionChoice( ChoicePage::Alongside ); + m_choicePage->applyActionChoice( ChoicePage::InstallChoice::Alongside ); // m_choicePage->reset(); //FIXME: ReplaceWidget should be reset maybe? } From 0902c7480984f194683e306255c9fad4eb4b0f3f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 3 Aug 2020 10:01:52 +0200 Subject: [PATCH 139/399] [hostinfo] Editorialize on the tests - the implementation understands Intel and AMD, but the test was written for my desktop machine (which fails elsewhere). SEE #1471 --- src/modules/hostinfo/Tests.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp index 8241ef022..8182da365 100644 --- a/src/modules/hostinfo/Tests.cpp +++ b/src/modules/hostinfo/Tests.cpp @@ -59,7 +59,12 @@ HostInfoTests::testHostOS() QCOMPARE( expect, hostOS() ); QCOMPARE( expect, hostOSName() ); // Might be the same - QCOMPARE( QStringLiteral( "Intel" ), hostCPU() ); // On all my developer machines + + // This is a lousy test, too: the implementation reads /proc/cpuinfo + // and that's the only way we could use, too, to find what the "right" + // answer is. + QStringList cpunames{ QStringLiteral( "Intel" ), QStringLiteral( "AMD" ) }; + QVERIFY( cpunames.contains( hostCPU() ) ); } From 7b6ff8dd371c22ad842cb0f54063f8a71668e853 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 3 Aug 2020 15:13:51 +0200 Subject: [PATCH 140/399] [libcalamares] Minor tests for parts of RAII --- src/libcalamares/utils/Tests.cpp | 36 ++++++++++++++++++++++++++------ src/libcalamares/utils/Tests.h | 5 ++++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index a1bfcd0ed..120a9238b 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * * @@ -26,6 +26,7 @@ #include "CalamaresUtilsSystem.h" #include "Entropy.h" #include "Logger.h" +#include "RAII.h" #include "UMask.h" #include "Yaml.h" @@ -114,15 +115,16 @@ findConf( const QDir& d ) return mine; } -void LibCalamaresTests::recursiveCompareMap(const QVariantMap& a, const QVariantMap& b, int depth ) +void +LibCalamaresTests::recursiveCompareMap( const QVariantMap& a, const QVariantMap& b, int depth ) { cDebug() << "Comparing depth" << depth << a.count() << b.count(); QCOMPARE( a.keys(), b.keys() ); for ( const auto& k : a.keys() ) { cDebug() << Logger::SubEntry << k; - const auto& av = a[k]; - const auto& bv = b[k]; + const auto& av = a[ k ]; + const auto& bv = b[ k ]; if ( av.typeName() != bv.typeName() ) { @@ -130,9 +132,9 @@ void LibCalamaresTests::recursiveCompareMap(const QVariantMap& a, const QVariant cDebug() << Logger::SubEntry << "b type" << bv.typeName() << bv; } QCOMPARE( av.typeName(), bv.typeName() ); - if ( av.canConvert() ) + if ( av.canConvert< QVariantMap >() ) { - recursiveCompareMap( av.toMap(), bv.toMap(), depth+1 ); + recursiveCompareMap( av.toMap(), bv.toMap(), depth + 1 ); } else { @@ -289,3 +291,25 @@ LibCalamaresTests::testOddSizedPrintable() } } } + +void +LibCalamaresTests::testBoolSetter() +{ + bool b = false; + + QVERIFY( !b ); + { + QVERIFY( !b ); + cBoolSetter< true > x( b ); + QVERIFY( b ); + } + QVERIFY( !b ); + + QVERIFY( !b ); + { + QVERIFY( !b ); + cBoolSetter< false > x( b ); + QVERIFY( !b ); // Still! + } + QVERIFY( b ); +} diff --git a/src/libcalamares/utils/Tests.h b/src/libcalamares/utils/Tests.h index 2e1cba016..5a1f3528a 100644 --- a/src/libcalamares/utils/Tests.h +++ b/src/libcalamares/utils/Tests.h @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * * @@ -50,6 +50,9 @@ private Q_SLOTS: void testPrintableEntropy(); void testOddSizedPrintable(); + /** @brief Tests the RAII bits. */ + void testBoolSetter(); + private: void recursiveCompareMap( const QVariantMap& a, const QVariantMap& b, int depth ); }; From b5c0158ec2d6bedcbb426cdd544f6cadcca0c932 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 3 Aug 2020 19:07:47 +0200 Subject: [PATCH 141/399] [libcalamares] Some if-method-exists trickery This builds some machinery so that we can create a detector for member-functions (methods) named . Use the macro to build the machinery: DECLARE_HAS_METHOD(myFunction) then after that, has_myFunction is either std::true_type or std::false_type depending on whether T has a method myFunction. --- src/libcalamares/utils/Tests.cpp | 53 ++++++++++++++++++++++ src/libcalamares/utils/Tests.h | 3 ++ src/libcalamares/utils/Traits.h | 77 ++++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 src/libcalamares/utils/Traits.h diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 120a9238b..300b9b531 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -27,6 +27,7 @@ #include "Entropy.h" #include "Logger.h" #include "RAII.h" +#include "Traits.h" #include "UMask.h" #include "Yaml.h" @@ -313,3 +314,55 @@ LibCalamaresTests::testBoolSetter() } QVERIFY( b ); } + +/* Demonstration of Traits support for has-a-method or not. + * + * We have two classes, c1 and c2; one has a method do_the_thing() and the + * other does not. A third class, Thinginator, has a method thingify(), + * which should call do_the_thing() of its argument if it exists. + */ + +struct c1 { int do_the_thing() { return 2; } }; +struct c2 { }; + +DECLARE_HAS_METHOD(do_the_thing) + +struct Thinginator +{ +public: + /// When class T has function do_the_thing() + template< class T > int thingify( T& t, const std::true_type& ) + { + return t.do_the_thing(); + } + + template< class T > int thingify( T&, const std::false_type& ) + { + return -1; + } + + template< class T > int thingify( T& t ) + { + return thingify(t, has_do_the_thing{}); + } +} ; + + +void +LibCalamaresTests::testTraits() +{ + has_do_the_thing x{}; + has_do_the_thing y{}; + + QVERIFY(x); + QVERIFY(!y); + + c1 c1{}; + c2 c2{}; + + QCOMPARE(c1.do_the_thing(), 2); + + Thinginator t; + QCOMPARE(t.thingify(c1), 2); // Calls c1::do_the_thing() + QCOMPARE(t.thingify(c2), -1); +} diff --git a/src/libcalamares/utils/Tests.h b/src/libcalamares/utils/Tests.h index 5a1f3528a..2d630392a 100644 --- a/src/libcalamares/utils/Tests.h +++ b/src/libcalamares/utils/Tests.h @@ -53,6 +53,9 @@ private Q_SLOTS: /** @brief Tests the RAII bits. */ void testBoolSetter(); + /** @brief Tests the Traits bits. */ + void testTraits(); + private: void recursiveCompareMap( const QVariantMap& a, const QVariantMap& b, int depth ); }; diff --git a/src/libcalamares/utils/Traits.h b/src/libcalamares/utils/Traits.h new file mode 100644 index 000000000..5d7061b7b --- /dev/null +++ b/src/libcalamares/utils/Traits.h @@ -0,0 +1,77 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE + * + */ + +#ifndef UTILS_TRAITS_H +#define UTILS_TRAITS_H + +#include + + +namespace CalamaresUtils +{ + +/** @brief Traits machinery lives in this namespace + * + * The primary purpose of this namespace is to hold machinery that + * is created by the DECLARE_HAS_METHOD macro. + * + * The DECLARE_HAS_METHOD macro builds machinery to check whether + * a class has a particular named method. This can be used to + * specialize templates elsewhere for use with classes with, or without, + * the named method. + * + * To use the machinery (which is not that sophisticated): + * + * - Put `DECLARE_HAS_METHOD(myFunction)` somewhere in file scope. + * This puts together the machinery for detecting if `myFunction` + * is a method of some class. + * - At global scope, `has_myFunction` is now either std::true_type, + * if the type `T` has a method `T::myFunction`, or std::false_type, + * if it does not. + * + * To specialize template methods based on the presence of the named + * method, write **three** overloads: + * + * - `template myMethod(args ..., const std::true_type& )` + * This is the implementation where class T has `myFunction`. + * - `template myMethod(args ..., const std::false_type& )` + * This is the implementation without. + * - `template myMethod(args ...)` is the general implementation, + * which can call the specialized implementations with + * `return myMethod(args ..., has_myFunction{})` + */ +namespace Traits +{ +template< class > struct sfinae_true : std::true_type{}; +} +} + +#define DECLARE_HAS_METHOD(m) \ + namespace CalamaresUtils { namespace Traits { \ + struct has_ ## m { \ + template< class T > static auto f(int) -> sfinae_true; \ + template< class T > static auto f(long) -> std::false_type; \ + template< class T > using t = decltype( f (0) ); \ + }; } } \ + template< class T > using has_ ## m = CalamaresUtils::Traits:: has_ ## m ::t; + +#endif From ea709aab59f51a784b735299e1f0808fd30d9fad Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 01:31:22 +0200 Subject: [PATCH 142/399] [libcalamaresui] Swap out unstructured string for structured data --- src/calamares/DebugWindow.cpp | 2 +- src/calamares/testmain.cpp | 2 +- src/libcalamaresui/modulesystem/ModuleManager.cpp | 6 +++--- src/libcalamaresui/modulesystem/ModuleManager.h | 2 +- src/libcalamaresui/viewpages/ExecutionViewStep.cpp | 4 ++-- src/libcalamaresui/viewpages/ExecutionViewStep.h | 5 +++-- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index 82533a648..9e2bdc501 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -193,7 +193,7 @@ DebugWindow::DebugWindow() #endif ] { QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); - Module* module = ModuleManager::instance()->moduleInstance( moduleName ); + Module* module = ModuleManager::instance()->moduleInstance( ModuleSystem::InstanceKey::fromString( moduleName ) ); if ( module ) { m_module = module->configurationMap(); diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index a29c8ce91..c9ac00f2b 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -217,7 +217,7 @@ ExecViewModule::loadSelf() auto* viewStep = new Calamares::ExecutionViewStep(); viewStep->setModuleInstanceKey( instanceKey() ); viewStep->setConfigurationMap( m_configurationMap ); - viewStep->appendJobModuleInstanceKey( instanceKey().toString() ); + viewStep->appendJobModuleInstanceKey( instanceKey() ); Calamares::ViewManager::instance()->addViewStep( viewStep ); m_loaded = true; } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 23df7ce8a..c872bdaa4 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -151,9 +151,9 @@ ModuleManager::moduleDescriptor( const QString& name ) } Module* -ModuleManager::moduleInstance( const QString& instanceKey ) +ModuleManager::moduleInstance( const ModuleSystem::InstanceKey& instanceKey ) { - return m_loadedModulesByInstanceKey.value( ModuleSystem::InstanceKey::fromString( instanceKey ) ); + return m_loadedModulesByInstanceKey.value( instanceKey ); } @@ -320,7 +320,7 @@ ModuleManager::loadModules() ViewManager::instance()->addViewStep( evs ); } - evs->appendJobModuleInstanceKey( instanceKey.toString() ); + evs->appendJobModuleInstanceKey( instanceKey ); } } } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index bea8acf41..d079baee7 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -76,7 +76,7 @@ public: * @param instanceKey the instance key for a module instance. * @return a pointer to an object of a subtype of Module. */ - Module* moduleInstance( const QString& instanceKey ); + Module* moduleInstance( const ModuleSystem::InstanceKey& instanceKey ); /** * @brief loadModules does all of the module loading operation. diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp index 2dd4b79df..b2205d70e 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp @@ -147,7 +147,7 @@ ExecutionViewStep::onActivate() m_slideshow->changeSlideShowState( Slideshow::Start ); JobQueue* queue = JobQueue::instance(); - foreach ( const QString& instanceKey, m_jobInstanceKeys ) + for( const auto& instanceKey : m_jobInstanceKeys ) { Calamares::Module* module = Calamares::ModuleManager::instance()->moduleInstance( instanceKey ); if ( module ) @@ -176,7 +176,7 @@ ExecutionViewStep::jobs() const void -ExecutionViewStep::appendJobModuleInstanceKey( const QString& instanceKey ) +ExecutionViewStep::appendJobModuleInstanceKey( const ModuleSystem::InstanceKey& instanceKey ) { m_jobInstanceKeys.append( instanceKey ); } diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.h b/src/libcalamaresui/viewpages/ExecutionViewStep.h index 48604fe93..0edb965a1 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.h +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.h @@ -21,6 +21,7 @@ #define EXECUTIONVIEWSTEP_H #include "ViewStep.h" +#include "modulesystem/InstanceKey.h" #include @@ -57,7 +58,7 @@ public: JobList jobs() const override; - void appendJobModuleInstanceKey( const QString& instanceKey ); + void appendJobModuleInstanceKey( const ModuleSystem::InstanceKey& instanceKey ); private: QWidget* m_widget; @@ -65,7 +66,7 @@ private: QLabel* m_label; Slideshow* m_slideshow; - QStringList m_jobInstanceKeys; + QList< ModuleSystem::InstanceKey > m_jobInstanceKeys; void updateFromJobQueue( qreal percent, const QString& message ); }; From 88e5e98d29207f6d011001b4aa25c36d1deec1e4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 10:19:40 +0200 Subject: [PATCH 143/399] [libcalamares] Use consistent type alias (Descriptor) --- src/libcalamares/modulesystem/Module.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/libcalamares/modulesystem/Module.h b/src/libcalamares/modulesystem/Module.h index 81737cf8f..44e89fd75 100644 --- a/src/libcalamares/modulesystem/Module.h +++ b/src/libcalamares/modulesystem/Module.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef CALAMARES_MODULE_H @@ -176,9 +174,9 @@ protected: explicit Module(); /// @brief For subclasses to read their part of the descriptor - virtual void initFrom( const QVariantMap& moduleDescriptor ) = 0; + virtual void initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) = 0; /// @brief Generic part of descriptor reading (and instance id) - void initFrom( const QVariantMap& moduleDescriptor, const QString& id ); + void initFrom( const ModuleSystem::Descriptor& moduleDescriptor, const QString& id ); QVariantMap m_configurationMap; From 320779ccbe187e07535aab2617854ac37efff13c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 11:19:17 +0200 Subject: [PATCH 144/399] [libcalamares] Document Job::prettyDescription The TODO said it was unused: it **is** used, but only in a very limited scope. Drop it from jobs where it wasn't useful (e.g. those that just return prettyName(), outside of the partition module). --- src/libcalamares/Job.h | 16 +++++++++++----- src/modules/plasmalnf/PlasmaLnfJob.cpp | 6 ------ src/modules/plasmalnf/PlasmaLnfJob.h | 1 - src/modules/tracking/TrackingJobs.cpp | 18 ------------------ src/modules/tracking/TrackingJobs.h | 3 --- 5 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index 18f11158f..41674cfff 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -1,6 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef CALAMARES_JOB_H #define CALAMARES_JOB_H @@ -114,7 +113,14 @@ public: * For status and state information, see prettyStatusMessage(). */ virtual QString prettyName() const = 0; - // TODO: Unused + /** @brief a longer human-readable description of what the job will do + * + * This **may** be used by view steps to fill in the summary + * messages for the summary page; at present, only the *partition* + * module does so. + * + * The default implementation returns an empty string. + */ virtual QString prettyDescription() const; /** @brief A human-readable status for progress reporting * diff --git a/src/modules/plasmalnf/PlasmaLnfJob.cpp b/src/modules/plasmalnf/PlasmaLnfJob.cpp index d5db8ae4c..44bdb5cc7 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.cpp +++ b/src/modules/plasmalnf/PlasmaLnfJob.cpp @@ -41,12 +41,6 @@ PlasmaLnfJob::prettyName() const return tr( "Plasma Look-and-Feel Job" ); } -QString -PlasmaLnfJob::prettyDescription() const -{ - return prettyName(); -} - QString PlasmaLnfJob::prettyStatusMessage() const { return prettyName(); diff --git a/src/modules/plasmalnf/PlasmaLnfJob.h b/src/modules/plasmalnf/PlasmaLnfJob.h index ef9ee1257..9c52f2c8d 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.h +++ b/src/modules/plasmalnf/PlasmaLnfJob.h @@ -33,7 +33,6 @@ public: virtual ~PlasmaLnfJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 00ef06e10..2df3a66a0 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -46,12 +46,6 @@ TrackingInstallJob::prettyName() const return tr( "Installation feedback" ); } -QString -TrackingInstallJob::prettyDescription() const -{ - return prettyName(); -} - QString TrackingInstallJob::prettyStatusMessage() const { @@ -86,12 +80,6 @@ TrackingMachineUpdateManagerJob::prettyName() const return tr( "Machine feedback" ); } -QString -TrackingMachineUpdateManagerJob::prettyDescription() const -{ - return prettyName(); -} - QString TrackingMachineUpdateManagerJob::prettyStatusMessage() const { @@ -143,12 +131,6 @@ TrackingKUserFeedbackJob::prettyName() const return tr( "KDE user feedback" ); } -QString -TrackingKUserFeedbackJob::prettyDescription() const -{ - return prettyName(); -} - QString TrackingKUserFeedbackJob::prettyStatusMessage() const { diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 38349515a..33b8eceb1 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -54,7 +54,6 @@ public: ~TrackingInstallJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; @@ -75,7 +74,6 @@ public: ~TrackingMachineUpdateManagerJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; }; @@ -93,7 +91,6 @@ public: ~TrackingKUserFeedbackJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; From 29cfcb01dabcd33d12654375892697c39071aaa5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 12:37:46 +0200 Subject: [PATCH 145/399] i18n: suppress Interlingue - like Esperanto before Qt 5.12, Interlingue does not seem to be supported by QLocale, so it gets turned into "C" locale, which then messes up the default language selection in the welcome page. Move it to _incomplete until QLocale does support it. FIXES #1475 --- CMakeLists.txt | 53 ++++++++++++++++---------------------------------- ci/txstats.py | 1 + 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cabd72700..8fcebae6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,20 +140,18 @@ set( CALAMARES_DESCRIPTION_SUMMARY # TODO: drop the es_ES translation from Transifex # # NOTE: move eo (Esperanto) to _ok once Qt can actually create a -# locale for it. (Qt 5.12.2 can, see check later on). -# NOTE: update these lines by running txstats.py, or copy these four lines -# and prefix each variable name with "p", so that the automatic -# checks for new languages and misspelled ones are done (that is, -# copy these four lines to four backup lines, add "p", and then update -# the original four lines with the current translations). +# locale for it. (Qt 5.12.2 can, see Translation Status section). +# NOTE: move ie (Interlingue) to _ok once Qt supports it. +# NOTE: update these lines by running `txstats.py`, or for full automation +# `txstats.py -e`. See also # # Total 68 languages set( _tx_complete ca fi_FI he hr nl pt_BR sq tg tr_TR uk zh_TW ) set( _tx_good as ast az az_AZ be cs_CZ da de es fr hi hu it_IT ja ko lt ml pt_PT ru sk sv zh_CN ) -set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id ie is mr nb +set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id is mr nb pl ro sl sr sr@latin th ) -set( _tx_incomplete bn ca@valencia eo fr_CH gu kk kn lo lv mk ne_NP +set( _tx_incomplete bn ca@valencia eo fr_CH gu ie kk kn lo lv mk ne_NP ur uz ) ### Required versions @@ -286,14 +284,6 @@ find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui LinguistTool if( WITH_QML ) find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets ) endif() -if( Qt5_VERSION VERSION_GREATER 5.12.1 ) - # At least Qt 5.12.2 seems to support Esperanto in QLocale - if( "eo" IN_LIST _tx_incomplete ) - message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale") - list( REMOVE_ITEM _tx_incomplete "eo" ) - list( APPEND _tx_ok "eo" ) - endif() -endif() # Optional Qt parts find_package( Qt5DBus CONFIG ) @@ -429,30 +419,22 @@ set(Calamares_WITH_QML ${WITH_QML}) ### Transifex Translation status # -# Construct language lists for use. If there are p_tx* variables, -# then run an extra cmake-time check for consistency of the old -# (p_tx*) and new (_tx*) lists. +# Construct language lists for use. # -set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_incomplete} ) +if( Qt5_VERSION VERSION_GREATER 5.12.1 ) + # At least Qt 5.12.2 seems to support Esperanto in QLocale + if( "eo" IN_LIST _tx_incomplete ) + message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale") + list( REMOVE_ITEM _tx_incomplete "eo" ) + list( APPEND _tx_ok "eo" ) + endif() +endif() + set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} ) set( tx_errors OFF ) -if ( prev_tx ) - # Gone in new list - foreach( l ${prev_tx} ) - list( FIND curr_tx ${l} p_l ) - if( p_l EQUAL -1 ) - message(WARNING "Language ${l} was present in previous translations and is now absent.") - set( tx_errors ON ) - endif() - endforeach() - +if ( curr_tx ) # New in list foreach( l ${curr_tx} ) - list( FIND prev_tx ${l} p_l ) - if( p_l EQUAL -1 ) - message(WARNING "Language ${l} is new.") - set( tx_errors ON ) - endif() set( p_l "lang/calamares_${l}.ts" ) if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} ) message(WARNING "Language ${l} has no .ts file yet.") @@ -463,7 +445,6 @@ if ( prev_tx ) unset( p_l ) unset( l ) endif() -unset( prev_tx ) unset( curr_tx ) if( tx_errors ) message( FATAL_ERROR "Translation warnings, see above." ) diff --git a/ci/txstats.py b/ci/txstats.py index a9f412743..40fe3f43b 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -178,6 +178,7 @@ def get_tx_stats(languages, outputter, verbose): # and it's at-the-least ok. incomplete_languages = ( "eo", # Not supported by QLocale < 5.12.1 + "ie", # Not supported by Qt at least through 5.15.0 ) all_langs = [] From b27bc11975339915b60e973b8081bdbf7cc7feac Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 12:59:55 +0200 Subject: [PATCH 146/399] [libcalamares] Merge locale tests files - No need for a separate .h in most test cases --- src/libcalamares/locale/Tests.cpp | 35 +++++++++++++++++----- src/libcalamares/locale/Tests.h | 49 ------------------------------- 2 files changed, 28 insertions(+), 56 deletions(-) delete mode 100644 src/libcalamares/locale/Tests.h diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 6c5a508d7..3ee3dfdd3 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,13 +16,8 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ -#include "Tests.h" - #include "locale/LabelModel.h" #include "locale/TimeZone.h" #include "locale/TranslatableConfiguration.h" @@ -31,7 +27,26 @@ #include -QTEST_GUILESS_MAIN( LocaleTests ) +class LocaleTests : public QObject +{ + Q_OBJECT +public: + LocaleTests(); + ~LocaleTests() override; + +private Q_SLOTS: + void initTestCase(); + + void testLanguageModelCount(); + void testEsperanto(); + void testTranslatableLanguages(); + void testTranslatableConfig1(); + void testTranslatableConfig2(); + + // TimeZone testing + void testSimpleZones(); + void testComplexZones(); +}; LocaleTests::LocaleTests() {} @@ -257,3 +272,9 @@ LocaleTests::testComplexZones() QCOMPARE( r.tr(), QStringLiteral( "zxc,;* vm" ) ); // Only _ is special } } + +QTEST_GUILESS_MAIN( LocaleTests ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" diff --git a/src/libcalamares/locale/Tests.h b/src/libcalamares/locale/Tests.h deleted file mode 100644 index dfe85a865..000000000 --- a/src/libcalamares/locale/Tests.h +++ /dev/null @@ -1,49 +0,0 @@ -/* === This file is part of Calamares - === - * - * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * - */ - -#ifndef LIBCALAMARES_LOCALE_TESTS_H -#define LIBCALAMARES_LOCALE_TESTS_H - -#include - -class LocaleTests : public QObject -{ - Q_OBJECT -public: - LocaleTests(); - ~LocaleTests() override; - -private Q_SLOTS: - void initTestCase(); - - void testLanguageModelCount(); - void testEsperanto(); - void testTranslatableLanguages(); - void testTranslatableConfig1(); - void testTranslatableConfig2(); - - // TimeZone testing - void testSimpleZones(); - void testComplexZones(); -}; - -#endif From 3f1b31e352cb6fba908f0d1e5c1b413217951972 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 13:21:08 +0200 Subject: [PATCH 147/399] [libcalamares] Explicit tests for Interlingue - The language code "ie" is not recognized, - "ia" is, and it seems to be the post-war variant of Interlingue, so we may want to rename / relabel. The testEsperanto test -- now split into scripts and esperanto -- would have picked "ie" out of the list because it does map to C locale. --- src/libcalamares/locale/Tests.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 3ee3dfdd3..10b4ad056 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -38,10 +38,13 @@ private Q_SLOTS: void initTestCase(); void testLanguageModelCount(); - void testEsperanto(); void testTranslatableLanguages(); void testTranslatableConfig1(); void testTranslatableConfig2(); + void testLanguageScripts(); + + void testEsperanto(); + void testInterlingue(); // TimeZone testing void testSimpleZones(); @@ -55,6 +58,8 @@ LocaleTests::~LocaleTests() {} void LocaleTests::initTestCase() { + Logger::setupLogLevel( Logger::LOGDEBUG ); + // Otherwise plain get() is dubious in the TranslatableConfiguration tests QLocale::setDefault( QLocale( QStringLiteral( "en_US" ) ) ); QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) ); @@ -80,10 +85,8 @@ LocaleTests::testLanguageModelCount() } void -LocaleTests::testEsperanto() +LocaleTests::testLanguageScripts() { - Logger::setupLogLevel( Logger::LOGDEBUG ); - const auto* m = CalamaresUtils::Locale::availableTranslations(); QVERIFY( m ); @@ -104,13 +107,33 @@ LocaleTests::testEsperanto() QVERIFY( locale.language() == QLocale::Lithuanian ? locale.country() == QLocale::Lithuania : true ); QVERIFY( locale.language() != QLocale::C ); } +} + +void +LocaleTests::testEsperanto() +{ #if QT_VERSION < QT_VERSION_CHECK( 5, 12, 2 ) QCOMPARE( QLocale( "eo" ).language(), QLocale::C ); #else QCOMPARE( QLocale( "eo" ).language(), QLocale::Esperanto ); #endif + QCOMPARE( QLocale( QLocale::Esperanto ).language(), QLocale::Esperanto ); // Probably fails on 5.12, too } +void +LocaleTests::testInterlingue() +{ + // ie / Interlingue is borked (is "ie" even the right name?) + QCOMPARE( QLocale( "ie" ).language(), QLocale::C ); + QCOMPARE( QLocale( QLocale::Interlingue ).language(), QLocale::English ); + + // "ia" exists (post-war variant of Interlingue) + QCOMPARE( QLocale( "ia" ).language(), QLocale::Interlingua ); + // "bork" does not exist + QCOMPARE( QLocale( "bork" ).language(), QLocale::C ); +} + + static const QStringList& someLanguages() { From 05f3fbea05629a3fef0316cb3b98625f88d52866 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 13:45:36 +0200 Subject: [PATCH 148/399] [locale] Apply SPDX headers --- src/modules/locale/LocalePage.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 406f27a6e..c10b2dee9 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From 44bc61d4be71a3d9bd965378d0a22d9725d75420 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 22:35:04 +0200 Subject: [PATCH 149/399] [users] set up Config object before widget --- src/modules/users/UsersViewStep.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index b9ea3ae17..39d06b64a 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -168,6 +168,8 @@ UsersViewStep::onLeave() void UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { + m_config->setConfigurationMap( configurationMap ); + // Create the widget, after all .. as long as writing configuration to the UI is needed (void)this->widget(); using CalamaresUtils::getBool; @@ -204,6 +206,4 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) Action hostsfileAction = getBool( configurationMap, "writeHostsFile", true ) ? Action::WriteEtcHosts : Action::None; m_actions = hostsfileAction | hostnameAction; - - m_config->setConfigurationMap( configurationMap ); } From 35dff4d12c0aa39324c15761541b74e129004b4d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 22:16:48 +0200 Subject: [PATCH 150/399] [users] Migrate reuse-password and password-strength to Config - add the "reuse user password for root" setting to Config, make the UI page follow that setting. - add the require-strong-password default and toggle settings to Config; this is not well-checked yet. On the widget / UI side, connect checkboxes only if they are visible; refactor reuse-user-password-for-root settings. --- src/modules/users/Config.cpp | 27 ++++++++++ src/modules/users/Config.h | 26 ++++++++++ src/modules/users/UsersPage.cpp | 77 +++++++++++++++-------------- src/modules/users/UsersPage.h | 5 +- src/modules/users/UsersViewStep.cpp | 5 -- 5 files changed, 95 insertions(+), 45 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index e0174e74e..823b9fb99 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -343,6 +343,27 @@ Config::setAutoLogin( bool b ) } } +void +Config::setReuseUserPasswordForRoot( bool reuse ) +{ + if ( reuse != m_reuseUserPasswordForRoot ) + { + m_reuseUserPasswordForRoot = reuse; + emit reuseUserPasswordForRootChanged( reuse ); + } +} + +void +Config::setRequireStrongPasswords( bool strong ) +{ + if ( strong != m_requireStrongPasswords ) + { + m_requireStrongPasswords = strong; + emit requireStrongPasswordsChanged( strong ); + } +} + + STATICTEST void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ) { @@ -377,4 +398,10 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) m_writeRootPassword = CalamaresUtils::getBool( configurationMap, "setRootPassword", true ); Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", m_writeRootPassword ); + + m_reuseUserPasswordForRoot = CalamaresUtils::getBool( configurationMap, "doReusePassword", false ); + + m_permitWeakPasswords = CalamaresUtils::getBool( configurationMap, "allowWeakPasswords", false ); + m_requireStrongPasswords + = !m_permitWeakPasswords || !CalamaresUtils::getBool( configurationMap, "allowWeakPasswordsDefault", false ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index b84dc5aaf..8c30dad4c 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -42,6 +42,14 @@ class Config : public QObject Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) Q_PROPERTY( QString hostNameStatus READ hostNameStatus NOTIFY hostNameStatusChanged ) + Q_PROPERTY( bool writeRootPassword READ writeRootPassword CONSTANT ) + Q_PROPERTY( bool reuseUserPasswordForRoot READ reuseUserPasswordForRoot WRITE setReuseUserPasswordForRoot NOTIFY + reuseUserPasswordForRootChanged ) + + Q_PROPERTY( bool permitWeakPasswords READ permitWeakPasswords CONSTANT ) + Q_PROPERTY( bool requireStrongPasswords READ requireStrongPasswords WRITE setRequireStrongPasswords NOTIFY + requireStrongPasswordsChanged ) + public: Config( QObject* parent = nullptr ); ~Config(); @@ -76,6 +84,12 @@ public: bool doAutoLogin() const { return m_doAutoLogin; } /// Should the root password be written (if false, no password is set and the root account is disabled for login) bool writeRootPassword() const { return m_writeRootPassword; } + /// Should the user's password be used for root, too? (if root is written at all) + bool reuseUserPasswordForRoot() const { return m_reuseUserPasswordForRoot; } + /// Show UI to change the "require strong password" setting? + bool permitWeakPasswords() const { return m_permitWeakPasswords; } + /// Current setting for "require strong password"? + bool requireStrongPasswords() const { return m_requireStrongPasswords; } const QStringList& defaultGroups() const { return m_defaultGroups; } @@ -109,6 +123,11 @@ public Q_SLOTS: /// Sets the autologin flag void setAutoLogin( bool b ); + /// Set to true to use the user password, unchanged, for root too + void setReuseUserPasswordForRoot( bool reuse ); + /// Change setting for "require strong password" + void setRequireStrongPasswords( bool strong ); + signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); @@ -119,6 +138,8 @@ signals: void hostNameChanged( const QString& ); void hostNameStatusChanged( const QString& ); void autoLoginChanged( bool ); + void reuseUserPasswordForRootChanged( bool ); + void requireStrongPasswordsChanged( bool ); private: QStringList m_defaultGroups; @@ -129,7 +150,12 @@ private: QString m_loginName; QString m_hostName; bool m_doAutoLogin = false; + bool m_writeRootPassword = true; + bool m_reuseUserPasswordForRoot = false; + + bool m_permitWeakPasswords = false; + bool m_requireStrongPasswords = true; bool m_customLoginName = false; bool m_customHostName = false; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index c4502256a..9054d60e7 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -105,6 +105,12 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) { ui->setupUi( this ); + ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); + ui->checkBoxReusePassword->setChecked( m_config->reuseUserPasswordForRoot() ); + + ui->checkBoxValidatePassword->setVisible( m_config->permitWeakPasswords() ); + ui->checkBoxValidatePassword->setChecked( m_config->requireStrongPasswords() ); + // Connect signals and slots connect( ui->textBoxUserPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, this, &UsersPage::onPasswordTextChanged ); @@ -115,21 +121,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) onRootPasswordTextChanged( ui->textBoxRootPassword->text() ); checkReady( isReady() ); } ); - connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( const int checked ) { - /* When "reuse" is checked, hide the fields for explicitly - * entering the root password. However, if we're going to - * disable the root password anyway, hide them all regardless of - * the checkbox -- so when writeRoot is false, checked needs - * to be true, to hide them all. - */ - const bool visible = m_config->writeRootPassword() ? !checked : false; - ui->labelChooseRootPassword->setVisible( visible ); - ui->labelRootPassword->setVisible( visible ); - ui->labelRootPasswordError->setVisible( visible ); - ui->textBoxRootPassword->setVisible( visible ); - ui->textBoxVerifiedRootPassword->setVisible( visible ); - checkReady( isReady() ); - } ); + connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, &UsersPage::onReuseUserPasswordChanged ); connect( ui->textBoxFullName, &QLineEdit::textEdited, config, &Config::setFullName ); connect( config, &Config::fullNameChanged, this, &UsersPage::onFullNameTextEdited ); @@ -147,13 +139,25 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) } ); connect( config, &Config::autoLoginChanged, ui->checkBoxDoAutoLogin, &QCheckBox::setChecked ); - ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); - ui->checkBoxReusePassword->setChecked( true ); - ui->checkBoxValidatePassword->setChecked( true ); + if ( m_config->writeRootPassword() ) + { + connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + m_config->setReuseUserPasswordForRoot( checked != Qt::Unchecked ); + } ); + connect( config, &Config::reuseUserPasswordForRootChanged, ui->checkBoxReusePassword, &QCheckBox::setChecked ); + } - setPasswordCheckboxVisible( false ); + if ( m_config->permitWeakPasswords() ) + { + connect( ui->checkBoxValidatePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + m_config->setRequireStrongPasswords( checked != Qt::Unchecked ); + } ); + connect( config, &Config::requireStrongPasswordsChanged, ui->checkBoxValidatePassword, &QCheckBox::setChecked ); + } CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ); + + onReuseUserPasswordChanged( m_config->reuseUserPasswordForRoot() ); } UsersPage::~UsersPage() @@ -335,25 +339,26 @@ UsersPage::onRootPasswordTextChanged( const QString& ) emit checkReady( isReady() ); } - void -UsersPage::setPasswordCheckboxVisible( bool visible ) +UsersPage::onReuseUserPasswordChanged( const int checked ) { - ui->checkBoxValidatePassword->setVisible( visible ); -} - -void -UsersPage::setValidatePasswordDefault( bool checked ) -{ - ui->checkBoxValidatePassword->setChecked( checked ); - emit checkReady( isReady() ); -} - -void -UsersPage::setReusePasswordDefault( bool checked ) -{ - ui->checkBoxReusePassword->setChecked( checked ); - emit checkReady( isReady() ); + /* When "reuse" is checked, hide the fields for explicitly + * entering the root password. However, if we're going to + * disable the root password anyway, hide them all regardless of + * the checkbox -- so when writeRoot is false, visible needs + * to be false, to hide them all. + * + * In principle this is only connected when writeRootPassword is @c true, + * but it is **always** called at least once in the constructor + * to set up initial visibility. + */ + const bool visible = m_config->writeRootPassword() ? !checked : false; + ui->labelChooseRootPassword->setVisible( visible ); + ui->labelRootPassword->setVisible( visible ); + ui->labelRootPasswordError->setVisible( visible ); + ui->textBoxRootPassword->setVisible( visible ); + ui->textBoxVerifiedRootPassword->setVisible( visible ); + checkReady( isReady() ); } void diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index b8cb0f06a..5e0909b54 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -50,10 +50,6 @@ public: void onActivate(); - void setPasswordCheckboxVisible( bool visible ); - void setValidatePasswordDefault( bool checked ); - void setReusePasswordDefault( bool checked ); - /** @brief Process entries in the passwordRequirements config entry * * Called once for each item in the config entry, which should @@ -73,6 +69,7 @@ protected slots: void reportHostNameStatus( const QString& ); void onPasswordTextChanged( const QString& ); void onRootPasswordTextChanged( const QString& ); + void onReuseUserPasswordChanged( const int ); signals: void checkReady( bool ); diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 39d06b64a..092826d24 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -174,8 +174,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) (void)this->widget(); using CalamaresUtils::getBool; - m_widget->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) ); - if ( configurationMap.contains( "passwordRequirements" ) && configurationMap.value( "passwordRequirements" ).type() == QVariant::Map ) { @@ -187,9 +185,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) } } - m_widget->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", false ) ); - m_widget->setValidatePasswordDefault( !getBool( configurationMap, "allowWeakPasswordsDefault", false ) ); - using Action = SetHostNameJob::Action; QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" ); From a8c4f5b758ac17960a5b79d1653c0649a23627c8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 4 Aug 2020 23:09:51 +0200 Subject: [PATCH 151/399] CMake: fix up warnings from the LibPWQuality module - don't include other find modules - pkgconfig isn't totally necessary, it might work without --- CMakeModules/FindLibPWQuality.cmake | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeModules/FindLibPWQuality.cmake b/CMakeModules/FindLibPWQuality.cmake index 84136f5ad..2728afb1e 100644 --- a/CMakeModules/FindLibPWQuality.cmake +++ b/CMakeModules/FindLibPWQuality.cmake @@ -6,10 +6,16 @@ # LibPWQuality_LIBRARIES, where to find the library # LibPWQuality_INCLUDE_DIRS, where to find pwquality.h # -include(FindPkgConfig) +find_package(PkgConfig) include(FindPackageHandleStandardArgs) -pkg_search_module(pc_pwquality QUIET pwquality) +if(PkgConfig_FOUND) + pkg_search_module(pc_pwquality QUIET pwquality) +else() + # It's just possible that the find_path and find_library will + # find it **anyway**, so let's pretend it was there. + set(pc_pwquality_FOUND ON) +endif() find_path(LibPWQuality_INCLUDE_DIR NAMES pwquality.h From f7102527a8d26183d49eb4a375d6c133ba833557 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 00:51:08 +0200 Subject: [PATCH 152/399] CMake: stop clobbering config files When CMake runs, configure_file() will clobber the config files in the build/ directory, which is annoying during testing: you need to keep making the same edits, or edit the source. - Introduce new behavior: the config file is **not** overwritten unless the source file is newer. This means that edits to config files in the build directory are preserved. - If INSTALL_CONFIG is **on** then the files are clobbered anyway (the source is considered new regardless). --- CMakeModules/CalamaresAddPlugin.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 66536eda7..ee3c63acb 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -187,13 +187,22 @@ function( calamares_add_plugin ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} DESTINATION ${PLUGIN_DESTINATION} ) + set( _warned_config OFF ) foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + if( ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} OR INSTALL_CONFIG ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + else() + message( " ${BoldYellow}Not updating${ColorReset} ${PLUGIN_CONFIG_FILE}" ) + set( _warned_config ON ) + endif() if ( INSTALL_CONFIG ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} DESTINATION ${PLUGIN_DATA_DESTINATION} ) endif() endforeach() + if ( _warned_config ) + message( "" ) + endif() endif() endfunction() From 32e3933355e501a75bdc8229503b98f4ecdec2c4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 00:51:08 +0200 Subject: [PATCH 153/399] CMake: stop clobbering config files When CMake runs, configure_file() will clobber the config files in the build/ directory, which is annoying during testing: you need to keep making the same edits, or edit the source. - Introduce new behavior: the config file is **not** overwritten unless the source file is newer. This means that edits to config files in the build directory are preserved. - If INSTALL_CONFIG is **on** then the files are clobbered anyway (the source is considered new regardless). --- CMakeModules/CalamaresAddPlugin.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 66536eda7..ee3c63acb 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -187,13 +187,22 @@ function( calamares_add_plugin ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} DESTINATION ${PLUGIN_DESTINATION} ) + set( _warned_config OFF ) foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + if( ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} OR INSTALL_CONFIG ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + else() + message( " ${BoldYellow}Not updating${ColorReset} ${PLUGIN_CONFIG_FILE}" ) + set( _warned_config ON ) + endif() if ( INSTALL_CONFIG ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} DESTINATION ${PLUGIN_DATA_DESTINATION} ) endif() endforeach() + if ( _warned_config ) + message( "" ) + endif() endif() endfunction() From 2efce1ac7a0f4ef05405fe1373db86cd9213e5ac Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 10:29:13 +0200 Subject: [PATCH 154/399] [users] Move the hostname-setting config - The configuration for writing the hostname (to /etc/hostname, to /etc/hosts and possibly to systemd-hostname) is read-only, because it comes from the config file and won't change after. --- src/modules/users/Config.cpp | 37 ++++++++++++++++++++++++++ src/modules/users/Config.h | 19 ++++++++++++++ src/modules/users/SetHostNameJob.cpp | 14 +++++----- src/modules/users/SetHostNameJob.h | 18 +++---------- src/modules/users/UsersViewStep.cpp | 39 ++-------------------------- src/modules/users/UsersViewStep.h | 4 --- 6 files changed, 69 insertions(+), 62 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 823b9fb99..b043691f8 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -36,6 +36,22 @@ static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); static constexpr const int HOSTNAME_MIN_LENGTH = 2; static constexpr const int HOSTNAME_MAX_LENGTH = 63; +const NamedEnumTable< HostNameAction >& +hostNameActionNames() +{ + // *INDENT-OFF* + // clang-format off + static const NamedEnumTable< HostNameAction > names { + { QStringLiteral( "none" ), HostNameAction::None }, + { QStringLiteral( "etcfile" ), HostNameAction::EtcHostname }, + { QStringLiteral( "hostnamed" ), HostNameAction::SystemdHostname } + }; + // clang-format on + // *INDENT-ON* + + return names; +} + Config::Config( QObject* parent ) : QObject( parent ) { @@ -378,6 +394,25 @@ setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroup } } +STATICTEST HostNameActions +getHostNameActions( const QVariantMap& configurationMap ) +{ + HostNameAction setHostName = HostNameAction::EtcHostname; + QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" ); + if ( !hostnameActionString.isEmpty() ) + { + bool ok = false; + setHostName = hostNameActionNames().find( hostnameActionString, ok ); + if ( !ok ) + { + setHostName = HostNameAction::EtcHostname; // Rather than none + } + } + + HostNameAction writeHosts = CalamaresUtils::getBool( configurationMap, "writeHostsFile", true ) ? HostNameAction::WriteEtcHosts : HostNameAction::None; + return setHostName | writeHosts; +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) @@ -393,6 +428,8 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) setAutologinGroup( CalamaresUtils::getString( configurationMap, "autologinGroup" ) ); setSudoersGroup( CalamaresUtils::getString( configurationMap, "sudoersGroup" ) ); + m_hostNameActions = getHostNameActions( configurationMap ); + setConfigurationDefaultGroups( configurationMap, m_defaultGroups ); m_doAutoLogin = CalamaresUtils::getBool( configurationMap, "doAutologin", false ); diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 8c30dad4c..e61564897 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -21,9 +21,23 @@ #ifndef USERS_CONFIG_H #define USERS_CONFIG_H +#include "utils/NamedEnum.h" + #include #include +enum HostNameAction +{ + None = 0x0, + EtcHostname = 0x1, // Write to /etc/hostname directly + SystemdHostname = 0x2, // Set via hostnamed(1) + WriteEtcHosts = 0x4 // Write /etc/hosts (127.0.1.1 is this host) +}; +Q_DECLARE_FLAGS( HostNameActions, HostNameAction ) +Q_DECLARE_OPERATORS_FOR_FLAGS( HostNameActions ) + +const NamedEnumTable< HostNameAction >& hostNameActionNames(); + class Config : public QObject { Q_OBJECT @@ -41,6 +55,7 @@ class Config : public QObject Q_PROPERTY( QString hostName READ hostName WRITE setHostName NOTIFY hostNameChanged ) Q_PROPERTY( QString hostNameStatus READ hostNameStatus NOTIFY hostNameStatusChanged ) + Q_PROPERTY( HostNameActions hostNameActions READ hostNameActions CONSTANT ) Q_PROPERTY( bool writeRootPassword READ writeRootPassword CONSTANT ) Q_PROPERTY( bool reuseUserPasswordForRoot READ reuseUserPasswordForRoot WRITE setReuseUserPasswordForRoot NOTIFY @@ -79,6 +94,8 @@ public: QString hostName() const { return m_hostName; } /// Status message about hostname -- empty for "ok" QString hostNameStatus() const; + /// How to write the hostname + HostNameActions hostNameActions() const { return m_hostNameActions; } /// Should the user be automatically logged-in? bool doAutoLogin() const { return m_doAutoLogin; } @@ -159,6 +176,8 @@ private: bool m_customLoginName = false; bool m_customHostName = false; + + HostNameActions m_hostNameActions; }; #endif diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 555fcdc7d..a4cfa0268 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -27,13 +27,13 @@ #include #include -#include -#include -#include +#include +#include +#include using WriteMode = CalamaresUtils::System::WriteMode; -SetHostNameJob::SetHostNameJob( const QString& hostname, Actions a ) +SetHostNameJob::SetHostNameJob( const QString& hostname, HostNameActions a ) : Calamares::Job() , m_hostname( hostname ) , m_actions( a ) @@ -138,7 +138,7 @@ SetHostNameJob::exec() return Calamares::JobResult::error( tr( "Internal Error" ) ); } - if ( m_actions & Action::EtcHostname ) + if ( m_actions & HostNameAction::EtcHostname ) { if ( !setFileHostname( m_hostname ) ) { @@ -147,7 +147,7 @@ SetHostNameJob::exec() } } - if ( m_actions & Action::WriteEtcHosts ) + if ( m_actions & HostNameAction::WriteEtcHosts ) { if ( !writeFileEtcHosts( m_hostname ) ) { @@ -156,7 +156,7 @@ SetHostNameJob::exec() } } - if ( m_actions & Action::SystemdHostname ) + if ( m_actions & HostNameAction::SystemdHostname ) { // Does its own logging setSystemdHostname( m_hostname ); diff --git a/src/modules/users/SetHostNameJob.h b/src/modules/users/SetHostNameJob.h index e3867b9d0..5d52b545b 100644 --- a/src/modules/users/SetHostNameJob.h +++ b/src/modules/users/SetHostNameJob.h @@ -21,23 +21,15 @@ #ifndef SETHOSTNAMEJOB_CPP_H #define SETHOSTNAMEJOB_CPP_H +#include "Config.h" + #include "Job.h" class SetHostNameJob : public Calamares::Job { Q_OBJECT public: - enum Action - { - None = 0x0, - EtcHostname = 0x1, // Write to /etc/hostname directly - SystemdHostname = 0x2, // Set via hostnamed(1) - WriteEtcHosts = 0x4 // Write /etc/hosts (127.0.1.1 is this host) - }; - Q_DECLARE_FLAGS( Actions, Action ) - - - SetHostNameJob( const QString& hostname, Actions a ); + SetHostNameJob( const QString& hostname, HostNameActions a ); QString prettyName() const override; QString prettyDescription() const override; QString prettyStatusMessage() const override; @@ -45,9 +37,7 @@ public: private: const QString m_hostname; - const Actions m_actions; + const HostNameActions m_actions; }; -Q_DECLARE_OPERATORS_FOR_FLAGS( SetHostNameJob::Actions ) - #endif // SETHOSTNAMEJOB_CPP_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 092826d24..300bdf072 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -34,28 +34,9 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin< UsersViewStep >(); ) -static const NamedEnumTable< SetHostNameJob::Action >& -hostnameActions() -{ - using Action = SetHostNameJob::Action; - - // *INDENT-OFF* - // clang-format off - static const NamedEnumTable< Action > names { - { QStringLiteral( "none" ), Action::None }, - { QStringLiteral( "etcfile" ), Action::EtcHostname }, - { QStringLiteral( "hostnamed" ), Action::SystemdHostname } - }; - // clang-format on - // *INDENT-ON* - - return names; -} - UsersViewStep::UsersViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( nullptr ) - , m_actions( SetHostNameJob::Action::None ) , m_config( new Config( this ) ) { emit nextStatusChanged( true ); @@ -158,7 +139,8 @@ UsersViewStep::onLeave() j = new SetPasswordJob( "root", m_widget->getRootPassword() ); m_jobs.append( Calamares::job_ptr( j ) ); - j = new SetHostNameJob( m_config->hostName(), m_actions ); + // TODO: Config object should create jobs + j = new SetHostNameJob( m_config->hostName(), m_config->hostNameActions() ); m_jobs.append( Calamares::job_ptr( j ) ); m_widget->fillGlobalStorage(); @@ -184,21 +166,4 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_widget->addPasswordCheck( i.key(), i.value() ); } } - - using Action = SetHostNameJob::Action; - - QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" ); - if ( hostnameActionString.isEmpty() ) - { - hostnameActionString = QStringLiteral( "EtcFile" ); - } - bool ok = false; - auto hostnameAction = hostnameActions().find( hostnameActionString, ok ); - if ( !ok ) - { - hostnameAction = Action::EtcHostname; - } - - Action hostsfileAction = getBool( configurationMap, "writeHostsFile", true ) ? Action::WriteEtcHosts : Action::None; - m_actions = hostsfileAction | hostnameAction; } diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index 5c3674571..bfc43d1cd 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -20,8 +20,6 @@ #ifndef USERSPAGEPLUGIN_H #define USERSPAGEPLUGIN_H -#include "SetHostNameJob.h" - #include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" @@ -61,8 +59,6 @@ private: UsersPage* m_widget; QList< Calamares::job_ptr > m_jobs; - SetHostNameJob::Actions m_actions; - Config* m_config; }; From fcafe5db8f7434c5efbfadf09e5932f5a136f3e1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 10:50:38 +0200 Subject: [PATCH 155/399] [users] Test the moved setHostname Config - document that the default for writeHostsFile is *true* --- src/modules/users/Tests.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/modules/users/users.conf | 1 + 2 files changed, 37 insertions(+) diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index a4ee45fe2..41cd96842 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -25,6 +25,7 @@ // Implementation details extern void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ); +extern HostNameActions getHostNameActions( const QVariantMap& configurationMap ); /** @brief Test Config object methods and internals * @@ -40,6 +41,8 @@ private Q_SLOTS: void initTestCase(); void testDefaultGroups(); + void testHostActions_data(); + void testHostActions(); }; UserTests::UserTests() {} @@ -105,6 +108,39 @@ UserTests::testDefaultGroups() } } +void +UserTests::testHostActions_data() +{ + QTest::addColumn< bool >( "set" ); + QTest::addColumn< QString >( "string" ); + QTest::addColumn< int >( "result" ); + + QTest::newRow( "unset " ) << false << QString() << int( HostNameAction::EtcHostname ); + QTest::newRow( "empty " ) << true << QString() << int( HostNameAction::EtcHostname ); + QTest::newRow( "bad " ) << true << QString( "derp" ) << int( HostNameAction::EtcHostname ); + QTest::newRow( "none " ) << true << QString( "none" ) << int( HostNameAction::None ); + QTest::newRow( "systemd" ) << true << QString( "Hostnamed" ) << int( HostNameAction::SystemdHostname ); +} + +void +UserTests::testHostActions() +{ + QFETCH( bool, set ); + QFETCH( QString, string ); + QFETCH( int, result ); + + QVariantMap m; + if ( set ) + { + m.insert( "setHostname", string ); + } + QCOMPARE( getHostNameActions( m ), HostNameActions( result ) | HostNameAction::WriteEtcHosts ); // write bits default to true + m.insert( "writeHostsFile", false ); + QCOMPARE( getHostNameActions( m ), HostNameActions( result ) ); + m.insert( "writeHostsFile", true ); + QCOMPARE( getHostNameActions( m ), HostNameActions( result ) | HostNameAction::WriteEtcHosts ); +} + QTEST_GUILESS_MAIN( UserTests ) diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 32f74978a..259723df2 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -138,4 +138,5 @@ setHostname: EtcFile # Should /etc/hosts be written with a hostname for this machine # (also adds localhost and some ipv6 standard entries). +# Defaults to *true*. writeHostsFile: true From 0ecf1e1cc131d04a0d042e2478ff73b69cbff1e2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 12:24:39 +0200 Subject: [PATCH 156/399] [users] Drop default parameter for badness --- src/modules/users/UsersPage.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9054d60e7..9509592ba 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -50,7 +50,7 @@ enum class Badness /** Add an error message and pixmap to a label. */ static inline void -labelError( QLabel* pix, QLabel* label, const QString& message, Badness bad = Badness::Fatal ) +labelError( QLabel* pix, QLabel* label, const QString& message, Badness bad ) { label->setText( message ); pix->setPixmap( CalamaresUtils::defaultPixmap( ( bad == Badness::Fatal ) ? CalamaresUtils::StatusError @@ -88,7 +88,7 @@ labelStatus( QLabel* pix, QLabel* label, const QString& value, const QString& st } else { - labelError( pix, label, status ); + labelError( pix, label, status, Badness::Fatal ); ok = false; } } @@ -278,7 +278,7 @@ UsersPage::checkPasswordAcceptance( const QString& pw1, const QString& pw2, QLab { if ( pw1 != pw2 ) { - labelError( badge, message, tr( "Your passwords do not match!" ) ); + labelError( badge, message, tr( "Your passwords do not match!" ), Badness::Fatal ); return false; } else From 7b87242107f90388f401ab4650d281d5fd26ba32 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 12:56:09 +0200 Subject: [PATCH 157/399] [users] PW checking does not need widgets --- src/modules/users/CheckPWQuality.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index f06137c9b..33309df6a 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -22,7 +22,6 @@ #include #include -#include #ifdef HAVE_LIBPWQUALITY #include From 900deb5dc86042a447770a929e377a636d7dcd79 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 13:03:18 +0200 Subject: [PATCH 158/399] [users] Move the configuration of password checks to Config - the Widget (Page) does not need to know the password checks, that's business logic that belongs to Config. --- src/modules/users/Config.cpp | 81 ++++++++++++++++++++++++++++- src/modules/users/Config.h | 14 +++++ src/modules/users/UsersPage.cpp | 68 +++--------------------- src/modules/users/UsersPage.h | 13 ----- src/modules/users/UsersViewStep.cpp | 15 ------ 5 files changed, 102 insertions(+), 89 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index b043691f8..90c301997 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -26,6 +26,7 @@ #include "utils/String.h" #include "utils/Variant.h" +#include #include #include @@ -379,6 +380,27 @@ Config::setRequireStrongPasswords( bool strong ) } } +bool +Config::isPasswordAcceptable(const QString& password, QString& message) +{ + bool failureIsFatal = requireStrongPasswords(); + + for ( auto pc : m_passwordChecks ) + { + QString s = pc.filter( password ); + + if ( !s.isEmpty() ) + { + message = s; + return !failureIsFatal; + } + } + + return true; +} + + + STATICTEST void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ) @@ -409,10 +431,59 @@ getHostNameActions( const QVariantMap& configurationMap ) } } - HostNameAction writeHosts = CalamaresUtils::getBool( configurationMap, "writeHostsFile", true ) ? HostNameAction::WriteEtcHosts : HostNameAction::None; + HostNameAction writeHosts = CalamaresUtils::getBool( configurationMap, "writeHostsFile", true ) + ? HostNameAction::WriteEtcHosts + : HostNameAction::None; return setHostName | writeHosts; } +/** @brief Process entries in the passwordRequirements config entry + * + * Called once for each item in the config entry, which should + * be a key-value pair. What makes sense as a value depends on + * the key. Supported keys are documented in users.conf. + * + * @return if the check was added, returns @c true + */ +STATICTEST bool +addPasswordCheck( const QString& key, const QVariant& value, PasswordCheckList& passwordChecks ) +{ + if ( key == "minLength" ) + { + add_check_minLength( passwordChecks, value ); + } + else if ( key == "maxLength" ) + { + add_check_maxLength( passwordChecks, value ); + } + else if ( key == "nonempty" ) + { + if ( value.toBool() ) + { + passwordChecks.push_back( + PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is empty" ); }, + []( const QString& s ) { return !s.isEmpty(); }, + PasswordCheck::Weight( 1 ) ) ); + } + else + { + cDebug() << "nonempty check is mentioned but set to false"; + return false; + } + } +#ifdef CHECK_PWQUALITY + else if ( key == "libpwquality" ) + { + add_check_libpwquality( passwordChecks, value ); + } +#endif // CHECK_PWQUALITY + else + { + cWarning() << "Unknown password-check key" << key; + return false; + } + return true; +} void Config::setConfigurationMap( const QVariantMap& configurationMap ) @@ -441,4 +512,12 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) m_permitWeakPasswords = CalamaresUtils::getBool( configurationMap, "allowWeakPasswords", false ); m_requireStrongPasswords = !m_permitWeakPasswords || !CalamaresUtils::getBool( configurationMap, "allowWeakPasswordsDefault", false ); + + // If the value doesn't exist, or isn't a map, this gives an empty map -- no problem + auto pr_checks( configurationMap.value( "passwordRequirements" ).toMap() ); + for ( decltype( pr_checks )::const_iterator i = pr_checks.constBegin(); i != pr_checks.constEnd(); ++i ) + { + addPasswordCheck( i.key(), i.value(), m_passwordChecks ); + } + std::sort( m_passwordChecks.begin(), m_passwordChecks.end() ); } diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index e61564897..c89ae9bbf 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -21,6 +21,8 @@ #ifndef USERS_CONFIG_H #define USERS_CONFIG_H +#include "CheckPWQuality.h" + #include "utils/NamedEnum.h" #include @@ -110,6 +112,17 @@ public: const QStringList& defaultGroups() const { return m_defaultGroups; } + /** @brief Checks if the password is acceptable. + * + * If all is well, sets @p message to empty and returns @c true. + * If there are warnings, but acceptable, sets @p message to something + * non-empty and returns @c true. This happens if requireStrongPasswords + * is turned off (by config or user). + * If the password is not acceptable, sets @p message to something + * non-empty and returns @c false. + */ + bool isPasswordAcceptable( const QString& password, QString& message ); + static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); @@ -178,6 +191,7 @@ private: bool m_customHostName = false; HostNameActions m_hostNameActions; + PasswordCheckList m_passwordChecks; }; #endif diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9509592ba..aca20fd58 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -283,38 +283,21 @@ UsersPage::checkPasswordAcceptance( const QString& pw1, const QString& pw2, QLab } else { - bool failureIsFatal = ui->checkBoxValidatePassword->isChecked(); - bool failureFound = false; - - if ( m_passwordChecksChanged ) + QString s; + bool ok = m_config->isPasswordAcceptable( pw1, s ); + if ( !ok ) { - std::sort( m_passwordChecks.begin(), m_passwordChecks.end() ); - m_passwordChecksChanged = false; + labelError( badge, message, s, Badness::Fatal ); } - - for ( auto pc : m_passwordChecks ) + else if ( !s.isEmpty() ) { - QString s = pc.filter( pw1 ); - - if ( !s.isEmpty() ) - { - labelError( badge, message, s, failureIsFatal ? Badness::Fatal : Badness::Warning ); - failureFound = true; - if ( failureIsFatal ) - { - return false; - } - } + labelError( badge, message, s, Badness::Warning ); } - - if ( !failureFound ) + else { labelOk( badge, message ); } - - // Here, if failureFound is true then we've found **warnings**, - // which is ok to continue but the user should know. - return true; + return ok; } } @@ -360,38 +343,3 @@ UsersPage::onReuseUserPasswordChanged( const int checked ) ui->textBoxVerifiedRootPassword->setVisible( visible ); checkReady( isReady() ); } - -void -UsersPage::addPasswordCheck( const QString& key, const QVariant& value ) -{ - m_passwordChecksChanged = true; - - if ( key == "minLength" ) - { - add_check_minLength( m_passwordChecks, value ); - } - else if ( key == "maxLength" ) - { - add_check_maxLength( m_passwordChecks, value ); - } - else if ( key == "nonempty" ) - { - if ( value.toBool() ) - { - m_passwordChecks.push_back( - PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is empty" ); }, - []( const QString& s ) { return !s.isEmpty(); }, - PasswordCheck::Weight( 1 ) ) ); - } - } -#ifdef CHECK_PWQUALITY - else if ( key == "libpwquality" ) - { - add_check_libpwquality( m_passwordChecks, value ); - } -#endif // CHECK_PWQUALITY - else - { - cWarning() << "Unknown password-check key" << key; - } -} diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 5e0909b54..2f446b563 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -24,8 +24,6 @@ #ifndef USERSPAGE_H #define USERSPAGE_H -#include "CheckPWQuality.h" - #include class Config; @@ -50,14 +48,6 @@ public: void onActivate(); - /** @brief Process entries in the passwordRequirements config entry - * - * Called once for each item in the config entry, which should - * be a key-value pair. What makes sense as a value depends on - * the key. Supported keys are documented in users.conf. - */ - void addPasswordCheck( const QString& key, const QVariant& value ); - ///@brief Root password, depends on settings, may be empty QString getRootPassword() const; ///@brief User name and password @@ -88,9 +78,6 @@ private: Ui::Page_UserSetup* ui; Config* m_config; - PasswordCheckList m_passwordChecks; - bool m_passwordChecksChanged = false; - bool m_readyFullName; bool m_readyUsername; bool m_readyHostname; diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 300bdf072..75c76bd21 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -151,19 +151,4 @@ void UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_config->setConfigurationMap( configurationMap ); - - // Create the widget, after all .. as long as writing configuration to the UI is needed - (void)this->widget(); - using CalamaresUtils::getBool; - - if ( configurationMap.contains( "passwordRequirements" ) - && configurationMap.value( "passwordRequirements" ).type() == QVariant::Map ) - { - auto pr_checks( configurationMap.value( "passwordRequirements" ).toMap() ); - - for ( decltype( pr_checks )::const_iterator i = pr_checks.constBegin(); i != pr_checks.constEnd(); ++i ) - { - m_widget->addPasswordCheck( i.key(), i.value() ); - } - } } From b2b9ae779932643afbb7ff3e7e80a89bfe76d759 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 13:03:56 +0200 Subject: [PATCH 159/399] [users] Add tests for moved password-check configuration - link the PW checks to the test, and libpwquality if needed - test only does very basic config-mungeing --- src/modules/users/CMakeLists.txt | 3 +++ src/modules/users/Tests.cpp | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 5fafcd4f3..95b3a9697 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -71,4 +71,7 @@ calamares_add_test( SOURCES Tests.cpp Config.cpp + CheckPWQuality.cpp + LIBRARIES + ${USER_EXTRA_LIB} ) diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index 41cd96842..ff435803d 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -26,6 +26,7 @@ // Implementation details extern void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ); extern HostNameActions getHostNameActions( const QVariantMap& configurationMap ); +extern bool addPasswordCheck( const QString& key, const QVariant& value, PasswordCheckList& passwordChecks ); /** @brief Test Config object methods and internals * @@ -43,6 +44,7 @@ private Q_SLOTS: void testDefaultGroups(); void testHostActions_data(); void testHostActions(); + void testPasswordChecks(); }; UserTests::UserTests() {} @@ -141,6 +143,19 @@ UserTests::testHostActions() QCOMPARE( getHostNameActions( m ), HostNameActions( result ) | HostNameAction::WriteEtcHosts ); } +void +UserTests::testPasswordChecks() +{ + { + PasswordCheckList l; + QCOMPARE( l.length(), 0 ); + QVERIFY( !addPasswordCheck( "nonempty", QVariant(false), l ) ); // a silly setting + QCOMPARE( l.length(), 0 ); + QVERIFY( addPasswordCheck( "nonempty", QVariant(true), l ) ); + QCOMPARE( l.length(), 1 ); + } +} + QTEST_GUILESS_MAIN( UserTests ) From eb72d662d10b6b94b3ce89f9e2eeb0cd968849ba Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 13:29:06 +0200 Subject: [PATCH 160/399] [users] Add password fields to Config - no checking is done for validity, and there is no password-status --- src/modules/users/Config.cpp | 38 +++++++++++++++++++++++++++++++++++- src/modules/users/Config.h | 28 ++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 90c301997..ea3aa5221 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -381,7 +381,7 @@ Config::setRequireStrongPasswords( bool strong ) } bool -Config::isPasswordAcceptable(const QString& password, QString& message) +Config::isPasswordAcceptable( const QString& password, QString& message ) { bool failureIsFatal = requireStrongPasswords(); @@ -399,7 +399,43 @@ Config::isPasswordAcceptable(const QString& password, QString& message) return true; } +void +Config::setUserPassword( const QString& s ) +{ + m_userPassword = s; + // TODO: check new password status + emit userPasswordChanged( s ); +} +void +Config::setUserPasswordSecondary( const QString& s ) +{ + m_userPasswordSecondary = s; + // TODO: check new password status + emit userPasswordSecondaryChanged( s ); +} + +void +Config::setRootPassword( const QString& s ) +{ + if ( writeRootPassword() ) + { + m_rootPassword = s; + // TODO: check new password status + emit rootPasswordChanged( s ); + } +} + +void +Config::setRootPasswordSecondary( const QString& s ) +{ + if ( writeRootPassword() ) + { + m_rootPasswordSecondary = s; + // TODO: check new password status + emit rootPasswordSecondaryChanged( s ); + } +} STATICTEST void diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index c89ae9bbf..5177542c2 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -59,6 +59,13 @@ class Config : public QObject Q_PROPERTY( QString hostNameStatus READ hostNameStatus NOTIFY hostNameStatusChanged ) Q_PROPERTY( HostNameActions hostNameActions READ hostNameActions CONSTANT ) + Q_PROPERTY( QString userPassword READ userPassword WRITE setUserPassword NOTIFY userPasswordChanged ) + Q_PROPERTY( QString userPasswordSecondary READ userPasswordSecondary WRITE setUserPasswordSecondary NOTIFY + userPasswordSecondaryChanged ) + Q_PROPERTY( QString rootPassword READ rootPassword WRITE setRootPassword NOTIFY rootPasswordChanged ) + Q_PROPERTY( QString rootPasswordSecondary READ rootPasswordSecondary WRITE setRootPasswordSecondary NOTIFY + rootPasswordSecondaryChanged ) + Q_PROPERTY( bool writeRootPassword READ writeRootPassword CONSTANT ) Q_PROPERTY( bool reuseUserPasswordForRoot READ reuseUserPasswordForRoot WRITE setReuseUserPasswordForRoot NOTIFY reuseUserPasswordForRootChanged ) @@ -123,6 +130,11 @@ public: */ bool isPasswordAcceptable( const QString& password, QString& message ); + QString userPassword() const { return m_userPassword; } + QString userPasswordSecondary() const { return m_userPasswordSecondary; } + QString rootPassword() const { return m_rootPassword; } + QString rootPasswordSecondary() const { return m_rootPasswordSecondary; } + static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); @@ -158,6 +170,11 @@ public Q_SLOTS: /// Change setting for "require strong password" void setRequireStrongPasswords( bool strong ); + void setUserPassword( const QString& ); + void setUserPasswordSecondary( const QString& ); + void setRootPassword( const QString& ); + void setRootPasswordSecondary( const QString& ); + signals: void userShellChanged( const QString& ); void autologinGroupChanged( const QString& ); @@ -170,6 +187,11 @@ signals: void autoLoginChanged( bool ); void reuseUserPasswordForRootChanged( bool ); void requireStrongPasswordsChanged( bool ); + void userPasswordChanged( const QString& ); + void userPasswordSecondaryChanged( const QString& ); + void rootPasswordChanged( const QString& ); + void rootPasswordSecondaryChanged( const QString& ); + private: QStringList m_defaultGroups; @@ -179,6 +201,12 @@ private: QString m_fullName; QString m_loginName; QString m_hostName; + + QString m_userPassword; + QString m_userPasswordSecondary; // enter again to be sure + QString m_rootPassword; + QString m_rootPasswordSecondary; + bool m_doAutoLogin = false; bool m_writeRootPassword = true; From b49b9a66e6af900f0102ccddd2d2102c648009b8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 13:42:18 +0200 Subject: [PATCH 161/399] [users] Drop data-access from the Page - get username, password etc. from the config object, not the page - jobs now depend entirely on config - handle logic of "what's the root password" in Config --- src/modules/users/Config.cpp | 22 ++++++++++++++++++++++ src/modules/users/Config.h | 8 ++++++-- src/modules/users/UsersPage.cpp | 26 -------------------------- src/modules/users/UsersPage.h | 5 ----- src/modules/users/UsersViewStep.cpp | 5 ++--- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index ea3aa5221..69712a733 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -437,6 +437,28 @@ Config::setRootPasswordSecondary( const QString& s ) } } +QString Config::rootPassword() const +{ + if ( writeRootPassword() ) + { + if ( reuseUserPasswordForRoot() ) + return userPassword(); + return m_rootPassword; + } + return QString(); +} + +QString Config::rootPasswordSecondary() const +{ + if ( writeRootPassword() ) + { + if ( reuseUserPasswordForRoot() ) + return userPasswordSecondary(); + return m_rootPasswordSecondary; + } + return QString(); +} + STATICTEST void setConfigurationDefaultGroups( const QVariantMap& map, QStringList& defaultGroups ) diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 5177542c2..334bfcdb3 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -130,10 +130,14 @@ public: */ bool isPasswordAcceptable( const QString& password, QString& message ); + // The user enters a password (and again in a separate UI element) QString userPassword() const { return m_userPassword; } QString userPasswordSecondary() const { return m_userPasswordSecondary; } - QString rootPassword() const { return m_rootPassword; } - QString rootPasswordSecondary() const { return m_rootPasswordSecondary; } + // The root password **may** be entered in the UI, or may be suppressed + // entirely when writeRootPassword is off, or may be equal to + // the user password when reuseUserPasswordForRoot is on. + QString rootPassword() const; + QString rootPasswordSecondary() const; static const QStringList& forbiddenLoginNames(); static const QStringList& forbiddenHostNames(); diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index aca20fd58..5a96af4e4 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -199,32 +199,6 @@ UsersPage::isReady() const return readyFields; } -QString -UsersPage::getRootPassword() const -{ - if ( m_config->writeRootPassword() ) - { - if ( ui->checkBoxReusePassword->isChecked() ) - { - return ui->textBoxUserPassword->text(); - } - else - { - return ui->textBoxRootPassword->text(); - } - } - else - { - return QString(); - } -} - -QPair< QString, QString > -UsersPage::getUserPassword() const -{ - return QPair< QString, QString >( m_config->loginName(), ui->textBoxUserPassword->text() ); -} - void UsersPage::fillGlobalStorage() const { diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 2f446b563..46c4ed399 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -48,11 +48,6 @@ public: void onActivate(); - ///@brief Root password, depends on settings, may be empty - QString getRootPassword() const; - ///@brief User name and password - QPair< QString, QString > getUserPassword() const; - protected slots: void onFullNameTextEdited( const QString& ); void reportLoginNameStatus( const QString& ); diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 75c76bd21..2733539b6 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -132,11 +132,10 @@ UsersViewStep::onLeave() m_config->doAutoLogin(), m_config->defaultGroups() ); - auto userPW = m_widget->getUserPassword(); - j = new SetPasswordJob( userPW.first, userPW.second ); + j = new SetPasswordJob( m_config->loginName(), m_config->userPassword() ); m_jobs.append( Calamares::job_ptr( j ) ); - j = new SetPasswordJob( "root", m_widget->getRootPassword() ); + j = new SetPasswordJob( "root", m_config->rootPassword() ); m_jobs.append( Calamares::job_ptr( j ) ); // TODO: Config object should create jobs From ee3f30868659c16555226d7710ba94b422cee72c Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 5 Aug 2020 13:53:54 +0200 Subject: [PATCH 162/399] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_ast.ts | 25 ++- lang/calamares_bn.ts | 485 +++++++++++++++++++++--------------------- lang/calamares_da.ts | 9 +- lang/calamares_hi.ts | 23 +- lang/calamares_sv.ts | 84 ++++---- 5 files changed, 320 insertions(+), 306 deletions(-) diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index fb9402c5c..f10b353e9 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -776,22 +776,22 @@ L'instalador va colar y van perdese tolos cambeos.
<h1>Welcome to the Calamares setup program for %1</h1> - + <h1>Afáyate nel programa de configuración de Calamares pa %1</h1> <h1>Welcome to %1 setup</h1> - + <h1>Afáyate na configuración de %1</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Afáyate nel instalador Calamares pa %1</h1> <h1>Welcome to the %1 installer</h1> - + <h1>Afáyate nel instalador de %1</h1> @@ -1432,7 +1432,7 @@ L'instalador va colar y van perdese tolos cambeos.
is running the installer as an administrator (root) - + ta executando l'instalador como alministrador (root) @@ -1447,7 +1447,7 @@ L'instalador va colar y van perdese tolos cambeos.
has a screen large enough to show the whole installer - + tien una pantalla abondo grande como p'amosar tol instalador @@ -1884,7 +1884,7 @@ L'instalador va colar y van perdese tolos cambeos.
Theming - + Estilu @@ -2851,7 +2851,8 @@ Salida: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Esti ordenador nun satisfaz nengún de los requirimientos aconseyaos pa configurar %1.<br/> + La configuración pue siguir pero quiciabes se desactiven dalgunes carauterístiques.</p>
@@ -2962,13 +2963,15 @@ Salida: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Esti ordenador nun satisfaz los requirimientos mínimos pa instalar %1.<br/> + La instalación nun pue siguir.</p> <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Esti ordenador nun satisfaz nengún de los requirimientos aconseyaos pa configurar %1.<br/> + La configuración pue siguir pero quiciabes se desactiven dalgunes carauterístiques.</p> @@ -3517,7 +3520,7 @@ Salida: By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. - + Al esbillar esto vas unviar información tocante a la instalación y el hardware. Esta información va unviase namás <b>una vegada</b> dempués de finar la instalación. diff --git a/lang/calamares_bn.ts b/lang/calamares_bn.ts index aec314a22..1c279ae56 100644 --- a/lang/calamares_bn.ts +++ b/lang/calamares_bn.ts @@ -6,17 +6,17 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + এই সিস্টেমের <strong>বুট পরিবেশ</strong>।<br><br> পুরাতন x86 সিস্টেম শুধুমাত্র <strong>BIOS</strong> সমর্থন কর<br> আধুনিক সিস্টেম সাধারণত <strong>EFI</strong> ব্যবহার করে, কিন্তু যদি সামঞ্জস্যতা মোডে শুরু হয় তাহলে BIOS হিসেবেও প্রদর্শিত হতে পারে। This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + এই সিস্টেম একটি <strong>EFI</strong> বুট পরিবেশ দিয়ে শুরু হয়েছিল।<br><br> একটি EFI পরিবেশ থেকে স্টার্টআপ কনফিগার করতে, এই ইনস্টলার অবশ্যই একটি <strong>EFI সিস্টেম পার্টিশনে</strong> <strong>GRUB</strong> বা <strong>systemd-boot </strong> এর মত একটি বুট লোডার অ্যাপ্লিকেশন প্রয়োগ করতে হবে। এটি স্বয়ংক্রিয়, যদি না আপনি ম্যানুয়াল পার্টিশনিং নির্বাচন করেন, সেক্ষেত্রে আপনাকে অবশ্যই এটি বেছে নিতে হবে অথবা এটি নিজে তৈরি করতে হবে। This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + এই সিস্টেম একটি <strong>BIOS</strong> বুট পরিবেশ দিয়ে শুরু হয়েছিল।<br><br>একটি BIOS পরিবেশ থেকে স্টার্টআপ কনফিগার করতে, এই ইনস্টলার অবশ্যই GRUB এর মত একটি পার্টিশনের শুরুতে অথবা পার্টিশন টেবিলের শুরুতে মাস্টার বুট রেকর্ডে (পছন্দনীয়) মত একটি বুট লোডার ইনস্টল করতে হবে। এটি স্বয়ংক্রিয়, যদি না আপনি ম্যানুয়াল পার্টিশনিং নির্বাচন করেন, সেক্ষেত্রে আপনাকে অবশ্যই এটি নিজেই সেট আপ করতে হবে। @@ -39,12 +39,12 @@ Do not install a boot loader - + একটি বুট লোডার ইনস্টল করবেন না %1 (%2) - + %1 (%2) @@ -60,22 +60,22 @@ Form - + ফর্ম GlobalStorage - + গ্লোবাল স্টোরেজ JobQueue - + জব লাইন Modules - + মডিউলগুলো @@ -111,7 +111,7 @@ Debug information - + তথ্য ডিবাগ করুন @@ -124,7 +124,7 @@ Install - + ইনস্টল করুন @@ -171,7 +171,7 @@ Running command %1 %2 - + কমান্ড %1 %2 চলছে @@ -179,22 +179,22 @@ Running %1 operation. - + %1 ক্রিয়াকলাপ চলছে। Bad working directory path - খারাপ ওয়ার্কিং ডিরেক্টরি পাথ + ওয়ার্কিং ডিরেক্টরি পাথ ভালো নয় Working directory %1 for python job %2 is not readable. - ওয়ার্কিং ডিরেক্টরি 1% পাইথন কাজের জন্য % 2 পাঠযোগ্য নয়। + ওয়ার্কিং ডিরেক্টরি 1% পাইথন কাজের জন্য %2 পাঠযোগ্য নয়। Bad main script file - খারাপ প্রধান স্ক্রিপ্ট ফাইল + প্রধান স্ক্রিপ্ট ফাইল ভালো নয় @@ -264,7 +264,7 @@ Installation Failed - ইনস্টলেশন ব্যর্থ হয়েছে + ইনস্টলেশন ব্যর্থ হলো @@ -321,7 +321,7 @@ Continue with setup? - + সেটআপ চালিয়ে যেতে চান? @@ -336,7 +336,7 @@ The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + %1 ইনস্টলার %2 সংস্থাপন করতে আপনার ডিস্কে পরিবর্তন করতে যাচ্ছে। @@ -346,12 +346,12 @@ &Install now - + এবংএখনই ইনস্টল করুন Go &back - + এবংফিরে যান @@ -401,7 +401,7 @@ &Cancel - + এবংবাতিল করুন @@ -411,7 +411,7 @@ Cancel installation? - + ইনস্টলেশন বাতিল করবেন? @@ -423,7 +423,8 @@ The setup program will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + আপনি কি সত্যিই বর্তমান সংস্থাপন প্রক্রিয়া বাতিল করতে চান? +ইনস্টলার টি বন্ধ হয়ে যাবে এবং সকল পরিবর্তন হারিয়ে যাবে। @@ -431,22 +432,22 @@ The installer will quit and all changes will be lost. Unknown exception type - অজানা ব্যতিক্রম প্রকার + অজানা ধরনের ব্যতিক্রম unparseable Python error - আনপারসেবল পাইথন ত্রুটি + অতুলনীয় পাইথন ত্রুটি unparseable Python traceback - আনপারসেবল পাইথন ট্রেসব্যাক + অতুলনীয় পাইথন ট্রেসব্যাক Unfetchable Python error. - অপরিবর্তনীয় পাইথন ত্রুটি। + অতুলনীয় পাইথন ত্রুটি। @@ -463,7 +464,7 @@ The installer will quit and all changes will be lost. Show debug information - + ডিবাগ তথ্য দেখান @@ -478,7 +479,7 @@ The installer will quit and all changes will be lost. &Cancel - + এবংবাতিল করুন @@ -496,7 +497,7 @@ The installer will quit and all changes will be lost. Gathering system information... - + সিস্টেম তথ্য সংগ্রহ করা হচ্ছে... @@ -504,12 +505,12 @@ The installer will quit and all changes will be lost. Form - + ফর্ম Select storage de&vice: - + স্টোরেজ ডিএবংভাইস নির্বাচন করুন: @@ -517,12 +518,12 @@ The installer will quit and all changes will be lost. Current: - + বর্তমান: After: - + পরে: @@ -537,7 +538,7 @@ The installer will quit and all changes will be lost. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>সংকুচিত করার জন্য একটি পার্টিশন নির্বাচন করুন, তারপর নিচের বারটি পুনঃআকারের জন্য টেনে আনুন</strong> @@ -547,12 +548,12 @@ The installer will quit and all changes will be lost. Boot loader location: - + বুট লোডার অবস্থান: <strong>Select a partition to install on</strong> - + <strong>ইনস্টল করতে একটি পার্টিশন নির্বাচন করুন</strong> @@ -562,17 +563,17 @@ The installer will quit and all changes will be lost. The EFI system partition at %1 will be used for starting %2. - + %1 এ EFI সিস্টেম পার্টিশন %2 শুরু করার জন্য ব্যবহার করা হবে। EFI system partition: - + EFI সিস্টেম পার্টিশন: This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + এই স্টোরেজ ডিভাইসে কোন অপারেটিং সিস্টেম আছে বলে মনে হয় না। তুমি কি করতে চাও? <br/>স্টোরেজ ডিভাইসে কোন পরিবর্তন করার আগে আপনি আপনার পছন্দপর্যালোচনা এবং নিশ্চিত করতে সক্ষম হবেন। @@ -580,7 +581,7 @@ The installer will quit and all changes will be lost. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>ডিস্ক মুছে ফেলুন</strong> <br/>এটি বর্তমানে নির্বাচিত স্টোরেজ ডিভাইসে উপস্থিত সকল উপাত্ত <font color="red">মুছে ফেলবে</font>। @@ -588,7 +589,7 @@ The installer will quit and all changes will be lost. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>ইনস্টল করুন পাশাপাশি</strong> <br/>ইনস্টলার %1 এর জন্য জায়গা তৈরি করতে একটি পার্টিশন সংকুচিত করবে। @@ -596,22 +597,22 @@ The installer will quit and all changes will be lost. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>একটি পার্টিশন প্রতিস্থাপন করুন</strong><br/>%1-এর সাথে একটি পার্টিশন প্রতিস্থাপন করে। This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + এই সঞ্চয় যন্ত্রটিতে %1 আছে। তুমি কি করতে চাও? <br/>স্টোরেজ ডিভাইসে কোন পরিবর্তন করার আগে আপনি আপনার পছন্দপর্যালোচনা এবং নিশ্চিত করতে সক্ষম হবেন। This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + এই স্টোরেজ ডিভাইসে ইতোমধ্যে একটি অপারেটিং সিস্টেম আছে। তুমি কি করতে চাও? <br/>স্টোরেজ ডিভাইসে কোন পরিবর্তন করার আগে আপনি আপনার পছন্দপর্যালোচনা এবং নিশ্চিত করতে সক্ষম হবেন. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + এই স্টোরেজ ডিভাইসে একাধিক অপারেটিং সিস্টেম আছে। তুমি কি করতে চাও? <br/>স্টোরেজ ডিভাইসে কোন পরিবর্তন করার আগে আপনি আপনার পছন্দপর্যালোচনা এবং নিশ্চিত করতে সক্ষম হবেন. @@ -644,17 +645,17 @@ The installer will quit and all changes will be lost. Clear mounts for partitioning operations on %1 - + %1 এ পার্টিশনিং অপারেশনের জন্য মাউন্ট গুলি মুছে ফেলুন Clearing mounts for partitioning operations on %1. - + %1-এ পার্টিশনিং অপারেশনের জন্য মাউন্ট মুছে ফেলা হচ্ছে। Cleared all mounts for %1 - + %1-এর জন্য সকল মাউন্ট মুছে ফেলা হয়েছে @@ -662,22 +663,22 @@ The installer will quit and all changes will be lost. Clear all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করুন। Clearing all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করা হচ্ছে। Cannot get list of temporary mounts. - + অস্থায়ী মাউন্টের তালিকা পাওয়া যাচ্ছে না। Cleared all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করা হয়েছে. @@ -704,12 +705,12 @@ The installer will quit and all changes will be lost. Set keyboard model to %1.<br/> - + %1-এ কীবোর্ড নকশা নির্ধারণ করুন। Set keyboard layout to %1/%2. - + %1/%2 এ কীবোর্ড বিন্যাস নির্ধারণ করুন। @@ -850,7 +851,7 @@ The installer will quit and all changes will be lost. Si&ze: - + আএবংকার @@ -860,22 +861,22 @@ The installer will quit and all changes will be lost. Partition &Type: - পার্টিশন এবং প্রকার: + পার্টিশন এবংধরন: &Primary - এবং প্রাথমিক + এবংপ্রাথমিক E&xtended - সম্প্রসারিত + বএবংর্ধিত Fi&le System: - + ফাএবংইল সিস্টেম: @@ -885,7 +886,7 @@ The installer will quit and all changes will be lost. &Mount Point: - এবং মাউন্ট পয়েন্ট: + এবংমাউন্ট পয়েন্ট: @@ -900,17 +901,17 @@ The installer will quit and all changes will be lost. Logical - + যৌক্তিক Primary - + প্রাথমিক GPT - + জিপিটি @@ -933,12 +934,12 @@ The installer will quit and all changes will be lost. Creating new %1 partition on %2. - + %2-এ নতুন %1 পার্টিশন তৈরি করা হচ্ছে। The installer failed to create partition on disk '%1'. - + ইনস্টলার '%1' ডিস্কে পার্টিশন তৈরি করতে ব্যর্থ হয়েছে। @@ -946,27 +947,27 @@ The installer will quit and all changes will be lost. Create Partition Table - + পার্টিশন টেবিল তৈরি করুন Creating a new partition table will delete all existing data on the disk. - + একটি নতুন পার্টিশন টেবিল তৈরি করলে ডিস্কের সকল বিদ্যমান উপাত্ত মুছে যাবে। What kind of partition table do you want to create? - + আপনি কি ধরনের পার্টিশন টেবিল তৈরি করতে চান? Master Boot Record (MBR) - + মাস্টার বুট রেকর্ড (এমবিআর) GUID Partition Table (GPT) - + জিইউআইডি পার্টিশন টেবিল (জিপিটি) @@ -974,22 +975,22 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + %2-এ নতুন %1 পার্টিশন টেবিল তৈরি করুন। Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + <strong>%2</strong> (%3) এ নতুন <strong>%1</strong> পার্টিশন টেবিল তৈরি করুন। Creating new %1 partition table on %2. - + %2 এ নতুন %1 পার্টিশন টেবিল তৈরি করা হচ্ছে। The installer failed to create a partition table on %1. - + ইনস্টলার %1 এ একটি পার্টিশন টেবিল তৈরি করতে ব্যর্থ হয়েছে। @@ -997,27 +998,27 @@ The installer will quit and all changes will be lost. Create user %1 - + %1 ব্যবহারকারী তৈরি করুন Create user <strong>%1</strong>. - + ব্যবহারকারী %1 তৈরি করুন। Creating user %1. - + ব্যবহারকারী %1 তৈরি করা হচ্ছে। Cannot create sudoers file for writing. - + লেখার জন্য sudoers ফাইল তৈরি করা যাবে না। Cannot chmod sudoers file. - + Sudoers ফাইল chmod করা যাবে না। @@ -1075,22 +1076,22 @@ The installer will quit and all changes will be lost. Delete partition %1. - + পার্টিশন %1 মুছে ফেলুন। Delete partition <strong>%1</strong>. - + পার্টিশন <strong>%1</strong> মুছে ফেলুন। Deleting partition %1. - + পার্টিশন %1 মুছে ফেলা হচ্ছে। The installer failed to delete partition %1. - + ইনস্টলার %1 পার্টিশন মুছে ফেলতে ব্যর্থ হয়েছে। @@ -1098,22 +1099,22 @@ The installer will quit and all changes will be lost. This device has a <strong>%1</strong> partition table. - + এই যন্ত্রটির একটি <strong>%1</strong> পার্টিশন টেবিল আছে। This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + এটি একটি <strong>লুপ</strong> ডিভাইস।<br><br>এটি একটি ছদ্ম-ডিভাইস যার কোন পার্টিশন টেবিল নেই যা একটি ফাইলকে ব্লক ডিভাইস হিসেবে অ্যাক্সেসযোগ্য করে তোলে। এই ধরনের উপস্থাপনা সাধারণত শুধুমাত্র একটি একক ফাইলসিস্টেম ধারণ করে। This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + এই ইনস্টলার নির্বাচিত সঞ্চয় ডিভাইসে <strong>একটি পার্টিশন টেবিল শনাক্ত করতে পারে না</strong>।<br> <br>ডিভাইসটির কোন পার্টিশন টেবিল নেই, অথবা পার্টিশন টেবিলটি দূষিত অথবা একটি অজানা ধরনের।<br> এই ইনস্টলার আপনার জন্য একটি নতুন পার্টিশন টেবিল তৈরি করতে পারে, হয় স্বয়ংক্রিয়ভাবে, অথবা ম্যানুয়াল পার্টিশনিং পৃষ্ঠার মাধ্যমে। <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>এটি আধুনিক সিস্টেমের জন্য প্রস্তাবিত পার্টিশন টেবিলের ধরন যা একটি <strong>EFI</strong> বুট পরিবেশ থেকে শুরু হয়। @@ -1123,7 +1124,7 @@ The installer will quit and all changes will be lost. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + নির্বাচিত স্টোরেজ ডিভাইসে <strong>পার্টিশন টেবিলে</strong>র ধরন। <br><br>পার্টিশন টেবিলের ধরন পরিবর্তনের একমাত্র উপায় হল স্ক্র্যাচ থেকে পার্টিশন টেবিল মুছে ফেলা এবং পুনরায় তৈরি করা, যা স্টোরেজ ডিভাইসের সমস্ত ডাটা ধ্বংস করে।<br> এই ইনস্টলার বর্তমান পার্টিশন টেবিল রাখবে যদি না আপনি স্পষ্টভাবে অন্যভাবে নির্বাচন করেন. যদি অনিশ্চিত থাকেন, আধুনিক সিস্টেমে জিপিটি অগ্রাধিকার দেওয়া হয়। @@ -1132,7 +1133,7 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) device[name] - size[number] (device-node[name]) - + %1 - %2 (%3) @@ -1172,27 +1173,27 @@ The installer will quit and all changes will be lost. Edit Existing Partition - + বিদ্যমান পার্টিশন সম্পাদনা করুন Content: - + বিষয়বস্তু: &Keep - + এবংরাখুন Format - + বিন্যাস Warning: Formatting the partition will erase all existing data. - + সতর্কীকরণ: পার্টিশন ফরম্যাট করলে সমস্ত বিদ্যমান উপাত্ত মুছে ফেলবে। @@ -1202,7 +1203,7 @@ The installer will quit and all changes will be lost. Si&ze: - + আএবংকার @@ -1212,7 +1213,7 @@ The installer will quit and all changes will be lost. Fi&le System: - + ফাএবংইল সিস্টেম: @@ -1230,7 +1231,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -1258,37 +1259,37 @@ The installer will quit and all changes will be lost. Set partition information - + পার্টিশন তথ্য নির্ধারণ করুন Install %1 on <strong>new</strong> %2 system partition. - + <strong>নতুন</strong> %2 সিস্টেম পার্টিশনে %1 সংস্থাপন করুন। Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + মাউন্ট বিন্দু <strong>%1</strong> দিয়ে <strong>নতুন</strong> %2 পার্টিশন বিন্যাস করুন। Install %2 on %3 system partition <strong>%1</strong>. - + %3 সিস্টেম পার্টিশন <strong>%1</strong> এ %2 ইনস্টল করুন। Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + %3 পার্টিশন <strong>%1</strong> মাউন্ট বিন্দু <strong>%2</strong> দিয়ে বিন্যাস করুন। Install boot loader on <strong>%1</strong>. - + <strong>%1</strong> এ বুট লোডার ইনস্টল করুন। Setting up mount points. - + মাউন্ট পয়েন্ট সেট আপ করা হচ্ছে। @@ -1296,12 +1297,12 @@ The installer will quit and all changes will be lost. Form - + ফর্ম &Restart now - + এবংএখন আবার চালু করুন @@ -1316,7 +1317,7 @@ The installer will quit and all changes will be lost. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>সব শেষ।</h1><br/>%1 আপনার কম্পিউটারে সংস্থাপন করা হয়েছে।<br/>আপনি এখন আপনার নতুন সিস্টেমে পুনর্সূচনা করতে পারেন, অথবা %2 লাইভ পরিবেশ ব্যবহার চালিয়ে যেতে পারেন। @@ -1339,7 +1340,7 @@ The installer will quit and all changes will be lost. Finish - + শেষ করুন @@ -1377,12 +1378,12 @@ The installer will quit and all changes will be lost. Formatting partition %1 with file system %2. - + ফাইল সিস্টেম %2 দিয়ে পার্টিশন %1 বিন্যাস করা হচ্ছে। The installer failed to format partition %1 on disk '%2'. - + ইনস্টলার '%2' ডিস্কে %1 পার্টিশন বিন্যাস করতে ব্যর্থ হয়েছে। @@ -1523,7 +1524,7 @@ The installer will quit and all changes will be lost. Executing script: &nbsp;<code>%1</code> - + স্ক্রিপ্ট কার্যকর করা হচ্ছে: &nbsp;<code>%1</code> @@ -1531,7 +1532,7 @@ The installer will quit and all changes will be lost. Script - + স্ক্রিপ্ট @@ -1539,12 +1540,12 @@ The installer will quit and all changes will be lost. Set keyboard model to %1.<br/> - + %1 এ কীবোর্ড নকশা নির্ধারণ করুন। Set keyboard layout to %1/%2. - + %1/%2 এ কীবোর্ড বিন্যাস নির্ধারণ করুন। @@ -1552,7 +1553,7 @@ The installer will quit and all changes will be lost. Keyboard - + কীবোর্ড @@ -1560,7 +1561,7 @@ The installer will quit and all changes will be lost. Keyboard - + কীবোর্ড @@ -1568,17 +1569,17 @@ The installer will quit and all changes will be lost. System locale setting - + সিস্টেম লোকেল সেটিং The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + সিস্টেম স্থানীয় বিন্যাসন কিছু কমান্ড লাইন ব্যবহারকারী ইন্টারফেস উপাদানের জন্য ভাষা এবং অক্ষর সেট কে প্রভাবিত করে. <br/>বর্তমান বিন্যাসন <strong>%1</strong>। &Cancel - + এবংবাতিল করুন @@ -1591,7 +1592,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -1601,7 +1602,7 @@ The installer will quit and all changes will be lost. I accept the terms and conditions above. - + আমি উপরের শর্তাবলী মেনে নিচ্ছি। @@ -1634,7 +1635,7 @@ The installer will quit and all changes will be lost. License - + লাইসেন্স @@ -1702,18 +1703,18 @@ The installer will quit and all changes will be lost. Region: - + অঞ্চল: Zone: - + বলয়: &Change... - + এবংপরিবর্তন করুন... @@ -1721,7 +1722,7 @@ The installer will quit and all changes will be lost. Location - + অবস্থান @@ -1729,7 +1730,7 @@ The installer will quit and all changes will be lost. Location - + অবস্থান @@ -2200,7 +2201,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -2241,7 +2242,7 @@ The installer will quit and all changes will be lost. Name - + নাম @@ -2254,17 +2255,17 @@ The installer will quit and all changes will be lost. Form - + ফর্ম Keyboard Model: - + কীবোর্ড নকশা: Type here to test your keyboard - + আপনার কীবোর্ড পরীক্ষা করতে এখানে টাইপ করুন @@ -2272,12 +2273,12 @@ The installer will quit and all changes will be lost. Form - + ফর্ম What is your name? - + আপনার নাম কি? @@ -2287,7 +2288,7 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - + লগ-ইন করতে আপনি কোন নাম ব্যবহার করতে চান? @@ -2297,12 +2298,12 @@ The installer will quit and all changes will be lost. What is the name of this computer? - + এই কম্পিউটারের নাম কি? <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>আপনি যদি কম্পিউটারটিকে অন্যদের কাছে একটি নেটওয়ার্কে দৃশ্যমান করেন তাহলে এই নামটি ব্যবহার করা হবে।</small> @@ -2312,13 +2313,13 @@ The installer will quit and all changes will be lost. Choose a password to keep your account safe. - + আপনার অ্যাকাউন্ট সুরক্ষিত রাখতে একটি পাসওয়ার্ড নির্বাচন করুন। <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>একই পাসওয়ার্ড দুইবার প্রবেশ করান, যাতে এটি টাইপিং ত্রুটির জন্য পরীক্ষা করা যেতে পারে। একটি ভাল পাসওয়ার্ড অক্ষর, সংখ্যা এবং বিরামচিহ্নের একটি মিশ্রণ ধারণ করবে, অন্তত আট অক্ষর দীর্ঘ হওয়া উচিত, এবং নিয়মিত বিরতিতে পরিবর্তন করা উচিত।</small> @@ -2345,23 +2346,23 @@ The installer will quit and all changes will be lost. Log in automatically without asking for the password. - + পাসওয়ার্ড না চাইলে স্বয়ংক্রিয়ভাবে লগ ইন করুন। Use the same password for the administrator account. - + প্রশাসক হিসাবের জন্য একই গুপ্ত-সংকেত ব্যবহার করুন। Choose a password for the administrator account. - + প্রশাসক হিসাবের জন্য একটি পাসওয়ার্ড নির্বাচন করুন। <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>একই পাসওয়ার্ড দুইবার প্রবেশ করান, যাতে এটি টাইপিং ত্রুটির জন্য পরীক্ষা করা যেতে পারে।</small> @@ -2369,43 +2370,43 @@ The installer will quit and all changes will be lost. Root - + রুট Home - + বাড়ি Boot - + বুট EFI system - + ইএফআই সিস্টেম Swap - + অদলবদল New partition for %1 - + %1 এর জন্য নতুন পার্টিশন New partition - + নতুন পার্টিশন %1 %2 size[number] filesystem[name] - + %1 %2 @@ -2414,33 +2415,33 @@ The installer will quit and all changes will be lost. Free Space - + খালি জায়গা New partition - + নতুন পার্টিশন Name - + নাম File System - + নথি ব্যবস্থা Mount Point - + মাউন্ট পয়েন্ট Size - + আকার @@ -2448,22 +2449,22 @@ The installer will quit and all changes will be lost. Form - + ফর্ম Storage de&vice: - + স্টোরেজ ডিএবংভাইস &Revert All Changes - + এবংসকল পরিবর্তন ফিরিয়ে দিন New Partition &Table - + নতুন পার্টিশন এবংটেবিল @@ -2473,12 +2474,12 @@ The installer will quit and all changes will be lost. &Edit - + এবংসম্পাদনা করুন &Delete - + এবংমুছে ফেলুন @@ -2508,7 +2509,7 @@ The installer will quit and all changes will be lost. Are you sure you want to create a new partition table on %1? - + আপনি কি নিশ্চিত যে আপনি %1 এ একটি নতুন পার্টিশন টেবিল তৈরি করতে চান? @@ -2526,67 +2527,67 @@ The installer will quit and all changes will be lost. Gathering system information... - + সিস্টেম তথ্য সংগ্রহ করা হচ্ছে... Partitions - + পার্টিশনগুলো Install %1 <strong>alongside</strong> another operating system. - + অন্য অপারেটিং সিস্টেমের <strong>পাশাপাশি</strong> %1 ইনস্টল করুন। <strong>Erase</strong> disk and install %1. - + ডিস্ক <strong>মুছে ফেলুন</strong> এবং %1 সংস্থাপন করুন। <strong>Replace</strong> a partition with %1. - + %1 দিয়ে একটি পার্টিশন <strong>প্রতিস্থাপন করুন</strong>। <strong>Manual</strong> partitioning. - + <strong>ম্যানুয়াল</strong> পার্টিশনিং। Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>%2</strong> (%3) ডিস্কে অন্য অপারেটিং সিস্টেমের <strong>পাশাপাশি</strong> %1 ইনস্টল করুন। <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + ডিস্ক <strong>%2</strong> (%3) <strong>মুছে ফেলুন</strong> এবং %1 সংস্থাপন করুন। <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + %1 দিয়ে <strong>%2</strong> (%3) ডিস্কে একটি পার্টিশন <strong>প্রতিস্থাপন করুন</strong>। <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + <strong>%1</strong> (%2) ডিস্কে <strong>ম্যানুয়াল</strong> পার্টিশন করা হচ্ছে। Disk <strong>%1</strong> (%2) - + ডিস্ক <strong>%1</strong> (%2) Current: - + বর্তমান: After: - + পরে: @@ -2658,7 +2659,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -2768,22 +2769,22 @@ Output: %1 (%2) - + %1 (%2) unknown - + অজানা extended - + বর্ধিত unformatted - + অবিন্যাসিত @@ -2793,13 +2794,13 @@ Output: Default Keyboard Model - + পূর্বনির্ধারিত কীবোর্ডের নকশা Default - + পূর্বনির্ধারিত @@ -2837,7 +2838,7 @@ Output: Unpartitioned space or unknown partition table - + অবিভাজনকৃত স্থান বা অজানা পার্টিশন টেবিল @@ -2881,74 +2882,74 @@ Output: Form - + ফর্ম Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + %1 কোথায় সংস্থাপন করতে হবে তা নির্বাচন করুন।<br/><font color="red"> সতর্কীকরণ: </font>এটি নির্বাচিত পার্টিশনের সকল ফাইল মুছে ফেলবে। The selected item does not appear to be a valid partition. - + নির্বাচিত বিষয়োপকরণটি একটি বৈধ পার্টিশন বলে মনে হচ্ছে না। %1 cannot be installed on empty space. Please select an existing partition. - + %1 ফাঁকা স্থানে সংস্থাপন করা যাবে না। অনুগ্রহ করে একটি বিদ্যমান পার্টিশন নির্বাচন করুন। %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 একটি বর্ধিত পার্টিশনে সংস্থাপন করা যাবে না। অনুগ্রহ করে একটি বিদ্যমান প্রাথমিক বা যৌক্তিক বিভাজন নির্বাচন করুন। %1 cannot be installed on this partition. - + %1 এই পার্টিশনে সংস্থাপন করা যাবে না। Data partition (%1) - + ডাটা পার্টিশন (%1) Unknown system partition (%1) - + অজানা সিস্টেম পার্টিশন (%1) %1 system partition (%2) - + %1 সিস্টেম পার্টিশন (%2) <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>%1 পার্টিশন %2 এর জন্য খুবই ছোট। অনুগ্রহ করে কমপক্ষে %3 GiB ধারণ ক্ষমতা সম্পন্ন একটি পার্টিশন নির্বাচন করুন। <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/> একটি EFI সিস্টেম পার্টিশন এই সিস্টেমের কোথাও খুঁজে পাওয়া যাবে না। অনুগ্রহ করে ফিরে যান এবং %1 সেট আপ করতে ম্যানুয়াল পার্টিশনিং ব্যবহার করুন। <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 %2-এ ইনস্টল করা হবে।<br/><font color="red"> সতর্কীকরণ: </font>%2 পার্টিশনের সকল উপাত্ত হারিয়ে যাবে। The EFI system partition at %1 will be used for starting %2. - + %1 এ EFI সিস্টেম পার্টিশন %2 শুরু করার জন্য ব্যবহার করা হবে। EFI system partition: - + EFI সিস্টেম পার্টিশন: @@ -3040,7 +3041,7 @@ Output: Resize partition %1. - + পার্টিশন %1 পুনঃআকার করুন। @@ -3055,7 +3056,7 @@ Output: The installer failed to resize partition %1 on disk '%2'. - + ইনস্টলার '%2' ডিস্কে %1 পার্টিশন পুনঃআকার করতে ব্যর্থ হয়েছে। @@ -3131,12 +3132,12 @@ Output: Scanning storage devices... - + স্টোরেজ ডিভাইস স্ক্যান করা হচ্ছে... Partitioning - + পার্টিশন করা হচ্ছে @@ -3144,29 +3145,29 @@ Output: Set hostname %1 - + হোস্টের নাম %1 নির্ধারণ করুন Set hostname <strong>%1</strong>. - + হোস্টনাম <strong>%1</strong> নির্ধারণ করুন। Setting hostname %1. - + হোস্টনাম %1 নির্ধারণ করা হচ্ছে। Internal Error - + অভ্যন্তরীণ ত্রুটি Cannot write hostname to target system - + লক্ষ্য ব্যবস্থায় হোস্টের নাম লেখা যাচ্ছে না @@ -3174,24 +3175,24 @@ Output: Set keyboard model to %1, layout to %2-%3 - + কীবোর্ড মডেলটিকে %1, লেআউটটিকে %2-%3 এ সেট করুন Failed to write keyboard configuration for the virtual console. - + ভার্চুয়াল কনসোলের জন্য কীবোর্ড কনফিগারেশন লিখতে ব্যর্থ হয়েছে। Failed to write to %1 - + %1 এ লিখতে ব্যর্থ Failed to write keyboard configuration for X11. - + X11 এর জন্য কীবোর্ড কনফিগারেশন লিখতে ব্যর্থ হয়েছে। @@ -3287,22 +3288,22 @@ Output: Set password for user %1 - + ব্যবহারকারীর জন্য গুপ্ত-সংকেত নির্ধারণ করুন % 1 Setting password for user %1. - + ব্যবহারকারীর %1-এর জন্য গুপ্ত-সংকেত নির্ধারণ করা হচ্ছে। Bad destination system path. - + খারাপ গন্তব্য সিস্টেম পথ। rootMountPoint is %1 - + রুটমাউন্টপয়েন্টটি % 1 @@ -3317,12 +3318,12 @@ Output: Cannot set password for user %1. - + % 1 ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করা যাচ্ছে না। usermod terminated with error code %1. - + %1 ত্রুটি কোড দিয়ে ব্যবহারকারীমোড সমাপ্ত করা হয়েছে। @@ -3330,37 +3331,37 @@ Output: Set timezone to %1/%2 - + %1/%2 এ সময়অঞ্চল নির্ধারণ করুন Cannot access selected timezone path. - + নির্বাচিত সময়অঞ্চল পথে প্রবেশ করতে পারে না। Bad path: %1 - + খারাপ পথ: %1 Cannot set timezone. - + সময়অঞ্চল নির্ধারণ করা যাচ্ছে না। Link creation failed, target: %1; link name: %2 - + লিংক তৈরি ব্যর্থ হয়েছে, লক্ষ্য: %1; লিংকের নাম: %2 Cannot set timezone, - + সময়অঞ্চল নির্ধারণ করা যাচ্ছে না, Cannot open /etc/timezone for writing - + লেখার জন্য /ইত্যাদি/সময়অঞ্চল খোলা যাচ্ছে না @@ -3390,7 +3391,7 @@ Output: This is an overview of what will happen once you start the install procedure. - + আপনি ইনস্টল প্রক্রিয়া শুরু করার পর কি হবে তার একটি পর্যালোচনা। @@ -3398,7 +3399,7 @@ Output: Summary - + সারাংশ @@ -3487,7 +3488,7 @@ Output: Form - + ফর্ম @@ -3548,7 +3549,7 @@ Output: Your passwords do not match! - + আপনার পাসওয়ার্ড মেলে না! @@ -3556,7 +3557,7 @@ Output: Users - + ব্যবহারকারীরা @@ -3630,7 +3631,7 @@ Output: Form - + ফর্ম @@ -3641,7 +3642,7 @@ Output: &About - + এবংসম্পর্কে @@ -3661,7 +3662,7 @@ Output: &Support - + এবংসহায়তা @@ -3671,7 +3672,7 @@ Output: &Known issues - + এবংপরিচিত বিষয়গুলো @@ -3681,7 +3682,7 @@ Output: &Release notes - + এবংনোট প্রকাশ করুন @@ -3701,12 +3702,12 @@ Output: <h1>Welcome to the %1 installer.</h1> - + <h1>%1 ইনস্টলারে স্বাগতম।</h1> %1 support - + %1 সহায়তা @@ -3716,7 +3717,7 @@ Output: About %1 installer - + %1 ইনস্টলার সম্পর্কে @@ -3729,7 +3730,7 @@ Output: Welcome - + স্বাগতম @@ -3737,7 +3738,7 @@ Output: Welcome - + স্বাগতম diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 31f66bd32..7e6340a46 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -717,7 +717,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.
Set timezone to %1/%2. - + Indstil tidszone til %1/%2. @@ -802,7 +802,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. '%1' is not allowed as username. - + '%1' er ikke tilladt som brugernavn. @@ -827,7 +827,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. '%1' is not allowed as hostname. - + '%1' er ikke tilladt som værtsnavn. @@ -3801,7 +3801,8 @@ setting <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>Lokaliteter</h1> </br> + Systemets lokalitetsindstillinger påvirker tal- og datoformater. Den nuværende indstilling er <strong>%1</strong>. diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index c651eaea9..b1d7b3ce8 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -530,7 +530,7 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>मैनुअल विभाजन</strong><br/> आप स्वयं भी विभाजन बना व उनका आकार बदल सकते है। + <strong>मैनुअल विभाजन</strong><br/> स्वयं विभाजन बनाएँ या उनका आकार बदलें। @@ -717,7 +717,7 @@ The installer will quit and all changes will be lost. Set timezone to %1/%2. - + समय क्षेत्र %1%2 सेट करें। @@ -797,42 +797,42 @@ The installer will quit and all changes will be lost. Your username is too long. - आपका उपयोक्ता नाम बहुत लंबा है। + उपयोक्ता नाम बहुत लंबा है। '%1' is not allowed as username. - + उपयोक्ता नाम के रूप में '%1' का उपयोग अस्वीकार्य है। Your username must start with a lowercase letter or underscore. - आपके उपयोक्ता नाम का आरंभ lowercase अक्षर या अंडरस्कोर(_) से ही होना चाहिए। + उपयोक्ता नाम का आरंभ केवल लोअरकेस अक्षर या अंडरस्कोर(-) से ही करें। Only lowercase letters, numbers, underscore and hyphen are allowed. - केवल lowercase अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। + केवल लोअरकेस अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) ही स्वीकार्य हैं। Your hostname is too short. - आपका होस्ट नाम बहुत छोटा है। + होस्ट नाम बहुत छोटा है। Your hostname is too long. - आपका होस्ट नाम बहुत लंबा है। + होस्ट नाम बहुत लंबा है। '%1' is not allowed as hostname. - + होस्ट नाम के रूप में '%1' का उपयोग अस्वीकार्य है। Only letters, numbers, underscore and hyphen are allowed. - केवल अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) का उपयोग ही मान्य है। + केवल अक्षर, अंक, अंडरस्कोर(_) व हाइफ़न(-) ही स्वीकार्य हैं।
@@ -3799,7 +3799,8 @@ Output: <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>स्थानिकी</h1> </br> + सिस्टम स्थानिकी सेटिंग संख्या व दिनांक के प्रारूप को प्रभावित करती है। वर्तमान सेटिंग <strong>%1</strong> है। diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 4c6a523e6..c1bc83bc7 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -137,7 +137,7 @@ Programmed job failure was explicitly requested. - + Programmerat jobbfel begärdes uttryckligen. @@ -222,7 +222,7 @@ Loading failed. - + Laddning misslyckades. @@ -716,7 +716,7 @@ Alla ändringar kommer att gå förlorade. Set timezone to %1/%2. - + Sätt tidszon till %1/%2. @@ -776,22 +776,22 @@ Alla ändringar kommer att gå förlorade. <h1>Welcome to the Calamares setup program for %1</h1> - + <h1>Välkommen till Calamares installationsprogram för %1</h1> <h1>Welcome to %1 setup</h1> - + <h1>Välkommen till %1 installation</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Välkommen till Calamares installationsprogram för %1</h1> <h1>Welcome to the %1 installer</h1> - + <h1>Välkommen till %1-installeraren</h1> @@ -801,7 +801,7 @@ Alla ändringar kommer att gå förlorade. '%1' is not allowed as username. - + '%1' är inte tillåtet som användarnamn. @@ -826,7 +826,7 @@ Alla ändringar kommer att gå förlorade. '%1' is not allowed as hostname. - + '%1' är inte tillåtet som värdnamn. @@ -839,7 +839,7 @@ Alla ändringar kommer att gå förlorade. Contextual Processes Job - + Kontextuellt processjobb @@ -1476,7 +1476,7 @@ Alla ändringar kommer att gå förlorade. OEM Batch Identifier - + OEM-batchidentifierare @@ -1795,7 +1795,10 @@ Alla ändringar kommer att gå förlorade. 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. - + Snälla välj din föredragna plats på kartan så installationsprogrammet kan föreslå nationella inställningar + och tidszons inställningar åt dig. Du kan finjustera de föreslagna inställningarna nedan. +Sök på kartan genom att dra + för att flytta och använd +/- knapparna för att zooma in/ut eller så använder du musens scrollhjul för att zooma. @@ -1910,12 +1913,12 @@ Alla ändringar kommer att gå förlorade. Ba&tch: - + Gr&upp: <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> - + <html><head/><body><p>Ange en batch-identifierare här. Den kommer lagras på målsystemet.</p></body></html> @@ -1933,7 +1936,7 @@ Alla ändringar kommer att gå förlorade. Set the OEM Batch Identifier to <code>%1</code>. - + Sätt OEM-batchidentifierare till <code>%1</code>. @@ -1946,7 +1949,7 @@ Alla ändringar kommer att gå förlorade. To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + För att kunna välja en tidszon, se till att du är ansluten till internet. Starta om installationsprogrammet efter anslutningen. Du kan finjustera språk och nationella inställningar nedan. @@ -1969,7 +1972,7 @@ Alla ändringar kommer att gå förlorade. Memory allocation error when setting '%1' - + Minnesallokerings fel då '%1' skulle ställas in @@ -2144,7 +2147,7 @@ Alla ändringar kommer att gå förlorade. Bad integer value of setting - %1 - + Dåligt heltals värde på inställning - %1 @@ -2851,7 +2854,8 @@ Utdata: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Denna dator uppfyller inte alla rekommenderade krav för att installera %1. +<br/>Installationen kan fortsätta, men alla alternativ och funktioner kanske inte kan användas.</p> @@ -2962,13 +2966,15 @@ Utdata: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Denna dator uppfyller inte minimikraven för att installera %1.<br/> +Installationen kan inte fortsätta.</p> <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Denna dator uppfyller inte alla rekommenderade krav för att installera %1. +<br/>Installationen kan fortsätta, men alla alternativ och funktioner kanske inte kan användas.</p> @@ -3411,17 +3417,17 @@ Utdata: Installation feedback - + Installationsåterkoppling Sending installation feedback. - + Skickar installationsåterkoppling Internal error in install-tracking. - + Internt fel i install-tracking. @@ -3434,28 +3440,28 @@ Utdata: KDE user feedback - + KDE användarfeedback Configuring KDE user feedback. - + Konfigurerar KDE användarfeedback. Error in KDE user feedback configuration. - + Fel vid konfigurering av KDE användarfeedback. Could not configure KDE user feedback correctly, script error %1. - + Kunde inte konfigurera KDE användarfeedback korrekt, script fel %1. Could not configure KDE user feedback correctly, Calamares error %1. - + Kunde inte konfigurera KDE användarfeedback korrekt, Calamares fel %1. @@ -3474,7 +3480,7 @@ Utdata: Error in machine feedback configuration. - + Fel vid konfigurering av maskin feedback @@ -3502,32 +3508,32 @@ Utdata: <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Klicka här för att inte <span style=" font-weight:600;"> skicka någon information alls om din installation.</p></body></html> <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;"> Klicka här för information om användarfeedback </span></a></p></body></html> Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. - + Spårning hjälper %1 att se hur ofta den är installerad, vilken hårdvara den är installerad på och vilka program som används. För att se vad som skickas, Klicka på hjälp ikonen vad sidan av varje område för att se vad som skickas. By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. - + Genom att välja detta, kommer du skicka information om din installation och hårdvara. Denna information kommer <b>enbart skickas en gång</b> efter att installationen slutförts. By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + Genom att välja detta, kommer du periodiskt skicka information om din <b>maskin</b>installation, hårdvara och program, till %1 By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. - + Genom att välja detta, kommer du regelbundet skicka information om din <b>användar</b>installation, hårdvara, program och dina program användningsmönster till %1. @@ -3786,13 +3792,15 @@ Utdata: <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>Språk</h1> </br> +Systemspråket påverkar vilket språk och teckenuppsättning somliga kommandoradsprogram använder. Den nuvarande inställningen är <strong>%1</strong>. <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>Nationella inställningar</h1> </br> +Systems nationella inställningar påverkar nummer och datumformat. Den nuvarande inställningen är <strong>%3</strong>. From b8530c2c08de61d303bd8a06721a8f6bae5bc89b Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 5 Aug 2020 13:53:54 +0200 Subject: [PATCH 163/399] i18n: [python] Automatic merge of Transifex translations --- lang/python/ko/LC_MESSAGES/python.mo | Bin 8279 -> 8279 bytes lang/python/ko/LC_MESSAGES/python.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo index 22a53a6884aa932a0e905258669100654da65cbb..b15abd450a8deb0799083f3f81881fec92d42570 100644 GIT binary patch delta 24 fcmccaaNS`;j3BpHX, 2018 -# MarongHappy , 2020 +# JungHee Lee , 2020 # #, fuzzy msgid "" @@ -14,7 +14,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-07-29 11:03+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: MarongHappy , 2020\n" +"Last-Translator: JungHee Lee , 2020\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 272cf099becd232cc72b105497eea2b92f73e7a1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 14:07:39 +0200 Subject: [PATCH 164/399] [hostinfo] Try to recognize ARM as well - /proc/cpuinfo is a terrible information source; it contains very different information on x86 from arm (testen on rpi4 and rock64). --- src/modules/hostinfo/HostInfoJob.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/modules/hostinfo/HostInfoJob.cpp b/src/modules/hostinfo/HostInfoJob.cpp index c2959fb6b..1d4676f65 100644 --- a/src/modules/hostinfo/HostInfoJob.cpp +++ b/src/modules/hostinfo/HostInfoJob.cpp @@ -91,6 +91,17 @@ hostCPUmatch( const QString& s ) return QString(); } +static QString +hostCPUmatchARM( const QString& s ) +{ + // Both Rock64 and Raspberry pi mention 0x41 + if ( s.contains( ": 0x41" ) ) + { + return QStringLiteral( "ARM" ); + } + return QString(); +} + #if defined( Q_OS_FREEBSD ) QString hostCPU_FreeBSD() @@ -127,6 +138,10 @@ hostCPU_Linux() { return hostCPUmatch( line ); } + if ( line.startsWith( "CPU implementer" ) ) + { + return hostCPUmatchARM( line ); + } } } return QString(); // Not open, or not found From 082770032f6262014920e7c0392dd621df330c95 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 14:24:28 +0200 Subject: [PATCH 165/399] [hostinfo] Massage test to handle ARM - there **is** another source of information about the CPU, so in the test use that to cross-check what hostCPU() says. NB: it's probably a good idea to fall back on the same file in hostCPU() for better accuracy. --- src/modules/hostinfo/Tests.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp index 8182da365..7ab797ed4 100644 --- a/src/modules/hostinfo/Tests.cpp +++ b/src/modules/hostinfo/Tests.cpp @@ -63,8 +63,29 @@ HostInfoTests::testHostOS() // This is a lousy test, too: the implementation reads /proc/cpuinfo // and that's the only way we could use, too, to find what the "right" // answer is. - QStringList cpunames{ QStringLiteral( "Intel" ), QStringLiteral( "AMD" ) }; - QVERIFY( cpunames.contains( hostCPU() ) ); + QStringList x86cpunames{ QStringLiteral( "Intel" ), QStringLiteral( "AMD" ) }; + QStringList armcpunames{ QStringLiteral( "ARM" ) }; + const QString cpu = hostCPU(); + QVERIFY( x86cpunames.contains( cpu ) || armcpunames.contains( cpu ) ); + + // Try to detect family in a different way + QFile modalias( "/sys/devices/system/cpu/modalias" ); + if ( modalias.open( QIODevice::ReadOnly ) ) + { + QString cpumodalias = modalias.readLine(); + if ( cpumodalias.contains( "type:x86" ) ) + { + QVERIFY( x86cpunames.contains( cpu ) ); + } + else if ( cpumodalias.contains( "type:aarch64" ) ) + { + QVERIFY( armcpunames.contains( cpu ) ); + } + else + { + QCOMPARE( cpu, QString( "Unknown CPU modalias '%1'" ).arg(cpumodalias) ); + } + } } From fce05acf1efd696dfaf0207a539a39a6cc6e3843 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 15:11:52 +0200 Subject: [PATCH 166/399] [libcalamares] Rip out all the TZ models - The models are overly complicated: **overall** there is just one list of timezones, and we need various views on that list. Start over with an empty model of regions. --- src/libcalamares/locale/Tests.cpp | 38 ----- src/libcalamares/locale/TimeZone.cpp | 242 ++++----------------------- src/libcalamares/locale/TimeZone.h | 166 ++---------------- 3 files changed, 38 insertions(+), 408 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 10b4ad056..16b7d11a7 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -249,32 +249,6 @@ LocaleTests::testSimpleZones() { using namespace CalamaresUtils::Locale; - { - TZRegion r; - QVERIFY( r.tr().isEmpty() ); - } - { - TZZone n; - QVERIFY( n.tr().isEmpty() ); - } - { - TZZone r0( "xAmsterdam" ); - QCOMPARE( r0.tr(), QStringLiteral( "xAmsterdam" ) ); - TZZone r1( r0 ); - QCOMPARE( r0.tr(), QStringLiteral( "xAmsterdam" ) ); - QCOMPARE( r1.tr(), QStringLiteral( "xAmsterdam" ) ); - TZZone r2( std::move( r0 ) ); - QCOMPARE( r2.tr(), QStringLiteral( "xAmsterdam" ) ); - QCOMPARE( r0.tr(), QString() ); - } - { - TZZone r0( nullptr ); - QVERIFY( r0.tr().isEmpty() ); - TZZone r1( r0 ); - QVERIFY( r1.tr().isEmpty() ); - TZZone r2( std::move( r0 ) ); - QVERIFY( r2.tr().isEmpty() ); - } } void @@ -282,18 +256,6 @@ LocaleTests::testComplexZones() { using namespace CalamaresUtils::Locale; - { - TZZone r0( "America/New_York" ); - TZZone r1( "America/New York" ); - - QCOMPARE( r0.tr(), r1.tr() ); - QCOMPARE( r0.tr(), QStringLiteral( "America/New York" ) ); - } - { - TZZone r( "zxc,;*_vm" ); - QVERIFY( !r.tr().isEmpty() ); - QCOMPARE( r.tr(), QStringLiteral( "zxc,;* vm" ) ); // Only _ is special - } } QTEST_GUILESS_MAIN( LocaleTests ) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 772a242fb..37f94b6f2 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -23,16 +23,14 @@ #include "TimeZone.h" #include "utils/Logger.h" -#include "utils/String.h" - -#include -#include -#include - -#include static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; +/** @brief Turns a string longitude or latitude notation into a double + * + * This handles strings like "+4230+00131" from zone.tab, + * which is degrees-and-minutes notation, and + means north or east. + */ static double getRightGeoLocation( QString str ) { @@ -61,28 +59,6 @@ getRightGeoLocation( QString str ) return sign * num; } - -namespace CalamaresUtils -{ -namespace Locale -{ - - -CStringPair::CStringPair( CStringPair&& t ) - : m_human( nullptr ) - , m_key() -{ - // My pointers are initialized to nullptr - std::swap( m_human, t.m_human ); - std::swap( m_key, t.m_key ); -} - -CStringPair::CStringPair( const CStringPair& t ) - : m_human( t.m_human ? strdup( t.m_human ) : nullptr ) - , m_key( t.m_key ) -{ -} - /** @brief Massage an identifier into a human-readable form * * Makes a copy of @p s, caller must free() it. @@ -110,204 +86,42 @@ munge( const char* s ) return t; } -CStringPair::CStringPair( const char* s1 ) - : m_human( s1 ? munge( s1 ) : nullptr ) - , m_key( s1 ? QString( s1 ) : QString() ) + +namespace CalamaresUtils +{ +namespace Locale +{ + +struct Private { +}; + +static Private* privateInstance() +{ + static Private* s_p = new Private; + return s_p; +} + +RegionsModel::RegionsModel() +: QAbstractListModel() +, m_private( privateInstance() ) { } - -CStringPair::~CStringPair() -{ - free( m_human ); -} - - -QString -TZRegion::tr() const -{ - // NOTE: context name must match what's used in zone-extractor.py - return QObject::tr( m_human, "tz_regions" ); -} - -TZRegion::~TZRegion() -{ - qDeleteAll( m_zones ); -} - -const CStringPairList& -TZRegion::fromZoneTab() -{ - static CStringPairList zoneTab = TZRegion::fromFile( TZ_DATA_FILE ); - return zoneTab; -} - -CStringPairList -TZRegion::fromFile( const char* fileName ) -{ - CStringPairList model; - - QFile file( fileName ); - if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - return model; - } - - TZRegion* thisRegion = nullptr; - QTextStream in( &file ); - while ( !in.atEnd() ) - { - QString line = in.readLine().trimmed().split( '#', SplitKeepEmptyParts ).first().trimmed(); - if ( line.isEmpty() ) - { - continue; - } - - QStringList list = line.split( QRegExp( "[\t ]" ), SplitSkipEmptyParts ); - if ( list.size() < 3 ) - { - continue; - } - - QStringList timezoneParts = list.at( 2 ).split( '/', SplitSkipEmptyParts ); - if ( timezoneParts.size() < 2 ) - { - continue; - } - - QString region = timezoneParts.first().trimmed(); - if ( region.isEmpty() ) - { - continue; - } - - auto keyMatch = [®ion]( const CStringPair* r ) { return r->key() == region; }; - auto it = std::find_if( model.begin(), model.end(), keyMatch ); - if ( it != model.end() ) - { - thisRegion = dynamic_cast< TZRegion* >( *it ); - } - else - { - thisRegion = new TZRegion( region.toUtf8().data() ); - model.append( thisRegion ); - } - - QString countryCode = list.at( 0 ).trimmed(); - if ( countryCode.size() != 2 ) - { - continue; - } - - timezoneParts.removeFirst(); - thisRegion->m_zones.append( - new TZZone( region, timezoneParts.join( '/' ).toUtf8().constData(), countryCode, list.at( 1 ) ) ); - } - - auto sorter = []( const CStringPair* l, const CStringPair* r ) { return *l < *r; }; - std::sort( model.begin(), model.end(), sorter ); - for ( auto& it : model ) - { - TZRegion* r = dynamic_cast< TZRegion* >( it ); - if ( r ) - { - std::sort( r->m_zones.begin(), r->m_zones.end(), sorter ); - } - } - - return model; -} - -TZZone::TZZone( const QString& region, const char* zoneName, const QString& country, QString position ) - : CStringPair( zoneName ) - , m_region( region ) - , m_country( country ) -{ - int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); - if ( cooSplitPos > 0 ) - { - m_latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); - m_longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); - } -} - -QString -TZZone::tr() const -{ - // NOTE: context name must match what's used in zone-extractor.py - return QObject::tr( m_human, "tz_names" ); -} - - -CStringListModel::CStringListModel( CStringPairList l ) - : m_list( l ) +RegionsModel::~RegionsModel() { } -void -CStringListModel::setList( CalamaresUtils::Locale::CStringPairList l ) +int RegionsModel::rowCount(const QModelIndex& parent) const { - beginResetModel(); - m_list = l; - endResetModel(); + return 0; } -int -CStringListModel::rowCount( const QModelIndex& ) const +QVariant RegionsModel::data(const QModelIndex& index, int role) const { - return m_list.count(); + return QVariant(); } -QVariant -CStringListModel::data( const QModelIndex& index, int role ) const -{ - if ( ( role != Qt::DisplayRole ) && ( role != Qt::UserRole ) ) - { - return QVariant(); - } - if ( !index.isValid() ) - { - return QVariant(); - } - - const auto* item = m_list.at( index.row() ); - return item ? ( role == Qt::DisplayRole ? item->tr() : item->key() ) : QVariant(); -} - -void -CStringListModel::setCurrentIndex( int index ) -{ - if ( ( index < 0 ) || ( index >= m_list.count() ) ) - { - return; - } - - m_currentIndex = index; - emit currentIndexChanged(); -} - -int -CStringListModel::currentIndex() const -{ - return m_currentIndex; -} - -QHash< int, QByteArray > -CStringListModel::roleNames() const -{ - return { { Qt::DisplayRole, "label" }, { Qt::UserRole, "key" } }; -} - -const CStringPair* -CStringListModel::item( int index ) const -{ - if ( ( index < 0 ) || ( index >= m_list.count() ) ) - { - return nullptr; - } - return m_list[ index ]; -} } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 05820817a..a34e03248 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -24,182 +24,36 @@ #include "DllMacro.h" -#include "utils/Logger.h" - #include #include -#include - -#include +#include namespace CalamaresUtils { namespace Locale { +struct Private; -/** @brief A pair of strings, one human-readable, one a key +/** @brief The list of timezone regions * - * Given an identifier-like string (e.g. "New_York"), makes - * a human-readable version of that and keeps a copy of the - * identifier itself. - * - * This explicitly uses const char* instead of just being - * QPair because there is API that needs - * C-style strings. + * The regions are a short list of global areas (Africa, America, India ..) + * which contain zones. */ -class CStringPair : public QObject +class DLLEXPORT RegionsModel : public QAbstractListModel { Q_OBJECT -public: - /// @brief An empty pair - CStringPair() {} - /// @brief Given an identifier, create the pair - explicit CStringPair( const char* s1 ); - CStringPair( CStringPair&& t ); - CStringPair( const CStringPair& ); - virtual ~CStringPair(); - /// @brief Give the localized human-readable form - virtual QString tr() const = 0; - QString key() const { return m_key; } - - bool operator<( const CStringPair& other ) const { return m_key < other.m_key; } - -protected: - char* m_human = nullptr; - QString m_key; -}; - -class CStringPairList : public QList< CStringPair* > -{ -public: - template < typename T > - T* find( const QString& key ) const - { - for ( auto* p : *this ) - { - if ( p->key() == key ) - { - return dynamic_cast< T* >( p ); - } - } - return nullptr; - } -}; - -/** @brief Timezone regions (e.g. "America") - * - * A region has a key and a human-readable name, but also - * a collection of associated timezone zones (TZZone, below). - * This class is not usually constructed, but uses fromFile() - * to load a complete tree structure of timezones. - */ -class TZRegion : public CStringPair -{ - Q_OBJECT -public: - using CStringPair::CStringPair; - virtual ~TZRegion() override; - TZRegion( const TZRegion& ) = delete; - QString tr() const override; - - QString region() const { return key(); } - - /** @brief Create list from a zone.tab-like file - * - * Returns a list of all the regions; each region has a list - * of zones within that region. Dyamically, the items in the - * returned list are TZRegions; their zones dynamically are - * TZZones even though all those lists have type CStringPairList. - * - * The list owns the regions, and the regions own their own list of zones. - * When getting rid of the list, remember to qDeleteAll() on it. - */ - static CStringPairList fromFile( const char* fileName ); - /// @brief Calls fromFile with the standard zone.tab name - static const CStringPairList& fromZoneTab(); - - const CStringPairList& zones() const { return m_zones; } - -private: - CStringPairList m_zones; -}; - -/** @brief Specific timezone zones (e.g. "New_York", "New York") - * - * A timezone zone lives in a region, and has some associated - * data like the country (used to map likely languages) and latitude - * and longitude information. - */ -class TZZone : public CStringPair -{ - Q_OBJECT -public: - using CStringPair::CStringPair; - QString tr() const override; - - TZZone( const QString& region, const char* zoneName, const QString& country, QString position ); - - QString region() const { return m_region; } - QString zone() const { return key(); } - QString country() const { return m_country; } - double latitude() const { return m_latitude; } - double longitude() const { return m_longitude; } - -protected: - QString m_region; - QString m_country; - double m_latitude = 0.0, m_longitude = 0.0; -}; - -class CStringListModel : public QAbstractListModel -{ - Q_OBJECT - Q_PROPERTY( int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged ) + RegionsModel(); public: - /// @brief Create empty model - CStringListModel() {} - /// @brief Create model from list (non-owning) - CStringListModel( CStringPairList ); + virtual ~RegionsModel() override; + static RegionsModel* instance(); int rowCount( const QModelIndex& parent ) const override; - QVariant data( const QModelIndex& index, int role ) const override; - const CStringPair* item( int index ) const; - QHash< int, QByteArray > roleNames() const override; - - void setCurrentIndex( int index ); - int currentIndex() const; - - void setList( CStringPairList ); - - inline int indexOf( const QString& key ) - { - const auto it = std::find_if( - m_list.constBegin(), m_list.constEnd(), [&]( const CalamaresUtils::Locale::CStringPair* item ) -> bool { - return item->key() == key; - } ); - - if ( it != m_list.constEnd() ) - { - // distance() is usually a long long - return int( std::distance( m_list.constBegin(), it ) ); - } - else - { - return -1; - } - } - - private: - CStringPairList m_list; - int m_currentIndex = -1; - -signals: - void currentIndexChanged(); + Private *m_private; }; } // namespace Locale From ca40d2e2d9134797cdf3ad909578382f79c38635 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 15:17:09 +0200 Subject: [PATCH 167/399] [libcalamares] Introduce a failing test for the number of regions --- src/libcalamares/locale/Tests.cpp | 12 ++++++++++-- src/libcalamares/locale/TimeZone.cpp | 23 ++++++++++++----------- src/libcalamares/locale/TimeZone.h | 5 ++--- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 16b7d11a7..54e6cd848 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -47,6 +47,7 @@ private Q_SLOTS: void testInterlingue(); // TimeZone testing + void testRegions(); void testSimpleZones(); void testComplexZones(); }; @@ -244,18 +245,25 @@ LocaleTests::testTranslatableConfig2() QCOMPARE( ts3.count(), 1 ); // The empty string } +void +LocaleTests::testRegions() +{ + CalamaresUtils::Locale::RegionsModel regions; + + QVERIFY( regions.rowCount( QModelIndex() ) > 3 ); // Africa, America, Asia +} + + void LocaleTests::testSimpleZones() { using namespace CalamaresUtils::Locale; - } void LocaleTests::testComplexZones() { using namespace CalamaresUtils::Locale; - } QTEST_GUILESS_MAIN( LocaleTests ) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 37f94b6f2..0dba52a2a 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -92,36 +92,37 @@ namespace CalamaresUtils namespace Locale { -struct Private { +struct Private +{ }; -static Private* privateInstance() +static Private* +privateInstance() { static Private* s_p = new Private; return s_p; } -RegionsModel::RegionsModel() -: QAbstractListModel() -, m_private( privateInstance() ) +RegionsModel::RegionsModel( QObject* parent ) + : QAbstractListModel( parent ) + , m_private( privateInstance() ) { } -RegionsModel::~RegionsModel() -{ -} +RegionsModel::~RegionsModel() {} -int RegionsModel::rowCount(const QModelIndex& parent) const +int +RegionsModel::rowCount( const QModelIndex& parent ) const { return 0; } -QVariant RegionsModel::data(const QModelIndex& index, int role) const +QVariant +RegionsModel::data( const QModelIndex& index, int role ) const { return QVariant(); } - } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index a34e03248..b3d57c4fd 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -43,17 +43,16 @@ class DLLEXPORT RegionsModel : public QAbstractListModel { Q_OBJECT - RegionsModel(); public: + RegionsModel( QObject* parent = nullptr ); virtual ~RegionsModel() override; - static RegionsModel* instance(); int rowCount( const QModelIndex& parent ) const override; QVariant data( const QModelIndex& index, int role ) const override; private: - Private *m_private; + Private* m_private; }; } // namespace Locale From 82cc652f55200ac3b0a06fa7517bbb867604a3cb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 16:21:05 +0200 Subject: [PATCH 168/399] [libcalamares] Re-done zones loading - just make one big list of zones, one short list of regions - the models are non-functional right now --- src/libcalamares/locale/Tests.cpp | 4 +- src/libcalamares/locale/TimeZone.cpp | 232 ++++++++++++++++++++++++++- src/libcalamares/locale/TimeZone.h | 16 ++ 3 files changed, 250 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 54e6cd848..4690a50a3 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -257,7 +257,9 @@ LocaleTests::testRegions() void LocaleTests::testSimpleZones() { - using namespace CalamaresUtils::Locale; + CalamaresUtils::Locale::ZonesModel zones; + + QVERIFY( zones.rowCount( QModelIndex() ) > 24 ); } void diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 0dba52a2a..e12f404a5 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -23,6 +23,10 @@ #include "TimeZone.h" #include "utils/Logger.h" +#include "utils/String.h" + +#include +#include static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; @@ -59,6 +63,42 @@ getRightGeoLocation( QString str ) return sign * num; } +/** @brief A pair of strings, one human-readable, one a key + * + * Given an identifier-like string (e.g. "New_York"), makes + * a human-readable version of that and keeps a copy of the + * identifier itself. + * + * This explicitly uses const char* instead of just being + * QPair because the human-readable part + * may need to be translated through tr(), and that takes a char*. + * C-style strings. + */ +class CStringPair : public QObject +{ + Q_OBJECT +public: + /// @brief An empty pair + CStringPair() {} + /// @brief Given an identifier, create the pair + explicit CStringPair( const char* s1 ); + explicit CStringPair( const QString& s ); + CStringPair( CStringPair&& t ); + CStringPair( const CStringPair& ); + virtual ~CStringPair(); + + /// @brief Give the localized human-readable form + virtual QString tr() const = 0; + QString key() const { return m_key; } + + bool operator==( const CStringPair& other ) const { return m_key == other.m_key; } + bool operator<( const CStringPair& other ) const { return m_key < other.m_key; } + +protected: + char* m_human = nullptr; + QString m_key; +}; + /** @brief Massage an identifier into a human-readable form * * Makes a copy of @p s, caller must free() it. @@ -86,6 +126,162 @@ munge( const char* s ) return t; } +CStringPair::CStringPair( CStringPair&& t ) + : m_human( nullptr ) + , m_key() +{ + // My pointers are initialized to nullptr + std::swap( m_human, t.m_human ); + std::swap( m_key, t.m_key ); +} + +CStringPair::CStringPair( const CStringPair& t ) + : m_human( t.m_human ? strdup( t.m_human ) : nullptr ) + , m_key( t.m_key ) +{ +} + +CStringPair::CStringPair( const char* s1 ) + : m_human( s1 ? munge( s1 ) : nullptr ) + , m_key( s1 ? QString( s1 ) : QString() ) +{ +} + +CStringPair::CStringPair( const QString& s ) + : m_human( strdup( s.toUtf8().constData() ) ) + , m_key( s ) +{ +} + + +CStringPair::~CStringPair() +{ + free( m_human ); +} + + +class TimeZoneData : public CStringPair +{ +public: + TimeZoneData( const QString& region, + const QString& zone, + const QString& country, + double latitude, + double longitude ); + QString tr() const override; + +private: + QString m_region; + QString m_country; + double m_latitude; + double m_longitude; +}; + +TimeZoneData::TimeZoneData( const QString& region, + const QString& zone, + const QString& country, + double latitude, + double longitude ) + : CStringPair( zone ) + , m_region( region ) + , m_country( country ) + , m_latitude( latitude ) + , m_longitude( longitude ) +{ +} + +QString +TimeZoneData::tr() const +{ + // NOTE: context name must match what's used in zone-extractor.py + return QObject::tr( m_human, "tz_names" ); +} + + +class RegionData : public CStringPair +{ +public: + using CStringPair::CStringPair; + QString tr() const override; +}; + +QString +RegionData::tr() const +{ + // NOTE: context name must match what's used in zone-extractor.py + return QObject::tr( m_human, "tz_regions" ); +} + +static void +loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones ) +{ + QFile file( TZ_DATA_FILE ); + if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + QTextStream in( &file ); + while ( !in.atEnd() ) + { + QString line = in.readLine().trimmed().split( '#', SplitKeepEmptyParts ).first().trimmed(); + if ( line.isEmpty() ) + { + continue; + } + + QStringList list = line.split( QRegExp( "[\t ]" ), SplitSkipEmptyParts ); + if ( list.size() < 3 ) + { + continue; + } + + QStringList timezoneParts = list.at( 2 ).split( '/', SplitSkipEmptyParts ); + if ( timezoneParts.size() < 2 ) + { + continue; + } + + QString region = timezoneParts.first().trimmed(); + if ( region.isEmpty() ) + { + continue; + } + + QString countryCode = list.at( 0 ).trimmed(); + if ( countryCode.size() != 2 ) + { + continue; + } + + timezoneParts.removeFirst(); + QString zone = timezoneParts.join( '/' ); + if ( zone.length() < 2 ) + { + continue; + } + + QString position = list.at( 1 ); + int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); + double latitude; + double longitude; + if ( cooSplitPos > 0 ) + { + latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); + longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); + } + else + { + continue; + } + + // Now we have region, zone, country, lat and longitude + RegionData r( region ); + if ( regions.indexOf( r ) < 0 ) + { + regions.append( std::move( r ) ); + } + zones.append( TimeZoneData( region, zone, countryCode, latitude, longitude ) ); + } + } +} namespace CalamaresUtils { @@ -94,6 +290,16 @@ namespace Locale struct Private { + QVector< RegionData > m_regions; + QVector< TimeZoneData > m_zones; + + Private() + { + m_regions.reserve( 12 ); // reasonable guess + m_zones.reserve( 452 ); // wc -l /usr/share/zoneinfo/zone.tab + + loadTZData( m_regions, m_zones ); + } }; static Private* @@ -114,7 +320,7 @@ RegionsModel::~RegionsModel() {} int RegionsModel::rowCount( const QModelIndex& parent ) const { - return 0; + return m_private->m_regions.count(); } QVariant @@ -123,6 +329,30 @@ RegionsModel::data( const QModelIndex& index, int role ) const return QVariant(); } +ZonesModel::ZonesModel( QObject* parent ) + : QAbstractListModel( parent ) + , m_private( privateInstance() ) +{ +} + +ZonesModel::~ZonesModel() {} + +int +ZonesModel::rowCount( const QModelIndex& parent ) const +{ + return m_private->m_zones.count(); +} + +QVariant +ZonesModel::data( const QModelIndex& index, int role ) const +{ + return QVariant(); +} + } // namespace Locale } // namespace CalamaresUtils + +#include "utils/moc-warnings.h" + +#include "TimeZone.moc" diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index b3d57c4fd..4ded57d8f 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -55,6 +55,22 @@ private: Private* m_private; }; +class DLLEXPORT ZonesModel : public QAbstractListModel +{ + Q_OBJECT + +public: + ZonesModel( QObject* parent = nullptr ); + virtual ~ZonesModel() override; + + int rowCount( const QModelIndex& parent ) const override; + QVariant data( const QModelIndex& index, int role ) const override; + +private: + Private* m_private; +}; + + } // namespace Locale } // namespace CalamaresUtils From 609ea8350c947ad492e0a0a4995a3519b695f4da Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 16:25:45 +0200 Subject: [PATCH 169/399] [libcalamares] Failing test: there is data in the regions model --- src/libcalamares/locale/Tests.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 4690a50a3..5ac70d3d0 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -251,6 +251,17 @@ LocaleTests::testRegions() CalamaresUtils::Locale::RegionsModel regions; QVERIFY( regions.rowCount( QModelIndex() ) > 3 ); // Africa, America, Asia + + QStringList names; + for ( int i = 0; i < regions.rowCount( QModelIndex() ); ++i ) + { + QVariant name = regions.data( regions.index( i ), Qt::UserRole ); + QVERIFY( name.isValid() ); + QVERIFY( !name.toString().isEmpty() ); + names.append( name.toString() ); + } + + QVERIFY( names.contains( "America" ) ); } From 33e39b92fb9f623256f4ead751b53d058284e59b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 16:36:00 +0200 Subject: [PATCH 170/399] [libcalamares] Satisfy test, return region names --- src/libcalamares/locale/Tests.cpp | 3 ++- src/libcalamares/locale/TimeZone.cpp | 20 ++++++++++++++++++++ src/libcalamares/locale/TimeZone.h | 8 +++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 5ac70d3d0..e41e3a30b 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -255,13 +255,14 @@ LocaleTests::testRegions() QStringList names; for ( int i = 0; i < regions.rowCount( QModelIndex() ); ++i ) { - QVariant name = regions.data( regions.index( i ), Qt::UserRole ); + QVariant name = regions.data( regions.index( i ), Qt::DisplayRole ); QVERIFY( name.isValid() ); QVERIFY( !name.toString().isEmpty() ); names.append( name.toString() ); } QVERIFY( names.contains( "America" ) ); + QVERIFY( !names.contains( "UTC" ) ); } diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index e12f404a5..9f356d958 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -326,9 +326,29 @@ RegionsModel::rowCount( const QModelIndex& parent ) const QVariant RegionsModel::data( const QModelIndex& index, int role ) const { + if ( !index.isValid() || index.row() < 0 || index.row() >= m_private->m_regions.count() ) + { + return QVariant(); + } + + if ( role == Qt::DisplayRole ) + { + return m_private->m_regions[ index.row() ].tr(); + } + if ( role == KeyRole ) + { + return m_private->m_regions[ index.row() ].key(); + } return QVariant(); } +QHash< int, QByteArray > +RegionsModel::roleNames() const +{ + return { { Qt::DisplayRole, "name" }, { KeyRole, "key" } }; +} + + ZonesModel::ZonesModel( QObject* parent ) : QAbstractListModel( parent ) , m_private( privateInstance() ) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 4ded57d8f..0a5fbf7f6 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -43,14 +43,20 @@ class DLLEXPORT RegionsModel : public QAbstractListModel { Q_OBJECT - public: + enum Roles + { + KeyRole = Qt::UserRole + 1 + }; + RegionsModel( QObject* parent = nullptr ); virtual ~RegionsModel() override; int rowCount( const QModelIndex& parent ) const override; QVariant data( const QModelIndex& index, int role ) const override; + QHash< int, QByteArray > roleNames() const override; + private: Private* m_private; }; From 1afdcc9c822a75152fca46cf982f936990849a06 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 16:45:41 +0200 Subject: [PATCH 171/399] [libcalamares] Give zones data, too - while here, fix bug in TimeZoneData that didn't munge names (so it reported "New_York") --- src/libcalamares/locale/Tests.cpp | 32 +++++++++++++++++++++++++--- src/libcalamares/locale/TimeZone.cpp | 31 ++++++++++++++++++++++----- src/libcalamares/locale/TimeZone.h | 9 ++++++++ 3 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index e41e3a30b..c660ccbfb 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -248,14 +248,15 @@ LocaleTests::testTranslatableConfig2() void LocaleTests::testRegions() { - CalamaresUtils::Locale::RegionsModel regions; + using namespace CalamaresUtils::Locale; + RegionsModel regions; QVERIFY( regions.rowCount( QModelIndex() ) > 3 ); // Africa, America, Asia QStringList names; for ( int i = 0; i < regions.rowCount( QModelIndex() ); ++i ) { - QVariant name = regions.data( regions.index( i ), Qt::DisplayRole ); + QVariant name = regions.data( regions.index( i ), RegionsModel::NameRole ); QVERIFY( name.isValid() ); QVERIFY( !name.toString().isEmpty() ); names.append( name.toString() ); @@ -269,9 +270,34 @@ LocaleTests::testRegions() void LocaleTests::testSimpleZones() { - CalamaresUtils::Locale::ZonesModel zones; + using namespace CalamaresUtils::Locale; + ZonesModel zones; QVERIFY( zones.rowCount( QModelIndex() ) > 24 ); + + QStringList names; + for ( int i = 0; i < zones.rowCount( QModelIndex() ); ++i ) + { + QVariant name = zones.data( zones.index( i ), ZonesModel::NameRole ); + QVERIFY( name.isValid() ); + QVERIFY( !name.toString().isEmpty() ); + names.append( name.toString() ); + } + + QVERIFY( names.contains( "Amsterdam" ) ); + if ( !names.contains( "New York" ) ) + { + for ( const auto& s : names ) + { + if ( s.startsWith( 'N' ) ) + { + cDebug() << s; + } + } + } + QVERIFY( names.contains( "New York" ) ); + QVERIFY( !names.contains( "America" ) ); + QVERIFY( !names.contains( "New_York" ) ); } void diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 9f356d958..05c082738 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -148,7 +148,7 @@ CStringPair::CStringPair( const char* s1 ) } CStringPair::CStringPair( const QString& s ) - : m_human( strdup( s.toUtf8().constData() ) ) + : m_human( munge( s.toUtf8().constData() ) ) , m_key( s ) { } @@ -331,13 +331,14 @@ RegionsModel::data( const QModelIndex& index, int role ) const return QVariant(); } - if ( role == Qt::DisplayRole ) + const auto& region = m_private->m_regions[ index.row() ]; + if ( role == NameRole ) { - return m_private->m_regions[ index.row() ].tr(); + return region.tr(); } if ( role == KeyRole ) { - return m_private->m_regions[ index.row() ].key(); + return region.key(); } return QVariant(); } @@ -345,7 +346,7 @@ RegionsModel::data( const QModelIndex& index, int role ) const QHash< int, QByteArray > RegionsModel::roleNames() const { - return { { Qt::DisplayRole, "name" }, { KeyRole, "key" } }; + return { { NameRole, "name" }, { KeyRole, "key" } }; } @@ -366,9 +367,29 @@ ZonesModel::rowCount( const QModelIndex& parent ) const QVariant ZonesModel::data( const QModelIndex& index, int role ) const { + if ( !index.isValid() || index.row() < 0 || index.row() >= m_private->m_zones.count() ) + { + return QVariant(); + } + + const auto& zone = m_private->m_zones[ index.row() ]; + if ( role == NameRole ) + { + return zone.tr(); + } + if ( role == KeyRole ) + { + return zone.key(); + } return QVariant(); } +QHash< int, QByteArray > +ZonesModel::roleNames() const +{ + return { { NameRole, "name" }, { KeyRole, "key" } }; +} + } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 0a5fbf7f6..d87a5a57a 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -46,6 +46,7 @@ class DLLEXPORT RegionsModel : public QAbstractListModel public: enum Roles { + NameRole = Qt::DisplayRole, KeyRole = Qt::UserRole + 1 }; @@ -66,12 +67,20 @@ class DLLEXPORT ZonesModel : public QAbstractListModel Q_OBJECT public: + enum Roles + { + NameRole = Qt::DisplayRole, + KeyRole = Qt::UserRole + 1 + }; + ZonesModel( QObject* parent = nullptr ); virtual ~ZonesModel() override; int rowCount( const QModelIndex& parent ) const override; QVariant data( const QModelIndex& index, int role ) const override; + QHash< int, QByteArray > roleNames() const override; + private: Private* m_private; }; From 3e32335511a8989fe78abe986d02d6005b23b8b8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 17:14:13 +0200 Subject: [PATCH 172/399] [libcalamares] Introduce a filtering model per-region --- src/libcalamares/locale/Tests.cpp | 55 ++++++++++++++++++++++++---- src/libcalamares/locale/TimeZone.cpp | 42 +++++++++++++++++++-- src/libcalamares/locale/TimeZone.h | 25 +++++++++++++ 3 files changed, 111 insertions(+), 11 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index c660ccbfb..8a6a6ad84 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -267,6 +267,19 @@ LocaleTests::testRegions() } +static void +displayedNames( QAbstractItemModel& model, QStringList& names ) +{ + names.clear(); + for ( int i = 0; i < model.rowCount( QModelIndex() ); ++i ) + { + QVariant name = model.data( model.index( i, 0 ), Qt::DisplayRole ); + QVERIFY( name.isValid() ); + QVERIFY( !name.toString().isEmpty() ); + names.append( name.toString() ); + } +} + void LocaleTests::testSimpleZones() { @@ -276,14 +289,7 @@ LocaleTests::testSimpleZones() QVERIFY( zones.rowCount( QModelIndex() ) > 24 ); QStringList names; - for ( int i = 0; i < zones.rowCount( QModelIndex() ); ++i ) - { - QVariant name = zones.data( zones.index( i ), ZonesModel::NameRole ); - QVERIFY( name.isValid() ); - QVERIFY( !name.toString().isEmpty() ); - names.append( name.toString() ); - } - + displayedNames( zones, names ); QVERIFY( names.contains( "Amsterdam" ) ); if ( !names.contains( "New York" ) ) { @@ -304,6 +310,39 @@ void LocaleTests::testComplexZones() { using namespace CalamaresUtils::Locale; + ZonesModel zones; + RegionalZonesModel europe( &zones ); + + QStringList names; + displayedNames( zones, names ); + QVERIFY( names.contains( "New York" ) ); + QVERIFY( names.contains( "Prague" ) ); + QVERIFY( names.contains( "Abidjan" ) ); + + // No region set + displayedNames( europe, names ); + QVERIFY( names.contains( "New York" ) ); + QVERIFY( names.contains( "Prague" ) ); + QVERIFY( names.contains( "Abidjan" ) ); + + // Now filter + europe.setRegion( "Europe" ); + displayedNames( europe, names ); + QVERIFY( !names.contains( "New York" ) ); + QVERIFY( names.contains( "Prague" ) ); + QVERIFY( !names.contains( "Abidjan" ) ); + + europe.setRegion( "America" ); + displayedNames( europe, names ); + QVERIFY( names.contains( "New York" ) ); + QVERIFY( !names.contains( "Prague" ) ); + QVERIFY( !names.contains( "Abidjan" ) ); + + europe.setRegion( "Africa" ); + displayedNames( europe, names ); + QVERIFY( !names.contains( "New York" ) ); + QVERIFY( !names.contains( "Prague" ) ); + QVERIFY( names.contains( "Abidjan" ) ); } QTEST_GUILESS_MAIN( LocaleTests ) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 05c082738..3d517940a 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -170,7 +170,6 @@ public: double longitude ); QString tr() const override; -private: QString m_region; QString m_country; double m_latitude; @@ -318,7 +317,7 @@ RegionsModel::RegionsModel( QObject* parent ) RegionsModel::~RegionsModel() {} int -RegionsModel::rowCount( const QModelIndex& parent ) const +RegionsModel::rowCount( const QModelIndex& ) const { return m_private->m_regions.count(); } @@ -359,7 +358,7 @@ ZonesModel::ZonesModel( QObject* parent ) ZonesModel::~ZonesModel() {} int -ZonesModel::rowCount( const QModelIndex& parent ) const +ZonesModel::rowCount( const QModelIndex& ) const { return m_private->m_zones.count(); } @@ -390,6 +389,43 @@ ZonesModel::roleNames() const return { { NameRole, "name" }, { KeyRole, "key" } }; } +RegionalZonesModel::RegionalZonesModel( CalamaresUtils::Locale::ZonesModel* source, QObject* parent ) + : QSortFilterProxyModel( parent ) + , m_private( privateInstance() ) +{ + setSourceModel( source ); +} + +RegionalZonesModel::~RegionalZonesModel() {} + +void +RegionalZonesModel::setRegion( const QString& r ) +{ + if ( r != m_region ) + { + m_region = r; + invalidateFilter(); + emit regionChanged( r ); + } +} + +bool +RegionalZonesModel::filterAcceptsRow( int sourceRow, const QModelIndex& ) const +{ + if ( m_region.isEmpty() ) + { + return true; + } + + if ( sourceRow < 0 || sourceRow >= m_private->m_zones.count() ) + { + return false; + } + + const auto& zone = m_private->m_zones[ sourceRow ]; + return ( zone.m_region == m_region ); +} + } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index d87a5a57a..cb91a8361 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -26,6 +26,7 @@ #include #include +#include #include namespace CalamaresUtils @@ -85,6 +86,30 @@ private: Private* m_private; }; +class DLLEXPORT RegionalZonesModel : public QSortFilterProxyModel +{ + Q_OBJECT + Q_PROPERTY( QString region READ region WRITE setRegion NOTIFY regionChanged ) + +public: + RegionalZonesModel( ZonesModel* source, QObject* parent = nullptr ); + ~RegionalZonesModel() override; + + bool filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent ) const override; + + QString region() const { return m_region; } + +public Q_SLOTS: + void setRegion( const QString& r ); + +signals: + void regionChanged( const QString& ); + +private: + Private* m_private; + QString m_region; +}; + } // namespace Locale } // namespace CalamaresUtils From 10fb5b95c7ca681c9d4f633255b70ffc31ed8657 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 17:52:41 +0200 Subject: [PATCH 173/399] [libcalamares] Split out CStringPair into TranslatableString The (renamed) class TranslatableString keeps a key value (e.g. New_York) and a human-readable version around; the human-readable one is passed through QObject::tr() for translation on-the-fly. --- src/libcalamares/CMakeLists.txt | 1 + src/libcalamares/locale/TimeZone.cpp | 114 ++---------------- .../locale/TranslatableString.cpp | 89 ++++++++++++++ src/libcalamares/locale/TranslatableString.h | 68 +++++++++++ 4 files changed, 168 insertions(+), 104 deletions(-) create mode 100644 src/libcalamares/locale/TranslatableString.cpp create mode 100644 src/libcalamares/locale/TranslatableString.h diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 8e209f8a3..d38aa1124 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -56,6 +56,7 @@ set( libSources locale/Lookup.cpp locale/TimeZone.cpp locale/TranslatableConfiguration.cpp + locale/TranslatableString.cpp # Modules modulesystem/InstanceKey.cpp diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 3d517940a..b19ad7e1e 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -22,6 +22,7 @@ #include "TimeZone.h" +#include "locale/TranslatableString.h" #include "utils/Logger.h" #include "utils/String.h" @@ -30,6 +31,11 @@ static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; +namespace CalamaresUtils +{ +namespace Locale +{ + /** @brief Turns a string longitude or latitude notation into a double * * This handles strings like "+4230+00131" from zone.tab, @@ -63,104 +69,8 @@ getRightGeoLocation( QString str ) return sign * num; } -/** @brief A pair of strings, one human-readable, one a key - * - * Given an identifier-like string (e.g. "New_York"), makes - * a human-readable version of that and keeps a copy of the - * identifier itself. - * - * This explicitly uses const char* instead of just being - * QPair because the human-readable part - * may need to be translated through tr(), and that takes a char*. - * C-style strings. - */ -class CStringPair : public QObject -{ - Q_OBJECT -public: - /// @brief An empty pair - CStringPair() {} - /// @brief Given an identifier, create the pair - explicit CStringPair( const char* s1 ); - explicit CStringPair( const QString& s ); - CStringPair( CStringPair&& t ); - CStringPair( const CStringPair& ); - virtual ~CStringPair(); - /// @brief Give the localized human-readable form - virtual QString tr() const = 0; - QString key() const { return m_key; } - - bool operator==( const CStringPair& other ) const { return m_key == other.m_key; } - bool operator<( const CStringPair& other ) const { return m_key < other.m_key; } - -protected: - char* m_human = nullptr; - QString m_key; -}; - -/** @brief Massage an identifier into a human-readable form - * - * Makes a copy of @p s, caller must free() it. - */ -static char* -munge( const char* s ) -{ - char* t = strdup( s ); - if ( !t ) - { - return nullptr; - } - - // replace("_"," ") in the Python script - char* p = t; - while ( *p ) - { - if ( ( *p ) == '_' ) - { - *p = ' '; - } - ++p; - } - - return t; -} - -CStringPair::CStringPair( CStringPair&& t ) - : m_human( nullptr ) - , m_key() -{ - // My pointers are initialized to nullptr - std::swap( m_human, t.m_human ); - std::swap( m_key, t.m_key ); -} - -CStringPair::CStringPair( const CStringPair& t ) - : m_human( t.m_human ? strdup( t.m_human ) : nullptr ) - , m_key( t.m_key ) -{ -} - -CStringPair::CStringPair( const char* s1 ) - : m_human( s1 ? munge( s1 ) : nullptr ) - , m_key( s1 ? QString( s1 ) : QString() ) -{ -} - -CStringPair::CStringPair( const QString& s ) - : m_human( munge( s.toUtf8().constData() ) ) - , m_key( s ) -{ -} - - -CStringPair::~CStringPair() -{ - free( m_human ); -} - - -class TimeZoneData : public CStringPair +class TimeZoneData : public TranslatableString { public: TimeZoneData( const QString& region, @@ -181,7 +91,7 @@ TimeZoneData::TimeZoneData( const QString& region, const QString& country, double latitude, double longitude ) - : CStringPair( zone ) + : TranslatableString( zone ) , m_region( region ) , m_country( country ) , m_latitude( latitude ) @@ -197,10 +107,10 @@ TimeZoneData::tr() const } -class RegionData : public CStringPair +class RegionData : public TranslatableString { public: - using CStringPair::CStringPair; + using TranslatableString::TranslatableString; QString tr() const override; }; @@ -282,10 +192,6 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones ) } } -namespace CalamaresUtils -{ -namespace Locale -{ struct Private { diff --git a/src/libcalamares/locale/TranslatableString.cpp b/src/libcalamares/locale/TranslatableString.cpp new file mode 100644 index 000000000..9200c8d65 --- /dev/null +++ b/src/libcalamares/locale/TranslatableString.cpp @@ -0,0 +1,89 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + * + */ +#include "TranslatableString.h" + + +/** @brief Massage an identifier into a human-readable form + * + * Makes a copy of @p s, caller must free() it. + */ +static char* +munge( const char* s ) +{ + char* t = strdup( s ); + if ( !t ) + { + return nullptr; + } + + // replace("_"," ") in the Python script + char* p = t; + while ( *p ) + { + if ( ( *p ) == '_' ) + { + *p = ' '; + } + ++p; + } + + return t; +} + +namespace CalamaresUtils +{ +namespace Locale +{ + +TranslatableString::TranslatableString( TranslatableString&& t ) + : m_human( nullptr ) + , m_key() +{ + // My pointers are initialized to nullptr + std::swap( m_human, t.m_human ); + std::swap( m_key, t.m_key ); +} + +TranslatableString::TranslatableString( const TranslatableString& t ) + : m_human( t.m_human ? strdup( t.m_human ) : nullptr ) + , m_key( t.m_key ) +{ +} + +TranslatableString::TranslatableString( const char* s1 ) + : m_human( s1 ? munge( s1 ) : nullptr ) + , m_key( s1 ? QString( s1 ) : QString() ) +{ +} + +TranslatableString::TranslatableString( const QString& s ) + : m_human( munge( s.toUtf8().constData() ) ) + , m_key( s ) +{ +} + + +TranslatableString::~TranslatableString() +{ + free( m_human ); +} + +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TranslatableString.h b/src/libcalamares/locale/TranslatableString.h new file mode 100644 index 000000000..8347488f1 --- /dev/null +++ b/src/libcalamares/locale/TranslatableString.h @@ -0,0 +1,68 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + * + */ +#ifndef LOCALE_TRANSLATABLESTRING_H +#define LOCALE_TRANSLATABLESTRING_H + +#include + +namespace CalamaresUtils +{ +namespace Locale +{ + +/** @brief A pair of strings, one human-readable, one a key + * + * Given an identifier-like string (e.g. "New_York"), makes + * a human-readable version of that and keeps a copy of the + * identifier itself. + * + * This explicitly uses const char* instead of just being + * QPair because the human-readable part + * may need to be translated through tr(), and that takes a char* + * C-style strings. + */ +class TranslatableString +{ +public: + /// @brief An empty pair + TranslatableString() {} + /// @brief Given an identifier, create the pair + explicit TranslatableString( const char* s1 ); + explicit TranslatableString( const QString& s ); + TranslatableString( TranslatableString&& t ); + TranslatableString( const TranslatableString& ); + virtual ~TranslatableString(); + + /// @brief Give the localized human-readable form + virtual QString tr() const = 0; + QString key() const { return m_key; } + + bool operator==( const TranslatableString& other ) const { return m_key == other.m_key; } + bool operator<( const TranslatableString& other ) const { return m_key < other.m_key; } + +protected: + char* m_human = nullptr; + QString m_key; +}; + +} // namespace Locale +} // namespace CalamaresUtils + +#endif From 478a27576435f9f67499bd85cf5a15519973a2d8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 18:01:24 +0200 Subject: [PATCH 174/399] [libcalamares] Make TimeZoneData public - Also make it a QObject so we can add properties and make it useful for QML consumption. --- src/libcalamares/locale/TimeZone.cpp | 34 ++++++---------------------- src/libcalamares/locale/TimeZone.h | 31 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index b19ad7e1e..73ac328d6 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -70,22 +70,6 @@ getRightGeoLocation( QString str ) } -class TimeZoneData : public TranslatableString -{ -public: - TimeZoneData( const QString& region, - const QString& zone, - const QString& country, - double latitude, - double longitude ); - QString tr() const override; - - QString m_region; - QString m_country; - double m_latitude; - double m_longitude; -}; - TimeZoneData::TimeZoneData( const QString& region, const QString& zone, const QString& country, @@ -122,7 +106,7 @@ RegionData::tr() const } static void -loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones ) +loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData* >& zones ) { QFile file( TZ_DATA_FILE ); if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) @@ -187,7 +171,7 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones ) { regions.append( std::move( r ) ); } - zones.append( TimeZoneData( region, zone, countryCode, latitude, longitude ) ); + zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) ); } } } @@ -196,7 +180,7 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData >& zones ) struct Private { QVector< RegionData > m_regions; - QVector< TimeZoneData > m_zones; + QVector< TimeZoneData* > m_zones; Private() { @@ -277,14 +261,14 @@ ZonesModel::data( const QModelIndex& index, int role ) const return QVariant(); } - const auto& zone = m_private->m_zones[ index.row() ]; + const auto* zone = m_private->m_zones[ index.row() ]; if ( role == NameRole ) { - return zone.tr(); + return zone->tr(); } if ( role == KeyRole ) { - return zone.key(); + return zone->key(); } return QVariant(); } @@ -329,13 +313,9 @@ RegionalZonesModel::filterAcceptsRow( int sourceRow, const QModelIndex& ) const } const auto& zone = m_private->m_zones[ sourceRow ]; - return ( zone.m_region == m_region ); + return ( zone->m_region == m_region ); } } // namespace Locale } // namespace CalamaresUtils - -#include "utils/moc-warnings.h" - -#include "TimeZone.moc" diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index cb91a8361..c1bcc96b9 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -24,6 +24,8 @@ #include "DllMacro.h" +#include "locale/TranslatableString.h" + #include #include #include @@ -34,6 +36,35 @@ namespace CalamaresUtils namespace Locale { struct Private; +class RegionalZonesModel; +class ZonesModel; + +class TimeZoneData : public QObject, TranslatableString +{ + friend class RegionalZonesModel; + friend class ZonesModel; + + Q_OBJECT + + Q_PROPERTY( QString region READ region CONSTANT ) + +public: + TimeZoneData( const QString& region, + const QString& zone, + const QString& country, + double latitude, + double longitude ); + QString tr() const override; + + QString region() const { return m_region; } + +private: + QString m_region; + QString m_country; + double m_latitude; + double m_longitude; +}; + /** @brief The list of timezone regions * From 245d4a8ef77207a102be41dc8cbe0e9d1ce4b957 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 22:30:04 +0200 Subject: [PATCH 175/399] [libcalamares] Add a find() to ZonesModel - Look up TZ data by region and zone name. --- src/libcalamares/locale/Tests.cpp | 16 ++++++++++++++++ src/libcalamares/locale/TimeZone.cpp | 13 +++++++++++++ src/libcalamares/locale/TimeZone.h | 7 +++++++ 3 files changed, 36 insertions(+) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 8a6a6ad84..db2ed2fe2 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -50,6 +50,7 @@ private Q_SLOTS: void testRegions(); void testSimpleZones(); void testComplexZones(); + void testTZLookup(); }; LocaleTests::LocaleTests() {} @@ -345,6 +346,21 @@ LocaleTests::testComplexZones() QVERIFY( names.contains( "Abidjan" ) ); } +void +LocaleTests::testTZLookup() +{ + using namespace CalamaresUtils::Locale; + ZonesModel zones; + + QVERIFY( zones.find( "America", "New_York" ) ); + QCOMPARE( zones.find( "America", "New_York" )->zone(), QStringLiteral( "New_York" ) ); + QCOMPARE( zones.find( "America", "New_York" )->tr(), QStringLiteral( "New York" ) ); + + QVERIFY( !zones.find( "Europe", "New_York" ) ); + QVERIFY( !zones.find( "America", "New York" ) ); +} + + QTEST_GUILESS_MAIN( LocaleTests ) #include "utils/moc-warnings.h" diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 73ac328d6..4e56b5af1 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -279,6 +279,19 @@ ZonesModel::roleNames() const return { { NameRole, "name" }, { KeyRole, "key" } }; } +const TimeZoneData* +ZonesModel::find( const QString& region, const QString& zone ) +{ + for ( const auto* p : m_private->m_zones ) + { + if ( p->region() == region && p->zone() == zone ) + { + return p; + } + } + return nullptr; +} + RegionalZonesModel::RegionalZonesModel( CalamaresUtils::Locale::ZonesModel* source, QObject* parent ) : QSortFilterProxyModel( parent ) , m_private( privateInstance() ) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index c1bcc96b9..de23f07d2 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -57,6 +57,7 @@ public: QString tr() const override; QString region() const { return m_region; } + QString zone() const { return key(); } private: QString m_region; @@ -113,6 +114,12 @@ public: QHash< int, QByteArray > roleNames() const override; + /** @brief Look up TZ data based on its name. + * + * Returns @c nullptr if not found. + */ + const TimeZoneData* find( const QString& region, const QString& zone ); + private: Private* m_private; }; From 7ea2ad7dc6443611f34d291d449c8ae742e48255 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 23:26:17 +0200 Subject: [PATCH 176/399] [libcalamares] Add accessors for TZ data and region in the model It's convenient when e.g. QComboBox::currentData() gets the key "automatically", and the default role for that method is UserRole, so let the value of KeyRole overlap. --- src/libcalamares/locale/TimeZone.cpp | 12 +++++++----- src/libcalamares/locale/TimeZone.h | 12 ++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 4e56b5af1..d5d4938a8 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -262,15 +262,17 @@ ZonesModel::data( const QModelIndex& index, int role ) const } const auto* zone = m_private->m_zones[ index.row() ]; - if ( role == NameRole ) + switch ( role ) { + case NameRole: return zone->tr(); - } - if ( role == KeyRole ) - { + case KeyRole: return zone->key(); + case RegionRole: + return zone->region(); + default: + return QVariant(); } - return QVariant(); } QHash< int, QByteArray > diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index de23f07d2..afe32963c 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -54,11 +54,18 @@ public: const QString& country, double latitude, double longitude ); + TimeZoneData( const TimeZoneData& ) = delete; + TimeZoneData( TimeZoneData&& ) = delete; + QString tr() const override; QString region() const { return m_region; } QString zone() const { return key(); } + QString country() const { return m_country; } + double latitude() const { return m_latitude; } + double longitude() const { return m_longitude; } + private: QString m_region; QString m_country; @@ -80,7 +87,7 @@ public: enum Roles { NameRole = Qt::DisplayRole, - KeyRole = Qt::UserRole + 1 + KeyRole = Qt::UserRole // So that currentData() will get the key }; RegionsModel( QObject* parent = nullptr ); @@ -103,7 +110,8 @@ public: enum Roles { NameRole = Qt::DisplayRole, - KeyRole = Qt::UserRole + 1 + KeyRole = Qt::UserRole, // So that currentData() will get the key + RegionRole = Qt::UserRole + 1 }; ZonesModel( QObject* parent = nullptr ); From 37c211fd14d8a6a35d02296e774be7da2e9c42be Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 5 Aug 2020 23:46:14 +0200 Subject: [PATCH 177/399] [libcalamares] Add an iterator for the full zones model --- src/libcalamares/locale/Tests.cpp | 26 +++++++++++++++++++ src/libcalamares/locale/TimeZone.cpp | 16 +++++++++++- src/libcalamares/locale/TimeZone.h | 39 +++++++++++++++++++++++++++- 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index db2ed2fe2..bb5365ee0 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -51,6 +51,7 @@ private Q_SLOTS: void testSimpleZones(); void testComplexZones(); void testTZLookup(); + void testTZIterator(); }; LocaleTests::LocaleTests() {} @@ -360,6 +361,31 @@ LocaleTests::testTZLookup() QVERIFY( !zones.find( "America", "New York" ) ); } +void +LocaleTests::testTZIterator() +{ + using namespace CalamaresUtils::Locale; + const ZonesModel zones; + + QVERIFY( zones.find( "Europe", "Rome" ) ); + + int count = 0; + bool seenRome = false; + bool seenGnome = false; + for ( auto it = zones.begin(); it; ++it ) + { + QVERIFY( *it ); + QVERIFY( !( *it )->zone().isEmpty() ); + seenRome |= ( *it )->zone() == QStringLiteral( "Rome" ); + seenGnome |= ( *it )->zone() == QStringLiteral( "Gnome" ); + count++; + } + + QVERIFY( seenRome ); + QVERIFY( !seenGnome ); + QCOMPARE( count, zones.rowCount( QModelIndex() ) ); +} + QTEST_GUILESS_MAIN( LocaleTests ) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index d5d4938a8..e8b861d69 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -282,7 +282,7 @@ ZonesModel::roleNames() const } const TimeZoneData* -ZonesModel::find( const QString& region, const QString& zone ) +ZonesModel::find( const QString& region, const QString& zone ) const { for ( const auto* p : m_private->m_zones ) { @@ -294,6 +294,20 @@ ZonesModel::find( const QString& region, const QString& zone ) return nullptr; } +ZonesModel::Iterator::operator bool() const +{ + return 0 <= m_index && m_index < m_p->m_zones.count(); +} + +const TimeZoneData* ZonesModel::Iterator::operator*() const +{ + if ( *this ) + { + return m_p->m_zones[ m_index ]; + } + return nullptr; +} + RegionalZonesModel::RegionalZonesModel( CalamaresUtils::Locale::ZonesModel* source, QObject* parent ) : QSortFilterProxyModel( parent ) , m_private( privateInstance() ) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index afe32963c..9b8569b21 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -126,7 +126,44 @@ public: * * Returns @c nullptr if not found. */ - const TimeZoneData* find( const QString& region, const QString& zone ); + const TimeZoneData* find( const QString& region, const QString& zone ) const; + + /** @brief Iterator for testing purposes + * + * This is primarily for testing, but who knows, it might be useful + * elsewhere, and it's convenient when it can access Private. + * + * Iterates over all the zones in the model. Operator * may return + * a @c nullptr when the iterator is not valid. Typical usage: + * + * ``` + * for( auto it = model.begin(); it; ++it ) + * { + * const auto* zonedata = *it; + * ... + * } + */ + class Iterator + { + friend class ZonesModel; + Iterator( const Private* m ) + : m_index( 0 ) + , m_p( m ) + { + } + + public: + operator bool() const; + void operator++() { ++m_index; } + const TimeZoneData* operator*() const; + int index() const { return m_index; } + + private: + int m_index; + const Private* m_p; + }; + + Iterator begin() const { return Iterator( m_private ); } private: Private* m_private; From d814a3dba8479c2395d422694415611492d0cea9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 00:56:13 +0200 Subject: [PATCH 178/399] [libcalamares] Sort the models before use - zones and regions alphabetically by key --- src/libcalamares/locale/Tests.cpp | 3 +++ src/libcalamares/locale/TimeZone.cpp | 38 ++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index bb5365ee0..dde199a7f 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -384,6 +384,9 @@ LocaleTests::testTZIterator() QVERIFY( seenRome ); QVERIFY( !seenGnome ); QCOMPARE( count, zones.rowCount( QModelIndex() ) ); + + QCOMPARE( zones.data( zones.index( 0 ), ZonesModel::RegionRole ).toString(), QStringLiteral( "Africa" ) ); + QCOMPARE( ( *zones.begin() )->zone(), QStringLiteral( "Abidjan" ) ); } diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index e8b861d69..974b73bfb 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -105,8 +105,11 @@ RegionData::tr() const return QObject::tr( m_human, "tz_regions" ); } +using RegionVector = QVector< RegionData* >; +using ZoneVector = QVector< TimeZoneData* >; + static void -loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData* >& zones ) +loadTZData( RegionVector& regions, ZoneVector& zones ) { QFile file( TZ_DATA_FILE ); if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) @@ -166,10 +169,18 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData* >& zones ) } // Now we have region, zone, country, lat and longitude - RegionData r( region ); - if ( regions.indexOf( r ) < 0 ) + const RegionData* existingRegion = nullptr; + for ( const auto* p : regions ) { - regions.append( std::move( r ) ); + if ( p->key() == region ) + { + existingRegion = p; + break; + } + } + if ( !existingRegion ) + { + regions.append( new RegionData( region ) ); } zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) ); } @@ -179,8 +190,8 @@ loadTZData( QVector< RegionData >& regions, QVector< TimeZoneData* >& zones ) struct Private { - QVector< RegionData > m_regions; - QVector< TimeZoneData* > m_zones; + RegionVector m_regions; + ZoneVector m_zones; Private() { @@ -188,6 +199,17 @@ struct Private m_zones.reserve( 452 ); // wc -l /usr/share/zoneinfo/zone.tab loadTZData( m_regions, m_zones ); + + std::sort( m_regions.begin(), m_regions.end(), []( const RegionData* lhs, const RegionData* rhs ) { + return lhs->key() < rhs->key(); + } ); + std::sort( m_zones.begin(), m_zones.end(), []( const TimeZoneData* lhs, const TimeZoneData* rhs ) { + if ( lhs->region() == rhs->region() ) + { + return lhs->zone() < rhs->zone(); + } + return lhs->region() < rhs->region(); + } ); } }; @@ -223,11 +245,11 @@ RegionsModel::data( const QModelIndex& index, int role ) const const auto& region = m_private->m_regions[ index.row() ]; if ( role == NameRole ) { - return region.tr(); + return region->tr(); } if ( role == KeyRole ) { - return region.key(); + return region->key(); } return QVariant(); } From 626dd038da7bb305d513a2957c7178356f04fb50 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 01:27:03 +0200 Subject: [PATCH 179/399] [locale] Re-do locale module with new TZ data - The Config object now uses the re-done models and timezone data - most of the properties of the locale Config are unchanged - much less complication in extracting data from the zones model --- src/modules/locale/Config.cpp | 28 ++-- src/modules/locale/Config.h | 52 ++++--- src/modules/locale/LocalePage.cpp | 28 ++-- src/modules/locale/LocalePage.h | 2 +- src/modules/locale/Tests.cpp | 130 +++++++----------- .../locale/timezonewidget/timezonewidget.cpp | 34 ++--- .../locale/timezonewidget/timezonewidget.h | 12 +- 7 files changed, 108 insertions(+), 178 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 7a49525f2..96d279477 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -148,17 +148,11 @@ loadLocales( const QString& localeGenPath ) return localeGenLines; } -static inline const CalamaresUtils::Locale::CStringPairList& -timezoneData() -{ - return CalamaresUtils::Locale::TZRegion::fromZoneTab(); -} - - Config::Config( QObject* parent ) : QObject( parent ) - , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( ::timezoneData() ) ) - , m_zonesModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >() ) + , m_regionModel( std::make_unique< CalamaresUtils::Locale::RegionsModel >() ) + , m_zonesModel( std::make_unique< CalamaresUtils::Locale::ZonesModel >() ) + , m_regionalZonesModel( std::make_unique< CalamaresUtils::Locale::RegionalZonesModel >( m_zonesModel.get() ) ) { // Slightly unusual: connect to our *own* signals. Wherever the language // or the location is changed, these signals are emitted, so hook up to @@ -208,12 +202,6 @@ Config::Config( QObject* parent ) Config::~Config() {} -const CalamaresUtils::Locale::CStringPairList& -Config::timezoneData() const -{ - return ::timezoneData(); -} - void Config::setCurrentLocation() { @@ -223,7 +211,8 @@ Config::setCurrentLocation() } } -void Config::setCurrentLocation(const QString& regionzone) +void +Config::setCurrentLocation( const QString& regionzone ) { auto r = CalamaresUtils::GeoIP::splitTZString( regionzone ); if ( r.isValid() ) @@ -236,8 +225,7 @@ void Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) { using namespace CalamaresUtils::Locale; - auto* region = timezoneData().find< TZRegion >( regionName ); - auto* zone = region ? region->zones().find< TZZone >( zoneName ) : nullptr; + auto* zone = m_zonesModel->find( regionName, zoneName ); if ( zone ) { setCurrentLocation( zone ); @@ -250,7 +238,7 @@ Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) } void -Config::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) +Config::setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* location ) { if ( location != m_currentLocation ) { @@ -459,7 +447,7 @@ Calamares::JobList Config::createJobs() { Calamares::JobList list; - const CalamaresUtils::Locale::TZZone* location = currentLocation(); + const auto* location = currentLocation(); if ( location ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index e9a8e6373..fccd3822e 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -37,18 +37,20 @@ class Config : public QObject { Q_OBJECT Q_PROPERTY( const QStringList& supportedLocales READ supportedLocales CONSTANT FINAL ) - Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* zonesModel READ zonesModel CONSTANT FINAL ) - Q_PROPERTY( CalamaresUtils::Locale::CStringListModel* regionModel READ regionModel CONSTANT FINAL ) + Q_PROPERTY( CalamaresUtils::Locale::RegionsModel* regionModel READ regionModel CONSTANT FINAL ) + Q_PROPERTY( CalamaresUtils::Locale::ZonesModel* zonesModel READ zonesModel CONSTANT FINAL ) + Q_PROPERTY( QAbstractItemModel* regionalZonesModel READ regionalZonesModel CONSTANT FINAL ) - Q_PROPERTY( const CalamaresUtils::Locale::TZZone* currentLocation READ currentLocation WRITE setCurrentLocation - NOTIFY currentLocationChanged ) + Q_PROPERTY( + const CalamaresUtils::Locale::TimeZoneData* currentLocation READ currentLocation NOTIFY currentLocationChanged ) // Status are complete, human-readable, messages Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged ) // Code are internal identifiers, like "en_US.UTF-8" - Q_PROPERTY( QString currentLanguageCode READ currentLanguageCode WRITE setLanguageExplicitly NOTIFY currentLanguageCodeChanged ) + Q_PROPERTY( QString currentLanguageCode READ currentLanguageCode WRITE setLanguageExplicitly NOTIFY + currentLanguageCodeChanged ) Q_PROPERTY( QString currentLCCode READ currentLCCode WRITE setLCLocaleExplicitly NOTIFY currentLCCodeChanged ) // This is a long human-readable string with all three statuses @@ -61,15 +63,6 @@ public: void setConfigurationMap( const QVariantMap& ); Calamares::JobList createJobs(); - // Underlying data for the models - const CalamaresUtils::Locale::CStringPairList& timezoneData() const; - - /** @brief The currently selected location (timezone) - * - * The location is a pointer into the date that timezoneData() returns. - */ - const CalamaresUtils::Locale::TZZone* currentLocation() const { return m_currentLocation; } - /// locale configuration (LC_* and LANG) based solely on the current location. LocaleConfiguration automaticLocaleConfiguration() const; /// locale configuration that takes explicit settings into account @@ -85,9 +78,16 @@ public: /// The human-readable summary of what the module will do QString prettyStatus() const; + // A long list of locale codes (e.g. en_US.UTF-8) const QStringList& supportedLocales() const { return m_localeGenLines; } - CalamaresUtils::Locale::CStringListModel* regionModel() const { return m_regionModel.get(); } - CalamaresUtils::Locale::CStringListModel* zonesModel() const { return m_zonesModel.get(); } + // All the regions (Africa, America, ...) + CalamaresUtils::Locale::RegionsModel* regionModel() const { return m_regionModel.get(); } + // All of the timezones in the world, according to zone.tab + CalamaresUtils::Locale::ZonesModel* zonesModel() const { return m_zonesModel.get(); } + // This model can be filtered by region + CalamaresUtils::Locale::RegionalZonesModel* regionalZonesModel() const { return m_regionalZonesModel.get(); } + + const CalamaresUtils::Locale::TimeZoneData* currentLocation() const { return m_currentLocation; } /// Special case, set location from starting timezone if not already set void setCurrentLocation(); @@ -111,20 +111,17 @@ public Q_SLOTS: * names a zone within that region. */ void setCurrentLocation( const QString& region, const QString& zone ); - /** @brief Sets a location by pointer + + /** @brief Sets a location by pointer to zone data. * - * Pointer should be within the same model as the widget uses. - * This can update the locale configuration -- the automatic one - * follows the current location, and otherwise only explicitly-set - * values will ignore changes to the location. */ - void setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ); + void setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* tz ); QString currentLanguageCode() const { return localeConfiguration().language(); } QString currentLCCode() const { return localeConfiguration().lc_numeric; } signals: - void currentLocationChanged( const CalamaresUtils::Locale::TZZone* location ) const; + void currentLocationChanged( const CalamaresUtils::Locale::TimeZoneData* location ) const; void currentLocationStatusChanged( const QString& ) const; void currentLanguageStatusChanged( const QString& ) const; void currentLCStatusChanged( const QString& ) const; @@ -137,12 +134,11 @@ private: QStringList m_localeGenLines; /// The regions (America, Asia, Europe ..) - std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; - /// The zones for the current region (e.g. America/New_York) - std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_zonesModel; + std::unique_ptr< CalamaresUtils::Locale::RegionsModel > m_regionModel; + std::unique_ptr< CalamaresUtils::Locale::ZonesModel > m_zonesModel; + std::unique_ptr< CalamaresUtils::Locale::RegionalZonesModel > m_regionalZonesModel; - /// The location, points into the timezone data - const CalamaresUtils::Locale::TZZone* m_currentLocation = nullptr; + const CalamaresUtils::Locale::TimeZoneData* m_currentLocation = nullptr; /** @brief Specific locale configurations * diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index c10b2dee9..d4ad6854e 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -43,7 +43,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) QBoxLayout* mainLayout = new QVBoxLayout; QBoxLayout* tzwLayout = new QHBoxLayout; - m_tzWidget = new TimeZoneWidget( config->timezoneData(), this ); + m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this ); tzwLayout->addStretch(); tzwLayout->addWidget( m_tzWidget ); tzwLayout->addStretch(); @@ -102,6 +102,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) // Set up the location before connecting signals, to avoid a signal // storm as various parts interact. m_regionCombo->setModel( m_config->regionModel() ); + m_zoneCombo->setModel( m_config->regionalZonesModel() ); locationChanged( m_config->currentLocation() ); // doesn't inform TZ widget m_tzWidget->setCurrentLocation( m_config->currentLocation() ); @@ -112,7 +113,7 @@ LocalePage::LocalePage( Config* config, QWidget* parent ) connect( m_tzWidget, &TimeZoneWidget::locationChanged, config, - QOverload< const CalamaresUtils::Locale::TZZone* >::of( &Config::setCurrentLocation ) ); + QOverload< const CalamaresUtils::Locale::TimeZoneData* >::of( &Config::setCurrentLocation ) ); connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged ); connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged ); @@ -152,35 +153,26 @@ LocalePage::regionChanged( int currentIndex ) { using namespace CalamaresUtils::Locale; - Q_UNUSED( currentIndex ) - QString selectedRegion = m_regionCombo->currentData().toString(); - - TZRegion* region = m_config->timezoneData().find< TZRegion >( selectedRegion ); - if ( !region ) + QString selectedRegion = m_regionCombo->itemData( currentIndex ).toString(); { - return; + cSignalBlocker z( m_zoneCombo ); + m_config->regionalZonesModel()->setRegion( selectedRegion ); } - - { - cSignalBlocker b( m_zoneCombo ); - m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); - } - - m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); + m_zoneCombo->currentIndexChanged( 0 ); } void LocalePage::zoneChanged( int currentIndex ) { - Q_UNUSED( currentIndex ) if ( !m_blockTzWidgetSet ) { - m_config->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() ); + m_config->setCurrentLocation( m_regionCombo->currentData().toString(), + m_zoneCombo->itemData( currentIndex ).toString() ); } } void -LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) +LocalePage::locationChanged( const CalamaresUtils::Locale::TimeZoneData* location ) { if ( !location ) { diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index bf41f8f69..4f2d321b5 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -53,7 +53,7 @@ private: void regionChanged( int currentIndex ); void zoneChanged( int currentIndex ); - void locationChanged( const CalamaresUtils::Locale::TZZone* location ); + void locationChanged( const CalamaresUtils::Locale::TimeZoneData* location ); void changeLocale(); void changeFormats(); diff --git a/src/modules/locale/Tests.cpp b/src/modules/locale/Tests.cpp index af37a664b..e7fbb10f2 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -22,6 +22,7 @@ #include "timezonewidget/TimeZoneImage.h" #include "locale/TimeZone.h" +#include "utils/Logger.h" #include @@ -115,37 +116,35 @@ LocaleTests::testTZImages() // // using namespace CalamaresUtils::Locale; - const CStringPairList& regions = TZRegion::fromZoneTab(); + const ZonesModel m; int overlapcount = 0; - for ( const auto* pr : regions ) + for ( auto it = m.begin(); it; ++it ) { - const TZRegion* region = dynamic_cast< const TZRegion* >( pr ); - QVERIFY( region ); + QString region = m.data( m.index( it.index() ), ZonesModel::RegionRole ).toString(); + QString zoneName = m.data( m.index( it.index() ), ZonesModel::KeyRole ).toString(); + QVERIFY( !region.isEmpty() ); + QVERIFY( !zoneName.isEmpty() ); + const auto* zone = m.find( region, zoneName ); + const auto* iterzone = *it; - Logger::setupLogLevel( Logger::LOGDEBUG ); - cDebug() << "Region" << region->region() << "zones #" << region->zones().count(); - Logger::setupLogLevel( Logger::LOGERROR ); + QVERIFY( iterzone ); + QVERIFY( zone ); + QCOMPARE( zone, iterzone ); + QCOMPARE( zone->zone(), zoneName ); + QCOMPARE( zone->region(), region ); - const auto zones = region->zones(); - QVERIFY( zones.count() > 0 ); - for ( const auto* pz : zones ) + int overlap = 0; + auto pos = images.getLocationPosition( zone->longitude(), zone->latitude() ); + QVERIFY( images.index( pos, overlap ) >= 0 ); + QVERIFY( overlap > 0 ); // At least one image contains the spot + if ( overlap > 1 ) { - const TZZone* zone = dynamic_cast< const TZZone* >( pz ); - QVERIFY( zone ); - - int overlap = 0; - auto pos = images.getLocationPosition( zone->longitude(), zone->latitude() ); - QVERIFY( images.index( pos, overlap ) >= 0 ); - QVERIFY( overlap > 0 ); // At least one image contains the spot - if ( overlap > 1 ) - { - Logger::setupLogLevel( Logger::LOGDEBUG ); - cDebug() << Logger::SubEntry << "Zone" << zone->zone() << pos; - (void)images.index( pos, overlap ); - Logger::setupLogLevel( Logger::LOGERROR ); - overlapcount++; - } + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << Logger::SubEntry << "Zone" << zone->zone() << pos; + (void)images.index( pos, overlap ); + Logger::setupLogLevel( Logger::LOGERROR ); + overlapcount++; } } @@ -168,12 +167,17 @@ operator<( const QPoint& l, const QPoint& r ) } void -listAll( const QPoint& p, const CalamaresUtils::Locale::CStringPairList& zones ) +listAll( const QPoint& p, const CalamaresUtils::Locale::ZonesModel& zones ) { using namespace CalamaresUtils::Locale; - for ( const auto* pz : zones ) + for ( auto it = zones.begin(); it; ++it ) { - const TZZone* zone = dynamic_cast< const TZZone* >( pz ); + const auto* zone = *it; + if ( !zone ) + { + cError() << Logger::SubEntry << "NULL zone"; + return; + } if ( p == TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ) ) { cError() << Logger::SubEntry << zone->zone(); @@ -185,78 +189,36 @@ void LocaleTests::testTZLocations() { using namespace CalamaresUtils::Locale; - const CStringPairList& regions = TZRegion::fromZoneTab(); + ZonesModel zones; int overlapcount = 0; - for ( const auto* pr : regions ) + for ( auto it = zones.begin(); it; ++it ) { - const TZRegion* region = dynamic_cast< const TZRegion* >( pr ); - QVERIFY( region ); - - Logger::setupLogLevel( Logger::LOGDEBUG ); - cDebug() << "Region" << region->region() << "zones #" << region->zones().count(); - Logger::setupLogLevel( Logger::LOGERROR ); - std::set< QPoint > occupied; - const auto zones = region->zones(); - QVERIFY( zones.count() > 0 ); - for ( const auto* pz : zones ) - { - const TZZone* zone = dynamic_cast< const TZZone* >( pz ); - QVERIFY( zone ); + const auto* zone = *it; + QVERIFY( zone ); - auto pos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); - if ( occupied.find( pos ) != occupied.end() ) - { - cError() << "Zone" << zone->zone() << "occupies same spot as .."; - listAll( pos, zones ); - overlapcount++; - } - occupied.insert( pos ); + auto pos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); + if ( occupied.find( pos ) != occupied.end() ) + { + cError() << "Zone" << zone->zone() << "occupies same spot as .."; + listAll( pos, zones ); + overlapcount++; } + occupied.insert( pos ); } QEXPECT_FAIL( "", "TZ Images contain pixel-overlaps", Continue ); QCOMPARE( overlapcount, 0 ); } -const CalamaresUtils::Locale::TZZone* -findZone( const QString& name ) -{ - using namespace CalamaresUtils::Locale; - const CStringPairList& regions = TZRegion::fromZoneTab(); - - for ( const auto* pr : regions ) - { - const TZRegion* region = dynamic_cast< const TZRegion* >( pr ); - if ( !region ) - { - continue; - } - const auto zones = region->zones(); - for ( const auto* pz : zones ) - { - const TZZone* zone = dynamic_cast< const TZZone* >( pz ); - if ( !zone ) - { - continue; - } - - if ( zone->zone() == name ) - { - return zone; - } - } - } - return nullptr; -} - void LocaleTests::testSpecificLocations() { - const auto* gibraltar = findZone( "Gibraltar" ); - const auto* ceuta = findZone( "Ceuta" ); + CalamaresUtils::Locale::ZonesModel zones; + const auto* gibraltar = zones.find( "Europe", "Gibraltar" ); + const auto* ceuta = zones.find( "Africa", "Ceuta" ); QVERIFY( gibraltar ); QVERIFY( ceuta ); diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 0972e3296..b1d3cfeaa 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -35,13 +35,13 @@ #endif static QPoint -getLocationPosition( const CalamaresUtils::Locale::TZZone* l ) +getLocationPosition( const CalamaresUtils::Locale::TimeZoneData* l ) { return TimeZoneImageList::getLocationPosition( l->longitude(), l->latitude() ); } -TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& zones, QWidget* parent ) +TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::ZonesModel* zones, QWidget* parent ) : QWidget( parent ) , timeZoneImages( TimeZoneImageList::fromQRC() ) , m_zonesData( zones ) @@ -65,7 +65,7 @@ TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& z void -TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) +TimeZoneWidget::setCurrentLocation( const TimeZoneData* location ) { if ( location == m_currentLocation ) { @@ -190,32 +190,24 @@ TimeZoneWidget::mousePressEvent( QMouseEvent* event ) { return; } - // Set nearest location int nX = 999999, mX = event->pos().x(); int nY = 999999, mY = event->pos().y(); using namespace CalamaresUtils::Locale; - const TZZone* closest = nullptr; - for ( const auto* region_p : m_zonesData ) + const TimeZoneData* closest = nullptr; + for ( auto it = m_zonesData->begin(); it; ++it ) { - const auto* region = dynamic_cast< const TZRegion* >( region_p ); - if ( region ) + const auto* zone = *it; + if ( zone ) { - for ( const auto* zone_p : region->zones() ) - { - const auto* zone = dynamic_cast< const TZZone* >( zone_p ); - if ( zone ) - { - QPoint locPos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); + QPoint locPos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); - if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) ) - { - closest = zone; - nX = locPos.x(); - nY = locPos.y(); - } - } + if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) ) + { + closest = zone; + nX = locPos.x(); + nY = locPos.y(); } } } diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 6bb94c0dd..c15570b52 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -51,28 +51,28 @@ class TimeZoneWidget : public QWidget { Q_OBJECT public: - using TZZone = CalamaresUtils::Locale::TZZone; + using TimeZoneData = CalamaresUtils::Locale::TimeZoneData; - explicit TimeZoneWidget( const CalamaresUtils::Locale::CStringPairList& zones, QWidget* parent = nullptr ); + explicit TimeZoneWidget( const CalamaresUtils::Locale::ZonesModel* zones, QWidget* parent = nullptr ); public Q_SLOTS: /** @brief Sets a location by pointer * * Pointer should be within the same model as the widget uses. */ - void setCurrentLocation( const TZZone* location ); + void setCurrentLocation( const TimeZoneData* location ); signals: /** @brief The location has changed by mouse click */ - void locationChanged( const TZZone* location ); + void locationChanged( const TimeZoneData* location ); private: QFont font; QImage background, pin, currentZoneImage; TimeZoneImageList timeZoneImages; - const CalamaresUtils::Locale::CStringPairList& m_zonesData; - const TZZone* m_currentLocation = nullptr; // Not owned by me + const CalamaresUtils::Locale::ZonesModel* m_zonesData; + const TimeZoneData* m_currentLocation = nullptr; // Not owned by me void paintEvent( QPaintEvent* event ); void mousePressEvent( QMouseEvent* event ); From ab69e7c83a35e729a356139ca34210847765c26d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 01:52:50 +0200 Subject: [PATCH 180/399] [libcalamares] Add API for geographical lookup - find a zone given lat, lon -- with a failing test and a bogus implementation. --- src/libcalamares/locale/Tests.cpp | 10 ++++++++++ src/libcalamares/locale/TimeZone.cpp | 6 ++++++ src/libcalamares/locale/TimeZone.h | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index dde199a7f..081d0ced5 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -52,6 +52,7 @@ private Q_SLOTS: void testComplexZones(); void testTZLookup(); void testTZIterator(); + void testLocationLookup(); }; LocaleTests::LocaleTests() {} @@ -389,6 +390,15 @@ LocaleTests::testTZIterator() QCOMPARE( ( *zones.begin() )->zone(), QStringLiteral( "Abidjan" ) ); } +void +LocaleTests::testLocationLookup() +{ + const CalamaresUtils::Locale::ZonesModel zones; + + QVERIFY( zones.find( 50.0, 0.0 ) ); + QCOMPARE( zones.find( 50.0, 0.0 )->zone(), QStringLiteral( "London" ) ); +} + QTEST_GUILESS_MAIN( LocaleTests ) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 974b73bfb..eaf7698ea 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -316,6 +316,12 @@ ZonesModel::find( const QString& region, const QString& zone ) const return nullptr; } +const TimeZoneData* +ZonesModel::find( double latitude, double longitude ) const +{ + return nullptr; +} + ZonesModel::Iterator::operator bool() const { return 0 <= m_index && m_index < m_p->m_zones.count(); diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 9b8569b21..55fdda60a 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -128,6 +128,12 @@ public: */ const TimeZoneData* find( const QString& region, const QString& zone ) const; + /** @brief Look up TZ data based on the location. + * + * Returns the nearest zone to the given lat and lon. + */ + const TimeZoneData* find( double latitude, double longitude ) const; + /** @brief Iterator for testing purposes * * This is primarily for testing, but who knows, it might be useful From 9e274aac07b4781a178b6428dbef72f82c8fe75a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 10:47:47 +0200 Subject: [PATCH 181/399] [libcalamares] Make ZonesModel more QML-friendly - expose TZ lookup (as a QObject*, which QML needs) - C++ code should use find(), which is safer --- src/libcalamares/locale/TimeZone.cpp | 36 ++++++++++++++++++++++--- src/libcalamares/locale/TimeZone.h | 39 ++++++++++++++++------------ 2 files changed, 54 insertions(+), 21 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index eaf7698ea..7143d7d33 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -35,6 +35,9 @@ namespace CalamaresUtils { namespace Locale { +class RegionData; +using RegionVector = QVector< RegionData* >; +using ZoneVector = QVector< TimeZoneData* >; /** @brief Turns a string longitude or latitude notation into a double * @@ -81,6 +84,7 @@ TimeZoneData::TimeZoneData( const QString& region, , m_latitude( latitude ) , m_longitude( longitude ) { + setObjectName( region + '/' + zone ); } QString @@ -105,9 +109,6 @@ RegionData::tr() const return QObject::tr( m_human, "tz_regions" ); } -using RegionVector = QVector< RegionData* >; -using ZoneVector = QVector< TimeZoneData* >; - static void loadTZData( RegionVector& regions, ZoneVector& zones ) { @@ -188,8 +189,10 @@ loadTZData( RegionVector& regions, ZoneVector& zones ) } -struct Private +class Private : public QObject { + Q_OBJECT +public: RegionVector m_regions; ZoneVector m_zones; @@ -210,6 +213,11 @@ struct Private } return lhs->region() < rhs->region(); } ); + + for ( auto* z : m_zones ) + { + z->setParent( this ); + } } }; @@ -322,6 +330,22 @@ ZonesModel::find( double latitude, double longitude ) const return nullptr; } +QObject* +ZonesModel::lookup( double latitude, double longitude ) const +{ + const auto* p = find( latitude, longitude ); + if ( !p ) + { + p = find( "America", "New_York" ); + } + if ( !p ) + { + cWarning() << "No zone (not even New York) found, expect crashes."; + } + return const_cast< QObject* >( reinterpret_cast< const QObject* >( p ) ); +} + + ZonesModel::Iterator::operator bool() const { return 0 <= m_index && m_index < m_p->m_zones.count(); @@ -376,3 +400,7 @@ RegionalZonesModel::filterAcceptsRow( int sourceRow, const QModelIndex& ) const } // namespace Locale } // namespace CalamaresUtils + +#include "utils/moc-warnings.h" + +#include "TimeZone.moc" diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 55fdda60a..1a4ee03bf 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -35,7 +35,7 @@ namespace CalamaresUtils { namespace Locale { -struct Private; +class Private; class RegionalZonesModel; class ZonesModel; @@ -122,22 +122,7 @@ public: QHash< int, QByteArray > roleNames() const override; - /** @brief Look up TZ data based on its name. - * - * Returns @c nullptr if not found. - */ - const TimeZoneData* find( const QString& region, const QString& zone ) const; - - /** @brief Look up TZ data based on the location. - * - * Returns the nearest zone to the given lat and lon. - */ - const TimeZoneData* find( double latitude, double longitude ) const; - - /** @brief Iterator for testing purposes - * - * This is primarily for testing, but who knows, it might be useful - * elsewhere, and it's convenient when it can access Private. + /** @brief Iterator for the underlying list of zones * * Iterates over all the zones in the model. Operator * may return * a @c nullptr when the iterator is not valid. Typical usage: @@ -171,6 +156,26 @@ public: Iterator begin() const { return Iterator( m_private ); } +public Q_SLOTS: + /** @brief Look up TZ data based on its name. + * + * Returns @c nullptr if not found. + */ + const TimeZoneData* find( const QString& region, const QString& zone ) const; + + /** @brief Look up TZ data based on the location. + * + * Returns the nearest zone to the given lat and lon. + */ + const TimeZoneData* find( double latitude, double longitude ) const; + + /** @brief Look up TZ data based on the location. + * + * Returns the nearest zone, or New York. This is non-const for QML + * purposes, but the object should be considered const anyway. + */ + QObject* lookup( double latitude, double longitude ) const; + private: Private* m_private; }; From 296337d45dc44a61decf92f00e602af846cb2490 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 11:57:05 +0200 Subject: [PATCH 182/399] [libcalamares] Implement nearest-TZ lookup - This version, based on lat+lon lookup, handles wrap-around the globe at -180 W (which is very close to +180 E) - Test wrap-around-the-globe lookups --- src/libcalamares/locale/Tests.cpp | 15 +++++++++-- src/libcalamares/locale/TimeZone.cpp | 37 +++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 081d0ced5..e498ac039 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -395,8 +395,19 @@ LocaleTests::testLocationLookup() { const CalamaresUtils::Locale::ZonesModel zones; - QVERIFY( zones.find( 50.0, 0.0 ) ); - QCOMPARE( zones.find( 50.0, 0.0 )->zone(), QStringLiteral( "London" ) ); + const auto* zone = zones.find( 50.0, 0.0 ); + QVERIFY( zone ); + QCOMPARE( zone->zone(), QStringLiteral( "London" ) ); + + + // Tarawa is close to "the other side of the world" from London + zone = zones.find( 0.0, 179.0 ); + QVERIFY( zone ); + QCOMPARE( zone->zone(), QStringLiteral( "Tarawa" ) ); + + zone = zones.find( 0.0, -179.0 ); + QVERIFY( zone ); + QCOMPARE( zone->zone(), QStringLiteral( "Tarawa" ) ); } diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 7143d7d33..364564232 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -327,7 +327,42 @@ ZonesModel::find( const QString& region, const QString& zone ) const const TimeZoneData* ZonesModel::find( double latitude, double longitude ) const { - return nullptr; + /* This is a somewhat derpy way of finding "closest", + * in that it considers one degree of separation + * either N/S or E/W equal to any other; this obviously + * falls apart at the poles. + */ + + double largestDifference = 720.0; + const TimeZoneData* closest = nullptr; + + for ( const auto* zone : m_private->m_zones ) + { + // Latitude doesn't wrap around: there is nothing north of 90 + double latitudeDifference = abs( zone->latitude() - latitude ); + + // Longitude **does** wrap around, so consider the case of -178 and 178 + // which differ by 4 degrees. + double westerly = qMin( zone->longitude(), longitude ); + double easterly = qMax( zone->longitude(), longitude ); + double longitudeDifference = 0.0; + if ( westerly < 0.0 && !( easterly < 0.0 ) ) + { + // Only if they're different signs can we have wrap-around. + longitudeDifference = qMin( abs( westerly - easterly ), abs( 360.0 + westerly - easterly ) ); + } + else + { + longitudeDifference = abs( westerly - easterly ); + } + + if ( latitudeDifference + longitudeDifference < largestDifference ) + { + largestDifference = latitudeDifference + longitudeDifference; + closest = zone; + } + } + return closest; } QObject* From ad3c0de936854cfda3396af0f400dff2a372dc1e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 12:43:49 +0200 Subject: [PATCH 183/399] [libcalamares] Reduce logging in POD manipulation --- src/libcalamares/geoip/Interface.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libcalamares/geoip/Interface.cpp b/src/libcalamares/geoip/Interface.cpp index f8649f37a..47c826e1a 100644 --- a/src/libcalamares/geoip/Interface.cpp +++ b/src/libcalamares/geoip/Interface.cpp @@ -47,7 +47,6 @@ splitTZString( const QString& tz ) QStringList tzParts = timezoneString.split( '/', SplitSkipEmptyParts ); if ( tzParts.size() >= 2 ) { - cDebug() << "GeoIP reporting" << timezoneString; QString region = tzParts.takeFirst(); QString zone = tzParts.join( '/' ); return RegionZonePair( region, zone ); From 21f97db8fd95265ad9eada8f807673428b3350ce Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 14:19:27 +0200 Subject: [PATCH 184/399] [libcalamares] Offer translation lookup of regions --- src/libcalamares/locale/TimeZone.cpp | 12 ++++++++++++ src/libcalamares/locale/TimeZone.h | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 364564232..e2779281f 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -268,6 +268,18 @@ RegionsModel::roleNames() const return { { NameRole, "name" }, { KeyRole, "key" } }; } +QString +RegionsModel::tr( const QString& region ) const +{ + for ( const auto* p : m_private->m_regions ) + { + if ( p->key() == region ) + { + return p->tr(); + } + } + return region; +} ZonesModel::ZonesModel( QObject* parent ) : QAbstractListModel( parent ) diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 1a4ee03bf..1d4b4a8ff 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -47,6 +47,9 @@ class TimeZoneData : public QObject, TranslatableString Q_OBJECT Q_PROPERTY( QString region READ region CONSTANT ) + Q_PROPERTY( QString zone READ zone CONSTANT ) + Q_PROPERTY( QString name READ tr CONSTANT ) + Q_PROPERTY( QString countryCode READ country CONSTANT ) public: TimeZoneData( const QString& region, @@ -98,6 +101,14 @@ public: QHash< int, QByteArray > roleNames() const override; +public Q_SLOTS: + /** @brief Provides a human-readable version of the region + * + * Returns @p region unchanged if there is no such region + * or no translation for the region's name. + */ + QString tr( const QString& region ) const; + private: Private* m_private; }; From 04e53be934d13c08a63e4a5a12d8e0100ad15188 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 12:14:15 +0200 Subject: [PATCH 185/399] [locale] Repair test: don't re-init te occupied-pixels set each loop - while here, merge Tests.h to the cpp file - Fix build when debugging timezones (missed during earlier refactor) --- src/modules/locale/Config.cpp | 2 +- src/modules/locale/Tests.cpp | 30 ++++++++++++++++++++--- src/modules/locale/Tests.h | 45 ----------------------------------- 3 files changed, 28 insertions(+), 49 deletions(-) delete mode 100644 src/modules/locale/Tests.h diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 96d279477..b8a6df437 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -368,7 +368,7 @@ getAdjustLiveTimezone( const QVariantMap& configurationMap, bool& adjustLiveTime adjustLiveTimezone = CalamaresUtils::getBool( configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); #ifdef DEBUG_TIMEZONES - if ( m_adjustLiveTimezone ) + if ( adjustLiveTimezone ) { cWarning() << "Turning off live-timezone adjustments because debugging is on."; adjustLiveTimezone = false; diff --git a/src/modules/locale/Tests.cpp b/src/modules/locale/Tests.cpp index e7fbb10f2..de0be57c4 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -17,7 +17,6 @@ */ -#include "Tests.h" #include "LocaleConfiguration.h" #include "timezonewidget/TimeZoneImage.h" @@ -28,6 +27,26 @@ #include +class LocaleTests : public QObject +{ + Q_OBJECT +public: + LocaleTests(); + ~LocaleTests() override; + +private Q_SLOTS: + void initTestCase(); + // Check the sample config file is processed correctly + void testEmptyLocaleConfiguration(); + void testDefaultLocaleConfiguration(); + void testSplitLocaleConfiguration(); + + // Check the TZ images for consistency + void testTZImages(); // No overlaps in images + void testTZLocations(); // No overlaps in locations + void testSpecificLocations(); +}; + QTEST_MAIN( LocaleTests ) @@ -191,11 +210,12 @@ LocaleTests::testTZLocations() using namespace CalamaresUtils::Locale; ZonesModel zones; + QVERIFY( zones.rowCount( QModelIndex() ) > 100 ); + int overlapcount = 0; + std::set< QPoint > occupied; for ( auto it = zones.begin(); it; ++it ) { - std::set< QPoint > occupied; - const auto* zone = *it; QVERIFY( zone ); @@ -230,3 +250,7 @@ LocaleTests::testSpecificLocations() QEXPECT_FAIL( "", "Gibraltar and Ceuta are really close", Continue ); QVERIFY( gpos.y() < cpos.y() ); // Gibraltar is north of Ceuta } + +#include "utils/moc-warnings.h" + +#include "Tests.moc" diff --git a/src/modules/locale/Tests.h b/src/modules/locale/Tests.h deleted file mode 100644 index e01b1a25c..000000000 --- a/src/modules/locale/Tests.h +++ /dev/null @@ -1,45 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2019-2020, Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - - -#ifndef TESTS_H -#define TESTS_H - -#include - -class LocaleTests : public QObject -{ - Q_OBJECT -public: - LocaleTests(); - ~LocaleTests() override; - -private Q_SLOTS: - void initTestCase(); - // Check the sample config file is processed correctly - void testEmptyLocaleConfiguration(); - void testDefaultLocaleConfiguration(); - void testSplitLocaleConfiguration(); - - // Check the TZ images for consistency - void testTZImages(); // No overlaps in images - void testTZLocations(); // No overlaps in locations - void testSpecificLocations(); -}; - -#endif From b36ad4c7f4c7e96718e67303690b27777d56da35 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 12:32:48 +0200 Subject: [PATCH 186/399] [locale] Add test for Config initialization - needs some massaging because Config otherwise depends on ModuleManager which is a UI class (for the Reasons), but we already have a BUILD_AS_TEST define for that purpose. - demonstrate a nullptr deref. --- src/modules/locale/CMakeLists.txt | 2 ++ src/modules/locale/Config.cpp | 2 ++ src/modules/locale/Tests.cpp | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index a09bde282..6f965f041 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -36,7 +36,9 @@ calamares_add_test( localetest SOURCES Tests.cpp + Config.cpp LocaleConfiguration.cpp + SetTimezoneJob.cpp timezonewidget/TimeZoneImage.cpp DEFINITIONS SOURCE_DIR="${CMAKE_CURRENT_LIST_DIR}/images" diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index b8a6df437..ecd704186 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -436,11 +436,13 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) getStartingTimezone( configurationMap, m_startingTimezone ); getGeoIP( configurationMap, m_geoip ); +#ifndef BUILD_AS_TEST if ( m_geoip && m_geoip->isValid() ) { connect( Calamares::ModuleManager::instance(), &Calamares::ModuleManager::modulesLoaded, this, &Config::startGeoIP ); } +#endif } Calamares::JobList diff --git a/src/modules/locale/Tests.cpp b/src/modules/locale/Tests.cpp index de0be57c4..52d4882a2 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -16,7 +16,7 @@ * along with Calamares. If not, see . */ - +#include "Config.h" #include "LocaleConfiguration.h" #include "timezonewidget/TimeZoneImage.h" @@ -45,6 +45,9 @@ private Q_SLOTS: void testTZImages(); // No overlaps in images void testTZLocations(); // No overlaps in locations void testSpecificLocations(); + + // Check the Config loading + void testConfigInitialization(); }; QTEST_MAIN( LocaleTests ) @@ -251,6 +254,16 @@ LocaleTests::testSpecificLocations() QVERIFY( gpos.y() < cpos.y() ); // Gibraltar is north of Ceuta } +void +LocaleTests::testConfigInitialization() +{ + Config c; + + QVERIFY( !c.currentLocation() ); + QVERIFY( !c.currentLocationStatus().isEmpty() ); +} + + #include "utils/moc-warnings.h" #include "Tests.moc" From eda14ce548b2fd0a0d397c6956c64b50dd0d38f5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 12:38:55 +0200 Subject: [PATCH 187/399] [locale] Avoid nullptr deref - when no location has been set at all, there's no sensible TZ to report; just leave it blank. In *practice* you won't hit this code from the Calamares UI before a location has been set, because the Config object is instantiated and then immediately configured, but from tests or unusual UIs it could be. --- src/modules/locale/Config.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index ecd704186..a6d3e5222 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -318,7 +318,9 @@ Config::setLCLocaleExplicitly( const QString& locale ) QString Config::currentLocationStatus() const { - return tr( "Set timezone to %1/%2." ).arg( m_currentLocation->region(), m_currentLocation->zone() ); + return tr( "Set timezone to %1/%2." ) + .arg( m_currentLocation ? m_currentLocation->region() : QString(), + m_currentLocation ? m_currentLocation->zone() : QString() ); } static inline QString From 15a8d629864d3de473b02b59fd6dec30b14a88db Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 12:40:24 +0200 Subject: [PATCH 188/399] [locale] Add a 'current timezone' strings to Config - status is a longer phrase - name is a short human-readable name - code is the internal code Code that writes its own "Timezone set to" messages can use the name, rather than the status. --- src/modules/locale/Config.cpp | 25 +++++++++++++++++++++++++ src/modules/locale/Config.h | 9 +++++++++ 2 files changed, 34 insertions(+) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index a6d3e5222..228f863e5 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -192,6 +192,9 @@ Config::Config( QObject* parent ) QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location->region() + '/' + location->zone() } ); } + + emit currentTimezoneCodeChanged( currentTimezoneCode() ); + emit currentTimezoneNameChanged( currentTimezoneName() ); } ); auto prettyStatusNotify = [&]() { emit prettyStatusChanged( prettyStatus() ); }; @@ -265,6 +268,7 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* location emit currentLCStatusChanged( currentLCStatus() ); } emit currentLocationChanged( m_currentLocation ); + // Other signals come from the LocationChanged signal } } @@ -323,6 +327,27 @@ Config::currentLocationStatus() const m_currentLocation ? m_currentLocation->zone() : QString() ); } +QString +Config::currentTimezoneCode() const +{ + if ( m_currentLocation ) + { + return m_currentLocation->region() + '/' + m_currentLocation->zone(); + } + return QString(); +} + +QString +Config::currentTimezoneName() const +{ + if ( m_currentLocation ) + { + return m_regionModel->tr( m_currentLocation->region() ) + '/' + m_currentLocation->tr(); + } + return QString(); +} + + static inline QString localeLabel( const QString& s ) { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index fccd3822e..5754cde8d 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -48,7 +48,12 @@ class Config : public QObject Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged ) Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged ) + // Name are shorter human-readable names + // .. main difference is that status is a full sentence, like "Timezone is America/New York" + // while name is just "America/New York" (and the code, below, is "America/New_York") + Q_PROPERTY( QString currentTimezoneName READ currentTimezoneName NOTIFY currentTimezoneNameChanged ) // Code are internal identifiers, like "en_US.UTF-8" + Q_PROPERTY( QString currentTimezoneCode READ currentTimezoneCode NOTIFY currentTimezoneCodeChanged ) Q_PROPERTY( QString currentLanguageCode READ currentLanguageCode WRITE setLanguageExplicitly NOTIFY currentLanguageCodeChanged ) Q_PROPERTY( QString currentLCCode READ currentLCCode WRITE setLCLocaleExplicitly NOTIFY currentLCCodeChanged ) @@ -119,6 +124,8 @@ public Q_SLOTS: QString currentLanguageCode() const { return localeConfiguration().language(); } QString currentLCCode() const { return localeConfiguration().lc_numeric; } + QString currentTimezoneName() const; // human-readable + QString currentTimezoneCode() const; signals: void currentLocationChanged( const CalamaresUtils::Locale::TimeZoneData* location ) const; @@ -128,6 +135,8 @@ signals: void prettyStatusChanged( const QString& ) const; void currentLanguageCodeChanged( const QString& ) const; void currentLCCodeChanged( const QString& ) const; + void currentTimezoneCodeChanged( const QString& ) const; + void currentTimezoneNameChanged( const QString& ) const; private: /// A list of supported locale identifiers (e.g. "en_US.UTF-8") From 91cc5a2b4225d8a3a4f35dc90bebbd213ee217c9 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 14:47:55 +0200 Subject: [PATCH 189/399] [locale] Update the map-QML implementation - Config has suitable strings for displaying TZ information. Use them and automatic bindings. Don't update the strings manually. - Suggest online or offline TZ lookups based on what the distro wants. Edit the QML to pick online lookups (needs access to the geonames service, though). - Drop the variables that point at config and geoip: the Config object has a currentLocation, which is filled in by both the configuration and any GeoIP lookup -- it doesn't have city or country information though. --- src/modules/localeq/Map.qml | 53 ++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index 080d7388a..06b4f7a1f 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -29,17 +29,12 @@ import QtPositioning 5.14 Column { width: parent.width - //Needs to come from .conf/geoip - property var configCity: "New York" - property var configCountry: "USA" - property var configTimezone: "America/New York" - property var geoipCity: "" //"Amsterdam" - property var geoipCountry: "" //"Netherlands" - property var geoipTimezone: "" //"Europe/Amsterdam" - // vars that will stay once connected - property var cityName: (geoipCity != "") ? geoipCity : configCity - property var countryName: (geoipCountry != "") ? geoipCountry : configCountry - property var timeZone: (geoipTimezone != "") ? geoipTimezone : configTimezone + // These are used by the map query to initially center the + // map on the user's likely location. They are updated by + // getIp() which does a more accurate GeoIP lookup than + // the default one in Calamares + property var cityName: "" + property var countryName: "" function getIp() { var xhr = new XMLHttpRequest @@ -51,9 +46,10 @@ Column { var ct = responseJSON.city var cy = responseJSON.country - tzText.text = "Timezone: " + tz cityName = ct countryName = cy + + config.setCurrentLocation(tz) } } @@ -63,7 +59,15 @@ Column { xhr.send() } - function getTz() { + /* This is an **accurate** TZ lookup method: it queries an + * online service for the TZ at the given coordinates. It + * requires an internet connection, though, and the distribution + * will need to have an account with geonames to not hit the + * daily query limit. + * + * See below, in MouseArea, for calling the right method. + */ + function getTzOnline() { var xhr = new XMLHttpRequest var latC = map.center.latitude var lonC = map.center.longitude @@ -73,16 +77,29 @@ Column { var responseJSON = JSON.parse(xhr.responseText) var tz2 = responseJSON.timezoneId - tzText.text = "Timezone: " + tz2 config.setCurrentLocation(tz2) } } + console.log("Online lookup", latC, lonC) // Needs to move to localeq.conf, each distribution will need their own account xhr.open("GET", "http://api.geonames.org/timezoneJSON?lat=" + latC + "&lng=" + lonC + "&username=SOME_USERNAME") xhr.send() } + /* This is a quick TZ lookup method: it uses the existing + * Calamares "closest TZ" code, which has lots of caveats. + * + * See below, in MouseArea, for calling the right method. + */ + function getTzOffline() { + var latC = map.center.latitude + var lonC = map.center.longitude + var tz = config.zonesModel.lookup(latC, lonC) + console.log("Offline lookup", latC, lonC) + config.setCurrentLocation(tz.region, tz.zone) + } + Rectangle { width: parent.width height: parent.height / 1.28 @@ -156,9 +173,8 @@ Column { map.center.latitude = coordinate.latitude map.center.longitude = coordinate.longitude - getTz(); - - console.log(coordinate.latitude, coordinate.longitude) + // Pick a TZ lookup method here (quick:offline, accurate:online) + getTzOffline(); } } } @@ -218,8 +234,7 @@ Column { Text { id: tzText - text: tzText.text - //text: qsTr("Timezone: %1").arg(timeZone) + text: qsTr("Timezone: %1").arg(config.currentTimezoneName) color: Kirigami.Theme.textColor anchors.centerIn: parent } From 32c8338a9ce540b9306a6610b3ff9843f6adb8bd Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 15:58:11 +0200 Subject: [PATCH 190/399] [locale] QML doesn't like const --- src/modules/locale/Config.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 5754cde8d..2a44f4d24 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -42,7 +42,7 @@ class Config : public QObject Q_PROPERTY( QAbstractItemModel* regionalZonesModel READ regionalZonesModel CONSTANT FINAL ) Q_PROPERTY( - const CalamaresUtils::Locale::TimeZoneData* currentLocation READ currentLocation NOTIFY currentLocationChanged ) + CalamaresUtils::Locale::TimeZoneData* currentLocation READ currentLocation_c NOTIFY currentLocationChanged ) // Status are complete, human-readable, messages Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged ) @@ -94,9 +94,16 @@ public: const CalamaresUtils::Locale::TimeZoneData* currentLocation() const { return m_currentLocation; } + /// Special case, set location from starting timezone if not already set void setCurrentLocation(); +private: + CalamaresUtils::Locale::TimeZoneData* currentLocation_c() const + { + return const_cast< CalamaresUtils::Locale::TimeZoneData* >( m_currentLocation ); + } + public Q_SLOTS: /// Set a language by user-choice, overriding future location changes void setLanguageExplicitly( const QString& language ); From 71ca1e154438b62deddeb5505509c9321d3eb288 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 15:49:55 +0200 Subject: [PATCH 191/399] [localeq] Pick up Config changes before showing the module --- src/modules/localeq/LocaleQmlViewStep.cpp | 9 ++++++++- src/modules/localeq/LocaleQmlViewStep.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index ead2e2673..cbcc5f78e 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -79,9 +79,16 @@ LocaleQmlViewStep::jobs() const return m_config->createJobs(); } +void +LocaleQmlViewStep::onActivate() +{ + m_config->setCurrentLocation(); // Finalize the location + QmlViewStep::onActivate(); +} + void LocaleQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_config->setConfigurationMap( configurationMap ); - Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last + QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last } diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index 3d73c6f79..e2b8a9e13 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -43,6 +43,8 @@ public: bool isAtBeginning() const override; bool isAtEnd() const override; + virtual void onActivate() override; + Calamares::JobList jobs() const override; void setConfigurationMap( const QVariantMap& configurationMap ) override; From c69bd972e9f9b96fe1028f164e2a507d7c0b8f99 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 16:05:58 +0200 Subject: [PATCH 192/399] [localeq] Demonstrate "offline" lookups - we can do GeoIP and GeoNames lookups, **or** - use Calamares's internal GeoIP lookup and country / city hints. The online version is much more accurate, but costs more lookups; in these examples, set it all to "offline" and document what needs to change (code edit) to use the online version. It's probably a good beginner job to introduce a bool in localeq.qml to switch the behaviors. --- src/modules/localeq/Map.qml | 23 +++++++++++++++++++++-- src/modules/localeq/localeq.qml | 8 ++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index 06b4f7a1f..d414825dd 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -36,7 +36,12 @@ Column { property var cityName: "" property var countryName: "" - function getIp() { + /* This is an extra GeoIP lookup, which will find better-accuracy + * location data for the user's IP, and then sets the current timezone + * and map location. Call it from Component.onCompleted so that + * it happens "on time" before the page is shown. + */ + function getIpOnline() { var xhr = new XMLHttpRequest xhr.onreadystatechange = function() { @@ -59,6 +64,16 @@ Column { xhr.send() } + /* This is an "offline" GeoIP lookup -- it just follows what + * Calamares itself has figured out with its GeoIP or configuration. + * Call it from the **Component** onActivate() -- in localeq.qml -- + * so it happens as the page is shown. + */ + function getIpOffline() { + cityName = config.currentLocation.zone + countryName = config.currentLocation.countryCode + } + /* This is an **accurate** TZ lookup method: it queries an * online service for the TZ at the given coordinates. It * requires an internet connection, though, and the distribution @@ -239,7 +254,11 @@ Column { anchors.centerIn: parent } - Component.onCompleted: getIp(); + /* If you want an extra (and accurate) GeoIP lookup, + * enable this one and disable the offline lookup in + * onActivate(). + Component.onCompleted: getIpOnline(); + */ } } diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index 49719db65..1a250f5c1 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -29,6 +29,14 @@ Page { width: 800 height: 550 + function onActivate() { + /* If you want the map to follow Calamares's GeoIP + * lookup or configuration, call the update function + * here, and disable the one at onCompleted in Map.qml. + */ + if (Network.hasInternet) { image.item.getIpOffline() } + } + Loader { id: image anchors.horizontalCenter: parent.horizontalCenter From 52d1c8f88a077170f7f7e11d0f5b61b82e68e0b6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 18:32:51 +0200 Subject: [PATCH 193/399] [locale] Explicitly update GS from the locale step - refactor into some free functions (out of the lambda's for connecting) - introduce new method to call from onLeave(), matching previous widget behavior --- src/modules/locale/Config.cpp | 70 +++++++++++++++++------ src/modules/locale/Config.h | 1 + src/modules/locale/LocaleViewStep.cpp | 2 + src/modules/localeq/LocaleQmlViewStep.cpp | 6 ++ src/modules/localeq/LocaleQmlViewStep.h | 1 + 5 files changed, 62 insertions(+), 18 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 228f863e5..5bbe20038 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -148,6 +148,45 @@ loadLocales( const QString& localeGenPath ) return localeGenLines; } +static bool +updateGSLocation( Calamares::GlobalStorage* gs, const CalamaresUtils::Locale::TimeZoneData* location ) +{ + const QString regionKey = QStringLiteral( "locationRegion" ); + const QString zoneKey = QStringLiteral( "locationZone" ); + + if ( !location ) + { + if ( gs->contains( regionKey ) || gs->contains( zoneKey ) ) + { + gs->remove( regionKey ); + gs->remove( zoneKey ); + return true; + } + return false; + } + + // Update the GS region and zone (and possibly the live timezone) + bool locationChanged + = ( location->region() != gs->value( regionKey ) ) || ( location->zone() != gs->value( zoneKey ) ); + + gs->insert( regionKey, location->region() ); + gs->insert( zoneKey, location->zone() ); + + return locationChanged; +} + +static void +updateGSLocale( Calamares::GlobalStorage* gs, const LocaleConfiguration& locale ) +{ + auto map = locale.toMap(); + QVariantMap vm; + for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) + { + vm.insert( it.key(), it.value() ); + } + gs->insert( "localeConf", vm ); +} + Config::Config( QObject* parent ) : QObject( parent ) , m_regionModel( std::make_unique< CalamaresUtils::Locale::RegionsModel >() ) @@ -166,31 +205,17 @@ Config::Config( QObject* parent ) } ); connect( this, &Config::currentLCCodeChanged, [&]() { - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - // Update GS localeConf (the LC_ variables) - auto map = localeConfiguration().toMap(); - QVariantMap vm; - for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) - { - vm.insert( it.key(), it.value() ); - } - gs->insert( "localeConf", vm ); + updateGSLocale( Calamares::JobQueue::instance()->globalStorage(), localeConfiguration() ); } ); connect( this, &Config::currentLocationChanged, [&]() { - auto* gs = Calamares::JobQueue::instance()->globalStorage(); + const bool locationChanged + = updateGSLocation( Calamares::JobQueue::instance()->globalStorage(), currentLocation() ); - // Update the GS region and zone (and possibly the live timezone) - const auto* location = currentLocation(); - bool locationChanged = ( location->region() != gs->value( "locationRegion" ) ) - || ( location->zone() != gs->value( "locationZone" ) ); - - gs->insert( "locationRegion", location->region() ); - gs->insert( "locationZone", location->zone() ); if ( locationChanged && m_adjustLiveTimezone ) { QProcess::execute( "timedatectl", // depends on systemd - { "set-timezone", location->region() + '/' + location->zone() } ); + { "set-timezone", currentTimezoneCode() } ); } emit currentTimezoneCodeChanged( currentTimezoneCode() ); @@ -487,6 +512,15 @@ Config::createJobs() return list; } +void +Config::finalizeGlobalStorage() const +{ + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + updateGSLocale( gs, localeConfiguration() ); + updateGSLocation( gs, currentLocation() ); +} + + void Config::startGeoIP() { diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 2a44f4d24..d95606d99 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -66,6 +66,7 @@ public: ~Config(); void setConfigurationMap( const QVariantMap& ); + void finalizeGlobalStorage() const; Calamares::JobList createJobs(); /// locale configuration (LC_* and LANG) based solely on the current location. diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index a85c87e4f..9ffb96c25 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -138,6 +138,7 @@ LocaleViewStep::jobs() const void LocaleViewStep::onActivate() { + m_config->setCurrentLocation(); // Finalize the location if ( !m_actualWidget ) { setUpPage(); @@ -149,6 +150,7 @@ LocaleViewStep::onActivate() void LocaleViewStep::onLeave() { + m_config->finalizeGlobalStorage(); } diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index cbcc5f78e..d60664a8f 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -86,6 +86,12 @@ LocaleQmlViewStep::onActivate() QmlViewStep::onActivate(); } +void +LocaleQmlViewStep::onLeave() +{ + m_config->finalizeGlobalStorage(); +} + void LocaleQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index e2b8a9e13..bbafd5abb 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -44,6 +44,7 @@ public: bool isAtEnd() const override; virtual void onActivate() override; + virtual void onLeave() override; Calamares::JobList jobs() const override; From c64aefe43c50bfafc2fd5f50fb60bfc7bb11d09a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 22:50:11 +0200 Subject: [PATCH 194/399] [libcalamares] Remove unused include, declaration --- src/libcalamares/GlobalStorage.cpp | 1 - src/libcalamares/GlobalStorage.h | 4 ---- 2 files changed, 5 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 341fc3892..07af5e1b1 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -22,7 +22,6 @@ */ #include "GlobalStorage.h" -#include "JobQueue.h" #include "utils/Logger.h" #include "utils/Units.h" diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index a2848f888..b242cc205 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -24,8 +24,6 @@ #ifndef CALAMARES_GLOBALSTORAGE_H #define CALAMARES_GLOBALSTORAGE_H -#include "CalamaresConfig.h" - #include #include #include @@ -33,8 +31,6 @@ namespace Calamares { -class DebugWindow; - class GlobalStorage : public QObject { Q_OBJECT From 527449a10215d78647089c6bb37520063b16c41f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 22:54:37 +0200 Subject: [PATCH 195/399] [libcalamares] Improve GS debugDump() formatting --- src/libcalamares/GlobalStorage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 07af5e1b1..f9716e661 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -88,9 +88,10 @@ GlobalStorage::value( const QString& key ) const void GlobalStorage::debugDump() const { + cDebug() << "GlobalStorage" << Logger::Pointer(this) << m.count() << "items"; for ( auto it = m.cbegin(); it != m.cend(); ++it ) { - cDebug() << it.key() << '\t' << it.value(); + cDebug() << Logger::SubEntry << it.key() << '\t' << it.value(); } } From 104452513bbb469d576c3cc9b8b1d9750b3b9342 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 23:14:44 +0200 Subject: [PATCH 196/399] [libcalamares] Document GS - write apidox for all of GlobalStorage - while here, polish up the SPDX bits --- src/libcalamares/GlobalStorage.cpp | 4 +- src/libcalamares/GlobalStorage.h | 91 +++++++++++++++++++++++++++--- 2 files changed, 84 insertions(+), 11 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index f9716e661..519b1d0d6 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -2,6 +2,7 @@ * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "GlobalStorage.h" diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index b242cc205..782d443d4 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -2,6 +2,7 @@ * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef CALAMARES_GLOBALSTORAGE_H @@ -31,21 +29,65 @@ namespace Calamares { +/** @brief Storage for data that passes between Calamares modules. + * + * The Global Storage is global to the Calamars JobQueue and + * everything that depends on that: all of its modules use the + * same instance of the JobQueue, and so of the Global Storage. + * + * GS is used to pass data between modules; there is only convention + * about what keys are used, and individual modules should document + * what they put in to GS or what they expect to find in it. + * + * GS behaves as a basic key-value store, with a QVariantMap behind + * it. Any QVariant can be put into the storage, and the signal + * changed() is emitted when any data is modified. + * + * In general, see QVariantMap (possibly after calling data()) for details. + * + * This class is not thread-safe, but as long as JobQueue is, that's ok + * because only one module is active at a time. + */ class GlobalStorage : public QObject { Q_OBJECT public: + /** @brief Create a GS object + * + * **Generally** there is only one GS object (hence, "global") which + * is owned by the JobQueue instance (which is a singleton). However, + * it is possible to create more GS objects. + */ explicit GlobalStorage( QObject* parent = nullptr ); - //NOTE: thread safety is guaranteed by JobQueue, which executes jobs one by one. - // If at any time jobs become concurrent, this class must be made thread-safe. + /** @brief Insert a key and value into the store + * + * The @p value is added to the store with key @p key. If @p key + * already exists in the store, its existing value is overwritten. + * The changed() signal is emitted regardless. + */ void insert( const QString& key, const QVariant& value ); + /** @brief Removes a key and its value + * + * The @p key is removed from the store. If the @p key does not + * exist, nothing happens. changed() is emitted regardless. + * + * @return the number of keys remaining + */ int remove( const QString& key ); - /// @brief dump keys and values to the debug log + /** @brief dump keys and values to the debug log + * + * All the keys and their values are written to the debug log. + * See save() for caveats: this can leak sensitive information. + */ void debugDump() const; /** @brief write as JSON to the given filename + * + * The file named @p filename is overwritten with a JSON representation + * of the entire global storage (this may be structured, for instance + * if maps or lists have been inserted). * * No tidying, sanitization, or censoring is done -- for instance, * the user module sets a slightly-obscured password in global storage, @@ -58,7 +100,8 @@ public: * * No tidying, sanitization, or censoring is done. * The JSON file is read and each key is added as a value to - * the global storage. + * the global storage. The storage is not cleared first: existing + * keys will remain; keys that also occur in the JSON file are overwritten. */ bool load( const QString& filename ); @@ -68,7 +111,10 @@ public: */ bool saveYaml( const QString& filename ); - /// @brief reads settings from the given filename + /** @brief reads settings from the given filename + * + * See also load(), above. + */ bool loadYaml( const QString& filename ); /** @brief Get internal mapping as a constant object @@ -80,12 +126,41 @@ public: const QVariantMap& data() const { return m; } public Q_SLOTS: + /** @brief Does the store contain the given key? + * + * This can distinguish an explicitly-inserted QVariant() from + * a no-value-exists QVariant. See value() for details. + */ bool contains( const QString& key ) const; + /** @brief The number of keys in the store + * + * This should be unsigned, but the underlying QMap uses signed as well. + * Equal to keys().length(), in theory. + */ int count() const; + /** @brief The keys in the store + * + * This makes a copy of all the keys currently in the store, which + * could be used for iterating over all the values in the store. + */ QStringList keys() const; + /** @brief Gets a value from the store + * + * If a value has been previously inserted, returns that value. + * If @p key does not exist in the store, returns a QVariant() + * (an invalid QVariant, which boolean-converts to false). Since + * QVariant() van also be inserted explicitly, use contains() + * to check for the presence of a key if you need that. + */ QVariant value( const QString& key ) const; signals: + /** @brief Emitted any time the store changes + * + * Also emitted sometimes when the store does not change, e.g. + * when removing a non-existent key or inserting a value that + * is already present. + */ void changed(); private: From 0121e3755b6cda034ecf759a12a7ed477617e0dc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 00:01:20 +0200 Subject: [PATCH 197/399] [libcalamares] GS improve load/save - save should be const - rename save() to saveJson() for parity with saveYaml() --- src/libcalamares/GlobalStorage.cpp | 6 +++--- src/libcalamares/GlobalStorage.h | 6 +++--- src/modules/preservefiles/PreserveFiles.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 519b1d0d6..a31a89b21 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -94,7 +94,7 @@ GlobalStorage::debugDump() const } bool -GlobalStorage::save( const QString& filename ) +GlobalStorage::saveJson( const QString& filename ) const { QFile f( filename ); if ( !f.open( QFile::WriteOnly ) ) @@ -108,7 +108,7 @@ GlobalStorage::save( const QString& filename ) } bool -GlobalStorage::load( const QString& filename ) +GlobalStorage::loadJson( const QString& filename ) { QFile f( filename ); if ( !f.open( QFile::ReadOnly ) ) @@ -139,7 +139,7 @@ GlobalStorage::load( const QString& filename ) } bool -GlobalStorage::saveYaml( const QString& filename ) +GlobalStorage::saveYaml( const QString& filename ) const { return CalamaresUtils::saveYaml( filename, m ); } diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index 782d443d4..14d5d41e9 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -94,7 +94,7 @@ public: * and this JSON file will contain that password in-the-only-slightly- * obscured form. */ - bool save( const QString& filename ); + bool saveJson( const QString& filename ) const; /** @brief Adds the keys from the given JSON file * @@ -103,13 +103,13 @@ public: * the global storage. The storage is not cleared first: existing * keys will remain; keys that also occur in the JSON file are overwritten. */ - bool load( const QString& filename ); + bool loadJson( const QString& filename ); /** @brief write as YAML to the given filename * * See also save(), above. */ - bool saveYaml( const QString& filename ); + bool saveYaml( const QString& filename ) const; /** @brief reads settings from the given filename * diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 8352e861d..7262630e0 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -138,7 +138,7 @@ PreserveFiles::exec() } if ( it.type == ItemType::Config ) { - if ( Calamares::JobQueue::instance()->globalStorage()->save( dest ) ) + if ( Calamares::JobQueue::instance()->globalStorage()->saveJson( dest ) ) { cWarning() << "Could not write config for" << dest; } From dc5d98af7d5c9c2b3ff36fa07912abf5f0331a46 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 23:27:04 +0200 Subject: [PATCH 198/399] [libcalamares] Address outdates assumptions about thread-safety --- src/libcalamares/GlobalStorage.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index 14d5d41e9..a12d78978 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -22,6 +22,7 @@ #ifndef CALAMARES_GLOBALSTORAGE_H #define CALAMARES_GLOBALSTORAGE_H +#include #include #include #include @@ -45,8 +46,11 @@ namespace Calamares * * In general, see QVariantMap (possibly after calling data()) for details. * - * This class is not thread-safe, but as long as JobQueue is, that's ok - * because only one module is active at a time. + * This class is thread-safe -- most accesses go through JobQueue, which + * handles threading itself, but because modules load in parallel and can + * have asynchronous tasks like GeoIP lookups, the storage itself also + * has locking. All methods are thread-safe, use data() to make a snapshot + * copy for use outside of the thread-safe API. */ class GlobalStorage : public QObject { @@ -117,13 +121,11 @@ public: */ bool loadYaml( const QString& filename ); - /** @brief Get internal mapping as a constant object + /** @brief Make a complete copy of the data * - * Note that the VariantMap underneath may change, because - * it's not constant in itself. Connect to the changed() - * signal for notifications. + * Provides a snapshot of the data at a given time. */ - const QVariantMap& data() const { return m; } + QVariantMap data() const { return m; } public Q_SLOTS: /** @brief Does the store contain the given key? @@ -164,7 +166,10 @@ signals: void changed(); private: + class ReadLock; + class WriteLock; QVariantMap m; + mutable QMutex m_mutex; }; } // namespace Calamares From ac713d8c4bdf07fb80d171a0fa1b6a58517d1c47 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 6 Aug 2020 23:48:18 +0200 Subject: [PATCH 199/399] [libcalamares] Apply locking to GS access --- src/libcalamares/GlobalStorage.cpp | 41 +++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index a31a89b21..6d3b33450 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -27,12 +27,35 @@ #include #include +#include using CalamaresUtils::operator""_MiB; namespace Calamares { +class GlobalStorage::ReadLock : public QMutexLocker +{ +public: + ReadLock( const GlobalStorage* gs ) + : QMutexLocker( &gs->m_mutex ) + { + } +}; + +class GlobalStorage::WriteLock : public QMutexLocker +{ +public: + WriteLock( GlobalStorage* gs ) + : QMutexLocker( &gs->m_mutex ) + , m_gs( gs ) + { + } + ~WriteLock() { m_gs->changed(); } + + GlobalStorage* m_gs; +}; + GlobalStorage::GlobalStorage( QObject* parent ) : QObject( parent ) { @@ -42,6 +65,7 @@ GlobalStorage::GlobalStorage( QObject* parent ) bool GlobalStorage::contains( const QString& key ) const { + ReadLock l( this ); return m.contains( key ); } @@ -49,6 +73,7 @@ GlobalStorage::contains( const QString& key ) const int GlobalStorage::count() const { + ReadLock l( this ); return m.count(); } @@ -56,14 +81,15 @@ GlobalStorage::count() const void GlobalStorage::insert( const QString& key, const QVariant& value ) { + WriteLock l( this ); m.insert( key, value ); - emit changed(); } QStringList GlobalStorage::keys() const { + ReadLock l( this ); return m.keys(); } @@ -71,8 +97,8 @@ GlobalStorage::keys() const int GlobalStorage::remove( const QString& key ) { + WriteLock l( this ); int nItems = m.remove( key ); - emit changed(); return nItems; } @@ -80,13 +106,15 @@ GlobalStorage::remove( const QString& key ) QVariant GlobalStorage::value( const QString& key ) const { + ReadLock l( this ); return m.value( key ); } void GlobalStorage::debugDump() const { - cDebug() << "GlobalStorage" << Logger::Pointer(this) << m.count() << "items"; + ReadLock l( this ); + cDebug() << "GlobalStorage" << Logger::Pointer( this ) << m.count() << "items"; for ( auto it = m.cbegin(); it != m.cend(); ++it ) { cDebug() << Logger::SubEntry << it.key() << '\t' << it.value(); @@ -96,6 +124,7 @@ GlobalStorage::debugDump() const bool GlobalStorage::saveJson( const QString& filename ) const { + ReadLock l( this ); QFile f( filename ); if ( !f.open( QFile::WriteOnly ) ) { @@ -128,6 +157,7 @@ GlobalStorage::loadJson( const QString& filename ) } else { + WriteLock l( this ); auto map = d.toVariant().toMap(); for ( auto i = map.constBegin(); i != map.constEnd(); ++i ) { @@ -141,6 +171,7 @@ GlobalStorage::loadJson( const QString& filename ) bool GlobalStorage::saveYaml( const QString& filename ) const { + ReadLock l( this ); return CalamaresUtils::saveYaml( filename, m ); } @@ -151,9 +182,11 @@ GlobalStorage::loadYaml( const QString& filename ) auto gs = CalamaresUtils::loadYaml( filename, &ok ); if ( ok ) { + WriteLock l( this ); m = gs; + return true; } - return ok; + return false; } From 3c618a9a192bcc39d26bb8ecba7795a41838c076 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 00:08:47 +0200 Subject: [PATCH 200/399] [libcalamares] Fix GS load behavior - the loadJson behavior did too many notifications, and was likely to deadlock; write directly to the map instead and emit only once. - the loadYaml method did something very different from its documentation or intent. --- src/libcalamares/GlobalStorage.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 6d3b33450..253a4d6ad 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -158,10 +158,13 @@ GlobalStorage::loadJson( const QString& filename ) else { WriteLock l( this ); + // Do **not** use method insert() here, because it would + // recursively lock the mutex, leading to deadlock. Also, + // that would emit changed() for each key. auto map = d.toVariant().toMap(); for ( auto i = map.constBegin(); i != map.constEnd(); ++i ) { - insert( i.key(), *i ); + m.insert( i.key(), *i ); } return true; } @@ -179,11 +182,17 @@ bool GlobalStorage::loadYaml( const QString& filename ) { bool ok = false; - auto gs = CalamaresUtils::loadYaml( filename, &ok ); + auto map = CalamaresUtils::loadYaml( filename, &ok ); if ( ok ) { WriteLock l( this ); - m = gs; + // Do **not** use method insert() here, because it would + // recursively lock the mutex, leading to deadlock. Also, + // that would emit changed() for each key. + for ( auto i = map.constBegin(); i != map.constEnd(); ++i ) + { + m.insert( i.key(), *i ); + } return true; } return false; From a44e6802e5a296f3b5d53a7ebd0d626b8d087d62 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 00:13:58 +0200 Subject: [PATCH 201/399] [libcalamares] Rename tests for consistency --- src/libcalamares/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 8e209f8a3..fef0b157a 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -216,19 +216,19 @@ endforeach() # # calamares_add_test( - libcalamarestest + libcalamaresutilstest SOURCES utils/Tests.cpp ) calamares_add_test( - libcalamarestestpaths + libcalamaresutilspathstest SOURCES utils/TestPaths.cpp ) calamares_add_test( - geoiptest + libcalamaresgeoiptest SOURCES geoip/GeoIPTests.cpp ${geoip_src} From dbc49f001eccb6882c4ab4b4ad8d8186a7fd7664 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 00:45:36 +0200 Subject: [PATCH 202/399] [libcalamares] Test GS - test insert, remove, emitted signals - test loading and saving of YAML and JSON This shows up a big bug in the YAML saving code (which was never used, it seems, anyway) --- src/libcalamares/CMakeLists.txt | 15 +++-- src/libcalamares/Tests.cpp | 115 ++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 src/libcalamares/Tests.cpp diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index fef0b157a..ff341bb56 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,6 +1,7 @@ # === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,12 +16,12 @@ # You should have received a copy of the GNU General Public License # along with Calamares. If not, see . # -# SPDX-License-Identifier: GPL-3.0-or-later -# License-Filename: LICENSE -# + # # libcalamares is the non-GUI part of Calamares, which includes handling -# translations, configurations, logging, utilities, global storage, and (non-GUI) jobs. +# translations, configurations, logging, utilities, global storage, and +# (non-GUI) jobs. +# add_definitions( -DDLLEXPORT_PRO ) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -215,6 +216,12 @@ endforeach() ### TESTING # # +calamares_add_test( + libcalamarestest + SOURCES + Tests.cpp +) + calamares_add_test( libcalamaresutilstest SOURCES diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp new file mode 100644 index 000000000..744e56113 --- /dev/null +++ b/src/libcalamares/Tests.cpp @@ -0,0 +1,115 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2018-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + * + */ + +#include "GlobalStorage.h" + +#include +#include +#include + +class TestLibCalamares : public QObject +{ + Q_OBJECT +public: + TestLibCalamares() {} + virtual ~TestLibCalamares() {} + +private Q_SLOTS: + void testGSModify(); + void testGSLoadSave(); +}; + +void +TestLibCalamares::testGSModify() +{ + Calamares::GlobalStorage gs; + QSignalSpy spy( &gs, &Calamares::GlobalStorage::changed ); + + const QString key( "derp" ); + + QCOMPARE( gs.count(), 0 ); + QVERIFY( !gs.contains( key ) ); + + const int value = 17; + gs.insert( key, value ); + QCOMPARE( gs.count(), 1 ); + QVERIFY( gs.contains( key ) ); + QCOMPARE( gs.value( key ).type(), QVariant::Int ); + QCOMPARE( gs.value( key ).toString(), QString( "17" ) ); // It isn't a string, but does convert + QCOMPARE( gs.value( key ).toInt(), value ); + + gs.remove( key ); + QCOMPARE( gs.count(), 0 ); + QVERIFY( !gs.contains( key ) ); + + QCOMPARE( spy.count(), 2 ); // one insert, one remove +} + +void +TestLibCalamares::testGSLoadSave() +{ + Calamares::GlobalStorage gs; + const QString jsonfilename( "gs.test.json" ); + const QString yamlfilename( "gs.test.yaml" ); + + gs.insert( "derp", 17 ); + gs.insert( "cow", "moo" ); + gs.insert( "dwarfs", QStringList { "dopey", "sneezy" } ); + + QCOMPARE( gs.count(), 3 ); + + QVERIFY( gs.saveJson( jsonfilename ) ); + Calamares::GlobalStorage gs2; + QCOMPARE( gs2.count(), 0 ); + QVERIFY( gs2.loadJson( jsonfilename ) ); + QCOMPARE( gs2.count(), 3 ); + QCOMPARE( gs2.data(), gs.data() ); + + QVERIFY( gs.saveYaml( yamlfilename ) ); + Calamares::GlobalStorage gs3; + QCOMPARE( gs3.count(), 0 ); + QVERIFY( gs3.loadYaml( jsonfilename ) ); + QCOMPARE( gs3.count(), 3 ); + QCOMPARE( gs3.data(), gs.data() ); + + // Failures in loading + QVERIFY( !gs3.loadYaml( jsonfilename ) ); + QVERIFY( !gs3.loadJson( yamlfilename ) ); + + Calamares::GlobalStorage gs4; + gs4.insert( "derp", 32 ); + gs4.insert( "dorp", "Varsseveld" ); + QCOMPARE( gs4.count(), 2 ); + QVERIFY( gs4.contains( "dorp" ) ); + QCOMPARE( gs4.value( "derp" ).toInt(), 32 ); + QVERIFY( gs4.loadJson( jsonfilename ) ); + // 3 keys from the file, but one overwrite + QCOMPARE( gs4.count(), 4 ); + QVERIFY( gs4.contains( "dorp" ) ); + QCOMPARE( gs4.value( "derp" ).toInt(), 17 ); // This one was overwritten +} + + +QTEST_GUILESS_MAIN( TestLibCalamares ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" From 0de98fe4c125098c7e9325fbc4367ab483612e9f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 00:57:30 +0200 Subject: [PATCH 203/399] [libcalamares] Expand YAML testing a little - load/save of a stringlist seems to work --- src/libcalamares/testdata/yaml-list.conf | 8 ++++++++ src/libcalamares/utils/Tests.cpp | 1 + 2 files changed, 9 insertions(+) create mode 100644 src/libcalamares/testdata/yaml-list.conf diff --git a/src/libcalamares/testdata/yaml-list.conf b/src/libcalamares/testdata/yaml-list.conf new file mode 100644 index 000000000..d6992b1fb --- /dev/null +++ b/src/libcalamares/testdata/yaml-list.conf @@ -0,0 +1,8 @@ +# YAML dump +--- +"cow": "moo" +"derp": 17 +"dwarfs": + - "sleepy" + - "sneezy" + - "doc" diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 300b9b531..5a01848bf 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -148,6 +148,7 @@ LibCalamaresTests::recursiveCompareMap( const QVariantMap& a, const QVariantMap& void LibCalamaresTests::testLoadSaveYamlExtended() { + Logger::setupLogLevel( Logger::LOGDEBUG ); bool loaded_ok; for ( const auto& confname : findConf( QDir( "../src" ) ) ) { From cb20ba6aba632b85302379511b0d5976def995fc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 01:11:14 +0200 Subject: [PATCH 204/399] [libcalamares] More GS load/save testing - failures elsewhere boil down to QStringList is not supported, but a QVariantList of QVariants of QStrings is. --- src/libcalamares/Tests.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp index 744e56113..bf419d721 100644 --- a/src/libcalamares/Tests.cpp +++ b/src/libcalamares/Tests.cpp @@ -21,6 +21,8 @@ #include "GlobalStorage.h" +#include "utils/Logger.h" + #include #include #include @@ -35,6 +37,7 @@ public: private Q_SLOTS: void testGSModify(); void testGSLoadSave(); + void testGSLoadSave2(); }; void @@ -107,6 +110,35 @@ TestLibCalamares::testGSLoadSave() QCOMPARE( gs4.value( "derp" ).toInt(), 17 ); // This one was overwritten } +void +TestLibCalamares::testGSLoadSave2() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + + const QString filename( "../src/libcalamares/testdata/yaml-list.conf" ); + if ( !QFile::exists( filename ) ) + { + return; + } + + Calamares::GlobalStorage gs1; + const QString key( "dwarfs" ); + + QVERIFY( gs1.loadYaml( filename ) ); + QCOMPARE( gs1.count(), 3 ); // From examining the file + QVERIFY( gs1.contains( key ) ); + cDebug() << gs1.value( key ).type() << gs1.value( key ); + QCOMPARE( gs1.value( key ).type(), QVariant::List ); + + const QString yamlfilename( "gs.test.yaml" ); + QVERIFY( gs1.saveYaml( yamlfilename ) ); + + Calamares::GlobalStorage gs2; + QVERIFY( gs2.loadYaml( yamlfilename ) ); + QVERIFY( gs2.contains( key ) ); + QCOMPARE( gs2.value( key ).type(), QVariant::List ); +} + QTEST_GUILESS_MAIN( TestLibCalamares ) From f324a055e502f45f44175578514a29dc5ca37bd2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 10:43:29 +0200 Subject: [PATCH 205/399] CMake: put completions with the other "misc. installs" --- CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fcebae6e..10f314856 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -455,14 +455,6 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES ) add_subdirectory( lang ) # i18n tools -if ( INSTALL_COMPLETION ) - if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR ) - set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" ) - endif() - - install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" ) -endif() - ### Example Distro # # For testing purposes Calamares includes a very, very, limited sample @@ -652,6 +644,14 @@ if( INSTALL_POLKIT ) ) endif() +if ( INSTALL_COMPLETION ) + if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR ) + set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" ) + endif() + + install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" ) +endif() + install( FILES calamares.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications From 463ea3c73fac6fd8dd8fd239e660b222fc21d65e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 10:50:33 +0200 Subject: [PATCH 206/399] [displaymanager] Fix config schema --- .../displaymanager/displaymanager.schema.yaml | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/modules/displaymanager/displaymanager.schema.yaml b/src/modules/displaymanager/displaymanager.schema.yaml index a16af732f..08923f726 100644 --- a/src/modules/displaymanager/displaymanager.schema.yaml +++ b/src/modules/displaymanager/displaymanager.schema.yaml @@ -4,13 +4,17 @@ $id: https://calamares.io/schemas/displaymanager additionalProperties: false type: object properties: - "displaymanagers": - type: seq - sequence: - - { type: string, required: true, enum: [slim, sddm, lightdm, gdm, mdm, lxdm, kdm] } - "defaultDesktopEnvironment": - type: map - mapping: - "executable": { type: str } - "desktopFile": { type: str } - "basicSetup": { type: boolean, default: false } + displaymanagers: + type: array + items: + type: string + enum: [slim, sddm, lightdm, gdm, mdm, lxdm, kdm] + minItems: 1 # Must be non-empty, if present at all + defaultDesktopEnvironment: + type: object + properties: + executable: { type: string } + desktopFile: { type: string } + required: [ executable, desktopFile ] + basicSetup: { type: boolean, default: false } + sysconfigSetup: { type: boolean, default: false } From 3fc23e3b07da9c4036d24fb9aee77830e4319664 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 11:43:48 +0200 Subject: [PATCH 207/399] [grubcfg] Fix config schema --- src/modules/grubcfg/grubcfg.schema.yaml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/modules/grubcfg/grubcfg.schema.yaml b/src/modules/grubcfg/grubcfg.schema.yaml index 10aa34c2b..5121e2be7 100644 --- a/src/modules/grubcfg/grubcfg.schema.yaml +++ b/src/modules/grubcfg/grubcfg.schema.yaml @@ -4,12 +4,14 @@ $id: https://calamares.io/schemas/grubcfg additionalProperties: false type: object properties: - "overwrite": { type: boolean, default: false } - "defaults": - type: map - mapping: - "GRUB_TIMEOUT": { type: int, required: true } - "GRUB_DEFAULT": { type: string, required: true } - "GRUB_DISABLE_SUBMENU": { type: boolean, default: true } - "GRUB_TERMINAL_OUTPUT": { type: string, required: true } - "GRUB_DISABLE_RECOVERY": { type: boolean, default: true } + overwrite: { type: boolean, default: false } + defaults: + type: object + additionalProperties: true # Other fields are acceptable + properties: + GRUB_TIMEOUT: { type: integer } + GRUB_DEFAULT: { type: string } + GRUB_DISABLE_SUBMENU: { type: boolean, default: true } + GRUB_TERMINAL_OUTPUT: { type: string } + GRUB_DISABLE_RECOVERY: { type: boolean, default: true } + required: [ GRUB_TIMEOUT, GRUB_DEFAULT, GRUB_TERMINAL_OUTPUT ] From f85c70d4d2c731dc66bae4a0cc42e4946f2330b0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 11:55:16 +0200 Subject: [PATCH 208/399] [grubcfg] Introduce prefer_grub_d - new setting for using /etc/defaults/grub.d/ (SEE #1457), not implemented - add missing fields to schema for config file --- src/modules/grubcfg/grubcfg.conf | 5 +++++ src/modules/grubcfg/grubcfg.schema.yaml | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index ba31d6070..374561787 100644 --- a/src/modules/grubcfg/grubcfg.conf +++ b/src/modules/grubcfg/grubcfg.conf @@ -17,6 +17,11 @@ # already existed. If set to false, edits the existing file instead. overwrite: false +# If set to true, prefer to write files in /etc/default/grub.d/ +# rather than the single file /etc/default/grub. If this is set, +# Calamares will write /etc/default/grub.d/00Calamares instead. +prefer_grub_d: false + # If set to true, an **existing** setting for GRUB_DISTRIBUTOR is # kept, not updated to the *bootloaderEntryName* from the branding file. # Use this if the GRUB_DISTRIBUTOR setting in the file is "smart" in diff --git a/src/modules/grubcfg/grubcfg.schema.yaml b/src/modules/grubcfg/grubcfg.schema.yaml index 5121e2be7..f010ac694 100644 --- a/src/modules/grubcfg/grubcfg.schema.yaml +++ b/src/modules/grubcfg/grubcfg.schema.yaml @@ -5,6 +5,8 @@ additionalProperties: false type: object properties: overwrite: { type: boolean, default: false } + keepDistributor: { type: boolean, default: false } + prefer_grub_d: { type: boolean, default: false } defaults: type: object additionalProperties: true # Other fields are acceptable From aa50dfb8a12a349d7fdd4172f38ad2925e676e82 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 12:02:42 +0200 Subject: [PATCH 209/399] [grubcfg] refactor finding-the-grub-paths into a function --- src/modules/grubcfg/main.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 77a668960..bf1ec4b9f 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -37,6 +37,19 @@ def pretty_name(): return _("Configure GRUB.") +def get_grub_config_paths(root_mount_point): + """ + Figures out where to put the grub config files. Returns + a directory path and the full path of a file inside that + directory, as "the grub-directory" and "the config file". + + Returns a path into @p root_mount_point. + """ + default_dir = os.path.join(root_mount_point, "etc/default") + default_grub = os.path.join(default_dir, "grub") + + return (default_dir, default_grub) + def modify_grub_default(partitions, root_mount_point, distributor): """ Configures '/etc/default/grub' for hibernation and plymouth. @@ -54,8 +67,7 @@ def modify_grub_default(partitions, root_mount_point, distributor): is always updated to set this value. :return: """ - default_dir = os.path.join(root_mount_point, "etc/default") - default_grub = os.path.join(default_dir, "grub") + default_dir, default_grub = get_grub_config_paths(root_mount_point) distributor_replace = distributor.replace("'", "'\\''") dracut_bin = libcalamares.utils.target_env_call( ["sh", "-c", "which dracut"] From 064fff0c12067a370fbbcc64c6d1c0efb0ba4df0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 12:05:46 +0200 Subject: [PATCH 210/399] [grubcfg] Drop default_dir - the default_dir was only stored in modify_grub_default() to create the directory if needed; move that functionality to the get_grub_config_paths() function (and drop the "s", since it now returns just one). --- src/modules/grubcfg/main.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index bf1ec4b9f..3c3f3d447 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -37,18 +37,21 @@ def pretty_name(): return _("Configure GRUB.") -def get_grub_config_paths(root_mount_point): +def get_grub_config_path(root_mount_point): """ Figures out where to put the grub config files. Returns - a directory path and the full path of a file inside that - directory, as "the grub-directory" and "the config file". + a the full path of a file inside that + directory, as "the config file". Returns a path into @p root_mount_point. """ default_dir = os.path.join(root_mount_point, "etc/default") default_grub = os.path.join(default_dir, "grub") - return (default_dir, default_grub) + if not os.path.exists(default_dir): + os.mkdir(default_dir) + + return default_grub def modify_grub_default(partitions, root_mount_point, distributor): """ @@ -67,7 +70,7 @@ def modify_grub_default(partitions, root_mount_point, distributor): is always updated to set this value. :return: """ - default_dir, default_grub = get_grub_config_paths(root_mount_point) + default_grub = get_grub_config_path(root_mount_point) distributor_replace = distributor.replace("'", "'\\''") dracut_bin = libcalamares.utils.target_env_call( ["sh", "-c", "which dracut"] @@ -154,9 +157,6 @@ def modify_grub_default(partitions, root_mount_point, distributor): distributor_line = "GRUB_DISTRIBUTOR='{!s}'".format(distributor_replace) - if not os.path.exists(default_dir): - os.mkdir(default_dir) - have_kernel_cmd = False have_distributor_line = False From 8bf95b68812ada29ba82bddf67a0f243ae97cd42 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 12:13:51 +0200 Subject: [PATCH 211/399] [grubcfg] Support prefer_grub_d settings --- src/modules/grubcfg/main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 3c3f3d447..04b5eba9e 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -46,12 +46,19 @@ def get_grub_config_path(root_mount_point): Returns a path into @p root_mount_point. """ default_dir = os.path.join(root_mount_point, "etc/default") - default_grub = os.path.join(default_dir, "grub") + default_config_file = "grub" + + if "prefer_grub_d" in libcalamares.job.configuration and libcalamares.job.configuration["prefer_grub_d"]: + possible_dir = os.path.join(root_mount_point, "etc/default/grub.d") + if os.path.exists(possible_dir) and os.path.isdir(possible_dir): + default_dir = possible_dir + default_config_file = "00calamares" if not os.path.exists(default_dir): os.mkdir(default_dir) - return default_grub + return os.path.join(default_dir, default_config_file) + def modify_grub_default(partitions, root_mount_point, distributor): """ From e2a5eb68405889e23c327d2136608aa452f74439 Mon Sep 17 00:00:00 2001 From: demmm Date: Fri, 7 Aug 2020 12:44:07 +0200 Subject: [PATCH 212/399] [welcomeq] language bar icon configurable similar functionality as in welcome module, set in welcomeq.conf --- src/modules/welcomeq/welcomeq.conf | 2 ++ src/modules/welcomeq/welcomeq.qml | 30 ++++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/modules/welcomeq/welcomeq.conf b/src/modules/welcomeq/welcomeq.conf index 32be7fcb5..035db9714 100644 --- a/src/modules/welcomeq/welcomeq.conf +++ b/src/modules/welcomeq/welcomeq.conf @@ -33,3 +33,5 @@ geoip: style: "none" url: "https://geoip.kde.org/v1/ubiquity" # extended XML format selector: "CountryCode" # blank uses default, which is wrong + +#languageIcon: languages diff --git a/src/modules/welcomeq/welcomeq.qml b/src/modules/welcomeq/welcomeq.qml index ffa480f4a..7ba8933c8 100644 --- a/src/modules/welcomeq/welcomeq.qml +++ b/src/modules/welcomeq/welcomeq.qml @@ -144,16 +144,34 @@ Page width: parent.width Layout.fillWidth: true focus: true - Image { - id: image - height: 48 - fillMode: Image.PreserveAspectFit - source: "img/language-icon-48px.png" + + Loader { + id: imLoader + + Component { + id: icon + Kirigami.Icon { + source: config.languageIcon + height: 48 + width: 48 + } + } + + Component { + id: image + Image { + height: 48 + fillMode: Image.PreserveAspectFit + source: "img/language-icon-48px.png" + } + } + + sourceComponent: (config.languageIcon != "") ? icon : image } ComboBox { id: languages - anchors.left: image.right + anchors.left: imLoader.right width: languageBar.width /1.1 textRole: "label" currentIndex: config.localeIndex From 473daecdbfe659cec0e307b341636a8a76c1d4da Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 7 Aug 2020 13:42:47 +0200 Subject: [PATCH 213/399] [grubcfg] expand config-testing for the new features - create directories for new tests ahead of the tests themselves; this **can** still cause problems if a test is run standalone. - if creating the grub-dir at runtime is necessary, be informative if it fails. --- src/modules/grubcfg/main.py | 6 +++++- src/modules/grubcfg/tests/2.global | 2 +- src/modules/grubcfg/tests/3.global | 10 ++++++++++ src/modules/grubcfg/tests/3.job | 10 ++++++++++ src/modules/grubcfg/tests/4.global | 10 ++++++++++ src/modules/grubcfg/tests/4.job | 10 ++++++++++ src/modules/grubcfg/tests/CMakeTests.txt | 10 +++++++--- 7 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/modules/grubcfg/tests/3.global create mode 100644 src/modules/grubcfg/tests/3.job create mode 100644 src/modules/grubcfg/tests/4.global create mode 100644 src/modules/grubcfg/tests/4.job diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 04b5eba9e..fad6d3677 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -55,7 +55,11 @@ def get_grub_config_path(root_mount_point): default_config_file = "00calamares" if not os.path.exists(default_dir): - os.mkdir(default_dir) + try: + os.mkdir(default_dir) + except: + libcalamares.utils.debug("Failed to create '%r'" % default_dir) + raise return os.path.join(default_dir, default_config_file) diff --git a/src/modules/grubcfg/tests/2.global b/src/modules/grubcfg/tests/2.global index 83e79db28..88f789630 100644 --- a/src/modules/grubcfg/tests/2.global +++ b/src/modules/grubcfg/tests/2.global @@ -2,7 +2,7 @@ bogus: true firmwareType: bios bootLoader: grub -rootMountPoint: /tmp/calamares +rootMountPoint: /tmp/calamares/grubcfg-test-2 branding: bootloaderEntryName: generic diff --git a/src/modules/grubcfg/tests/3.global b/src/modules/grubcfg/tests/3.global new file mode 100644 index 000000000..45468d4df --- /dev/null +++ b/src/modules/grubcfg/tests/3.global @@ -0,0 +1,10 @@ +--- +bogus: true +firmwareType: bios +bootLoader: grub +rootMountPoint: /tmp/calamares/grubcfg-test-3 + +branding: + bootloaderEntryName: generic +partitions: [] + diff --git a/src/modules/grubcfg/tests/3.job b/src/modules/grubcfg/tests/3.job new file mode 100644 index 000000000..7182deeb2 --- /dev/null +++ b/src/modules/grubcfg/tests/3.job @@ -0,0 +1,10 @@ +--- +overwrite: true +prefer_grub_d: true # But it doesn't exist +keepDistributor: false +defaults: + GRUB_TIMEOUT: 5 + GRUB_DEFAULT: "saved" + GRUB_DISABLE_SUBMENU: true + GRUB_TERMINAL_OUTPUT: "console" + GRUB_DISABLE_RECOVERY: true diff --git a/src/modules/grubcfg/tests/4.global b/src/modules/grubcfg/tests/4.global new file mode 100644 index 000000000..fe24ba6ca --- /dev/null +++ b/src/modules/grubcfg/tests/4.global @@ -0,0 +1,10 @@ +--- +bogus: true +firmwareType: bios +bootLoader: grub +rootMountPoint: /tmp/calamares/grubcfg-test-4 + +branding: + bootloaderEntryName: generic +partitions: [] + diff --git a/src/modules/grubcfg/tests/4.job b/src/modules/grubcfg/tests/4.job new file mode 100644 index 000000000..f8f30f21b --- /dev/null +++ b/src/modules/grubcfg/tests/4.job @@ -0,0 +1,10 @@ +--- +overwrite: true +prefer_grub_d: true +keepDistributor: false +defaults: + GRUB_TIMEOUT: 5 + GRUB_DEFAULT: "saved" + GRUB_DISABLE_SUBMENU: true + GRUB_TERMINAL_OUTPUT: "console" + GRUB_DISABLE_RECOVERY: true diff --git a/src/modules/grubcfg/tests/CMakeTests.txt b/src/modules/grubcfg/tests/CMakeTests.txt index 299fccf07..78a0f85ac 100644 --- a/src/modules/grubcfg/tests/CMakeTests.txt +++ b/src/modules/grubcfg/tests/CMakeTests.txt @@ -2,11 +2,15 @@ # - 2.global specifies /tmp/calamares as the rootMountPath, # so we end up editing files there. Create the directory # beforehand, so the test doesn't blow up. -set(_grub_root /tmp/calamares/etc/default) -set(_grub_file ${_grub_root}/bogus) add_test( NAME make-grubcfg-dirs - COMMAND ${CMAKE_COMMAND} -E make_directory ${_grub_root} + COMMAND ${CMAKE_COMMAND} -E make_directory + /tmp/calamares/grubcfg-test-2/etc/default + /tmp/calamares/grubcfg-test-3/etc/default + /tmp/calamares/grubcfg-test-4/etc/default/grub.d ) set_tests_properties(load-grubcfg-2 PROPERTIES DEPENDS make-grubcfg-dirs) +set_tests_properties(load-grubcfg-3 PROPERTIES DEPENDS make-grubcfg-dirs) +set_tests_properties(load-grubcfg-4 PROPERTIES DEPENDS make-grubcfg-dirs) + From 0fda1dcf7df7e7a18fcfc2e7f2a2f1e83a3efd95 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 13:26:39 +0200 Subject: [PATCH 214/399] [libcalamares] Refactor finding-TZ algorithm - introduce a distance function and use that, rather than coding it inside the find() function. This is prep-work for unifying the find() calls, based on various coordinate systems. --- src/libcalamares/locale/TimeZone.cpp | 36 ++++++++++++++++++---------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index e2779281f..6eabef6e8 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -336,6 +336,24 @@ ZonesModel::find( const QString& region, const QString& zone ) const return nullptr; } +STATICTEST const TimeZoneData* +find( const ZoneVector& zones, std::function< double( const TimeZoneData* ) > distance ) +{ + double smallestDistance = 1000000.0; + const TimeZoneData* closest = nullptr; + + for ( const auto* zone : zones ) + { + double thisDistance = distance( zone ); + if ( thisDistance < smallestDistance ) + { + closest = zone; + smallestDistance = thisDistance; + } + } + return closest; +} + const TimeZoneData* ZonesModel::find( double latitude, double longitude ) const { @@ -344,12 +362,7 @@ ZonesModel::find( double latitude, double longitude ) const * either N/S or E/W equal to any other; this obviously * falls apart at the poles. */ - - double largestDifference = 720.0; - const TimeZoneData* closest = nullptr; - - for ( const auto* zone : m_private->m_zones ) - { + auto distance = [&]( const TimeZoneData* zone ) -> double { // Latitude doesn't wrap around: there is nothing north of 90 double latitudeDifference = abs( zone->latitude() - latitude ); @@ -368,13 +381,10 @@ ZonesModel::find( double latitude, double longitude ) const longitudeDifference = abs( westerly - easterly ); } - if ( latitudeDifference + longitudeDifference < largestDifference ) - { - largestDifference = latitudeDifference + longitudeDifference; - closest = zone; - } - } - return closest; + return latitudeDifference + longitudeDifference; + }; + + return CalamaresUtils::Locale::find( m_private->m_zones, distance ); } QObject* From 2f871acbfd3c8def44d8e54887d6c5357259dc1e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 13:45:32 +0200 Subject: [PATCH 215/399] [libcalamares] Expose distanceFunc-find for timezones --- src/libcalamares/locale/TimeZone.cpp | 12 +++++++++--- src/libcalamares/locale/TimeZone.h | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 6eabef6e8..4c641cd17 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -337,14 +337,14 @@ ZonesModel::find( const QString& region, const QString& zone ) const } STATICTEST const TimeZoneData* -find( const ZoneVector& zones, std::function< double( const TimeZoneData* ) > distance ) +find( const ZoneVector& zones, const std::function< double( const TimeZoneData* ) >& distanceFunc ) { double smallestDistance = 1000000.0; const TimeZoneData* closest = nullptr; for ( const auto* zone : zones ) { - double thisDistance = distance( zone ); + double thisDistance = distanceFunc( zone ); if ( thisDistance < smallestDistance ) { closest = zone; @@ -354,6 +354,12 @@ find( const ZoneVector& zones, std::function< double( const TimeZoneData* ) > di return closest; } +const TimeZoneData* +ZonesModel::find( const std::function< double( const TimeZoneData* ) >& distanceFunc ) const +{ + return CalamaresUtils::Locale::find( m_private->m_zones, distanceFunc ); +} + const TimeZoneData* ZonesModel::find( double latitude, double longitude ) const { @@ -384,7 +390,7 @@ ZonesModel::find( double latitude, double longitude ) const return latitudeDifference + longitudeDifference; }; - return CalamaresUtils::Locale::find( m_private->m_zones, distance ); + return find( distance ); } QObject* diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 1d4b4a8ff..cc0c35ea2 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -167,6 +167,17 @@ public: Iterator begin() const { return Iterator( m_private ); } + /** @brief Look up TZ data based on an arbitrary distance function + * + * This is a generic method that can define distance in whatever + * coordinate system is wanted; returns the zone with the smallest + * distance. The @p distanceFunc must return "the distance" for + * each zone. It would be polite to return something non-negative. + * + * Note: not a slot, because the parameter isn't moc-able. + */ + const TimeZoneData* find( const std::function< double( const TimeZoneData* ) >& distanceFunc ) const; + public Q_SLOTS: /** @brief Look up TZ data based on its name. * @@ -176,7 +187,10 @@ public Q_SLOTS: /** @brief Look up TZ data based on the location. * - * Returns the nearest zone to the given lat and lon. + * Returns the nearest zone to the given lat and lon. This is a + * convenience function for calling find(), below, with a standard + * distance function based on the distance between the given + * location (lat and lon) and each zone's given location. */ const TimeZoneData* find( double latitude, double longitude ) const; From 0948963d86c6fdd7c3272da88dd10884cf05e525 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 22:01:10 +1000 Subject: [PATCH 216/399] [locale] Port TZ widget lookup to new find() method - The TZ widget uses a different coordinate system (mapping lat and lon to pixel locations, and then calculating Manhattan distance from that), so needs a different distance function. - Simplify code: there's just one "closest TZ" function. --- .../locale/timezonewidget/timezonewidget.cpp | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index b1d3cfeaa..778f0535d 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -190,28 +190,15 @@ TimeZoneWidget::mousePressEvent( QMouseEvent* event ) { return; } - // Set nearest location - int nX = 999999, mX = event->pos().x(); - int nY = 999999, mY = event->pos().y(); - using namespace CalamaresUtils::Locale; - const TimeZoneData* closest = nullptr; - for ( auto it = m_zonesData->begin(); it; ++it ) - { - const auto* zone = *it; - if ( zone ) - { - QPoint locPos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); - - if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) ) - { - closest = zone; - nX = locPos.x(); - nY = locPos.y(); - } - } - } + int mX = event->pos().x(); + int mY = event->pos().y(); + auto distance = [&]( const CalamaresUtils::Locale::TimeZoneData* zone ) { + QPoint locPos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); + return double( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) ); + }; + const auto* closest = m_zonesData->find( distance ); if ( closest ) { // Set zone image and repaint widget From 00626fd96c9341d2a0a1858481d20522a6593067 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 22:12:22 +1000 Subject: [PATCH 217/399] [libcalamares] Refactor timezone loading - load from a TextStream. This is prep-work for alternate TZ data sources. --- src/libcalamares/locale/TimeZone.cpp | 144 ++++++++++++++------------- 1 file changed, 75 insertions(+), 69 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 4c641cd17..4cd2bfb9a 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -109,6 +109,80 @@ RegionData::tr() const return QObject::tr( m_human, "tz_regions" ); } +static void +loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) +{ + while ( !in.atEnd() ) + { + QString line = in.readLine().trimmed().split( '#', SplitKeepEmptyParts ).first().trimmed(); + if ( line.isEmpty() ) + { + continue; + } + + QStringList list = line.split( QRegExp( "[\t ]" ), SplitSkipEmptyParts ); + if ( list.size() < 3 ) + { + continue; + } + + QStringList timezoneParts = list.at( 2 ).split( '/', SplitSkipEmptyParts ); + if ( timezoneParts.size() < 2 ) + { + continue; + } + + QString region = timezoneParts.first().trimmed(); + if ( region.isEmpty() ) + { + continue; + } + + QString countryCode = list.at( 0 ).trimmed(); + if ( countryCode.size() != 2 ) + { + continue; + } + + timezoneParts.removeFirst(); + QString zone = timezoneParts.join( '/' ); + if ( zone.length() < 2 ) + { + continue; + } + + QString position = list.at( 1 ); + int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); + double latitude; + double longitude; + if ( cooSplitPos > 0 ) + { + latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); + longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); + } + else + { + continue; + } + + // Now we have region, zone, country, lat and longitude + const RegionData* existingRegion = nullptr; + for ( const auto* p : regions ) + { + if ( p->key() == region ) + { + existingRegion = p; + break; + } + } + if ( !existingRegion ) + { + regions.append( new RegionData( region ) ); + } + zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) ); + } +} + static void loadTZData( RegionVector& regions, ZoneVector& zones ) { @@ -116,75 +190,7 @@ loadTZData( RegionVector& regions, ZoneVector& zones ) if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { QTextStream in( &file ); - while ( !in.atEnd() ) - { - QString line = in.readLine().trimmed().split( '#', SplitKeepEmptyParts ).first().trimmed(); - if ( line.isEmpty() ) - { - continue; - } - - QStringList list = line.split( QRegExp( "[\t ]" ), SplitSkipEmptyParts ); - if ( list.size() < 3 ) - { - continue; - } - - QStringList timezoneParts = list.at( 2 ).split( '/', SplitSkipEmptyParts ); - if ( timezoneParts.size() < 2 ) - { - continue; - } - - QString region = timezoneParts.first().trimmed(); - if ( region.isEmpty() ) - { - continue; - } - - QString countryCode = list.at( 0 ).trimmed(); - if ( countryCode.size() != 2 ) - { - continue; - } - - timezoneParts.removeFirst(); - QString zone = timezoneParts.join( '/' ); - if ( zone.length() < 2 ) - { - continue; - } - - QString position = list.at( 1 ); - int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); - double latitude; - double longitude; - if ( cooSplitPos > 0 ) - { - latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); - longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); - } - else - { - continue; - } - - // Now we have region, zone, country, lat and longitude - const RegionData* existingRegion = nullptr; - for ( const auto* p : regions ) - { - if ( p->key() == region ) - { - existingRegion = p; - break; - } - } - if ( !existingRegion ) - { - regions.append( new RegionData( region ) ); - } - zones.append( new TimeZoneData( region, zone, countryCode, latitude, longitude ) ); - } + loadTZData( regions, zones, in ); } } From 6a33e72b58a8412a9c6db5474f6eb6ad6c9495be Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 23:14:20 +1000 Subject: [PATCH 218/399] [libcalamares] Refactor test to be data-driven - this test is going to get a lot more cases, so prepare for that --- src/libcalamares/locale/Tests.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index e498ac039..d73331d44 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -52,6 +52,7 @@ private Q_SLOTS: void testComplexZones(); void testTZLookup(); void testTZIterator(); + void testLocationLookup_data(); void testLocationLookup(); }; @@ -390,24 +391,31 @@ LocaleTests::testTZIterator() QCOMPARE( ( *zones.begin() )->zone(), QStringLiteral( "Abidjan" ) ); } +void +LocaleTests::testLocationLookup_data() +{ + QTest::addColumn< double >( "latitude" ); + QTest::addColumn< double >( "longitude" ); + QTest::addColumn< QString >( "name" ); + + QTest::newRow( "London" ) << 50.0 << 0.0 << QString( "London" ); + QTest::newRow( "Tarawa E" ) << 0.0 << 179.0 << QString( "Tarawa" ); + QTest::newRow( "Tarawa W" ) << 0.0 << -179.0 << QString( "Tarawa" ); + +} + void LocaleTests::testLocationLookup() { const CalamaresUtils::Locale::ZonesModel zones; - const auto* zone = zones.find( 50.0, 0.0 ); - QVERIFY( zone ); - QCOMPARE( zone->zone(), QStringLiteral( "London" ) ); + QFETCH( double, latitude ); + QFETCH( double, longitude ); + QFETCH( QString, name ); - - // Tarawa is close to "the other side of the world" from London - zone = zones.find( 0.0, 179.0 ); + const auto* zone = zones.find( latitude, longitude ); QVERIFY( zone ); - QCOMPARE( zone->zone(), QStringLiteral( "Tarawa" ) ); - - zone = zones.find( 0.0, -179.0 ); - QVERIFY( zone ); - QCOMPARE( zone->zone(), QStringLiteral( "Tarawa" ) ); + QCOMPARE( zone->zone(), name ); } From 028d424c73bbe129128b5314a83698bb076b70d7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 23:40:13 +1000 Subject: [PATCH 219/399] [libcalamares] Expand testing of TZ location lookup - Cape Town is in South Africa, so one might expect it to get South Africa's timezone -- which is Africa/Johannesburg -- but Windhoek is closer, so it gets that. - Port Elisabeth is similar: Maseru lies between it an Johannesburg, so it gets the wrong timezone, too. These both illustrate how the limited resolution of the map, together with the "closest location" lookup, can give poor results. For most of South Africa, the "wrong" timezone is closer than the right one. --- src/libcalamares/locale/Tests.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index d73331d44..d9bfb9133 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -402,6 +402,11 @@ LocaleTests::testLocationLookup_data() QTest::newRow( "Tarawa E" ) << 0.0 << 179.0 << QString( "Tarawa" ); QTest::newRow( "Tarawa W" ) << 0.0 << -179.0 << QString( "Tarawa" ); + QTest::newRow( "Johannesburg" ) << -26.0 << 28.0 << QString( "Johannesburg" ); // South Africa + QTest::newRow( "Maseru" ) << -29.0 << 27.0 << QString( "Maseru" ); // Lesotho + QTest::newRow( "Windhoek" ) << -22.0 << 17.0 << QString( "Windhoek" ); // Namibia + QTest::newRow( "Port Elisabeth" ) << -33.0 << 25.0 << QString( "Johannesburg" ); // South Africa + QTest::newRow( "Cape Town" ) << -33.0 << 18.0 << QString( "Johannesburg" ); // South Africa } void From e35992cf0bc346da2f833d1a35c7326f00c2b1a2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 00:05:40 +1000 Subject: [PATCH 220/399] [libcalamares] Add spot-patches to timezone data - for the purposes of Calamares's nearest-location selection algorithm for timezone selection, introduce spot patches: alternate markers on the map to indicate "things close to here belong in this timezone". - hide the implementation detail in the find() methods. --- src/libcalamares/locale/TimeZone.cpp | 64 +++++++++++++++++++++------- 1 file changed, 49 insertions(+), 15 deletions(-) diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 4cd2bfb9a..ddc705548 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -183,17 +183,30 @@ loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) } } -static void -loadTZData( RegionVector& regions, ZoneVector& zones ) -{ - QFile file( TZ_DATA_FILE ); - if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) - { - QTextStream in( &file ); - loadTZData( regions, zones, in ); - } -} - +/** @brief Extra, fake, timezones + * + * The timezone locations in zone.tab are not always very useful, + * given Calamares's standard "nearest zone" algorithm: for instance, + * in most locations physically in the country of South Africa, + * Maseru (the capital of Lesotho, and location for timezone Africa/Maseru) + * is closer than Johannesburg (the location for timezone Africa/Johannesburg). + * + * The algorithm picks the wrong place. This is for instance annoying + * when clicking on Cape Town, you get Maseru, and to get Johannesburg + * you need to click somewhere very carefully north of Maserru. + * + * These alternate zones are used to introduce "extra locations" + * into the timezone database, in order to influence the closest-location + * algorithm. Lines are formatted just like in zone.tab: remember the \n + */ +static const char altZones[] = + /* This extra zone is north-east of Karoo National park, + * and means that Western Cape province and a good chunk of + * Northern- and Eastern- Cape provinces get pulled in to Johannesburg. + * Bloemfontein is still closer to Maseru than either correct zone, + * but this is a definite improvement. + */ + "ZA -3230+02259 Africa/Johannesburg\n"; class Private : public QObject { @@ -201,13 +214,27 @@ class Private : public QObject public: RegionVector m_regions; ZoneVector m_zones; + ZoneVector m_altZones; //< Extra locations for zones Private() { m_regions.reserve( 12 ); // reasonable guess m_zones.reserve( 452 ); // wc -l /usr/share/zoneinfo/zone.tab - loadTZData( m_regions, m_zones ); + // Load the official timezones + { + QFile file( TZ_DATA_FILE ); + if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + QTextStream in( &file ); + loadTZData( m_regions, m_zones, in ); + } + } + // Load the alternate zones (see documentation at altZones) + { + QTextStream in( altZones ); + loadTZData( m_regions, m_altZones, in ); + } std::sort( m_regions.begin(), m_regions.end(), []( const RegionData* lhs, const RegionData* rhs ) { return lhs->key() < rhs->key(); @@ -343,9 +370,9 @@ ZonesModel::find( const QString& region, const QString& zone ) const } STATICTEST const TimeZoneData* -find( const ZoneVector& zones, const std::function< double( const TimeZoneData* ) >& distanceFunc ) +find( double startingDistance, const ZoneVector& zones, const std::function< double( const TimeZoneData* ) >& distanceFunc ) { - double smallestDistance = 1000000.0; + double smallestDistance = startingDistance; const TimeZoneData* closest = nullptr; for ( const auto* zone : zones ) @@ -363,7 +390,14 @@ find( const ZoneVector& zones, const std::function< double( const TimeZoneData* const TimeZoneData* ZonesModel::find( const std::function< double( const TimeZoneData* ) >& distanceFunc ) const { - return CalamaresUtils::Locale::find( m_private->m_zones, distanceFunc ); + const auto* officialZone = CalamaresUtils::Locale::find( 1000000.0, m_private->m_zones, distanceFunc ); + const auto* altZone = CalamaresUtils::Locale::find( distanceFunc( officialZone ), m_private->m_altZones, distanceFunc ); + + // If nothing was closer than the official zone already was, altZone is + // nullptr; but if there is a spot-patch, then we need to re-find + // the zone by name, since we want to always return pointers into + // m_zones, not into the alternative spots. + return altZone ? find( altZone->region(), altZone->zone() ) : officialZone; } const TimeZoneData* From 5e5701363c0bea958e20497d736e144c17685780 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 00:20:04 +1000 Subject: [PATCH 221/399] [libcalamares] Test the spot-patch for Johannesburg - Add a note about notation, degrees-minutes --- src/libcalamares/locale/Tests.cpp | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index d9bfb9133..b755a61a5 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -54,6 +54,7 @@ private Q_SLOTS: void testTZIterator(); void testLocationLookup_data(); void testLocationLookup(); + void testLocationLookup2(); }; LocaleTests::LocaleTests() {} @@ -423,6 +424,37 @@ LocaleTests::testLocationLookup() QCOMPARE( zone->zone(), name ); } +void +LocaleTests::testLocationLookup2() +{ + // Official + // ZA -2615+02800 Africa/Johannesburg + // Spot patch + // "ZA -3230+02259 Africa/Johannesburg\n"; + + const CalamaresUtils::Locale::ZonesModel zones; + const auto* zone = zones.find( -26.15, 28.00 ); + QCOMPARE( zone->zone(), QString( "Johannesburg" ) ); + // The TZ data sources use minutes-and-seconds notation, + // so "2615" is 26 degrees, 15 minutes, and 15 minutes is + // one-quarter of a degree. + QCOMPARE( zone->latitude(), -26.25 ); + QCOMPARE( zone->longitude(), 28.00 ); + + // Elsewhere in South Africa + const auto* altzone = zones.find( -32.0, 22.0 ); + QCOMPARE( altzone, zone ); // same pointer + QCOMPARE( altzone->zone(), QString( "Johannesburg" ) ); + QCOMPARE( altzone->latitude(), -26.25 ); + QCOMPARE( altzone->longitude(), 28.00 ); + + altzone = zones.find( -29.0, 27.0 ); + QCOMPARE( altzone->zone(), QString( "Maseru" ) ); + // -2928, that's -29 and 28/60 of a degree, is almost half, but we don't want + // to fall foul of variations in double-precision + QCOMPARE( trunc( altzone->latitude() * 1000.0 ), -29466 ); +} + QTEST_GUILESS_MAIN( LocaleTests ) From fe3495ff97d21b3f8e39d71e6fe64ec24a9b355f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 22:54:59 +0200 Subject: [PATCH 222/399] [libcalamares] Expand KPMCore tests - check on FS names as well --- src/libcalamares/partition/KPMTests.cpp | 34 +++++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/libcalamares/partition/KPMTests.cpp b/src/libcalamares/partition/KPMTests.cpp index 0bdb29a15..ed34c2701 100644 --- a/src/libcalamares/partition/KPMTests.cpp +++ b/src/libcalamares/partition/KPMTests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,14 +16,12 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "utils/Logger.h" #include +#include #include @@ -36,6 +35,7 @@ private Q_SLOTS: void initTestCase(); void testFlagNames(); + void testFSNames(); }; KPMTests::KPMTests() {} @@ -51,12 +51,13 @@ KPMTests::initTestCase() void KPMTests::testFlagNames() { + cDebug() << "Partition flags according to KPMCore:"; int f = 1; QStringList names; QString s; while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) { - cDebug() << f << s; + cDebug() << Logger::SubEntry << f << s; names.append( s ); f <<= 1; @@ -78,6 +79,29 @@ KPMTests::testFlagNames() #endif } +void +KPMTests::testFSNames() +{ + cDebug() << "FileSystem names according to KPMCore:"; + + // This uses KPMCore directly, rather than Calamares partition/FileSystem.h + // which doesn't wrap nameForType() -- it just provides more meaningful + // names for FS naming on FileSystem objects. + QStringList fsNames; + const auto fstypes = FileSystem::types(); + fsNames.reserve( fstypes.count() ); + for ( const auto t : fstypes ) + { + QString s = FileSystem::nameForType( t, { "C" } ); // Untranslated + cDebug() << Logger::SubEntry << s; + fsNames.append( s ); + } + + QVERIFY( fsNames.contains( "ext2" ) ); + QVERIFY( fsNames.contains( "ext4" ) ); + QVERIFY( fsNames.contains( "reiser" ) ); +} + QTEST_GUILESS_MAIN( KPMTests ) From 537aad1222a1676163848e2b6ed1d9af2c383c1a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 8 Aug 2020 23:32:09 +0200 Subject: [PATCH 223/399] [libcalamares] SPDX, DLLEXPORT on partition/FileSystem.h --- src/libcalamares/partition/FileSystem.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libcalamares/partition/FileSystem.h b/src/libcalamares/partition/FileSystem.h index a683aab47..6f058fd81 100644 --- a/src/libcalamares/partition/FileSystem.h +++ b/src/libcalamares/partition/FileSystem.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ /* @@ -30,13 +28,15 @@ #ifndef PARTITION_FILESYSTEM_H #define PARTITION_FILESYSTEM_H +#include "DllMacro.h" + #include namespace CalamaresUtils { namespace Partition { -QString prettyNameForFileSystemType( FileSystem::Type t ); +QString DLLEXPORT prettyNameForFileSystemType( FileSystem::Type t ); static inline QString untranslatedFS( FileSystem& fs ) From 62a8ee9708ab1da451681187d2edeca34671e5ab Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 00:00:14 +0200 Subject: [PATCH 224/399] [libcalamares] Add name-for-partition-type method - add apidox to all the untranslatedFS() methods - add the most-basic of untranslatedFS(), which works on a given FileSystem::Type; this one can handle special cases where Cala needs a different untranslated name than what KPMCore provides. --- src/libcalamares/partition/FileSystem.cpp | 14 +++++++++++- src/libcalamares/partition/FileSystem.h | 20 ++++++++++++++++- src/libcalamares/partition/KPMTests.cpp | 26 +++++++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/partition/FileSystem.cpp b/src/libcalamares/partition/FileSystem.cpp index 965a1a8af..6fda6b41a 100644 --- a/src/libcalamares/partition/FileSystem.cpp +++ b/src/libcalamares/partition/FileSystem.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot @@ -74,5 +74,17 @@ prettyNameForFileSystemType( FileSystem::Type t ) } } +QString +untranslatedFS( FileSystem::Type t ) +{ + switch ( t ) + { + case FileSystem::Type::ReiserFS: + return QStringLiteral( "reiserfs" ); + default: + return FileSystem::nameForType( t, { QStringLiteral( "C" ) } ); + } +} + } // namespace Partition } // namespace CalamaresUtils diff --git a/src/libcalamares/partition/FileSystem.h b/src/libcalamares/partition/FileSystem.h index 6f058fd81..03f6ff3bc 100644 --- a/src/libcalamares/partition/FileSystem.h +++ b/src/libcalamares/partition/FileSystem.h @@ -38,12 +38,30 @@ namespace Partition { QString DLLEXPORT prettyNameForFileSystemType( FileSystem::Type t ); +/** @brief Returns a machine-readable identifier for the filesystem type + * + * This identifier is used in filesystem manipulation -- + * e.g. when mounting the filesystem, or in /etc/fstab. It + * is almost always just what KPMCore says it is, with + * the following exceptions: + * - reiserfs is called "reiser" by KPMCore, "reiserfs" by Calamares + */ +QString DLLEXPORT untranslatedFS( FileSystem::Type t ); + +/** @brief Returns the machine-readable identifier for the given @p fs + * + * See notes for untranslatedFS(), above. + */ static inline QString untranslatedFS( FileSystem& fs ) { - return fs.name( { QStringLiteral( "C" ) } ); + return untranslatedFS( fs.type() ); } +/** @brief Returns a machine-readable identifier for the given @p fs + * + * Returns an empty string is the @p fs is not valid (e.g. nullptr). + */ static inline QString untranslatedFS( FileSystem* fs ) { diff --git a/src/libcalamares/partition/KPMTests.cpp b/src/libcalamares/partition/KPMTests.cpp index ed34c2701..d702c8a01 100644 --- a/src/libcalamares/partition/KPMTests.cpp +++ b/src/libcalamares/partition/KPMTests.cpp @@ -20,6 +20,8 @@ #include "utils/Logger.h" +#include "FileSystem.h" + #include #include @@ -100,6 +102,30 @@ KPMTests::testFSNames() QVERIFY( fsNames.contains( "ext2" ) ); QVERIFY( fsNames.contains( "ext4" ) ); QVERIFY( fsNames.contains( "reiser" ) ); + + QStringList calaFSNames; + calaFSNames.reserve( fstypes.count() ); + for ( const auto t : fstypes ) + { + QString s = CalamaresUtils::Partition::untranslatedFS( t ); + calaFSNames.append( s ); + } + + QVERIFY( calaFSNames.contains( "ext2" ) ); + QVERIFY( calaFSNames.contains( "ext4" ) ); + QVERIFY( !calaFSNames.contains( "reiser" ) ); + QVERIFY( calaFSNames.contains( "reiserfs" ) ); // whole point of Cala's own implementation + + // Lists are the same except for .. the exceptions + QStringList exceptionalNames { "reiser", "reiserfs" }; + for ( const auto& s : fsNames ) + { + QVERIFY( exceptionalNames.contains( s ) || calaFSNames.contains( s ) ); + } + for ( const auto& s : calaFSNames ) + { + QVERIFY( exceptionalNames.contains( s ) || fsNames.contains( s ) ); + } } From 4808201944173c8a4002b2dcb3d71bed8687562d Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Sun, 9 Aug 2020 20:49:43 +0200 Subject: [PATCH 225/399] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_as.ts | 166 ++++++++++++++++++++++------------------ lang/calamares_az.ts | 17 ++-- lang/calamares_az_AZ.ts | 11 +-- lang/calamares_ja.ts | 11 +-- 4 files changed, 113 insertions(+), 92 deletions(-) diff --git a/lang/calamares_as.ts b/lang/calamares_as.ts index b087c0ba3..9f1da1ad3 100644 --- a/lang/calamares_as.ts +++ b/lang/calamares_as.ts @@ -212,17 +212,17 @@ Loading ... - + ভৰ্টিকৰন ... QML Step <i>%1</i>. - + QML Step <i>%1</i>. Loading failed. - + ভৰ্টিকৰন বিফল | @@ -717,7 +717,7 @@ The installer will quit and all changes will be lost. Set timezone to %1/%2. - + সময় অঞ্চলৰ সিদ্ধান্ত কৰক %`1%2 @@ -742,7 +742,7 @@ The installer will quit and all changes will be lost. Network Installation. (Disabled: internal error) - + নেটৱৰ্ক ইনস্তলেচন। (নিস্ক্ৰিয়: ভিতৰুৱা দোষ) @@ -777,22 +777,22 @@ The installer will quit and all changes will be lost. <h1>Welcome to the Calamares setup program for %1</h1> - + %1ৰ Calamares চেত্ আপ প্ৰগ্ৰামলৈ আদৰণি জনাইছো। <h1>Welcome to %1 setup</h1> - + <h1> %1 চেত্ আপলৈ আদৰণি জনাইছো।</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>%1ৰ কেলামাৰেচ ইনস্তলাৰলৈ আদৰণি জনাইছো।</h1> <h1>Welcome to the %1 installer</h1> - + <h1>%1 ইনস্তলাৰলৈ আদৰণি জনাইছো।</h1> @@ -802,7 +802,7 @@ The installer will quit and all changes will be lost. '%1' is not allowed as username. - + '%1'ক ব্যৱহাৰকাৰীৰ নাম হিচাপে ব্যৱহাৰ কৰা অবধ্য | @@ -827,7 +827,7 @@ The installer will quit and all changes will be lost. '%1' is not allowed as hostname. - + '%1'ক আয়োজকৰ নাম হিচাপে ব্যৱহাৰ কৰা অবধ্য | @@ -1768,7 +1768,7 @@ The installer will quit and all changes will be lost. Could not configure LUKS key file on partition %1. - + %1 বিভাজনত LUKS কি ফাইল কনফিগাৰ কৰিব পৰা নগ'ল। @@ -1796,7 +1796,9 @@ The installer will quit and all changes will be lost. 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. - + অনুগ্ৰহ কৰি নিজৰ প্রিয় স্থান নক্সাখ্নত বাছক জাতে ইস্নস্তালাৰটোৱে অপোনাক থলী + আৰু সময় অঞ্চলৰ ছেটিংছ আপোৰ বাবে মিলাই দায়ক | আপোনি পৰামৰ্শমূলক ছেটিংছবোৰক তলত অনুকূলিত কৰিব পাৰে | নক্সাখ্নত পৈন্তেৰদালক টানি অনুসন্ধান কৰিব | + আৰু +/- বুটামেৰে যোম in/out কৰক বা মাউছৰ সচৰোলৰও ব্যবহাৰ কৰিব পাৰে | @@ -1810,92 +1812,92 @@ The installer will quit and all changes will be lost. Office software - + কাৰ্যালয়ৰ ছফটৱেৰ Office package - + কাৰ্যালয়ৰ পেকেজ Browser software - + ব্ৰাউজাৰৰ ছফটৱেৰ Browser package - + ব্ৰাউজাৰৰ পেকেজ Web browser - + ৱেব ব্ৰাউজাৰ Kernel - + কাৰ্ণেল Services - + সেৰ্ৱিচেস Login - + পৰীক্ষণ কৰক Desktop - + দেস্কেতোপ Applications - + এপ্লীকেছ্নচ Communication - + যোগাযোগ Development - + প্রবৃদ্ধি Office - + কাৰ্যালয় Multimedia - + মাল্টিমিডিয়া Internet - + ইণ্টাৰনেট Theming - + থিমীং Gaming - + খেলা Utilities - + সঁজুলি @@ -1903,7 +1905,7 @@ The installer will quit and all changes will be lost. Notes - + টোকা @@ -1942,12 +1944,12 @@ The installer will quit and all changes will be lost. Timezone: %1 - + সময় অঞ্চল: %1 To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. - + সময় অঞ্চল বাছিবলৈ, ইণ্টাৰনেটত সংশ্লিষ্ট কৰি ৰাখিব | সংশ্লিষ্ট কৰি ইন্স্তালাৰটো পুনৰাৰম্ভ কৰক | আপোনি ভাসা অৰু থলীৰ ছেটিংছবোৰ তলত অনুকূলিত কৰিব পাৰে | @@ -2599,12 +2601,12 @@ The installer will quit and all changes will be lost. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + %1 আৰম্ভ কৰিবলৈ এটা EFI চিছটেম থকাটো আৱশ্যক। <br/><br/>এটা EFI চিছটেম কন্ফিগাৰ কৰিবলৈ উভতি যাওক আৰু FAT32 ফাইল চিছটেম এটা বাচনি কৰক যিটোত <strong>%3</strong> ফ্লেগ সক্ষম হৈ আছে আৰু <strong>%2</strong> মাউন্ট্ পইণ্ট্ আছে।<br/><br/>আপুনি EFI চিছটেমবিভাজন কন্ফিগাৰ নকৰাকৈ অগ্ৰসৰ হ'ব পাৰে কিন্তু ইয়াৰ ফলত চিছটেম বিফল হ'ব পাৰে। An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + %1 আৰম্ভ কৰিবলৈ এটা EFI চিছটেম থকাটো আৱশ্যক। %2 মাউন্ট্ পইন্ট্ নোহোৱকৈ কন্ফিগাৰ কৰা হৈছিল, কিন্তু ইয়াৰ esp ফ্লেগ ছেট কৰা হোৱা নাই। ফ্লেগ্ ছেট কৰিবলৈ উভতি যাওক আৰু বিভাজন সলনি কৰক। আপুনি ফ্লেগ ছেট নকৰাকৈ অগ্ৰসৰ হ'ব পাৰে কিন্তু ইয়াৰ ফলত চিছটেম বিফল হ'ব পাৰে। @@ -2614,12 +2616,12 @@ The installer will quit and all changes will be lost. Option to use GPT on BIOS - + GPTৰ BIOSত ব্যৱহাৰৰ বাবে বিকল্প A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + এটা GPT পৰ্তিসোন টেবুল সকলো স্যস্তেমৰ বাবে উত্তম বিকল্প হয় | এই ইন্সালাৰতোৱে তেনে স্থাপনকৰণ BIOS স্যস্তেমতো কৰে |<br/><br/>এটা GPT পৰ্তিসোন টেবুল কনফিগাৰ কৰিবলৈ ( যদি আগতে কৰা নাই ) পাছলৈ গৈ পৰ্তিসোন টেবুলখনক GPTলৈ পৰিৱৰ্তন কৰক, তাৰপাচত 8 MBৰ উনফোৰমেতেট পৰ্তিতিওন এটা বনাব | <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. @@ -2639,7 +2641,7 @@ The installer will quit and all changes will be lost. There are no partitions to install on. - + ইনস্তল কৰিবলৈ কোনো বিভাজন নাই। @@ -2852,7 +2854,7 @@ Output: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + %1 চেত্ আপৰ বাবে পৰামৰ্শ দিয়া আৱশ্যকতা এই কম্পিউটাৰটোৱে পূৰ্ণ নকৰে। <br/>স্থাপন প্ৰক্ৰিয়া অবিৰত ৰাখিব পাৰিব, কিন্তু কিছুমান সুবিধা নিষ্ক্রিয় হৈ থাকিব। @@ -2963,13 +2965,14 @@ Output: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + %1 ইনস্তলচেন​ৰ বাবে নিম্নতম আৱশ্যকতা এই কম্পিউটাৰটোৱে পূৰ্ণ নকৰে। + <br/>ইনস্তলচেন​ প্ৰক্ৰিয়া অবিৰত ৰাখিব নোৱাৰিব। <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + %1 চেত্ আপৰ বাবে পৰামৰ্শ দিয়া আৱশ্যকতা এই কম্পিউটাৰটোৱে পূৰ্ণ নকৰে। <br/>স্থাপন প্ৰক্ৰিয়া অবিৰত ৰাখিব পাৰিব, কিন্তু কিছুমান সুবিধা নিষ্ক্রিয় হৈ থাকিব। @@ -3435,28 +3438,28 @@ Output: KDE user feedback - + KDE ব্যৱহাৰকৰ্তাৰ সম্বন্ধীয় প্ৰতিক্ৰীয়া Configuring KDE user feedback. - + কনফিগাৰত KDE ব্যৱহাৰকৰ্তাৰ সম্বন্ধীয় প্ৰতিক্ৰীয়া Error in KDE user feedback configuration. - + KDE ব্যৱহাৰকৰ্তাৰ ফিডবেক কনফিগাৰেচনৰ ক্ৰুটি। Could not configure KDE user feedback correctly, script error %1. - + KDE ব্যৱহাৰকৰ্তাৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, লিপি ক্ৰুটি %1। Could not configure KDE user feedback correctly, Calamares error %1. - + KDE ব্যৱহাৰকৰ্তাৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, কেলামাৰেচ ক্ৰুটি %1। @@ -3503,7 +3506,7 @@ Output: <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>এইটো বাচনি কৰি, ইনস্তলচেন​ৰ বিষয়ে <span style=" font-weight:600;">মুঠতে একো তথ্য</span> আপুনি নপঠায়।</p></body></html> @@ -3518,17 +3521,17 @@ Output: By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. - + এইটো বাচনি কৰি আপুনি ইনস্তলচেন​ আৰু হাৰ্ডৱেৰৰ বিষয়ে তথ্য পঠাব। ইনস্তলচেন​ৰ পিছত <b>এই তথ্য এবাৰ পঠোৱা হ'ব</b>। By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + এইটো বাচনি কৰি আপুনি ইনস্তলচেন​, হাৰ্ডৱেৰ আৰু এপ্লিকেচনৰ বিষয়ে <b>মেচিন</b> %1লৈ তথ্য পঠাব। By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. - + এইটো বাচনি কৰি আপুনি ইনস্তলচেন​, হাৰ্ডৱেৰ আৰু এপ্লিকেচনৰ বিষয়ে <b>ব্যৱহাৰকৰ্তা</b> %1লৈ তথ্য পঠাব। @@ -3727,7 +3730,7 @@ Output: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>ৰ বাবে %3</strong><br/><br/> মালিকিস্বত্ত 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>মালিকিস্বত্ত 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/><a href="https://calamares.io/team/">Calamares দল</a> আৰু <a href="https://www.transifex.com/calamares/calamares/">কেলামাৰেচ অনুবাদক দল</a>ক ধন্যবাদ জনাইছো।<br/><br/><a href="https://calamares.io/">Calamares</a>ৰ বিকাশ<br/><a href="http://www.blue-systems.com/">Blue Systems</a>- Liberating Softwareৰ দ্বাৰা প্ৰযোজিত। @@ -3762,12 +3765,23 @@ Output: development is sponsored by <br/> <a href='http://www.blue-systems.com/'>Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/> + <strong>%2<br/> + ৰ বাবে %3</strong><br/><br/> + মালিকিস্বত্ত 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + মালিকিস্বত্ত 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + ক ধন্যবাদ জনাইছো<a href='https://calamares.io/team/'> Calamares দল + আৰু <a href='https://www.transifex.com/calamares/calamares/'>Calamares + অনুবাদক দল</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + ৰ বিকাশ<br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Softwareৰ দ্বাৰা প্ৰযোজিত।. Back - + পাছলৈ @@ -3776,18 +3790,20 @@ Output: <h1>Languages</h1> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. - + <h1>ভাষা</h1> </br> + চিছটেমৰ স্থানীয় ছেটিংস্ কমাণ্ডলাইনৰ কিছুমান উপভোক্তা ইন্টাৰফেছ উপাদানৰ ভাষা আৰু আখৰবোৰত প্ৰভাৱ পেলায়। বৰ্তমান ছেটিংস্ হ'ল: <strong>%1</strong>. <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>স্থানীয়</h1> </br> + চিছটেমৰ স্থানীয় ছেটিংসে উপাদানৰ নম্বৰ আৰু তাৰিখ সজ্জা প্ৰভাৱ পেলায়। বৰ্তমান ছেটিংস্ হ'ল: <strong>%1</strong>. Back - + পাছলৈ @@ -3795,44 +3811,44 @@ Output: Keyboard Model - + কিবোৰ্ড মডেল Pick your preferred keyboard model or use the default one based on the detected hardware - + আপোনাৰ প্ৰিয় কিবোৰ্ড মডেল চয়ন কৰক বা আপোনাৰ হাৰ্ডৱেৰৰ গতানুগতিকখ্নক ব্যৱহাৰ কৰক | Refresh - + সতেজ কৰক Layouts - + লেআউট Keyboard Layout - + কিবোৰ্ড লেআউট Models - + মডেল Variants - + ভিন্ন ৰুপ Test your keyboard - + কিবোৰ্ড পৰীক্ষা কৰক @@ -3840,7 +3856,7 @@ Output: Change - + সলনি @@ -3849,7 +3865,8 @@ Output: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> + <p>এই খিনি ৰিলিজ নোতৰ উদাহৰণ </p> @@ -3882,7 +3899,7 @@ Output: Back - + পাছলৈ @@ -3891,32 +3908,33 @@ Output: <h3>Welcome to the %1 <quote>%2</quote> installer</h3> <p>This program will ask you some questions and set up %1 on your computer.</p> - + <h3>স্বাগতম আপোনাক %1 <quote>%2</quote> ইন্সালাৰটোত</h3> + <p>এই প্ৰোগ্ৰেমটোএয়ে অপোনাক কিৱছোমান প্ৰশ্ন সুধিব আৰু আপোনাৰ কোম্পিউটাৰত %1 স্থাপনকৰণ কৰিব |</p> About - + সম্পর্কে Support - + সহায় Known issues - + জ্ঞাত সমস্যা Release notes - + মুক্তি টোকা Donate - + দান কৰক diff --git a/lang/calamares_az.ts b/lang/calamares_az.ts index 4656531e5..c762de2df 100644 --- a/lang/calamares_az.ts +++ b/lang/calamares_az.ts @@ -6,7 +6,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - Bu sistemin <strong>açılış mühiti</strong>.<br><br>Köhnə x86 sistemlər yalnız <strong>BIOS</strong> dəstəkləyir.<br>Müasir sistemlər isə adətən <strong>EFI</strong> 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. + Sistemin <strong>açılış mühiti</strong>.<br><br>Köhnə x86 sistemlər yalnız <strong>BIOS</strong> dəstəkləyir.<br>Müasir sistemlər isə adətən <strong>EFI</strong> 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. @@ -65,12 +65,12 @@ GlobalStorage - Ümumi yaddaş + ÜmumiYaddaş JobQueue - Tapşırıq sırası + TapşırıqSırası @@ -530,7 +530,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Əl ilə bölmək</strong><br/>Siz bölməni özünüz yarada və ölçüsünü dəyişə bilərsiniz. @@ -717,7 +717,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Set timezone to %1/%2. - + Saat quraşağını təyin etmək %1/%2 @@ -802,7 +802,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. '%1' is not allowed as username. - + İstifadəçi adı '%1' ola bilməz @@ -827,7 +827,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. '%1' is not allowed as hostname. - + Host_adı '%1' ola bilməz @@ -3800,7 +3800,8 @@ Output: <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>Yerlər</h1></br> + Sistemin məkan ayarları say və tarix formatlarəna təsir edir. Cari ayar <strong>%1</strong>-dir diff --git a/lang/calamares_az_AZ.ts b/lang/calamares_az_AZ.ts index 9bc6e2aab..0c1077022 100644 --- a/lang/calamares_az_AZ.ts +++ b/lang/calamares_az_AZ.ts @@ -530,7 +530,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Əl ilə bölmək</strong><br/>Siz bölməni özünüz yarada və ölçüsünü dəyişə bilərsiniz. @@ -717,7 +717,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Set timezone to %1/%2. - + Saat quraşağını təyin etmək %1/%2 @@ -802,7 +802,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. '%1' is not allowed as username. - + İstifadəçi adı '%1' ola bilməz @@ -827,7 +827,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. '%1' is not allowed as hostname. - + Host_adı '%1' ola bilməz @@ -3800,7 +3800,8 @@ Output: <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>Yerlər</h1></br> + Sistemin məkan ayarları say və tarix formatlarəna təsir edir. Cari ayar <strong>%1</strong>-dir diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index fc20c54b3..8febc0aba 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -715,7 +715,7 @@ The installer will quit and all changes will be lost. Set timezone to %1/%2. - + タイムゾーンを %1/%2 に設定します。 @@ -725,7 +725,7 @@ The installer will quit and all changes will be lost. The numbers and dates locale will be set to %1. - 数字と日付のロケールを %1 に設定します。 + 数値と日付のロケールを %1 に設定します。 @@ -800,7 +800,7 @@ The installer will quit and all changes will be lost. '%1' is not allowed as username. - + '%1' はユーザー名として許可されていません。 @@ -825,7 +825,7 @@ The installer will quit and all changes will be lost. '%1' is not allowed as hostname. - + '%1' はホスト名として許可されていません。 @@ -3799,7 +3799,8 @@ Output: <h1>Locales</h1> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. - + <h1>ロケール</h1> </br> + システムのロケール設定は、数値と日付の形式に影響を及ぼします。現在の設定は <strong>%1</strong> です。 From f08b4e502a00ffbae5ead40ae7b3d259be25c5fb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 20:58:16 +0200 Subject: [PATCH 226/399] i18n: update English source translations --- lang/calamares_en.ts | 250 +++++++++--------- lang/python.pot | 155 +++++------ .../dummypythonqt/lang/dummypythonqt.pot | 2 +- 3 files changed, 199 insertions(+), 208 deletions(-) diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index e6e44b274..e4773535e 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. Form - + Select storage de&vice: Select storage de&vice: - - - - + + + + Current: Current: - + After: After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Reuse %1 as home partition for %2. Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + Boot loader location: Boot loader location: - + <strong>Select a partition to install on</strong> <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + No Swap No Swap - + Reuse Swap Reuse Swap - + Swap (no Hibernate) Swap (no Hibernate) - + Swap (with Hibernate) Swap (with Hibernate) - + Swap to file Swap to file @@ -715,17 +715,17 @@ The installer will quit and all changes will be lost. Set keyboard layout to %1/%2. - + Set timezone to %1/%2. Set timezone to %1/%2. - + The system language will be set to %1. The system language will be set to %1. - + The numbers and dates locale will be set to %1. The numbers and dates locale will be set to %1. @@ -795,42 +795,42 @@ The installer will quit and all changes will be lost. <h1>Welcome to the %1 installer</h1> - + Your username is too long. Your username is too long. - + '%1' is not allowed as username. '%1' is not allowed as username. - + Your username must start with a lowercase letter or underscore. Your username must start with a lowercase letter or underscore. - + Only lowercase letters, numbers, underscore and hyphen are allowed. Only lowercase letters, numbers, underscore and hyphen are allowed. - + Your hostname is too short. Your hostname is too short. - + Your hostname is too long. Your hostname is too long. - + '%1' is not allowed as hostname. '%1' is not allowed as hostname. - + Only letters, numbers, underscore and hyphen are allowed. Only letters, numbers, underscore and hyphen are allowed. @@ -1251,7 +1251,8 @@ The installer will quit and all changes will be lost. Confirm passphrase - + + Please enter the same passphrase in both boxes. Please enter the same passphrase in both boxes. @@ -1703,18 +1704,18 @@ The installer will quit and all changes will be lost. LocalePage - + Region: Region: - + Zone: Zone: - - + + &Change... &Change... @@ -1792,7 +1793,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + Timezone: %1 + + + 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. @@ -1955,247 +1961,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Password is too short - + Password is too long Password is too long - + Password is too weak Password is too weak - + Memory allocation error when setting '%1' Memory allocation error when setting '%1' - + Memory allocation error Memory allocation error - + The password is the same as the old one The password is the same as the old one - + The password is a palindrome The password is a palindrome - + The password differs with case changes only The password differs with case changes only - + The password is too similar to the old one The password is too similar to the old one - + The password contains the user name in some form The password contains the user name in some form - + The password contains words from the real name of the user in some form The password contains words from the real name of the user in some form - + The password contains forbidden words in some form The password contains forbidden words in some form - + The password contains less than %1 digits The password contains less than %1 digits - + The password contains too few digits The password contains too few digits - + The password contains less than %1 uppercase letters The password contains less than %1 uppercase letters - + The password contains too few uppercase letters The password contains too few uppercase letters - + The password contains less than %1 lowercase letters The password contains less than %1 lowercase letters - + The password contains too few lowercase letters The password contains too few lowercase letters - + The password contains less than %1 non-alphanumeric characters The password contains less than %1 non-alphanumeric characters - + The password contains too few non-alphanumeric characters The password contains too few non-alphanumeric characters - + The password is shorter than %1 characters The password is shorter than %1 characters - + The password is too short The password is too short - + The password is just rotated old one The password is just rotated old one - + The password contains less than %1 character classes The password contains less than %1 character classes - + The password does not contain enough character classes The password does not contain enough character classes - + The password contains more than %1 same characters consecutively The password contains more than %1 same characters consecutively - + The password contains too many same characters consecutively The password contains too many same characters consecutively - + The password contains more than %1 characters of the same class consecutively The password contains more than %1 characters of the same class consecutively - + The password contains too many characters of the same class consecutively The password contains too many characters of the same class consecutively - + The password contains monotonic sequence longer than %1 characters The password contains monotonic sequence longer than %1 characters - + The password contains too long of a monotonic character sequence The password contains too long of a monotonic character sequence - + No password supplied No password supplied - + Cannot obtain random numbers from the RNG device Cannot obtain random numbers from the RNG device - + Password generation failed - required entropy too low for settings Password generation failed - required entropy too low for settings - + The password fails the dictionary check - %1 The password fails the dictionary check - %1 - + The password fails the dictionary check The password fails the dictionary check - + Unknown setting - %1 Unknown setting - %1 - + Unknown setting Unknown setting - + Bad integer value of setting - %1 Bad integer value of setting - %1 - + Bad integer value Bad integer value - + Setting %1 is not of integer type Setting %1 is not of integer type - + Setting is not of integer type Setting is not of integer type - + Setting %1 is not of string type Setting %1 is not of string type - + Setting is not of string type Setting is not of string type - + Opening the configuration file failed Opening the configuration file failed - + The configuration file is malformed The configuration file is malformed - + Fatal failure Fatal failure - + Unknown error Unknown error - + Password is empty Password is empty @@ -2529,67 +2535,67 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Current: - + After: After: @@ -2634,12 +2640,12 @@ The installer will quit and all changes will be lost. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. has at least one disk device available. - + There are no partitions to install on. There are no partitions to install on. @@ -3547,17 +3553,17 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> - + Your passwords do not match! Your passwords do not match! @@ -3565,7 +3571,7 @@ Output: UsersViewStep - + Users Users @@ -3856,7 +3862,7 @@ Output: localeq - + Change Change diff --git a/lang/python.pot b/lang/python.pot index 1c20ae7b5..7e3d85b67 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -2,29 +2,29 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-07-29 11:03+0200\n" +"POT-Creation-Date: 2020-08-09 20:56+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "Configure GRUB." +msgstr "" #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "Mounting partitions." +msgstr "" #: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 #: src/modules/initcpiocfg/main.py:209 @@ -36,179 +36,172 @@ msgstr "Mounting partitions." #: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "Configuration Error" +msgstr "" #: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 #: src/modules/fstab/main.py:333 msgid "No partitions are defined for
{!s}
to use." -msgstr "No partitions are defined for
{!s}
to use." +msgstr "" #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "Configure systemd services" +msgstr "" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "Cannot modify service" +msgstr "" #: src/modules/services-systemd/main.py:69 msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" -"systemctl {arg!s} call in chroot returned error code {num!s}." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." -msgstr "Cannot enable systemd service {name!s}." +msgstr "" #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." -msgstr "Cannot enable systemd target {name!s}." +msgstr "" #: src/modules/services-systemd/main.py:78 msgid "Cannot disable systemd target {name!s}." -msgstr "Cannot disable systemd target {name!s}." +msgstr "" #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "Cannot mask systemd unit {name!s}." +msgstr "" #: src/modules/services-systemd/main.py:82 msgid "" -"Unknown systemd commands {command!s} and " -"{suffix!s} for unit {name!s}." +"Unknown systemd commands {command!s} and {suffix!s} for unit {name!s}." msgstr "" -"Unknown systemd commands {command!s} and " -"{suffix!s} for unit {name!s}." #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "Unmount file systems." +msgstr "" #: src/modules/unpackfs/main.py:44 msgid "Filling up filesystems." -msgstr "Filling up filesystems." +msgstr "" #: src/modules/unpackfs/main.py:257 msgid "rsync failed with error code {}." -msgstr "rsync failed with error code {}." +msgstr "" #: src/modules/unpackfs/main.py:302 msgid "Unpacking image {}/{}, file {}/{}" -msgstr "Unpacking image {}/{}, file {}/{}" +msgstr "" #: src/modules/unpackfs/main.py:317 msgid "Starting to unpack {}" -msgstr "Starting to unpack {}" +msgstr "" #: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 msgid "Failed to unpack image \"{}\"" -msgstr "Failed to unpack image \"{}\"" +msgstr "" #: src/modules/unpackfs/main.py:415 msgid "No mount point for root partition" -msgstr "No mount point for root partition" +msgstr "" #: src/modules/unpackfs/main.py:416 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -msgstr "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" #: src/modules/unpackfs/main.py:421 msgid "Bad mount point for root partition" -msgstr "Bad mount point for root partition" +msgstr "" #: src/modules/unpackfs/main.py:422 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" #: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 #: src/modules/unpackfs/main.py:462 msgid "Bad unsquash configuration" -msgstr "Bad unsquash configuration" +msgstr "" #: src/modules/unpackfs/main.py:439 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" -msgstr "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" #: src/modules/unpackfs/main.py:443 msgid "The source filesystem \"{}\" does not exist" -msgstr "The source filesystem \"{}\" does not exist" +msgstr "" #: src/modules/unpackfs/main.py:449 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -"Failed to find unsquashfs, make sure you have the squashfs-tools package " -"installed" #: src/modules/unpackfs/main.py:463 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "The destination \"{}\" in the target system is not a directory" +msgstr "" #: src/modules/displaymanager/main.py:523 msgid "Cannot write KDM configuration file" -msgstr "Cannot write KDM configuration file" +msgstr "" #: src/modules/displaymanager/main.py:524 msgid "KDM config file {!s} does not exist" -msgstr "KDM config file {!s} does not exist" +msgstr "" #: src/modules/displaymanager/main.py:585 msgid "Cannot write LXDM configuration file" -msgstr "Cannot write LXDM configuration file" +msgstr "" #: src/modules/displaymanager/main.py:586 msgid "LXDM config file {!s} does not exist" -msgstr "LXDM config file {!s} does not exist" +msgstr "" #: src/modules/displaymanager/main.py:669 msgid "Cannot write LightDM configuration file" -msgstr "Cannot write LightDM configuration file" +msgstr "" #: src/modules/displaymanager/main.py:670 msgid "LightDM config file {!s} does not exist" -msgstr "LightDM config file {!s} does not exist" +msgstr "" #: src/modules/displaymanager/main.py:744 msgid "Cannot configure LightDM" -msgstr "Cannot configure LightDM" +msgstr "" #: src/modules/displaymanager/main.py:745 msgid "No LightDM greeter installed." -msgstr "No LightDM greeter installed." +msgstr "" #: src/modules/displaymanager/main.py:776 msgid "Cannot write SLIM configuration file" -msgstr "Cannot write SLIM configuration file" +msgstr "" #: src/modules/displaymanager/main.py:777 msgid "SLIM config file {!s} does not exist" -msgstr "SLIM config file {!s} does not exist" +msgstr "" #: src/modules/displaymanager/main.py:903 msgid "No display managers selected for the displaymanager module." -msgstr "No display managers selected for the displaymanager module." +msgstr "" #: src/modules/displaymanager/main.py:904 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -"The displaymanagers list is empty or undefined in bothglobalstorage and " -"displaymanager.conf." #: src/modules/displaymanager/main.py:986 msgid "Display manager configuration was incomplete" -msgstr "Display manager configuration was incomplete" +msgstr "" #: src/modules/initcpiocfg/main.py:37 msgid "Configuring mkinitcpio." -msgstr "Configuring mkinitcpio." +msgstr "" #: src/modules/initcpiocfg/main.py:210 #: src/modules/luksopenswaphookcfg/main.py:100 @@ -216,139 +209,131 @@ msgstr "Configuring mkinitcpio." #: src/modules/fstab/main.py:339 src/modules/localecfg/main.py:145 #: src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." -msgstr "No root mount point is given for
{!s}
to use." +msgstr "" #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "Configuring encrypted swap." +msgstr "" #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "Installing data." +msgstr "" #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "Configure OpenRC services" +msgstr "" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "Cannot add service {name!s} to run-level {level!s}." +msgstr "" #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "Cannot remove service {name!s} from run-level {level!s}." +msgstr "" #: src/modules/services-openrc/main.py:70 msgid "" "Unknown service-action {arg!s} for service {name!s} in run-" "level {level!s}." msgstr "" -"Unknown service-action {arg!s} for service {name!s} in run-" -"level {level!s}." #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" -"rc-update {arg!s} call in chroot returned error code {num!s}." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "Target runlevel does not exist" +msgstr "" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." msgstr "" -"The path for runlevel {level!s} is {path!s}, which does not " -"exist." #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "Target service does not exist" +msgstr "" #: src/modules/services-openrc/main.py:120 msgid "" -"The path for service {name!s} is {path!s}, which does not " -"exist." +"The path for service {name!s} is {path!s}, which does not exist." msgstr "" -"The path for service {name!s} is {path!s}, which does not " -"exist." #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "Configure Plymouth theme" +msgstr "" #: src/modules/packages/main.py:59 src/modules/packages/main.py:68 #: src/modules/packages/main.py:78 msgid "Install packages." -msgstr "Install packages." +msgstr "" #: src/modules/packages/main.py:66 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "Processing packages (%(count)d / %(total)d)" +msgstr "" #: src/modules/packages/main.py:71 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "Installing one package." -msgstr[1] "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" #: src/modules/packages/main.py:74 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "Removing one package." -msgstr[1] "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "Install bootloader." +msgstr "" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "Setting hardware clock." +msgstr "" #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "Creating initramfs with dracut." +msgstr "" #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "Failed to run dracut on the target" +msgstr "" #: src/modules/dracut/main.py:59 msgid "The exit code was {}" -msgstr "The exit code was {}" +msgstr "" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "Configuring initramfs." +msgstr "" #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "Configuring OpenRC dmcrypt service." +msgstr "" #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "Writing fstab." +msgstr "" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "Dummy python job." +msgstr "" #: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 #: src/modules/dummypython/main.py:103 msgid "Dummy python step {}" -msgstr "Dummy python step {}" +msgstr "" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "Configuring locales." +msgstr "" #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "Saving network configuration." +msgstr "" diff --git a/src/modules/dummypythonqt/lang/dummypythonqt.pot b/src/modules/dummypythonqt/lang/dummypythonqt.pot index 13cc7ada3..dd6d2171e 100644 --- a/src/modules/dummypythonqt/lang/dummypythonqt.pot +++ b/src/modules/dummypythonqt/lang/dummypythonqt.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-18 15:42+0200\n" +"POT-Creation-Date: 2020-08-09 20:56+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From f07c6ed876139d567767eb7c78756ec323891be0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 21:00:40 +0200 Subject: [PATCH 227/399] i18n: drop pythonqt translations from the tooling --- ci/txcheck.sh | 4 ++-- ci/txpull.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/txcheck.sh b/ci/txcheck.sh index 9ce8f0c30..229cc8a73 100644 --- a/ci/txcheck.sh +++ b/ci/txcheck.sh @@ -29,7 +29,7 @@ ### END USAGE # The files that are translated; should match the contents of .tx/config -TX_FILE_LIST="lang/calamares_en.ts lang/python.pot src/modules/dummypythonqt/lang/dummypythonqt.pot calamares.desktop" +TX_FILE_LIST="lang/calamares_en.ts lang/python.pot calamares.desktop" ### COMMAND ARGUMENTS # @@ -125,7 +125,7 @@ tx_sum() # Remove linenumbers from .ts (XML) and .pot sed -i'' -e '/ calamares.desktop.new mv calamares.desktop.new calamares.desktop } From afebe8211ab8c671c04c808782242f8160b24a4b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 21:01:44 +0200 Subject: [PATCH 228/399] Changes: pre-release housekeeping --- CHANGES | 14 +++++++++++--- CMakeLists.txt | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 4d5e19888..cc3a596f9 100644 --- a/CHANGES +++ b/CHANGES @@ -3,7 +3,7 @@ contributors are listed. Note that Calamares does not have a historical changelog -- this log starts with version 3.2.0. The release notes on the website will have to do for older versions. -# 3.2.28 (unreleased) # +# 3.2.28 (2020-08-09) # This release contains contributions from (alphabetically by first name): - Anke Boersma @@ -14,9 +14,11 @@ This release contains contributions from (alphabetically by first name): - A new object *Network* is available to QML modules in `io.calamares.core`. It exposes network status through the *hasInternet* property. - Welcome to Tajik translations. The Tajik language has quickly reached - 100% completion. + 100% completion. Thanks Victor! - Welcome to [Interlingue](https://en.wikipedia.org/wiki/Interlingue). - The translation is at an early stage. + The translation is at an early stage. Qt does not support language + code *ie* though, so it may take some time to be integrated (much + like Esperanto wasn't supported until Qt 5.12). ## Modules ## - The *locale* module has been completely redone on the inside. @@ -31,9 +33,15 @@ This release contains contributions from (alphabetically by first name): timezone setting -- this can be useful to avoid both hard-coding an initial zone and doing extra GeoIP lookups, in the case where the live system already does so. #1391 + - The *locale* and *localeq* modules have additional machinery for + timezone lookups; please report cases where clicking on the map + returns an obviously bogus timezone (up until this release, for + instance, Cape Town). - The *users* module no longer accepts `root` as a username. #1462 - The *keyboardq* module is now more inline with the look of the rest of the Calamares modules, use of a background image is removed. + - The *grubcfg* module now understands `/etc/default/grub.d`. #1457 + # 3.2.27 (2020-07-11) # diff --git a/CMakeLists.txt b/CMakeLists.txt index 10f314856..163019965 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ project( CALAMARES VERSION 3.2.28 LANGUAGES C CXX ) -set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development +set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development ### OPTIONS # From 4c8a624c0b88848aa0a647bf727fae73f7ae12fc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 21:03:58 +0200 Subject: [PATCH 229/399] ci: update the GPG key ID used for signing --- ci/RELEASE.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 69aaec0be..399aa98c9 100755 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -119,7 +119,7 @@ test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; } # # This is the signing key ID associated with the GitHub account adriaandegroot, # which is used to create all "verified" tags in the Calamares repo. -KEY_ID="61A7D26277E4D0DB" +KEY_ID="CFDDC96F12B1915C" git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; } ### Create the tarball From c1d7d3daa6c2c42fc3804718634d9b050dfc979f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 21:10:24 +0200 Subject: [PATCH 230/399] ci: put a space after directory names in user-visible messages - this makes is much easier to double-click-select the directory, since the . isn't attached and won't be selected along with the directory anymore. --- ci/RELEASE.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 399aa98c9..82c77c3e2 100755 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -78,7 +78,7 @@ if test "x$BUILD_DEFAULT" = "xtrue" ; then rm -rf "$BUILDDIR" mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } ( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; } - ( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR." ; exit 1 ; } + ( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR ." ; exit 1 ; } fi ### Build with clang @@ -95,7 +95,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then fi if test "x$BUILD_ONLY" = "xtrue" ; then - echo "Builds completed, release stopped. Build remains in $BUILDDIR." + echo "Builds completed, release stopped. Build remains in $BUILDDIR ." exit 1 fi @@ -106,14 +106,14 @@ else # Presumably -B was given; just do the cmake part rm -rf "$BUILDDIR" mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } - ( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; } + ( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR ." ; exit 1 ; } fi ### Get version number for this release # # V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// ) -test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; } +test -n "$V" || { echo "Could not obtain version in $BUILDDIR ." ; exit 1 ; } ### Create signed tag # @@ -139,7 +139,7 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D") test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; } tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; } test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; } -( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; } +( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR ." ; exit 1 ; } ### Cleanup # From e2bf62a64b388cc006cc9f8ce57132b0029dfc0e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 22:35:10 +0200 Subject: [PATCH 231/399] [libcalamares] Repair test for old Qt - Qt 5.11 and early 5.12 just don't support Esperanto at all --- src/libcalamares/locale/Tests.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index b755a61a5..6414e2ebf 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -120,10 +120,11 @@ LocaleTests::testEsperanto() { #if QT_VERSION < QT_VERSION_CHECK( 5, 12, 2 ) QCOMPARE( QLocale( "eo" ).language(), QLocale::C ); + QCOMPARE( QLocale( QLocale::Esperanto ).language(), QLocale::English ); #else QCOMPARE( QLocale( "eo" ).language(), QLocale::Esperanto ); -#endif QCOMPARE( QLocale( QLocale::Esperanto ).language(), QLocale::Esperanto ); // Probably fails on 5.12, too +#endif } void From 4a3378d8b93abe4235ffb4d2e38a83f8cc09b85f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 9 Aug 2020 23:01:59 +0200 Subject: [PATCH 232/399] [libcalamares] Repair tests around save/load YAML round-trip - QStringList doesn't round-trip correctly; add a test to demonstrate that. - Fix existing test to **not** use QStringList, but QVariantList (of strings), which is how other code would use it. The above is **kind** of moot because nothing uses the YAML-save function, but it might. While here, fix another test: YAML-loading can load JSON just fine. --- src/libcalamares/Tests.cpp | 42 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp index bf419d721..53bedc544 100644 --- a/src/libcalamares/Tests.cpp +++ b/src/libcalamares/Tests.cpp @@ -38,6 +38,7 @@ private Q_SLOTS: void testGSModify(); void testGSLoadSave(); void testGSLoadSave2(); + void testGSLoadSaveYAMLStringList(); }; void @@ -75,7 +76,13 @@ TestLibCalamares::testGSLoadSave() gs.insert( "derp", 17 ); gs.insert( "cow", "moo" ); - gs.insert( "dwarfs", QStringList { "dopey", "sneezy" } ); + + QVariantList l; + for ( const auto& s : QStringList { "dopey", "sneezy" } ) + { + l.append( s ); + } + gs.insert( "dwarfs", l ); QCOMPARE( gs.count(), 3 ); @@ -93,8 +100,12 @@ TestLibCalamares::testGSLoadSave() QCOMPARE( gs3.count(), 3 ); QCOMPARE( gs3.data(), gs.data() ); + // YAML can load as JSON! + QVERIFY( gs3.loadYaml( jsonfilename ) ); + QCOMPARE( gs3.count(), 3 ); + QCOMPARE( gs3.data(), gs.data() ); + // Failures in loading - QVERIFY( !gs3.loadYaml( jsonfilename ) ); QVERIFY( !gs3.loadJson( yamlfilename ) ); Calamares::GlobalStorage gs4; @@ -139,6 +150,33 @@ TestLibCalamares::testGSLoadSave2() QCOMPARE( gs2.value( key ).type(), QVariant::List ); } +void +TestLibCalamares::testGSLoadSaveYAMLStringList() +{ + Calamares::GlobalStorage gs; + const QString yamlfilename( "gs.test.yaml" ); + + gs.insert( "derp", 17 ); + gs.insert( "cow", "moo" ); + gs.insert( "dwarfs", QStringList { "happy", "dopey", "sleepy", "sneezy", "doc", "thorin", "balin" } ); + + QCOMPARE( gs.count(), 3 ); + QCOMPARE( gs.value( "dwarfs" ).toList().count(), 7 ); // There's seven dwarfs, right? + QVERIFY( gs.value( "dwarfs" ).toStringList().contains( "thorin" ) ); + QVERIFY( !gs.value( "dwarfs" ).toStringList().contains( "gimli" ) ); + + + QVERIFY( gs.saveYaml( yamlfilename ) ); + + Calamares::GlobalStorage gs2; + QCOMPARE( gs2.count(), 0 ); + QVERIFY( gs2.loadYaml( yamlfilename ) ); + QCOMPARE( gs2.count(), 3 ); + QEXPECT_FAIL( "", "QStringList doesn't write out nicely", Continue ); + QCOMPARE( gs2.value( "dwarfs" ).toList().count(), 7 ); // There's seven dwarfs, right? + QCOMPARE( gs2.value( "dwarfs" ).toString(), QStringLiteral( "" ) ); // .. they're gone +} + QTEST_GUILESS_MAIN( TestLibCalamares ) From 296146e4f8c3b5f72472a9f38e3c014f14f56306 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 10 Aug 2020 09:32:50 +0200 Subject: [PATCH 233/399] [libcalamares] update SPDX licensing on generated files - the scripts are BSD-2-clause, - the generated files are CC0 (I'm not *100%* sure about the derived file CountryData_p.cpp, which lists countries and country codes -- it **is** extracted from CLDR data which is not CC0) --- src/libcalamares/locale/CountryData_p.cpp | 13 +++- src/libcalamares/locale/ZoneData_p.cxxtr | 24 +------ src/libcalamares/locale/cldr-extractor.py | 87 ++++++++--------------- src/libcalamares/locale/zone-extractor.py | 53 +++----------- 4 files changed, 57 insertions(+), 120 deletions(-) diff --git a/src/libcalamares/locale/CountryData_p.cpp b/src/libcalamares/locale/CountryData_p.cpp index 4382950ec..722ee2ba9 100644 --- a/src/libcalamares/locale/CountryData_p.cpp +++ b/src/libcalamares/locale/CountryData_p.cpp @@ -2,7 +2,13 @@ * * === This file is part of Calamares - === * -* This file is derived from CLDR data from Unicode, Inc. Applicable terms: +* SPDX-FileCopyrightText: 1991-2019 Unicode, Inc. +* SPDX-FileCopyrightText: 2019 Adriaan de Groot +* SPDX-License-Identifier: CC0 +* +* This file is derived from CLDR data from Unicode, Inc. Applicable terms +* are listed at http://unicode.org/copyright.html , of which the most +* important are: * * A. Unicode Copyright * 1. Copyright © 1991-2019 Unicode, Inc. All rights reserved. @@ -10,6 +16,11 @@ * Unicode Data Files ("DATA FILES") include all data files under the directories: * https://www.unicode.org/Public/ * C. Terms of Use +* 1. Certain documents and files on this website contain a legend indicating +* that "Modification is permitted." Any person is hereby authorized, +* without fee, to modify such documents and files to create derivative +* works conforming to the Unicode® Standard, subject to Terms and +* Conditions herein. * 2. Any person is hereby authorized, without fee, to view, use, reproduce, * and distribute all documents and files, subject to the Terms and * Conditions herein. diff --git a/src/libcalamares/locale/ZoneData_p.cxxtr b/src/libcalamares/locale/ZoneData_p.cxxtr index 4bfef3c0c..7bbcdf7f6 100644 --- a/src/libcalamares/locale/ZoneData_p.cxxtr +++ b/src/libcalamares/locale/ZoneData_p.cxxtr @@ -1,26 +1,8 @@ /* GENERATED FILE DO NOT EDIT * -* === This file is part of Calamares - === - * - * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * - * +* SPDX-FileCopyrightText: 2009 Arthur David Olson +* SPDX-FileCopyrightText: 2019 Adriaan de Groot +* SPDX-License-Identifier: CC0 * * This file is derived from zone.tab, which has its own copyright statement: * diff --git a/src/libcalamares/locale/cldr-extractor.py b/src/libcalamares/locale/cldr-extractor.py index f69407257..0291abf7d 100644 --- a/src/libcalamares/locale/cldr-extractor.py +++ b/src/libcalamares/locale/cldr-extractor.py @@ -1,45 +1,9 @@ #! /usr/bin/env python3 # # === This file is part of Calamares - === -# +# # SPDX-FileCopyrightText: 2019 Adriaan de Groot -# # SPDX-License-Identifier: BSD-2-Clause -# License-Filename: LICENSES/BSD2 -# -# -# -# Python3 script to scrape some data out of ICU CLDR supplemental data. -# -### BEGIN LICENSES -# -# Copyright 2019 Adriaan de Groot -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -### END LICENSES - -### BEGIN USAGE # """ Python3 script to scrape some data out of ICU CLDR supplemental data. @@ -126,7 +90,7 @@ class CountryData: self.country_code = "" self.language_enum = "AnyLanguage" self.country_enum = "AnyCountry" - + def __str__(self): if self.country_code: char0 = "'{!s}'".format(self.country_code[0]) @@ -134,18 +98,18 @@ class CountryData: else: char0 = "0" char1 = "0" - + return "{!s} QLocale::Language::{!s}, QLocale::Country::{!s}, {!s}, {!s} {!s},".format( "{", - self.language_enum, + self.language_enum, self.country_enum, - char0, + char0, char1, "}") # Must match type name below cpp_classname = "CountryData" - + # Must match the output format of __str__ above cpp_declaration = """ struct CountryData @@ -169,30 +133,30 @@ def extricate_subtags(l1, l2): return if '{ ?; ?;' not in l2: return - + # This is extremely crude "parsing" which chops up the string # by delimiter and then extracts some substring. l1_parts = l1.split("und_") l2_parts = l2.split(";") - + l1_first_quote = l1_parts[1].find('"') l1_code = l1_parts[1][:l1_first_quote] if len(l1_code) != 2: return - + l2_brace = l2_parts[2].find("{") l2_language = l2_parts[2][l2_brace+1:].strip() l2_brace = l2_parts[2].find("}") l2_country = l2_parts[2][:l2_brace-1].strip() - + # Handle mapped cases l2_language = language_mapper.get(l2_language, l2_language) l2_language = l2_language.replace(" ", "") - + # Handle mapped cases and then do a bunch of standard replacements. l2_country = country_mapper.get(l2_country, l2_country) l2_country = l2_country.replace(" ", "").replace("-", "").replace(".","").replace("&","And") - + return CountryData(l1_code, l2_language, l2_country) @@ -213,7 +177,7 @@ def read_subtags_file(): if l1: assert "likelySubtag" in l1, l1; assert " + > Calamares releases are now rolling when-they-are-ready releases. > Releases are made from *calamares* and tagged there. When, in future, > LTS releases resume, these steps may be edited again. diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 82c77c3e2..6f1b198c9 100755 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -1,5 +1,8 @@ #! /bin/sh # +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# ### USAGE # # Release script for Calamares diff --git a/ci/astylerc b/ci/astylerc index 7fb769a9d..01eda2522 100644 --- a/ci/astylerc +++ b/ci/astylerc @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause + # Do not create a backup file suffix=none diff --git a/ci/calamaresstyle b/ci/calamaresstyle index 19f4a152a..d2ce360bb 100755 --- a/ci/calamaresstyle +++ b/ci/calamaresstyle @@ -1,5 +1,9 @@ #!/bin/sh # +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Calls astyle with settings matching Calamares coding style # Requires astyle >= 2.04 and clang-format-7 -8 or -9 # diff --git a/ci/configvalidator.py b/ci/configvalidator.py index 9d1bc21a5..5c0ee4559 100644 --- a/ci/configvalidator.py +++ b/ci/configvalidator.py @@ -2,7 +2,6 @@ # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause -# License-Filename: LICENSES/BSD2 # usage = """ Validates a Calamares config file -- YAML syntax -- against a schema. diff --git a/ci/coverity-model.c b/ci/coverity-model.c index b4282397c..1d6345335 100644 --- a/ci/coverity-model.c +++ b/ci/coverity-model.c @@ -3,4 +3,7 @@ Calamares doesn't seem to geenerate any false positives, so the model-file is empty. + + SPDX-FileCopyrightText: 2017 Adriaan de Groot + SPDX-License-Identifier: BSD-2-Clause */ diff --git a/ci/cppcheck.sh b/ci/cppcheck.sh deleted file mode 100755 index e55e97ee4..000000000 --- a/ci/cppcheck.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -cd "$WORKSPACE" -cppcheck --enable=all --inconclusive --xml --xml-version=2 src 2> cppcheck.xml \ No newline at end of file diff --git a/ci/travis-config.sh b/ci/travis-config.sh index 565b3deba..15163cc99 100644 --- a/ci/travis-config.sh +++ b/ci/travis-config.sh @@ -1,5 +1,8 @@ # Build configuration on Travis. # +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Defines a CMAKE_ARGS variable for use with cmake # # This file is sourced by travis.sh, and exports the variables diff --git a/ci/travis-continuous.sh b/ci/travis-continuous.sh index 567a55d3d..ceb80df9b 100755 --- a/ci/travis-continuous.sh +++ b/ci/travis-continuous.sh @@ -1,5 +1,8 @@ #! /bin/sh # +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Travis CI script for use on every-commit: # - build and install Calamares # diff --git a/ci/travis-coverity.sh b/ci/travis-coverity.sh index 78535df65..5ec73568a 100755 --- a/ci/travis-coverity.sh +++ b/ci/travis-coverity.sh @@ -1,5 +1,8 @@ #! /bin/sh # +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Travis CI script for weekly (cron) use: # - use the coverity tool to build and and upload results # diff --git a/ci/travis.sh b/ci/travis.sh index 737da95d4..e182e48bb 100755 --- a/ci/travis.sh +++ b/ci/travis.sh @@ -1,5 +1,8 @@ #! /bin/sh # +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Travis build driver script: # - the regular CI runs, triggered by commits, run a script that builds # and installs calamares, and then runs the tests. diff --git a/ci/txcheck.sh b/ci/txcheck.sh index 229cc8a73..a2fb5a615 100644 --- a/ci/txcheck.sh +++ b/ci/txcheck.sh @@ -3,8 +3,8 @@ ### LICENSE # === This file is part of Calamares - === # -# SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # # This file is Free Software: you can redistribute it and/or modify # it under the terms of the 2-clause BSD License. diff --git a/ci/txpull.sh b/ci/txpull.sh index 63c70fa49..730e2a3f3 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -3,9 +3,9 @@ ### LICENSE # === This file is part of Calamares - === # -# SPDX-License-Identifier: BSD-2-Clause -# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot # SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # # This file is Free Software: you can redistribute it and/or modify # it under the terms of the 2-clause BSD License. diff --git a/ci/txpush.sh b/ci/txpush.sh index 00d8d401b..796f6cfc1 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -3,9 +3,9 @@ ### LICENSE # === This file is part of Calamares - === # -# SPDX-License-Identifier: BSD-2-Clause -# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot # SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # # This file is Free Software: you can redistribute it and/or modify # it under the terms of the 2-clause BSD License. diff --git a/ci/txreduce.py b/ci/txreduce.py index 6e8ae3f35..a556d78fb 100644 --- a/ci/txreduce.py +++ b/ci/txreduce.py @@ -1,5 +1,8 @@ #! /usr/bin/env python3 # +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Reduce a translation file -- generally, a Timezone translation -- by # dropping untranslated strings. An untranslated string is one that # has an empty translation **and** is marked unfinished. diff --git a/ci/txstats.py b/ci/txstats.py index 40fe3f43b..d7997701a 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -1,5 +1,8 @@ #! /usr/bin/env python3 # +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# # Uses the Transifex API to get a list of enabled languages, # and outputs CMake settings for inclusion into CMakeLists.txt. # From 965bc3b0b45db09fe8666baffdf94e3b0ac1496e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 21 Aug 2020 23:59:35 +0200 Subject: [PATCH 350/399] REUSE: use tag in .ui for license info The .ui files are all GPL-3.0-or-later style, but it's slightly difficult to keep licensing information in them: it's XML, so an XML comment might work, but there's no guarantee that safe/load will preserve them. Put the SPDX tags in the tag, so that it's visible in Qt Designer. --- src/calamares/DebugWindow.ui | 8 ++++++-- src/modules/finished/FinishedPage.ui | 4 ++++ src/modules/keyboard/KeyboardPage.ui | 4 ++++ src/modules/license/LicensePage.ui | 4 ++++ src/modules/netinstall/page_netinst.ui | 4 ++++ src/modules/oemid/OEMPage.ui | 4 ++++ src/modules/packagechooser/page_package.ui | 4 ++++ src/modules/partition/gui/ChoicePage.ui | 4 ++++ src/modules/partition/gui/CreatePartitionDialog.ui | 4 ++++ src/modules/partition/gui/CreatePartitionTableDialog.ui | 4 ++++ src/modules/partition/gui/EditExistingPartitionDialog.ui | 4 ++++ src/modules/partition/gui/EncryptWidget.ui | 4 ++++ src/modules/partition/gui/PartitionPage.ui | 4 ++++ src/modules/partition/gui/ReplaceWidget.ui | 4 ++++ src/modules/partition/gui/VolumeGroupBaseDialog.ui | 4 ++++ src/modules/plasmalnf/page_plasmalnf.ui | 4 ++++ src/modules/tracking/page_trackingstep.ui | 4 ++++ src/modules/users/page_usersetup.ui | 4 ++++ src/modules/welcome/WelcomePage.ui | 4 ++++ 19 files changed, 78 insertions(+), 2 deletions(-) diff --git a/src/calamares/DebugWindow.ui b/src/calamares/DebugWindow.ui index 63a6a840a..014d4837e 100644 --- a/src/calamares/DebugWindow.ui +++ b/src/calamares/DebugWindow.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + Calamares::DebugWindow @@ -52,7 +56,7 @@ - + Type: @@ -66,7 +70,7 @@ - + Interface: diff --git a/src/modules/finished/FinishedPage.ui b/src/modules/finished/FinishedPage.ui index a5b4a9280..c02952b63 100644 --- a/src/modules/finished/FinishedPage.ui +++ b/src/modules/finished/FinishedPage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + FinishedPage diff --git a/src/modules/keyboard/KeyboardPage.ui b/src/modules/keyboard/KeyboardPage.ui index 5df874b21..f7e430a04 100644 --- a/src/modules/keyboard/KeyboardPage.ui +++ b/src/modules/keyboard/KeyboardPage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + Page_Keyboard diff --git a/src/modules/license/LicensePage.ui b/src/modules/license/LicensePage.ui index b5936d5de..817775c38 100644 --- a/src/modules/license/LicensePage.ui +++ b/src/modules/license/LicensePage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2015 demmm <anke62@gmail.com> +SPDX-License-Identifier: GPL-3.0-or-later + LicensePage diff --git a/src/modules/netinstall/page_netinst.ui b/src/modules/netinstall/page_netinst.ui index 32c11ec15..f17e939cd 100644 --- a/src/modules/netinstall/page_netinst.ui +++ b/src/modules/netinstall/page_netinst.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2016 shainer <syn.shainer@gmail.com> +SPDX-License-Identifier: GPL-3.0-or-later + Page_NetInst diff --git a/src/modules/oemid/OEMPage.ui b/src/modules/oemid/OEMPage.ui index b14906537..2194ac24c 100644 --- a/src/modules/oemid/OEMPage.ui +++ b/src/modules/oemid/OEMPage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + OEMPage diff --git a/src/modules/packagechooser/page_package.ui b/src/modules/packagechooser/page_package.ui index 8349f2b52..5cc98b126 100644 --- a/src/modules/packagechooser/page_package.ui +++ b/src/modules/packagechooser/page_package.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + PackageChooserPage diff --git a/src/modules/partition/gui/ChoicePage.ui b/src/modules/partition/gui/ChoicePage.ui index 0eca520b3..95b8d145a 100644 --- a/src/modules/partition/gui/ChoicePage.ui +++ b/src/modules/partition/gui/ChoicePage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + ChoicePage diff --git a/src/modules/partition/gui/CreatePartitionDialog.ui b/src/modules/partition/gui/CreatePartitionDialog.ui index ac355c880..24e05e2e1 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.ui +++ b/src/modules/partition/gui/CreatePartitionDialog.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + CreatePartitionDialog diff --git a/src/modules/partition/gui/CreatePartitionTableDialog.ui b/src/modules/partition/gui/CreatePartitionTableDialog.ui index ca1255e41..4f9fe5917 100644 --- a/src/modules/partition/gui/CreatePartitionTableDialog.ui +++ b/src/modules/partition/gui/CreatePartitionTableDialog.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + CreatePartitionTableDialog diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.ui b/src/modules/partition/gui/EditExistingPartitionDialog.ui index c242e3bbc..9c0c996f6 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.ui +++ b/src/modules/partition/gui/EditExistingPartitionDialog.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + EditExistingPartitionDialog diff --git a/src/modules/partition/gui/EncryptWidget.ui b/src/modules/partition/gui/EncryptWidget.ui index 65af6999e..212300291 100644 --- a/src/modules/partition/gui/EncryptWidget.ui +++ b/src/modules/partition/gui/EncryptWidget.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2016 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + EncryptWidget diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index c028eb513..556c2289d 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + PartitionPage diff --git a/src/modules/partition/gui/ReplaceWidget.ui b/src/modules/partition/gui/ReplaceWidget.ui index 3f8f604b4..14f520f49 100644 --- a/src/modules/partition/gui/ReplaceWidget.ui +++ b/src/modules/partition/gui/ReplaceWidget.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + ReplaceWidget diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.ui b/src/modules/partition/gui/VolumeGroupBaseDialog.ui index 0640eca00..f1bb6b251 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.ui +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2018 Caio <caiojcarvalho@gmail.com> +SPDX-License-Identifier: GPL-3.0-or-later + VolumeGroupBaseDialog diff --git a/src/modules/plasmalnf/page_plasmalnf.ui b/src/modules/plasmalnf/page_plasmalnf.ui index 7b3c8c96f..88d5a39a2 100644 --- a/src/modules/plasmalnf/page_plasmalnf.ui +++ b/src/modules/plasmalnf/page_plasmalnf.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + PlasmaLnfPage diff --git a/src/modules/tracking/page_trackingstep.ui b/src/modules/tracking/page_trackingstep.ui index 55a4df094..f66f159f7 100644 --- a/src/modules/tracking/page_trackingstep.ui +++ b/src/modules/tracking/page_trackingstep.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + TrackingPage diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index d880673b8..e03526a11 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + Page_UserSetup diff --git a/src/modules/welcome/WelcomePage.ui b/src/modules/welcome/WelcomePage.ui index 04b89f256..9460a6c56 100644 --- a/src/modules/welcome/WelcomePage.ui +++ b/src/modules/welcome/WelcomePage.ui @@ -1,5 +1,9 @@ + +SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org> +SPDX-License-Identifier: GPL-3.0-or-later + WelcomePage From 95ceb1e8c7a0a9d341973002cb6079c104040e01 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 00:24:52 +0200 Subject: [PATCH 351/399] REUSE: (BSD-2-Clause) all CMakeLists The build instructions are not that interesting, it's a toss-up between CC0 and BSD-2, but because other CMake bits are BSD-2-Clause, apply that to more CMakeLists. The copyright date isn't all that accurate, but these are just inconsequential files. While here, tidy up and get rid of some useless intermediates. --- CMakeLists.txt | 8 +++++++- lang/CMakeLists.txt | 17 ++--------------- src/CMakeLists.txt | 7 ++++++- src/branding/CMakeLists.txt | 9 +++++++++ src/calamares/CMakeLists.txt | 8 ++++++++ src/libcalamares/CMakeLists.txt | 15 +-------------- src/libcalamaresui/CMakeLists.txt | 6 ++++++ src/modules/CMakeLists.txt | 6 ++++++ src/modules/contextualprocess/CMakeLists.txt | 5 +++++ src/modules/dracutlukscfg/CMakeLists.txt | 5 +++++ src/modules/dummycpp/CMakeLists.txt | 5 +++++ src/modules/finished/CMakeLists.txt | 5 +++++ src/modules/fsresizer/CMakeLists.txt | 5 +++++ src/modules/hostinfo/CMakeLists.txt | 6 ++++++ src/modules/initcpio/CMakeLists.txt | 5 +++++ src/modules/initramfs/CMakeLists.txt | 5 +++++ src/modules/interactiveterminal/CMakeLists.txt | 5 +++++ src/modules/keyboard/CMakeLists.txt | 7 +++++-- src/modules/keyboardq/CMakeLists.txt | 5 +++++ src/modules/license/CMakeLists.txt | 5 +++++ src/modules/locale/CMakeLists.txt | 6 ++++++ src/modules/localeq/CMakeLists.txt | 5 +++++ src/modules/luksbootkeyfile/CMakeLists.txt | 5 +++++ src/modules/machineid/CMakeLists.txt | 5 +++++ src/modules/netinstall/CMakeLists.txt | 5 +++++ src/modules/notesqml/CMakeLists.txt | 5 +++++ src/modules/oemid/CMakeLists.txt | 5 +++++ src/modules/packagechooser/CMakeLists.txt | 5 +++++ src/modules/partition/CMakeLists.txt | 6 ++++++ src/modules/partition/tests/CMakeLists.txt | 5 +++++ src/modules/plasmalnf/CMakeLists.txt | 5 +++++ src/modules/preservefiles/CMakeLists.txt | 5 +++++ src/modules/removeuser/CMakeLists.txt | 5 +++++ src/modules/shellprocess/CMakeLists.txt | 5 +++++ src/modules/summary/CMakeLists.txt | 5 +++++ src/modules/tracking/CMakeLists.txt | 5 +++++ src/modules/users/CMakeLists.txt | 5 +++++ src/modules/usersq/CMakeLists.txt | 5 +++++ src/modules/webview/CMakeLists.txt | 5 +++++ src/modules/welcome/CMakeLists.txt | 7 +++++-- src/modules/welcomeq/CMakeLists.txt | 6 ++++++ src/qml/CMakeLists.txt | 1 - src/qml/calamares/CMakeLists.txt | 13 ++++++++++++- 43 files changed, 226 insertions(+), 37 deletions(-) delete mode 100644 src/qml/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 16ea24fc7..e35253a10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,9 @@ # === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2017 Adriaan de Groot -# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-License-Identifier: BSD-2-Clause +# +### # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,6 +18,10 @@ # You should have received a copy of the GNU General Public License # along with Calamares. If not, see . # +# Individual files may have different licenses (like the CMake +# infrastructure, which is BSD-2-Clause licensed). Check the SPDX +# identifiers in each file. +# ### # # Generally, this CMakeLists.txt will find all the dependencies for Calamares diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index efc6d6188..6c9b12b9e 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,20 +1,7 @@ # === This file is part of Calamares - === # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . -# -# SPDX-License-Identifier: GPL-3.0-or-later -# License-Filename: LICENSE +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # ### diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1445b18f3..3d35ac3e4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# include( CalamaresAddPlugin ) include( CalamaresAddModuleSubdirectory ) include( CalamaresAddLibrary ) @@ -10,7 +15,7 @@ add_subdirectory( libcalamares ) add_subdirectory( libcalamaresui ) # all things qml -add_subdirectory( qml ) +add_subdirectory( qml/calamares ) # application add_subdirectory( calamares ) diff --git a/src/branding/CMakeLists.txt b/src/branding/CMakeLists.txt index 981da1468..6d99bbe4d 100644 --- a/src/branding/CMakeLists.txt +++ b/src/branding/CMakeLists.txt @@ -1 +1,10 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + +# Add branding components. Since there is only one, called "default", +# add that one. For examples of other branding components, see +# the calamares-extensions repository. calamares_add_branding_subdirectory( default ) diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index 5480dd1f8..faec6d1a4 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -1,3 +1,11 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + +# "calamares_bin" is the main application, not to be confused with +# the target "calamares" which is the non-GUI library part. set( calamaresSources main.cpp CalamaresApplication.cpp diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 284acd1d2..d915708f3 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,20 +1,7 @@ # === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot -# SPDX-License-Identifier: GPL-3.0-or-later -# -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . +# SPDX-License-Identifier: BSD-2-Clause # # diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 773fdf617..52fb838e5 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # libcalamaresui is the GUI part of Calamares, which includes handling # view modules, view steps, widgets, and branding. diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index d49a4c0c0..da9e1c574 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # The variable SKIP_MODULES can be set to skip particular modules; # individual modules can also decide they must be skipped (e.g. OS-specific # modules, or ones with unmet dependencies). Collect the skipped modules diff --git a/src/modules/contextualprocess/CMakeLists.txt b/src/modules/contextualprocess/CMakeLists.txt index 2df4cfe37..705f494b5 100644 --- a/src/modules/contextualprocess/CMakeLists.txt +++ b/src/modules/contextualprocess/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( contextualprocess TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/dracutlukscfg/CMakeLists.txt b/src/modules/dracutlukscfg/CMakeLists.txt index 1a07b042d..3620bb92c 100644 --- a/src/modules/dracutlukscfg/CMakeLists.txt +++ b/src/modules/dracutlukscfg/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( dracutlukscfg TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/dummycpp/CMakeLists.txt b/src/modules/dummycpp/CMakeLists.txt index 0841eaa2b..7b219744c 100644 --- a/src/modules/dummycpp/CMakeLists.txt +++ b/src/modules/dummycpp/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( dummycpp TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/finished/CMakeLists.txt b/src/modules/finished/CMakeLists.txt index 6482fb2cd..746683533 100644 --- a/src/modules/finished/CMakeLists.txt +++ b/src/modules/finished/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network ) include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) diff --git a/src/modules/fsresizer/CMakeLists.txt b/src/modules/fsresizer/CMakeLists.txt index 6808f1bea..8b23f90b2 100644 --- a/src/modules/fsresizer/CMakeLists.txt +++ b/src/modules/fsresizer/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( KPMcore 3.3 ) find_package( KF5Config CONFIG ) find_package( KF5I18n CONFIG ) diff --git a/src/modules/hostinfo/CMakeLists.txt b/src/modules/hostinfo/CMakeLists.txt index 3d6e0973f..401f50168 100644 --- a/src/modules/hostinfo/CMakeLists.txt +++ b/src/modules/hostinfo/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # Configuration for hostinfo # # There isn't anything to configure for the hostinfo module. diff --git a/src/modules/initcpio/CMakeLists.txt b/src/modules/initcpio/CMakeLists.txt index 5140c97e0..d51884edc 100644 --- a/src/modules/initcpio/CMakeLists.txt +++ b/src/modules/initcpio/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( initcpio TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/initramfs/CMakeLists.txt b/src/modules/initramfs/CMakeLists.txt index b3287c896..2d64cbc75 100644 --- a/src/modules/initramfs/CMakeLists.txt +++ b/src/modules/initramfs/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( initramfs TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/interactiveterminal/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index 5eff610d5..05e3388e3 100644 --- a/src/modules/interactiveterminal/CMakeLists.txt +++ b/src/modules/interactiveterminal/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE) set( kf5_ver 5.41 ) diff --git a/src/modules/keyboard/CMakeLists.txt b/src/modules/keyboard/CMakeLists.txt index c0d8575c6..9dca5f2b0 100644 --- a/src/modules/keyboard/CMakeLists.txt +++ b/src/modules/keyboard/CMakeLists.txt @@ -1,5 +1,8 @@ -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) - +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( keyboard TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/keyboardq/CMakeLists.txt b/src/modules/keyboardq/CMakeLists.txt index 729748a7f..173275cef 100644 --- a/src/modules/keyboardq/CMakeLists.txt +++ b/src/modules/keyboardq/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# if( NOT WITH_QML ) calamares_skip_module( "keyboardq (QML is not supported in this build)" ) return() diff --git a/src/modules/license/CMakeLists.txt b/src/modules/license/CMakeLists.txt index 164233b3b..b52875da6 100644 --- a/src/modules/license/CMakeLists.txt +++ b/src/modules/license/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) calamares_add_plugin( license diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 6f965f041..1e0531c6b 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # When debugging the timezone widget, add this debugging definition # to have a debugging-friendly timezone widget, debug logging, # and no intrusive timezone-setting while clicking around. diff --git a/src/modules/localeq/CMakeLists.txt b/src/modules/localeq/CMakeLists.txt index c9ed1cd55..28ba76e0e 100644 --- a/src/modules/localeq/CMakeLists.txt +++ b/src/modules/localeq/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# if( NOT WITH_QML ) calamares_skip_module( "localeq (QML is not supported in this build)" ) return() diff --git a/src/modules/luksbootkeyfile/CMakeLists.txt b/src/modules/luksbootkeyfile/CMakeLists.txt index 5e69d3acb..620caee7e 100644 --- a/src/modules/luksbootkeyfile/CMakeLists.txt +++ b/src/modules/luksbootkeyfile/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( luksbootkeyfile TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/machineid/CMakeLists.txt b/src/modules/machineid/CMakeLists.txt index 4a916334c..eb2551d51 100644 --- a/src/modules/machineid/CMakeLists.txt +++ b/src/modules/machineid/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( machineid TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 0f2cf06f8..588ca1f82 100644 --- a/src/modules/netinstall/CMakeLists.txt +++ b/src/modules/netinstall/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( netinstall TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/notesqml/CMakeLists.txt b/src/modules/notesqml/CMakeLists.txt index 7ac808fa7..c656bebf6 100644 --- a/src/modules/notesqml/CMakeLists.txt +++ b/src/modules/notesqml/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# if( NOT WITH_QML ) calamares_skip_module( "notesqml (QML is not supported in this build)" ) return() diff --git a/src/modules/oemid/CMakeLists.txt b/src/modules/oemid/CMakeLists.txt index 0c4ad03ad..7db23bc30 100644 --- a/src/modules/oemid/CMakeLists.txt +++ b/src/modules/oemid/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( oemid TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/packagechooser/CMakeLists.txt b/src/modules/packagechooser/CMakeLists.txt index d949829de..539db4f73 100644 --- a/src/modules/packagechooser/CMakeLists.txt +++ b/src/modules/packagechooser/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( Qt5 COMPONENTS Core Gui Widgets REQUIRED ) set( _extra_libraries "" ) set( _extra_src "" ) diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 65b1a91e9..5c5d6a6cb 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # When debugging the partitioning widget, or experimenting, you may # want to allow unsafe partitioning choices (e.g. doing things to the # current disk). Set DEBUG_PARTITION_UNSAFE to allow that (it turns off diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index 0bd559fd1..a2b99660c 100644 --- a/src/modules/partition/tests/CMakeLists.txt +++ b/src/modules/partition/tests/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( Qt5 COMPONENTS Gui REQUIRED ) set( PartitionModule_SOURCE_DIR .. ) diff --git a/src/modules/plasmalnf/CMakeLists.txt b/src/modules/plasmalnf/CMakeLists.txt index 93c88b291..8c1ca8c3c 100644 --- a/src/modules/plasmalnf/CMakeLists.txt +++ b/src/modules/plasmalnf/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE) # Requires a sufficiently recent Plasma framework, but also diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index 571de31ca..afff84050 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) calamares_add_plugin( preservefiles diff --git a/src/modules/removeuser/CMakeLists.txt b/src/modules/removeuser/CMakeLists.txt index 55798feac..7818926c5 100644 --- a/src/modules/removeuser/CMakeLists.txt +++ b/src/modules/removeuser/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( removeuser TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/shellprocess/CMakeLists.txt b/src/modules/shellprocess/CMakeLists.txt index ec1cf0bcf..5804f5e35 100644 --- a/src/modules/shellprocess/CMakeLists.txt +++ b/src/modules/shellprocess/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( shellprocess TYPE job EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/summary/CMakeLists.txt b/src/modules/summary/CMakeLists.txt index ce71357cd..9aad8b8ac 100644 --- a/src/modules/summary/CMakeLists.txt +++ b/src/modules/summary/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) calamares_add_plugin( summary TYPE viewmodule diff --git a/src/modules/tracking/CMakeLists.txt b/src/modules/tracking/CMakeLists.txt index 894663426..25df2b7ac 100644 --- a/src/modules/tracking/CMakeLists.txt +++ b/src/modules/tracking/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# calamares_add_plugin( tracking TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 7fffc1eea..8f5424827 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core DBus Network ) find_package( Crypt REQUIRED ) diff --git a/src/modules/usersq/CMakeLists.txt b/src/modules/usersq/CMakeLists.txt index d780ec9c4..8fb0a282c 100644 --- a/src/modules/usersq/CMakeLists.txt +++ b/src/modules/usersq/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# if( NOT WITH_QML ) calamares_skip_module( "usersq (QML is not supported in this build)" ) return() diff --git a/src/modules/webview/CMakeLists.txt b/src/modules/webview/CMakeLists.txt index 48c707783..3a08f3237 100644 --- a/src/modules/webview/CMakeLists.txt +++ b/src/modules/webview/CMakeLists.txt @@ -1,3 +1,8 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# set( CALA_WEBVIEW_INCLUDE_DIRECTORIES ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( CALA_WEBVIEW_LINK_LIBRARIES calamaresui ) diff --git a/src/modules/welcome/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index 9700b1601..0620627a2 100644 --- a/src/modules/welcome/CMakeLists.txt +++ b/src/modules/welcome/CMakeLists.txt @@ -1,5 +1,8 @@ -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) - +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network ) find_package( LIBPARTED ) diff --git a/src/modules/welcomeq/CMakeLists.txt b/src/modules/welcomeq/CMakeLists.txt index 4a040344e..8e36cd5f1 100644 --- a/src/modules/welcomeq/CMakeLists.txt +++ b/src/modules/welcomeq/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + # This is a re-write of the welcome module using QML view steps # instead of widgets. diff --git a/src/qml/CMakeLists.txt b/src/qml/CMakeLists.txt deleted file mode 100644 index 8a949d02e..000000000 --- a/src/qml/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory( calamares ) diff --git a/src/qml/calamares/CMakeLists.txt b/src/qml/calamares/CMakeLists.txt index 48f8ca96c..b6c2b0048 100644 --- a/src/qml/calamares/CMakeLists.txt +++ b/src/qml/calamares/CMakeLists.txt @@ -1,7 +1,18 @@ -file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + +# Install "slideshows" and other QML-sources for Calamares. +# +# In practice, in the central source repositoy, this means +# just-install-the-slideshow-example. For alternative slideshows, +# see the approach in the calamares-extensions repository. # Iterate over all the subdirectories which have a qmldir file, copy them over to the build dir, # and install them into share/calamares/qml/calamares +file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/qmldir" ) From 2eecd431fe25a638b32feb218f624735bbc8cec0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 00:48:30 +0200 Subject: [PATCH 352/399] REUSE: (CC0-1.0) test data There's lots of (YAML) test data that is just trivial configurations for modules. Since the configurations themselves are **also** CC0-1.0, and the tests are less interesting, license them equally liberally. --- src/libcalamares/testdata/yaml-list.conf | 3 +++ src/modules/bootloader/test.yaml | 2 ++ src/modules/fstab/test.yaml | 2 ++ src/modules/grubcfg/tests/1.global | 2 ++ src/modules/grubcfg/tests/2.global | 2 ++ src/modules/grubcfg/tests/2.job | 2 ++ src/modules/grubcfg/tests/3.global | 2 ++ src/modules/grubcfg/tests/3.job | 2 ++ src/modules/grubcfg/tests/4.global | 2 ++ src/modules/grubcfg/tests/4.job | 2 ++ src/modules/grubcfg/tests/CMakeTests.txt | 3 +++ src/modules/mount/test.yaml | 2 ++ src/modules/packages/test.yaml | 2 ++ src/modules/rawfs/tests/1.global | 2 ++ src/modules/rawfs/tests/1.job | 5 ++++- src/modules/rawfs/tests/CMakeTests.txt | 4 ++++ src/modules/unpackfs/tests/1.global | 2 ++ src/modules/unpackfs/tests/2.global | 2 ++ src/modules/unpackfs/tests/3.global | 2 ++ src/modules/unpackfs/tests/3.job | 2 ++ src/modules/unpackfs/tests/4.global | 2 ++ src/modules/unpackfs/tests/4.job | 2 ++ src/modules/unpackfs/tests/5.global | 2 ++ src/modules/unpackfs/tests/5.job | 2 ++ src/modules/unpackfs/tests/6.global | 2 ++ src/modules/unpackfs/tests/6.job | 2 ++ src/modules/unpackfs/tests/7.global | 2 ++ src/modules/unpackfs/tests/7.job | 2 ++ src/modules/unpackfs/tests/8.global | 2 ++ src/modules/unpackfs/tests/8.job | 2 ++ src/modules/unpackfs/tests/9.global | 2 ++ src/modules/unpackfs/tests/9.job | 2 ++ 32 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/testdata/yaml-list.conf b/src/libcalamares/testdata/yaml-list.conf index d6992b1fb..d8d2178d1 100644 --- a/src/libcalamares/testdata/yaml-list.conf +++ b/src/libcalamares/testdata/yaml-list.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # YAML dump --- "cow": "moo" diff --git a/src/modules/bootloader/test.yaml b/src/modules/bootloader/test.yaml index 1cd6c418f..4623b55f7 100644 --- a/src/modules/bootloader/test.yaml +++ b/src/modules/bootloader/test.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 rootMountPoint: /tmp/mount bootLoader: installPath: /dev/sdb diff --git a/src/modules/fstab/test.yaml b/src/modules/fstab/test.yaml index e95b52e5d..cd2034571 100644 --- a/src/modules/fstab/test.yaml +++ b/src/modules/fstab/test.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 rootMountPoint: /tmp/mount partitions: - device: /dev/sda1 diff --git a/src/modules/grubcfg/tests/1.global b/src/modules/grubcfg/tests/1.global index 02ae840cb..7dedc1527 100644 --- a/src/modules/grubcfg/tests/1.global +++ b/src/modules/grubcfg/tests/1.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- bogus: true diff --git a/src/modules/grubcfg/tests/2.global b/src/modules/grubcfg/tests/2.global index 88f789630..31c6f1166 100644 --- a/src/modules/grubcfg/tests/2.global +++ b/src/modules/grubcfg/tests/2.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- bogus: true firmwareType: bios diff --git a/src/modules/grubcfg/tests/2.job b/src/modules/grubcfg/tests/2.job index d7b8db9d1..92e598394 100644 --- a/src/modules/grubcfg/tests/2.job +++ b/src/modules/grubcfg/tests/2.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- overwrite: true keepDistributor: false diff --git a/src/modules/grubcfg/tests/3.global b/src/modules/grubcfg/tests/3.global index 45468d4df..f9e1e6954 100644 --- a/src/modules/grubcfg/tests/3.global +++ b/src/modules/grubcfg/tests/3.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- bogus: true firmwareType: bios diff --git a/src/modules/grubcfg/tests/3.job b/src/modules/grubcfg/tests/3.job index 7182deeb2..7d579839c 100644 --- a/src/modules/grubcfg/tests/3.job +++ b/src/modules/grubcfg/tests/3.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- overwrite: true prefer_grub_d: true # But it doesn't exist diff --git a/src/modules/grubcfg/tests/4.global b/src/modules/grubcfg/tests/4.global index fe24ba6ca..1e8d37fc6 100644 --- a/src/modules/grubcfg/tests/4.global +++ b/src/modules/grubcfg/tests/4.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- bogus: true firmwareType: bios diff --git a/src/modules/grubcfg/tests/4.job b/src/modules/grubcfg/tests/4.job index f8f30f21b..58fd8bcb7 100644 --- a/src/modules/grubcfg/tests/4.job +++ b/src/modules/grubcfg/tests/4.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- overwrite: true prefer_grub_d: true diff --git a/src/modules/grubcfg/tests/CMakeTests.txt b/src/modules/grubcfg/tests/CMakeTests.txt index 78a0f85ac..54a0721e4 100644 --- a/src/modules/grubcfg/tests/CMakeTests.txt +++ b/src/modules/grubcfg/tests/CMakeTests.txt @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Special cases for grubcfg configuration tests: # - 2.global specifies /tmp/calamares as the rootMountPath, # so we end up editing files there. Create the directory diff --git a/src/modules/mount/test.yaml b/src/modules/mount/test.yaml index e1619296e..ce3e12e4e 100644 --- a/src/modules/mount/test.yaml +++ b/src/modules/mount/test.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 partitions: - device: "/dev/sdb1" mountPoint: "/" diff --git a/src/modules/packages/test.yaml b/src/modules/packages/test.yaml index 8902b657a..130214dfd 100644 --- a/src/modules/packages/test.yaml +++ b/src/modules/packages/test.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 backend: dummy rootMountPoint: /tmp/mount operations: diff --git a/src/modules/rawfs/tests/1.global b/src/modules/rawfs/tests/1.global index c09df9375..089557d99 100644 --- a/src/modules/rawfs/tests/1.global +++ b/src/modules/rawfs/tests/1.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ partitions: diff --git a/src/modules/rawfs/tests/1.job b/src/modules/rawfs/tests/1.job index 6079c43ed..c87a4a70c 100644 --- a/src/modules/rawfs/tests/1.job +++ b/src/modules/rawfs/tests/1.job @@ -1,5 +1,8 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Testing configuration for rawfs - +# --- targets: diff --git a/src/modules/rawfs/tests/CMakeTests.txt b/src/modules/rawfs/tests/CMakeTests.txt index 44a7777c8..ed4c37485 100644 --- a/src/modules/rawfs/tests/CMakeTests.txt +++ b/src/modules/rawfs/tests/CMakeTests.txt @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# # Special cases for rawfs tests # # - On FreeBSD, /proc/mounts doesn't exist (/proc is only about processes, diff --git a/src/modules/unpackfs/tests/1.global b/src/modules/unpackfs/tests/1.global index 02ae840cb..7dedc1527 100644 --- a/src/modules/unpackfs/tests/1.global +++ b/src/modules/unpackfs/tests/1.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- bogus: true diff --git a/src/modules/unpackfs/tests/2.global b/src/modules/unpackfs/tests/2.global index f496ade61..d1e61caf3 100644 --- a/src/modules/unpackfs/tests/2.global +++ b/src/modules/unpackfs/tests/2.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir/ diff --git a/src/modules/unpackfs/tests/3.global b/src/modules/unpackfs/tests/3.global index 2e6b37ab5..1c25cbe20 100644 --- a/src/modules/unpackfs/tests/3.global +++ b/src/modules/unpackfs/tests/3.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/3.job b/src/modules/unpackfs/tests/3.job index 429f65b3c..82d353108 100644 --- a/src/modules/unpackfs/tests/3.job +++ b/src/modules/unpackfs/tests/3.job @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: [] diff --git a/src/modules/unpackfs/tests/4.global b/src/modules/unpackfs/tests/4.global index 2e6b37ab5..1c25cbe20 100644 --- a/src/modules/unpackfs/tests/4.global +++ b/src/modules/unpackfs/tests/4.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/4.job b/src/modules/unpackfs/tests/4.job index ab76dcbeb..8bc7de5ba 100644 --- a/src/modules/unpackfs/tests/4.job +++ b/src/modules/unpackfs/tests/4.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: - source: . diff --git a/src/modules/unpackfs/tests/5.global b/src/modules/unpackfs/tests/5.global index 2e6b37ab5..1c25cbe20 100644 --- a/src/modules/unpackfs/tests/5.global +++ b/src/modules/unpackfs/tests/5.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/5.job b/src/modules/unpackfs/tests/5.job index 2f8d732d0..268ee7ce3 100644 --- a/src/modules/unpackfs/tests/5.job +++ b/src/modules/unpackfs/tests/5.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: - source: ./fakesource diff --git a/src/modules/unpackfs/tests/6.global b/src/modules/unpackfs/tests/6.global index 2e6b37ab5..1c25cbe20 100644 --- a/src/modules/unpackfs/tests/6.global +++ b/src/modules/unpackfs/tests/6.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/6.job b/src/modules/unpackfs/tests/6.job index c1110a106..1ec0840ca 100644 --- a/src/modules/unpackfs/tests/6.job +++ b/src/modules/unpackfs/tests/6.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: - source: . diff --git a/src/modules/unpackfs/tests/7.global b/src/modules/unpackfs/tests/7.global index 2e6b37ab5..1c25cbe20 100644 --- a/src/modules/unpackfs/tests/7.global +++ b/src/modules/unpackfs/tests/7.global @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/7.job b/src/modules/unpackfs/tests/7.job index a31068e5d..ffd898f1b 100644 --- a/src/modules/unpackfs/tests/7.job +++ b/src/modules/unpackfs/tests/7.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: - source: . diff --git a/src/modules/unpackfs/tests/8.global b/src/modules/unpackfs/tests/8.global index 0cb33ce55..15c308545 100644 --- a/src/modules/unpackfs/tests/8.global +++ b/src/modules/unpackfs/tests/8.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- rootMountPoint: /tmp/unpackfs-test-run-rootdir/ localeConf: diff --git a/src/modules/unpackfs/tests/8.job b/src/modules/unpackfs/tests/8.job index a31068e5d..ffd898f1b 100644 --- a/src/modules/unpackfs/tests/8.job +++ b/src/modules/unpackfs/tests/8.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- unpack: - source: . diff --git a/src/modules/unpackfs/tests/9.global b/src/modules/unpackfs/tests/9.global index 82ca8f6f6..e7a2cd989 100644 --- a/src/modules/unpackfs/tests/9.global +++ b/src/modules/unpackfs/tests/9.global @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # This test uses a small destination FS, to make rsync fail --- rootMountPoint: /tmp/unpackfs-test-run-rootdir3/ diff --git a/src/modules/unpackfs/tests/9.job b/src/modules/unpackfs/tests/9.job index 7eabd497c..b89633471 100644 --- a/src/modules/unpackfs/tests/9.job +++ b/src/modules/unpackfs/tests/9.job @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # This test uses a small destination FS, to make rsync fail --- unpack: From 7e9576d3d1c38d985715e3a34612878b07f798fc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 00:23:09 +0200 Subject: [PATCH 353/399] REUSE: fix credits for 3rd party sources Some Calamares source files incorporate material from 3rd parties (unlike the 3rdparty/ dir, which is basically- unchanged 3rd party source). Tidy up the FileCopyrightText lines for those sources. This is not an exhaustive effort. --- src/libcalamaresui/utils/ImageRegistry.cpp | 21 ++------------------ src/modules/users/CheckPWQuality.cpp | 7 ++++++- src/qml/calamares/slideshow/Presentation.qml | 17 +++++++++------- src/qml/calamares/slideshow/Slide.qml | 2 +- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp index ebe6858dd..627cf6a8e 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -1,28 +1,11 @@ /* === This file is part of Calamares - === * + * SPDX-FileCopyrightText: 2012 Christian Muehlhaeuser + * SPDX-FileCopyrightText: 2019, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSES/GPLv3+-ImageRegistry * - * Copyright 2019, Adriaan de Groot */ -/* - * Copyright 2012, Christian Muehlhaeuser - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - #include "ImageRegistry.h" #include diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index 33309df6a..7bce0c09f 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -1,6 +1,11 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Contains strings from libpwquality under the terms of the + * GPL-3.0-or-later (libpwquality is BSD-3-clause or GPL-2.0-or-later, + * so we pick GPL-3.0-or-later). * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index 405055b56..dcfb00949 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -1,19 +1,22 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-FileCopyrightText: 2016 The Qt Company Ltd. + * SPDX-License-Identifier: LGPL-2.1-only + * + * 2017, Adriaan de Groot * - added looping, keys-instead-of-shortcut - * Copyright 2018, Adriaan de Groot + * 2018, Adriaan de Groot * - make looping a property, drop the 'c' fade-key * - drop navigation through entering a slide number * (this and the 'c' key make sense in a *presentation* * slideshow, not in a passive slideshow like Calamares) * - remove quit key - * Copyright 2019, Adriaan de Groot + * 2019, Adriaan de Groot * - Support "V2" loading * - Disable shortcuts until the content is visible in Calamares - * - * SPDX-License-Identifier: LGPL-2.1-only - * License-Filename: LICENSES/LGPLv2.1-Presentation + * 2020, Adriaan de Groot + * - Updated to SPDX headers */ /**************************************************************************** @@ -87,7 +90,7 @@ Item { // It is used in this example also to keep the keyboard shortcuts // enabled only while the slideshow is active. property bool activatedInCalamares: false - + // Private API property int _lastShownSlide: 0 diff --git a/src/qml/calamares/slideshow/Slide.qml b/src/qml/calamares/slideshow/Slide.qml index dc3e24480..0783cc528 100644 --- a/src/qml/calamares/slideshow/Slide.qml +++ b/src/qml/calamares/slideshow/Slide.qml @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * + * SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies). * SPDX-License-Identifier: LGPL-2.1-only - * License-Filename: LICENSES/LGPLv2.1-Presentation */ /**************************************************************************** From 3480988f53b15600b449f9f3a42313f6e0468ba2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Aug 2020 22:42:19 +0200 Subject: [PATCH 354/399] REUSE: SPDX tagging of application library and main - CC0-1.0 for the uninteresting version-headers - GPL-3.0-or-later for the services - add SPDX identifiers to Calamares C++ libraries and application sources - add SPDX identifiers to Calamares QML (panels and slideshow) - the `qmldir` is a list of names of things in the directory, so CC0-1.0 it as "uninteresting" - QRC files are lists of names of things in the directory, so CC0-1.0 them as well --- lang/calamares_i18n.qrc.in | 10 ++++++--- src/calamares/CalamaresApplication.cpp | 5 +++-- src/calamares/CalamaresApplication.h | 5 +++-- src/calamares/CalamaresWindow.cpp | 9 ++++---- src/calamares/CalamaresWindow.h | 5 +++-- src/calamares/DebugWindow.cpp | 5 +++-- src/calamares/DebugWindow.h | 5 +++-- src/calamares/VariantModel.cpp | 3 ++- src/calamares/VariantModel.h | 3 ++- src/calamares/calamares-navigation.qml | 10 +++++++++ src/calamares/calamares-sidebar.qml | 12 +++++++++++ src/calamares/calamares.qrc | 14 ++++++++----- src/calamares/main.cpp | 5 +++-- .../progresstree/ProgressTreeDelegate.cpp | 5 +++-- .../progresstree/ProgressTreeDelegate.h | 5 +++-- .../progresstree/ProgressTreeView.cpp | 3 ++- src/calamares/progresstree/ProgressTreeView.h | 5 +++-- src/calamares/test_conf.cpp | 3 ++- src/calamares/testmain.cpp | 3 ++- src/libcalamares/CalamaresVersion.h.in | 2 ++ src/libcalamares/CalamaresVersionX.h.in | 3 +++ src/libcalamares/partition/FileSystem.cpp | 4 +--- src/libcalamares/partition/KPMManager.cpp | 4 +--- src/libcalamares/partition/KPMManager.h | 6 ++---- src/libcalamares/partition/Mount.cpp | 6 ++---- src/libcalamares/partition/Mount.h | 6 ++---- .../partition/PartitionIterator.cpp | 6 ++---- .../partition/PartitionIterator.h | 6 ++---- src/libcalamares/partition/PartitionQuery.cpp | 6 ++---- src/libcalamares/partition/PartitionQuery.h | 6 ++---- src/libcalamares/partition/PartitionSize.cpp | 6 ++---- src/libcalamares/partition/PartitionSize.h | 6 ++---- src/libcalamares/partition/Sync.cpp | 6 ++---- src/libcalamares/partition/Sync.h | 6 ++---- src/libcalamares/partition/Tests.cpp | 4 +--- src/libcalamares/partition/Tests.h | 6 ++---- src/libcalamaresui/Branding.cpp | 9 ++++---- src/libcalamaresui/Branding.h | 9 ++++---- src/libcalamaresui/ViewManager.cpp | 9 ++++---- src/libcalamaresui/ViewManager.h | 5 +++-- src/libcalamaresui/libcalamaresui.qrc | 6 +++++- .../modulesystem/CppJobModule.cpp | 5 +++-- .../modulesystem/CppJobModule.h | 7 ++++--- .../modulesystem/ModuleFactory.cpp | 5 +++-- .../modulesystem/ModuleFactory.h | 5 +++-- .../modulesystem/ModuleManager.h | 5 +++-- .../modulesystem/ProcessJobModule.cpp | 3 ++- .../modulesystem/ProcessJobModule.h | 5 +++-- .../modulesystem/PythonJobModule.cpp | 3 ++- .../modulesystem/PythonJobModule.h | 3 ++- .../modulesystem/PythonQtViewModule.cpp | 7 ++++--- .../modulesystem/PythonQtViewModule.h | 3 ++- .../modulesystem/ViewModule.cpp | 5 +++-- src/libcalamaresui/modulesystem/ViewModule.h | 5 +++-- .../utils/CalamaresUtilsGui.cpp | 5 +++-- src/libcalamaresui/utils/CalamaresUtilsGui.h | 5 +++-- src/libcalamaresui/utils/ImageRegistry.h | 21 ++----------------- src/libcalamaresui/utils/Paste.cpp | 3 ++- src/libcalamaresui/utils/Paste.h | 3 ++- src/libcalamaresui/utils/PythonQtUtils.cpp | 3 ++- src/libcalamaresui/utils/PythonQtUtils.h | 3 ++- src/libcalamaresui/utils/Qml.cpp | 3 ++- src/libcalamaresui/utils/Qml.h | 3 ++- .../viewpages/BlankViewStep.cpp | 3 ++- src/libcalamaresui/viewpages/BlankViewStep.h | 3 ++- .../viewpages/ExecutionViewStep.cpp | 7 ++++--- .../viewpages/ExecutionViewStep.h | 5 +++-- .../PythonQtGlobalStorageWrapper.cpp | 3 ++- .../viewpages/PythonQtGlobalStorageWrapper.h | 5 +++-- src/libcalamaresui/viewpages/PythonQtJob.cpp | 3 ++- src/libcalamaresui/viewpages/PythonQtJob.h | 3 ++- .../viewpages/PythonQtUtilsWrapper.cpp | 5 +++-- .../viewpages/PythonQtUtilsWrapper.h | 3 ++- .../viewpages/PythonQtViewStep.cpp | 5 +++-- .../viewpages/PythonQtViewStep.h | 3 ++- src/libcalamaresui/viewpages/QmlViewStep.cpp | 3 ++- src/libcalamaresui/viewpages/QmlViewStep.h | 3 ++- src/libcalamaresui/viewpages/Slideshow.cpp | 7 ++++--- src/libcalamaresui/viewpages/Slideshow.h | 7 ++++--- src/libcalamaresui/viewpages/ViewStep.cpp | 5 +++-- src/libcalamaresui/viewpages/ViewStep.h | 5 +++-- src/libcalamaresui/widgets/ClickableLabel.cpp | 3 ++- src/libcalamaresui/widgets/ClickableLabel.h | 5 +++-- .../widgets/FixedAspectRatioLabel.cpp | 5 +++-- .../widgets/FixedAspectRatioLabel.h | 5 +++-- .../widgets/PrettyRadioButton.cpp | 3 ++- .../widgets/PrettyRadioButton.h | 3 ++- src/libcalamaresui/widgets/WaitingWidget.cpp | 5 +++-- src/libcalamaresui/widgets/WaitingWidget.h | 3 ++- src/qml/calamares/slideshow/BackButton.qml | 3 ++- src/qml/calamares/slideshow/ForwardButton.qml | 3 ++- src/qml/calamares/slideshow/NavButton.qml | 13 ++++++------ src/qml/calamares/slideshow/SlideCounter.qml | 3 ++- src/qml/calamares/slideshow/qmldir | 3 +++ 94 files changed, 276 insertions(+), 211 deletions(-) diff --git a/lang/calamares_i18n.qrc.in b/lang/calamares_i18n.qrc.in index 1f0ac1604..dd7931e09 100644 --- a/lang/calamares_i18n.qrc.in +++ b/lang/calamares_i18n.qrc.in @@ -1,5 +1,9 @@ - - + + + + @calamares_i18n_qrc_content@ - + diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index d337f774c..2b93cc9d1 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index f42c21b56..b36577591 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index 28b9df626..2119670be 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2018, Raul Rodrigo Segura (raurodse) - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Raul Rodrigo Segura (raurodse) + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h index e6c27fd3f..9fa13b44f 100644 --- a/src/calamares/CalamaresWindow.h +++ b/src/calamares/CalamaresWindow.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index 9e2bdc501..c5effb45f 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/DebugWindow.h b/src/calamares/DebugWindow.h index 764a141c2..e0e939912 100644 --- a/src/calamares/DebugWindow.h +++ b/src/calamares/DebugWindow.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp index 2d8313665..9753787ad 100644 --- a/src/calamares/VariantModel.cpp +++ b/src/calamares/VariantModel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/VariantModel.h b/src/calamares/VariantModel.h index bdf6da866..7deafc88d 100644 --- a/src/calamares/VariantModel.h +++ b/src/calamares/VariantModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/calamares-navigation.qml b/src/calamares/calamares-navigation.qml index 6b356218d..131926175 100644 --- a/src/calamares/calamares-navigation.qml +++ b/src/calamares/calamares-navigation.qml @@ -1,3 +1,13 @@ +/* Sample of QML navigation. + + SPDX-FileCopyrightText: 2020 Adriaan de Groot + SPDX-License-Identifier: GPL-3.0-or-later + + + The navigation panel is generally "horizontal" in layout, with + buttons for next and previous; this particular one copies + the layout and size of the widgets panel. +*/ import io.calamares.ui 1.0 import io.calamares.core 1.0 diff --git a/src/calamares/calamares-sidebar.qml b/src/calamares/calamares-sidebar.qml index 85d1d506d..c12dd6e34 100644 --- a/src/calamares/calamares-sidebar.qml +++ b/src/calamares/calamares-sidebar.qml @@ -1,3 +1,15 @@ +/* Sample of QML progress tree. + + SPDX-FileCopyrightText: 2020 Adriaan de Groot + SPDX-License-Identifier: GPL-3.0-or-later + + + The progress tree (actually a list) is generally "vertical" in layout, + with the steps going "down", but it could also be a more compact + horizontal layout with suitable branding settings. + + This example emulates the layout and size of the widgets progress tree. +*/ import io.calamares.ui 1.0 import io.calamares.core 1.0 diff --git a/src/calamares/calamares.qrc b/src/calamares/calamares.qrc index 17db2e08a..5733ea065 100644 --- a/src/calamares/calamares.qrc +++ b/src/calamares/calamares.qrc @@ -1,6 +1,10 @@ - - - calamares-sidebar.qml - calamares-navigation.qml - + + + + + calamares-sidebar.qml + calamares-navigation.qml + diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index 4ca089102..c5815154f 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp index 7b7101f5d..a11cd3795 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.cpp +++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/progresstree/ProgressTreeDelegate.h b/src/calamares/progresstree/ProgressTreeDelegate.h index d36bd4d14..7a2641b7d 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.h +++ b/src/calamares/progresstree/ProgressTreeDelegate.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/progresstree/ProgressTreeView.cpp b/src/calamares/progresstree/ProgressTreeView.cpp index 22b11bfc6..ad8effd66 100644 --- a/src/calamares/progresstree/ProgressTreeView.cpp +++ b/src/calamares/progresstree/ProgressTreeView.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/progresstree/ProgressTreeView.h b/src/calamares/progresstree/ProgressTreeView.h index 4a1bf9f2d..b72291a92 100644 --- a/src/calamares/progresstree/ProgressTreeView.h +++ b/src/calamares/progresstree/ProgressTreeView.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/test_conf.cpp b/src/calamares/test_conf.cpp index 06247bfed..18330d9a2 100644 --- a/src/calamares/test_conf.cpp +++ b/src/calamares/test_conf.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index d70ee70b5..6e4384b62 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/CalamaresVersion.h.in b/src/libcalamares/CalamaresVersion.h.in index 54a44888a..09ef9ae2c 100644 --- a/src/libcalamares/CalamaresVersion.h.in +++ b/src/libcalamares/CalamaresVersion.h.in @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: no +// SPDX-License-Identifier: CC0-1.0 #ifndef CALAMARES_VERSION_H #define CALAMARES_VERSION_H diff --git a/src/libcalamares/CalamaresVersionX.h.in b/src/libcalamares/CalamaresVersionX.h.in index 75b124c11..be3a9ae21 100644 --- a/src/libcalamares/CalamaresVersionX.h.in +++ b/src/libcalamares/CalamaresVersionX.h.in @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: no +// SPDX-License-Identifier: CC0-1.0 +// // Same as CalamaresVersion.h, but with a full-git-extended VERSION // rather than the short (vM.m.p) semantic version. #ifndef CALAMARES_VERSION_H diff --git a/src/libcalamares/partition/FileSystem.cpp b/src/libcalamares/partition/FileSystem.cpp index 6fda6b41a..ee4a9f5b1 100644 --- a/src/libcalamares/partition/FileSystem.cpp +++ b/src/libcalamares/partition/FileSystem.cpp @@ -3,6 +3,7 @@ * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "FileSystem.h" diff --git a/src/libcalamares/partition/KPMManager.cpp b/src/libcalamares/partition/KPMManager.cpp index 00b4a6491..1f3c5b5fc 100644 --- a/src/libcalamares/partition/KPMManager.cpp +++ b/src/libcalamares/partition/KPMManager.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "KPMManager.h" diff --git a/src/libcalamares/partition/KPMManager.h b/src/libcalamares/partition/KPMManager.h index be5ae00c0..2c73bfed3 100644 --- a/src/libcalamares/partition/KPMManager.h +++ b/src/libcalamares/partition/KPMManager.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ /* diff --git a/src/libcalamares/partition/Mount.cpp b/src/libcalamares/partition/Mount.cpp index f9a45fafd..a110f2882 100644 --- a/src/libcalamares/partition/Mount.cpp +++ b/src/libcalamares/partition/Mount.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "Mount.h" diff --git a/src/libcalamares/partition/Mount.h b/src/libcalamares/partition/Mount.h index c08d5ac75..a1a0dea65 100644 --- a/src/libcalamares/partition/Mount.h +++ b/src/libcalamares/partition/Mount.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef PARTITION_MOUNT_H diff --git a/src/libcalamares/partition/PartitionIterator.cpp b/src/libcalamares/partition/PartitionIterator.cpp index f4e57fbad..6e030346d 100644 --- a/src/libcalamares/partition/PartitionIterator.cpp +++ b/src/libcalamares/partition/PartitionIterator.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "PartitionIterator.h" diff --git a/src/libcalamares/partition/PartitionIterator.h b/src/libcalamares/partition/PartitionIterator.h index 03a03faba..4e3d4362d 100644 --- a/src/libcalamares/partition/PartitionIterator.h +++ b/src/libcalamares/partition/PartitionIterator.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ diff --git a/src/libcalamares/partition/PartitionQuery.cpp b/src/libcalamares/partition/PartitionQuery.cpp index 0aba728b3..8a2039b61 100644 --- a/src/libcalamares/partition/PartitionQuery.cpp +++ b/src/libcalamares/partition/PartitionQuery.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "PartitionQuery.h" diff --git a/src/libcalamares/partition/PartitionQuery.h b/src/libcalamares/partition/PartitionQuery.h index 595d82c0f..ac241a259 100644 --- a/src/libcalamares/partition/PartitionQuery.h +++ b/src/libcalamares/partition/PartitionQuery.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ /* diff --git a/src/libcalamares/partition/PartitionSize.cpp b/src/libcalamares/partition/PartitionSize.cpp index d84fd81c6..38e0366c0 100644 --- a/src/libcalamares/partition/PartitionSize.cpp +++ b/src/libcalamares/partition/PartitionSize.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ diff --git a/src/libcalamares/partition/PartitionSize.h b/src/libcalamares/partition/PartitionSize.h index f70aa3c89..35c6cdb8d 100644 --- a/src/libcalamares/partition/PartitionSize.h +++ b/src/libcalamares/partition/PartitionSize.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef PARTITION_PARTITIONSIZE_H diff --git a/src/libcalamares/partition/Sync.cpp b/src/libcalamares/partition/Sync.cpp index d1f6378cd..fb7b31788 100644 --- a/src/libcalamares/partition/Sync.cpp +++ b/src/libcalamares/partition/Sync.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "Sync.h" diff --git a/src/libcalamares/partition/Sync.h b/src/libcalamares/partition/Sync.h index a291058e7..bb1938c8b 100644 --- a/src/libcalamares/partition/Sync.h +++ b/src/libcalamares/partition/Sync.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef PARTITION_SYNC_H diff --git a/src/libcalamares/partition/Tests.cpp b/src/libcalamares/partition/Tests.cpp index e52b8edf1..d69e80fc1 100644 --- a/src/libcalamares/partition/Tests.cpp +++ b/src/libcalamares/partition/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #include "Tests.h" diff --git a/src/libcalamares/partition/Tests.h b/src/libcalamares/partition/Tests.h index c495fa0fd..31983c2f6 100644 --- a/src/libcalamares/partition/Tests.h +++ b/src/libcalamares/partition/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . * - * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE - * */ #ifndef LIBCALAMARES_PARTITION_TESTS_H diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 4cfe7ea40..c14f33b85 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot - * Copyright 2018, Raul Rodrigo Segura (raurodse) - * Copyright 2019, Camilo Higuita + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Raul Rodrigo Segura (raurodse) + * SPDX-FileCopyrightText: 2019 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/Branding.h b/src/libcalamaresui/Branding.h index 764845fec..65b7d9642 100644 --- a/src/libcalamaresui/Branding.h +++ b/src/libcalamaresui/Branding.h @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2018, Raul Rodrigo Segura (raurodse) - * Copyright 2019, Camilo Higuita + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Raul Rodrigo Segura (raurodse) + * SPDX-FileCopyrightText: 2019 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index a39fc141f..e0a206cae 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Dominic Hayes - * Copyright 2019, Gabriel Craciunescu - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Dominic Hayes + * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index 683b335d1..208f744a4 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/libcalamaresui.qrc b/src/libcalamaresui/libcalamaresui.qrc index eeb3fc490..62a7df271 100644 --- a/src/libcalamaresui/libcalamaresui.qrc +++ b/src/libcalamaresui/libcalamaresui.qrc @@ -1,4 +1,8 @@ - + + + ../../data/images/yes.svgz ../../data/images/no.svgz diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp index 6050c6955..453764b13 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.cpp +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2016, Kevin Kofler + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h index 8774a67e5..9c6e7b823 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.h +++ b/src/libcalamaresui/modulesystem/CppJobModule.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2016, Kevin Kofler - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.cpp b/src/libcalamaresui/modulesystem/ModuleFactory.cpp index 050854613..93ffb745b 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.cpp +++ b/src/libcalamaresui/modulesystem/ModuleFactory.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.h b/src/libcalamaresui/modulesystem/ModuleFactory.h index 8184967d2..6d8f12a19 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.h +++ b/src/libcalamaresui/modulesystem/ModuleFactory.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index eb7d086c1..abe0dce00 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index b5eed6e43..f3a6d6e98 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h index b59539a04..e3780ed0e 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.h +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index 72ca116fb..d3c47fffb 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index db5554b9b..68963802c 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index b94414d4a..3e1f2cce3 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot - * Copyright 2018, Raul Rodrigo Segura + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Raul Rodrigo Segura + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h index 64cc0f8a9..ad8e0989a 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.h +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 8f3b9a340..1674d9fab 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h index ac56e7607..370987b15 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.h +++ b/src/libcalamaresui/modulesystem/ViewModule.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 680673a22..57f04cd95 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index 251741fad..a98579cd6 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h index 5378d71e7..706306c23 100644 --- a/src/libcalamaresui/utils/ImageRegistry.h +++ b/src/libcalamaresui/utils/ImageRegistry.h @@ -1,28 +1,11 @@ /* === This file is part of Calamares - === * + * SPDX-FileCopyrightText: 2012 Christian Muehlhaeuser + * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSES/GPLv3+-ImageRegistry * - * Copyright 2019, Adriaan de Groot */ -/* - * Copyright 2012, Christian Muehlhaeuser - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - #ifndef IMAGE_REGISTRY_H #define IMAGE_REGISTRY_H diff --git a/src/libcalamaresui/utils/Paste.cpp b/src/libcalamaresui/utils/Paste.cpp index 1b9ad4dfe..16ec7a74f 100644 --- a/src/libcalamaresui/utils/Paste.cpp +++ b/src/libcalamaresui/utils/Paste.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Bill Auger + * SPDX-FileCopyrightText: 2019 Bill Auger + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/Paste.h b/src/libcalamaresui/utils/Paste.h index fd088882c..0886a9a7f 100644 --- a/src/libcalamaresui/utils/Paste.h +++ b/src/libcalamaresui/utils/Paste.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Bill Auger + * SPDX-FileCopyrightText: 2019 Bill Auger + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/PythonQtUtils.cpp b/src/libcalamaresui/utils/PythonQtUtils.cpp index 3a60839a4..6528ee4a8 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.cpp +++ b/src/libcalamaresui/utils/PythonQtUtils.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/PythonQtUtils.h b/src/libcalamaresui/utils/PythonQtUtils.h index dc889b2d0..f06a6d4e4 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.h +++ b/src/libcalamaresui/utils/PythonQtUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/Qml.cpp b/src/libcalamaresui/utils/Qml.cpp index 1f1152fa2..602e11326 100644 --- a/src/libcalamaresui/utils/Qml.cpp +++ b/src/libcalamaresui/utils/Qml.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/utils/Qml.h b/src/libcalamaresui/utils/Qml.h index a3fc6d114..ea5d0aa8f 100644 --- a/src/libcalamaresui/utils/Qml.h +++ b/src/libcalamaresui/utils/Qml.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp index 68eba5385..16925a4a1 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h index ab44205ac..e10cce872 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.h +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp index 6f3983dc4..de6f12a21 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.h b/src/libcalamaresui/viewpages/ExecutionViewStep.h index 0edb965a1..f2fea641b 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.h +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp index ba7657b09..835e35361 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h index 5ccc4e21d..b18fe8fd3 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtJob.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp index 0718df95d..112e11cc5 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.cpp +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h index bab073430..847dcd44c 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.h +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp index d16bd56f8..a55e0db05 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h index 96de6fe9c..96243f707 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 5e313ff98..cc849e0ea 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.h b/src/libcalamaresui/viewpages/PythonQtViewStep.h index 5358bc824..c19494013 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.h +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/QmlViewStep.cpp b/src/libcalamaresui/viewpages/QmlViewStep.cpp index 6318e47d8..650a746e2 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.cpp +++ b/src/libcalamaresui/viewpages/QmlViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/QmlViewStep.h b/src/libcalamaresui/viewpages/QmlViewStep.h index dc2af650d..c81f90567 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.h +++ b/src/libcalamaresui/viewpages/QmlViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/Slideshow.cpp b/src/libcalamaresui/viewpages/Slideshow.cpp index 0c75dc390..ddd8aedb6 100644 --- a/src/libcalamaresui/viewpages/Slideshow.cpp +++ b/src/libcalamaresui/viewpages/Slideshow.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/Slideshow.h b/src/libcalamaresui/viewpages/Slideshow.h index f338d44e2..e3b09a6d1 100644 --- a/src/libcalamaresui/viewpages/Slideshow.h +++ b/src/libcalamaresui/viewpages/Slideshow.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index ad86d06a4..1d9fcf1fb 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h index 59f307af2..6d6b9b2c5 100644 --- a/src/libcalamaresui/viewpages/ViewStep.h +++ b/src/libcalamaresui/viewpages/ViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/ClickableLabel.cpp b/src/libcalamaresui/widgets/ClickableLabel.cpp index 8f2323fa4..ec5c18a29 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h index f60a247ca..43da49276 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.h +++ b/src/libcalamaresui/widgets/ClickableLabel.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp index cf72c9924..6e9a64d10 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h index 9466fcd15..dd85f98ef 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.cpp b/src/libcalamaresui/widgets/PrettyRadioButton.cpp index 1cf348315..091be266b 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.cpp +++ b/src/libcalamaresui/widgets/PrettyRadioButton.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.h b/src/libcalamaresui/widgets/PrettyRadioButton.h index 9c7139526..8b0a3da7d 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.h +++ b/src/libcalamaresui/widgets/PrettyRadioButton.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/WaitingWidget.cpp b/src/libcalamaresui/widgets/WaitingWidget.cpp index 1a658b35b..11b1a10f7 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.cpp +++ b/src/libcalamaresui/widgets/WaitingWidget.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/widgets/WaitingWidget.h b/src/libcalamaresui/widgets/WaitingWidget.h index 0d8b6fd5b..be375c453 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.h +++ b/src/libcalamaresui/widgets/WaitingWidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/qml/calamares/slideshow/BackButton.qml b/src/qml/calamares/slideshow/BackButton.qml index 2d5f4dd5e..4a51f467e 100644 --- a/src/qml/calamares/slideshow/BackButton.qml +++ b/src/qml/calamares/slideshow/BackButton.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/qml/calamares/slideshow/ForwardButton.qml b/src/qml/calamares/slideshow/ForwardButton.qml index 9f6fecf8e..023f0e56b 100644 --- a/src/qml/calamares/slideshow/ForwardButton.qml +++ b/src/qml/calamares/slideshow/ForwardButton.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/qml/calamares/slideshow/NavButton.qml b/src/qml/calamares/slideshow/NavButton.qml index 33d8cad77..01537d343 100644 --- a/src/qml/calamares/slideshow/NavButton.qml +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,14 +28,14 @@ import QtQuick 2.5; Image { id: fade - + property bool isForward : true - + width: 100 height: 100 anchors.verticalCenter: parent.verticalCenter opacity: 0.3 - + OpacityAnimator { id: fadeIn target: fade @@ -43,7 +44,7 @@ Image { duration: 500 running: false } - + OpacityAnimator { id: fadeOut target: fade @@ -52,7 +53,7 @@ Image { duration: 250 running: false } - + MouseArea { anchors.fill: parent hoverEnabled: true diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml index e59476f5c..790471331 100644 --- a/src/qml/calamares/slideshow/SlideCounter.qml +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/qml/calamares/slideshow/qmldir b/src/qml/calamares/slideshow/qmldir index 7b964b831..8b68d1143 100644 --- a/src/qml/calamares/slideshow/qmldir +++ b/src/qml/calamares/slideshow/qmldir @@ -1,3 +1,6 @@ +/* SPDX-FileCopyrightText: no + SPDX-License-Identifier: CC0-1.0 +*/ module calamares.slideshow Presentation 1.0 Presentation.qml From 4e75ea8bd05f7dda6cc523658765969c27a36e77 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 00:21:51 +0200 Subject: [PATCH 355/399] REUSE: Add best-effort .license for data/images/ - the commit messages don't mention getting the images from elsewhere, so use the commit date. --- data/images/boot-environment.svg.license | 2 ++ data/images/bugs.svg.license | 2 ++ data/images/fail.svgz.license | 2 ++ data/images/help-donate.svg.license | 2 ++ data/images/help.svg.license | 2 ++ data/images/information.svgz.license | 2 ++ data/images/no.svgz.license | 2 ++ data/images/partition-alongside.svg.license | 2 ++ data/images/partition-disk.svg.license | 2 ++ data/images/partition-erase-auto.svg.license | 2 ++ data/images/partition-manual.svg.license | 2 ++ data/images/partition-partition.svg.license | 2 ++ data/images/partition-replace-os.svg.license | 2 ++ data/images/partition-table.svg.license | 2 ++ data/images/release.svg.license | 2 ++ data/images/squid.png.license | 2 ++ data/images/squid.svg.license | 2 ++ data/images/state-error.svg.license | 2 ++ data/images/state-ok.svg.license | 2 ++ data/images/state-warning.svg.license | 2 ++ data/images/yes.svgz.license | 2 ++ 21 files changed, 42 insertions(+) create mode 100644 data/images/boot-environment.svg.license create mode 100644 data/images/bugs.svg.license create mode 100644 data/images/fail.svgz.license create mode 100644 data/images/help-donate.svg.license create mode 100644 data/images/help.svg.license create mode 100644 data/images/information.svgz.license create mode 100644 data/images/no.svgz.license create mode 100644 data/images/partition-alongside.svg.license create mode 100644 data/images/partition-disk.svg.license create mode 100644 data/images/partition-erase-auto.svg.license create mode 100644 data/images/partition-manual.svg.license create mode 100644 data/images/partition-partition.svg.license create mode 100644 data/images/partition-replace-os.svg.license create mode 100644 data/images/partition-table.svg.license create mode 100644 data/images/release.svg.license create mode 100644 data/images/squid.png.license create mode 100644 data/images/squid.svg.license create mode 100644 data/images/state-error.svg.license create mode 100644 data/images/state-ok.svg.license create mode 100644 data/images/state-warning.svg.license create mode 100644 data/images/yes.svgz.license diff --git a/data/images/boot-environment.svg.license b/data/images/boot-environment.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/boot-environment.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/bugs.svg.license b/data/images/bugs.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/bugs.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/fail.svgz.license b/data/images/fail.svgz.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/fail.svgz.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/help-donate.svg.license b/data/images/help-donate.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/data/images/help-donate.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/data/images/help.svg.license b/data/images/help.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/help.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/information.svgz.license b/data/images/information.svgz.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/information.svgz.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/no.svgz.license b/data/images/no.svgz.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/no.svgz.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-alongside.svg.license b/data/images/partition-alongside.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-alongside.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-disk.svg.license b/data/images/partition-disk.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-disk.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-erase-auto.svg.license b/data/images/partition-erase-auto.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-erase-auto.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-manual.svg.license b/data/images/partition-manual.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-manual.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-partition.svg.license b/data/images/partition-partition.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-partition.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-replace-os.svg.license b/data/images/partition-replace-os.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-replace-os.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/partition-table.svg.license b/data/images/partition-table.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/partition-table.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/release.svg.license b/data/images/release.svg.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/data/images/release.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/squid.png.license b/data/images/squid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/squid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/squid.svg.license b/data/images/squid.svg.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/squid.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/images/state-error.svg.license b/data/images/state-error.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/data/images/state-error.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/data/images/state-ok.svg.license b/data/images/state-ok.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/data/images/state-ok.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/data/images/state-warning.svg.license b/data/images/state-warning.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/data/images/state-warning.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/data/images/yes.svgz.license b/data/images/yes.svgz.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/images/yes.svgz.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later From 1a557804ab613c5cac21152f35ac74f7b103b233 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 25 Aug 2020 13:04:50 +0200 Subject: [PATCH 356/399] REUSE: Remainder of data/ - *AppImage example config*: this is old AppImage configuration, basically unmaintained, but copied from the **other** example config files which are CC0-1.0 as well. - *Sample Linux distro*: The example Linux distro has a handful of trivial files, a bogus `/etc/issue`, that kind of thing. - The bash completions are GPL-3.0-or-later - FreeBSD packaging information is BSD-2-Clause --- data/FreeBSD/Makefile | 3 + data/completion/bash/calamares | 3 +- .../branding/default/squid.png.license | 2 + .../modules/displaymanager.conf | 3 + data/config-appimage/modules/finished.conf | 3 + data/config-appimage/modules/keyboard.conf | 3 + data/config-appimage/modules/locale.conf | 3 + data/config-appimage/modules/users.conf | 3 + data/config-appimage/modules/welcome.conf | 3 + data/config-appimage/settings.conf | 3 + data/example-root/README.md | 4 + data/example-root/etc/bash.bashrc | 3 + data/example-root/etc/group | 3 + data/example-root/etc/issue | 3 + data/example-root/etc/locale.gen | 482 +----------------- data/example-root/etc/profile | 3 + data/example-root/xbin/linux-version | 4 + data/example-root/xbin/useradd | 4 + 18 files changed, 55 insertions(+), 480 deletions(-) create mode 100644 data/config-appimage/branding/default/squid.png.license diff --git a/data/FreeBSD/Makefile b/data/FreeBSD/Makefile index 520a05638..d9b7e5043 100644 --- a/data/FreeBSD/Makefile +++ b/data/FreeBSD/Makefile @@ -1,4 +1,7 @@ # $FreeBSD$ +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause PORTNAME= calamares DISTVERSION= 3.2.25 diff --git a/data/completion/bash/calamares b/data/completion/bash/calamares index 47c2bb268..21f2edba4 100644 --- a/data/completion/bash/calamares +++ b/data/completion/bash/calamares @@ -1,6 +1,7 @@ # === This file is part of Calamares - === # -# Copyright 2020, Gaël PORTAY +# SPDX-FileCopyrightText: 2020 Gaël PORTAY +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/config-appimage/branding/default/squid.png.license b/data/config-appimage/branding/default/squid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/data/config-appimage/branding/default/squid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/data/config-appimage/modules/displaymanager.conf b/data/config-appimage/modules/displaymanager.conf index 8f8e9c704..5c9554602 100644 --- a/data/config-appimage/modules/displaymanager.conf +++ b/data/config-appimage/modules/displaymanager.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configure one or more display managers (e.g. SDDM) # with a "best effort" approach. --- diff --git a/data/config-appimage/modules/finished.conf b/data/config-appimage/modules/finished.conf index 48bbdc031..f0280ef58 100644 --- a/data/config-appimage/modules/finished.conf +++ b/data/config-appimage/modules/finished.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the "finished" page, which is usually shown only at # the end of the installation (successful or not). --- diff --git a/data/config-appimage/modules/keyboard.conf b/data/config-appimage/modules/keyboard.conf index ee97c3939..d122f30d7 100644 --- a/data/config-appimage/modules/keyboard.conf +++ b/data/config-appimage/modules/keyboard.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # NOTE: you must have ckbcomp installed and runnable # on the live system, for keyboard layout previews. --- diff --git a/data/config-appimage/modules/locale.conf b/data/config-appimage/modules/locale.conf index 8ae016279..5e8aa3ab5 100644 --- a/data/config-appimage/modules/locale.conf +++ b/data/config-appimage/modules/locale.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- # This settings are used to set your default system time zone. # Time zones are usually located under /usr/share/zoneinfo and diff --git a/data/config-appimage/modules/users.conf b/data/config-appimage/modules/users.conf index bdf812878..4d9cc4394 100644 --- a/data/config-appimage/modules/users.conf +++ b/data/config-appimage/modules/users.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the one-user-system user module. # # Besides these settings, the user module also places the following diff --git a/data/config-appimage/modules/welcome.conf b/data/config-appimage/modules/welcome.conf index 0cfb59546..2978010b7 100644 --- a/data/config-appimage/modules/welcome.conf +++ b/data/config-appimage/modules/welcome.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the welcome module. The welcome page # displays some information from the branding file. # Which parts it displays can be configured through diff --git a/data/config-appimage/settings.conf b/data/config-appimage/settings.conf index 756710492..defef0b44 100644 --- a/data/config-appimage/settings.conf +++ b/data/config-appimage/settings.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration file for Calamares # Syntax is YAML 1.2 --- diff --git a/data/example-root/README.md b/data/example-root/README.md index 7173b3eaf..9d8987286 100644 --- a/data/example-root/README.md +++ b/data/example-root/README.md @@ -1,5 +1,9 @@ # Example Filesystem + + This is a filesystem that will be used as / in an example distro, *if* you build the `example-distro` target and use the default unpackfs configuration. It should hold files and configuration diff --git a/data/example-root/etc/bash.bashrc b/data/example-root/etc/bash.bashrc index 42bd3d007..7de2a283d 100644 --- a/data/example-root/etc/bash.bashrc +++ b/data/example-root/etc/bash.bashrc @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Global .profile -- add /sbin_1 PATH=$PATH:/sbin_1:/xbin diff --git a/data/example-root/etc/group b/data/example-root/etc/group index 1dbf9013e..3130ae3e8 100644 --- a/data/example-root/etc/group +++ b/data/example-root/etc/group @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# root:x:0: diff --git a/data/example-root/etc/issue b/data/example-root/etc/issue index ce0ac58e3..22cce578e 100644 --- a/data/example-root/etc/issue +++ b/data/example-root/etc/issue @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# This is an example /etc/issue file. diff --git a/data/example-root/etc/locale.gen b/data/example-root/etc/locale.gen index 5e729a18d..e2df1eaef 100644 --- a/data/example-root/etc/locale.gen +++ b/data/example-root/etc/locale.gen @@ -1,486 +1,10 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change # this file, you need to rerun locale-gen. - -# aa_DJ ISO-8859-1 -# aa_DJ.UTF-8 UTF-8 -# aa_ER UTF-8 -# aa_ER@saaho UTF-8 -# aa_ET UTF-8 -# af_ZA ISO-8859-1 -# af_ZA.UTF-8 UTF-8 -# ak_GH UTF-8 -# am_ET UTF-8 -# an_ES ISO-8859-15 -# an_ES.UTF-8 UTF-8 -# anp_IN UTF-8 -# ar_AE ISO-8859-6 -# ar_AE.UTF-8 UTF-8 -# ar_BH ISO-8859-6 -# ar_BH.UTF-8 UTF-8 -# ar_DZ ISO-8859-6 -# ar_DZ.UTF-8 UTF-8 -# ar_EG ISO-8859-6 -# ar_EG.UTF-8 UTF-8 -# ar_IN UTF-8 -# ar_IQ ISO-8859-6 -# ar_IQ.UTF-8 UTF-8 -# ar_JO ISO-8859-6 -# ar_JO.UTF-8 UTF-8 -# ar_KW ISO-8859-6 -# ar_KW.UTF-8 UTF-8 -# ar_LB ISO-8859-6 -# ar_LB.UTF-8 UTF-8 -# ar_LY ISO-8859-6 -# ar_LY.UTF-8 UTF-8 -# ar_MA ISO-8859-6 -# ar_MA.UTF-8 UTF-8 -# ar_OM ISO-8859-6 -# ar_OM.UTF-8 UTF-8 -# ar_QA ISO-8859-6 -# ar_QA.UTF-8 UTF-8 -# ar_SA ISO-8859-6 -# ar_SA.UTF-8 UTF-8 -# ar_SD ISO-8859-6 -# ar_SD.UTF-8 UTF-8 -# ar_SS UTF-8 -# ar_SY ISO-8859-6 -# ar_SY.UTF-8 UTF-8 -# ar_TN ISO-8859-6 -# ar_TN.UTF-8 UTF-8 -# ar_YE ISO-8859-6 -# ar_YE.UTF-8 UTF-8 -# as_IN UTF-8 -# ast_ES ISO-8859-15 -# ast_ES.UTF-8 UTF-8 -# ayc_PE UTF-8 -# az_AZ UTF-8 -# be_BY CP1251 -# be_BY.UTF-8 UTF-8 -# be_BY@latin UTF-8 -# bem_ZM UTF-8 -# ber_DZ UTF-8 -# ber_MA UTF-8 -# bg_BG CP1251 -# bg_BG.UTF-8 UTF-8 -# bhb_IN.UTF-8 UTF-8 -# bho_IN UTF-8 -# bn_BD UTF-8 -# bn_IN UTF-8 -# bo_CN UTF-8 -# bo_IN UTF-8 -# br_FR ISO-8859-1 -# br_FR.UTF-8 UTF-8 -# br_FR@euro ISO-8859-15 -# brx_IN UTF-8 -# bs_BA ISO-8859-2 -# bs_BA.UTF-8 UTF-8 -# byn_ER UTF-8 -# ca_AD ISO-8859-15 -# ca_AD.UTF-8 UTF-8 -# ca_ES ISO-8859-1 -# ca_ES.UTF-8 UTF-8 -# ca_ES.UTF-8@valencia UTF-8 -# ca_ES@euro ISO-8859-15 -# ca_ES@valencia ISO-8859-15 -# ca_FR ISO-8859-15 -# ca_FR.UTF-8 UTF-8 -# ca_IT ISO-8859-15 -# ca_IT.UTF-8 UTF-8 -# ce_RU UTF-8 -# ckb_IQ UTF-8 -# cmn_TW UTF-8 -# crh_UA UTF-8 -# cs_CZ ISO-8859-2 -# cs_CZ.UTF-8 UTF-8 -# csb_PL UTF-8 -# cv_RU UTF-8 -# cy_GB ISO-8859-14 -# cy_GB.UTF-8 UTF-8 -# da_DK ISO-8859-1 -# da_DK.UTF-8 UTF-8 -# de_AT ISO-8859-1 -# de_AT.UTF-8 UTF-8 -# de_AT@euro ISO-8859-15 -# de_BE ISO-8859-1 -# de_BE.UTF-8 UTF-8 -# de_BE@euro ISO-8859-15 -# de_CH ISO-8859-1 -# de_CH.UTF-8 UTF-8 -# de_DE ISO-8859-1 -# de_DE.UTF-8 UTF-8 -# de_DE@euro ISO-8859-15 -# de_LI.UTF-8 UTF-8 -# de_LU ISO-8859-1 -# de_LU.UTF-8 UTF-8 -# de_LU@euro ISO-8859-15 -# doi_IN UTF-8 -# dv_MV UTF-8 -# dz_BT UTF-8 -# el_CY ISO-8859-7 -# el_CY.UTF-8 UTF-8 -# el_GR ISO-8859-7 -# el_GR.UTF-8 UTF-8 -# en_AG UTF-8 -# en_AU ISO-8859-1 -# en_AU.UTF-8 UTF-8 -# en_BW ISO-8859-1 -# en_BW.UTF-8 UTF-8 -# en_CA ISO-8859-1 en_CA.UTF-8 UTF-8 -# en_DK ISO-8859-1 -# en_DK.ISO-8859-15 ISO-8859-15 -# en_DK.UTF-8 UTF-8 -# en_GB ISO-8859-1 -# en_GB.ISO-8859-15 ISO-8859-15 -# en_GB.UTF-8 UTF-8 -# en_HK ISO-8859-1 -# en_HK.UTF-8 UTF-8 -# en_IE ISO-8859-1 -# en_IE.UTF-8 UTF-8 -# en_IE@euro ISO-8859-15 -# en_IN UTF-8 -# en_NG UTF-8 -# en_NZ ISO-8859-1 -# en_NZ.UTF-8 UTF-8 -# en_PH ISO-8859-1 -# en_PH.UTF-8 UTF-8 -# en_SG ISO-8859-1 -# en_SG.UTF-8 UTF-8 -# en_US ISO-8859-1 -# en_US.ISO-8859-15 ISO-8859-15 en_US.UTF-8 UTF-8 -# en_ZA ISO-8859-1 -# en_ZA.UTF-8 UTF-8 -# en_ZM UTF-8 -# en_ZW ISO-8859-1 -# en_ZW.UTF-8 UTF-8 -# eo ISO-8859-3 -# eo.UTF-8 UTF-8 -# eo_US.UTF-8 UTF-8 -# es_AR ISO-8859-1 -# es_AR.UTF-8 UTF-8 -# es_BO ISO-8859-1 -# es_BO.UTF-8 UTF-8 -# es_CL ISO-8859-1 -# es_CL.UTF-8 UTF-8 -# es_CO ISO-8859-1 -# es_CO.UTF-8 UTF-8 -# es_CR ISO-8859-1 -# es_CR.UTF-8 UTF-8 -# es_CU UTF-8 -# es_DO ISO-8859-1 -# es_DO.UTF-8 UTF-8 -# es_EC ISO-8859-1 -# es_EC.UTF-8 UTF-8 -# es_ES ISO-8859-1 -# es_ES.UTF-8 UTF-8 -# es_ES@euro ISO-8859-15 -# es_GT ISO-8859-1 -# es_GT.UTF-8 UTF-8 -# es_HN ISO-8859-1 -# es_HN.UTF-8 UTF-8 -# es_MX ISO-8859-1 -# es_MX.UTF-8 UTF-8 -# es_NI ISO-8859-1 -# es_NI.UTF-8 UTF-8 -# es_PA ISO-8859-1 -# es_PA.UTF-8 UTF-8 -# es_PE ISO-8859-1 -# es_PE.UTF-8 UTF-8 -# es_PR ISO-8859-1 -# es_PR.UTF-8 UTF-8 -# es_PY ISO-8859-1 -# es_PY.UTF-8 UTF-8 -# es_SV ISO-8859-1 -# es_SV.UTF-8 UTF-8 -# es_US ISO-8859-1 -# es_US.UTF-8 UTF-8 -# es_UY ISO-8859-1 -# es_UY.UTF-8 UTF-8 -# es_VE ISO-8859-1 -# es_VE.UTF-8 UTF-8 -# et_EE ISO-8859-1 -# et_EE.ISO-8859-15 ISO-8859-15 -# et_EE.UTF-8 UTF-8 -# eu_ES ISO-8859-1 -# eu_ES.UTF-8 UTF-8 -# eu_ES@euro ISO-8859-15 -# eu_FR ISO-8859-1 -# eu_FR.UTF-8 UTF-8 -# eu_FR@euro ISO-8859-15 -# fa_IR UTF-8 -# ff_SN UTF-8 -# fi_FI ISO-8859-1 -# fi_FI.UTF-8 UTF-8 -# fi_FI@euro ISO-8859-15 -# fil_PH UTF-8 -# fo_FO ISO-8859-1 -# fo_FO.UTF-8 UTF-8 -# fr_BE ISO-8859-1 -# fr_BE.UTF-8 UTF-8 -# fr_BE@euro ISO-8859-15 -# fr_CA ISO-8859-1 -# fr_CA.UTF-8 UTF-8 -# fr_CH ISO-8859-1 -# fr_CH.UTF-8 UTF-8 -# fr_FR ISO-8859-1 -# fr_FR.UTF-8 UTF-8 -# fr_FR@euro ISO-8859-15 -# fr_LU ISO-8859-1 -# fr_LU.UTF-8 UTF-8 -# fr_LU@euro ISO-8859-15 -# fur_IT UTF-8 -# fy_DE UTF-8 -# fy_NL UTF-8 -# ga_IE ISO-8859-1 -# ga_IE.UTF-8 UTF-8 -# ga_IE@euro ISO-8859-15 -# gd_GB ISO-8859-15 -# gd_GB.UTF-8 UTF-8 -# gez_ER UTF-8 -# gez_ER@abegede UTF-8 -# gez_ET UTF-8 -# gez_ET@abegede UTF-8 -# gl_ES ISO-8859-1 -# gl_ES.UTF-8 UTF-8 -# gl_ES@euro ISO-8859-15 -# gu_IN UTF-8 -# gv_GB ISO-8859-1 -# gv_GB.UTF-8 UTF-8 -# ha_NG UTF-8 -# hak_TW UTF-8 -# he_IL ISO-8859-8 -# he_IL.UTF-8 UTF-8 -# hi_IN UTF-8 -# hne_IN UTF-8 -# hr_HR ISO-8859-2 -# hr_HR.UTF-8 UTF-8 -# hsb_DE ISO-8859-2 -# hsb_DE.UTF-8 UTF-8 -# ht_HT UTF-8 -# hu_HU ISO-8859-2 -# hu_HU.UTF-8 UTF-8 -# hy_AM UTF-8 -# hy_AM.ARMSCII-8 ARMSCII-8 -# ia_FR UTF-8 -# id_ID ISO-8859-1 -# id_ID.UTF-8 UTF-8 -# ig_NG UTF-8 -# ik_CA UTF-8 -# is_IS ISO-8859-1 -# is_IS.UTF-8 UTF-8 -# it_CH ISO-8859-1 -# it_CH.UTF-8 UTF-8 -# it_IT ISO-8859-1 -# it_IT.UTF-8 UTF-8 -# it_IT@euro ISO-8859-15 -# iu_CA UTF-8 -# iw_IL ISO-8859-8 -# iw_IL.UTF-8 UTF-8 -# ja_JP.EUC-JP EUC-JP -# ja_JP.UTF-8 UTF-8 -# ka_GE GEORGIAN-PS -# ka_GE.UTF-8 UTF-8 -# kk_KZ PT154 -# kk_KZ RK1048 -# kk_KZ.UTF-8 UTF-8 -# kl_GL ISO-8859-1 -# kl_GL.UTF-8 UTF-8 -# km_KH UTF-8 -# kn_IN UTF-8 -# ko_KR.EUC-KR EUC-KR -# ko_KR.UTF-8 UTF-8 -# kok_IN UTF-8 -# ks_IN UTF-8 -# ks_IN@devanagari UTF-8 -# ku_TR ISO-8859-9 -# ku_TR.UTF-8 UTF-8 -# kw_GB ISO-8859-1 -# kw_GB.UTF-8 UTF-8 -# ky_KG UTF-8 -# lb_LU UTF-8 -# lg_UG ISO-8859-10 -# lg_UG.UTF-8 UTF-8 -# li_BE UTF-8 -# li_NL UTF-8 -# lij_IT UTF-8 -# ln_CD UTF-8 -# lo_LA UTF-8 -# lt_LT ISO-8859-13 -# lt_LT.UTF-8 UTF-8 -# lv_LV ISO-8859-13 -# lv_LV.UTF-8 UTF-8 -# lzh_TW UTF-8 -# mag_IN UTF-8 -# mai_IN UTF-8 -# mg_MG ISO-8859-15 -# mg_MG.UTF-8 UTF-8 -# mhr_RU UTF-8 -# mi_NZ ISO-8859-13 -# mi_NZ.UTF-8 UTF-8 -# mk_MK ISO-8859-5 -# mk_MK.UTF-8 UTF-8 -# ml_IN UTF-8 -# mn_MN UTF-8 -# mni_IN UTF-8 -# mr_IN UTF-8 -# ms_MY ISO-8859-1 -# ms_MY.UTF-8 UTF-8 -# mt_MT ISO-8859-3 -# mt_MT.UTF-8 UTF-8 -# my_MM UTF-8 -# nan_TW UTF-8 -# nan_TW@latin UTF-8 -# nb_NO ISO-8859-1 -# nb_NO.UTF-8 UTF-8 -# nds_DE UTF-8 -# nds_NL UTF-8 -# ne_NP UTF-8 -# nhn_MX UTF-8 -# niu_NU UTF-8 -# niu_NZ UTF-8 -# nl_AW UTF-8 -# nl_BE ISO-8859-1 -# nl_BE.UTF-8 UTF-8 -# nl_BE@euro ISO-8859-15 -# nl_NL ISO-8859-1 -# nl_NL.UTF-8 UTF-8 -# nl_NL@euro ISO-8859-15 -# nn_NO ISO-8859-1 -# nn_NO.UTF-8 UTF-8 -# nr_ZA UTF-8 -# nso_ZA UTF-8 -# oc_FR ISO-8859-1 -# oc_FR.UTF-8 UTF-8 -# om_ET UTF-8 -# om_KE ISO-8859-1 -# om_KE.UTF-8 UTF-8 -# or_IN UTF-8 -# os_RU UTF-8 -# pa_IN UTF-8 -# pa_PK UTF-8 -# pap_AN UTF-8 -# pap_AW UTF-8 -# pap_CW UTF-8 -# pl_PL ISO-8859-2 -# pl_PL.UTF-8 UTF-8 -# ps_AF UTF-8 -# pt_BR ISO-8859-1 -# pt_BR.UTF-8 UTF-8 -# pt_PT ISO-8859-1 -# pt_PT.UTF-8 UTF-8 -# pt_PT@euro ISO-8859-15 -# quz_PE UTF-8 -# raj_IN UTF-8 -# ro_RO ISO-8859-2 -# ro_RO.UTF-8 UTF-8 -# ru_RU ISO-8859-5 -# ru_RU.CP1251 CP1251 -# ru_RU.KOI8-R KOI8-R -# ru_RU.UTF-8 UTF-8 -# ru_UA KOI8-U -# ru_UA.UTF-8 UTF-8 -# rw_RW UTF-8 -# sa_IN UTF-8 -# sat_IN UTF-8 -# sc_IT UTF-8 -# sd_IN UTF-8 -# sd_IN@devanagari UTF-8 -# sd_PK UTF-8 -# se_NO UTF-8 -# shs_CA UTF-8 -# si_LK UTF-8 -# sid_ET UTF-8 -# sk_SK ISO-8859-2 -# sk_SK.UTF-8 UTF-8 -# sl_SI ISO-8859-2 -# sl_SI.UTF-8 UTF-8 -# so_DJ ISO-8859-1 -# so_DJ.UTF-8 UTF-8 -# so_ET UTF-8 -# so_KE ISO-8859-1 -# so_KE.UTF-8 UTF-8 -# so_SO ISO-8859-1 -# so_SO.UTF-8 UTF-8 -# sq_AL ISO-8859-1 -# sq_AL.UTF-8 UTF-8 -# sq_MK UTF-8 -# sr_ME UTF-8 -# sr_RS UTF-8 -# sr_RS@latin UTF-8 -# ss_ZA UTF-8 -# st_ZA ISO-8859-1 -# st_ZA.UTF-8 UTF-8 -# sv_FI ISO-8859-1 -# sv_FI.UTF-8 UTF-8 -# sv_FI@euro ISO-8859-15 -# sv_SE ISO-8859-1 -# sv_SE.ISO-8859-15 ISO-8859-15 -# sv_SE.UTF-8 UTF-8 -# sw_KE UTF-8 -# sw_TZ UTF-8 -# szl_PL UTF-8 -# ta_IN UTF-8 -# ta_LK UTF-8 -# tcy_IN.UTF-8 UTF-8 -# te_IN UTF-8 -# tg_TJ KOI8-T -# tg_TJ.UTF-8 UTF-8 -# th_TH TIS-620 -# th_TH.UTF-8 UTF-8 -# the_NP UTF-8 -# ti_ER UTF-8 -# ti_ET UTF-8 -# tig_ER UTF-8 -# tk_TM UTF-8 -# tl_PH ISO-8859-1 -# tl_PH.UTF-8 UTF-8 -# tn_ZA UTF-8 -# tr_CY ISO-8859-9 -# tr_CY.UTF-8 UTF-8 -# tr_TR ISO-8859-9 -# tr_TR.UTF-8 UTF-8 -# ts_ZA UTF-8 -# tt_RU UTF-8 -# tt_RU@iqtelif UTF-8 -# ug_CN UTF-8 -# ug_CN@latin UTF-8 -# uk_UA KOI8-U -# uk_UA.UTF-8 UTF-8 -# unm_US UTF-8 -# ur_IN UTF-8 -# ur_PK UTF-8 -# uz_UZ ISO-8859-1 -# uz_UZ.UTF-8 UTF-8 -# uz_UZ@cyrillic UTF-8 -# ve_ZA UTF-8 -# vi_VN UTF-8 -# wa_BE ISO-8859-1 -# wa_BE.UTF-8 UTF-8 -# wa_BE@euro ISO-8859-15 -# wae_CH UTF-8 -# wal_ET UTF-8 -# wo_SN UTF-8 -# xh_ZA ISO-8859-1 -# xh_ZA.UTF-8 UTF-8 -# yi_US CP1255 -# yi_US.UTF-8 UTF-8 -# yo_NG UTF-8 -# yue_HK UTF-8 -# zh_CN GB2312 -# zh_CN.GB18030 GB18030 -# zh_CN.GBK GBK -# zh_CN.UTF-8 UTF-8 -# zh_HK BIG5-HKSCS -# zh_HK.UTF-8 UTF-8 -# zh_SG GB2312 -# zh_SG.GBK GBK -# zh_SG.UTF-8 UTF-8 -# zh_TW BIG5 -# zh_TW.EUC-TW EUC-TW -# zh_TW.UTF-8 UTF-8 -# zu_ZA ISO-8859-1 -# zu_ZA.UTF-8 UTF-8 diff --git a/data/example-root/etc/profile b/data/example-root/etc/profile index 42bd3d007..7de2a283d 100644 --- a/data/example-root/etc/profile +++ b/data/example-root/etc/profile @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Global .profile -- add /sbin_1 PATH=$PATH:/sbin_1:/xbin diff --git a/data/example-root/xbin/linux-version b/data/example-root/xbin/linux-version index 3e91d5333..87b040d34 100755 --- a/data/example-root/xbin/linux-version +++ b/data/example-root/xbin/linux-version @@ -1 +1,5 @@ #! /bin/true +# +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# diff --git a/data/example-root/xbin/useradd b/data/example-root/xbin/useradd index 3e91d5333..87b040d34 100755 --- a/data/example-root/xbin/useradd +++ b/data/example-root/xbin/useradd @@ -1 +1,5 @@ #! /bin/true +# +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# From 92a6cbc77315c1b38f61f8e02cbd2396d3c4f036 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 00:49:48 +0200 Subject: [PATCH 357/399] REUSE: (CC0-1.0) generated files & PD files - the translations generated from public-domain files are CC0-1.0 - the files derived from Unicode tables are close to CC0-1.0, possibly except that there is a FileCopyrightText line --- lang/tz_en.ts | 3 +++ lang/tz_nl.ts | 3 +++ lang/tz_sv.ts | 6 +++++- lang/tz_uk.ts | 3 +++ src/libcalamares/locale/CountryData_p.cpp | 2 +- src/libcalamares/locale/ZoneData_p.cxxtr | 2 +- src/libcalamares/locale/zone-extractor.py | 2 +- 7 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lang/tz_en.ts b/lang/tz_en.ts index ba9b5a350..cbd037f32 100644 --- a/lang/tz_en.ts +++ b/lang/tz_en.ts @@ -1,4 +1,7 @@ + diff --git a/lang/tz_nl.ts b/lang/tz_nl.ts index e1eb8d1e5..ed501dd67 100644 --- a/lang/tz_nl.ts +++ b/lang/tz_nl.ts @@ -1,4 +1,7 @@ + diff --git a/lang/tz_sv.ts b/lang/tz_sv.ts index 98d9b83c3..c871dbac5 100644 --- a/lang/tz_sv.ts +++ b/lang/tz_sv.ts @@ -1,4 +1,8 @@ - + + + QObject diff --git a/lang/tz_uk.ts b/lang/tz_uk.ts index 6059079ca..ced3e5b80 100644 --- a/lang/tz_uk.ts +++ b/lang/tz_uk.ts @@ -1,4 +1,7 @@ + diff --git a/src/libcalamares/locale/CountryData_p.cpp b/src/libcalamares/locale/CountryData_p.cpp index 722ee2ba9..61b9b05a7 100644 --- a/src/libcalamares/locale/CountryData_p.cpp +++ b/src/libcalamares/locale/CountryData_p.cpp @@ -4,7 +4,7 @@ * * SPDX-FileCopyrightText: 1991-2019 Unicode, Inc. * SPDX-FileCopyrightText: 2019 Adriaan de Groot -* SPDX-License-Identifier: CC0 +* SPDX-License-Identifier: CC0-1.0 * * This file is derived from CLDR data from Unicode, Inc. Applicable terms * are listed at http://unicode.org/copyright.html , of which the most diff --git a/src/libcalamares/locale/ZoneData_p.cxxtr b/src/libcalamares/locale/ZoneData_p.cxxtr index 7bbcdf7f6..c59c60dbb 100644 --- a/src/libcalamares/locale/ZoneData_p.cxxtr +++ b/src/libcalamares/locale/ZoneData_p.cxxtr @@ -2,7 +2,7 @@ * * SPDX-FileCopyrightText: 2009 Arthur David Olson * SPDX-FileCopyrightText: 2019 Adriaan de Groot -* SPDX-License-Identifier: CC0 +* SPDX-License-Identifier: CC0-1.0 * * This file is derived from zone.tab, which has its own copyright statement: * diff --git a/src/libcalamares/locale/zone-extractor.py b/src/libcalamares/locale/zone-extractor.py index 3f08df9d8..aa8063522 100644 --- a/src/libcalamares/locale/zone-extractor.py +++ b/src/libcalamares/locale/zone-extractor.py @@ -48,7 +48,7 @@ cpp_header_comment = """/* GENERATED FILE DO NOT EDIT * * SPDX-FileCopyrightText: 2009 Arthur David Olson * SPDX-FileCopyrightText: 2019 Adriaan de Groot -* SPDX-License-Identifier: CC0 +* SPDX-License-Identifier: CC0-1.0 * * This file is derived from zone.tab, which has its own copyright statement: * From 1b23520f2020f4cf5ca189ef51f6503d57445f8e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 21 Aug 2020 19:54:36 +0200 Subject: [PATCH 358/399] REUSE: (CC0-1.0) module descriptors and configuration files In spite of there being considerable documentation sometimes in the config file, we go with CC0 because we don't want the notion of 'derived work' of a config file. The example `settings.conf` is also CC0. Add some docs to it while we're at it. --- settings.conf | 11 ++++++++++- src/modules/bootloader/bootloader.conf | 3 +++ src/modules/bootloader/module.desc | 2 ++ src/modules/contextualprocess/contextualprocess.conf | 3 +++ src/modules/displaymanager/displaymanager.conf | 3 +++ src/modules/displaymanager/module.desc | 2 ++ src/modules/dracut/module.desc | 2 ++ src/modules/dummycpp/dummycpp.conf | 3 +++ src/modules/dummycpp/module.desc | 2 ++ src/modules/dummyprocess/module.desc | 2 ++ src/modules/dummypython/dummypython.conf | 3 +++ src/modules/dummypython/module.desc | 2 ++ src/modules/dummypythonqt/dummypythonqt.conf | 3 +++ src/modules/dummypythonqt/module.desc | 2 ++ src/modules/finished/finished.conf | 3 +++ src/modules/fsresizer/fsresizer.conf | 3 +++ src/modules/fstab/fstab.conf | 3 +++ src/modules/fstab/module.desc | 2 ++ src/modules/grubcfg/grubcfg.conf | 3 +++ src/modules/grubcfg/module.desc | 2 ++ src/modules/hwclock/module.desc | 2 ++ src/modules/initcpio/initcpio.conf | 3 +++ src/modules/initcpiocfg/module.desc | 2 ++ src/modules/initramfs/initramfs.conf | 3 +++ src/modules/initramfscfg/module.desc | 2 ++ .../interactiveterminal/interactiveterminal.conf | 3 +++ src/modules/keyboard/keyboard.conf | 3 +++ src/modules/keyboardq/keyboardq.conf | 3 +++ src/modules/license/license.conf | 3 +++ src/modules/locale/locale.conf | 3 +++ src/modules/localecfg/module.desc | 2 ++ src/modules/localeq/localeq.conf | 3 +++ .../luksopenswaphookcfg/luksopenswaphookcfg.conf | 3 +++ src/modules/luksopenswaphookcfg/module.desc | 2 ++ src/modules/machineid/machineid.conf | 3 +++ src/modules/mkinitfs/module.desc | 2 ++ src/modules/mount/module.desc | 2 ++ src/modules/mount/mount.conf | 3 +++ src/modules/netinstall/netinstall.conf | 3 +++ src/modules/networkcfg/module.desc | 2 ++ src/modules/notesqml/notesqml.conf | 3 +++ src/modules/oemid/oemid.conf | 3 +++ src/modules/openrcdmcryptcfg/module.desc | 2 ++ src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf | 3 +++ src/modules/packagechooser/packagechooser.conf | 3 +++ src/modules/packages/module.desc | 2 ++ src/modules/packages/packages.conf | 3 +++ src/modules/partition/partition.conf | 3 +++ src/modules/plasmalnf/plasmalnf.conf | 3 +++ src/modules/plymouthcfg/module.desc | 2 ++ src/modules/plymouthcfg/plymouthcfg.conf | 3 +++ src/modules/preservefiles/preservefiles.conf | 3 +++ src/modules/rawfs/module.desc | 2 ++ src/modules/rawfs/rawfs.conf | 3 +++ src/modules/removeuser/removeuser.conf | 3 +++ src/modules/services-openrc/module.desc | 2 ++ src/modules/services-openrc/services-openrc.conf | 3 +++ src/modules/services-systemd/module.desc | 2 ++ src/modules/services-systemd/services-systemd.conf | 3 +++ src/modules/shellprocess/shellprocess.conf | 3 +++ src/modules/tracking/tracking.conf | 3 +++ src/modules/umount/module.desc | 2 ++ src/modules/umount/umount.conf | 3 +++ src/modules/unpackfs/module.desc | 2 ++ src/modules/unpackfs/unpackfs.conf | 3 +++ src/modules/users/tests/3-wing.conf | 3 +++ src/modules/users/tests/4-audio.conf | 3 +++ src/modules/users/users.conf | 3 +++ src/modules/usersq/usersq.conf | 3 +++ src/modules/webview/owncloud.conf | 3 +++ src/modules/webview/webview.conf | 3 +++ src/modules/welcome/welcome.conf | 3 +++ src/modules/welcomeq/welcomeq.conf | 3 +++ 73 files changed, 201 insertions(+), 1 deletion(-) diff --git a/settings.conf b/settings.conf index 1c73ea381..17e4d690c 100644 --- a/settings.conf +++ b/settings.conf @@ -1,5 +1,14 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration file for Calamares -# Syntax is YAML 1.2 +# +# This is the top-level configuration file for Calamares. +# It specifies what modules will be used, as well as some +# overall characteristics -- is this a setup program, or +# an installer. More specific configuration is devolved +# to the branding file (for the UI) and the individual +# module configuration files (for functionality). --- # Modules can be job modules (with different interfaces) and QtWidgets view # modules. They could all be placed in a number of different paths. diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 808a5e6d0..f471c2ee0 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Bootloader configuration. The bootloader is installed to allow # the system to start (and pick one of the installed operating # systems to run). diff --git a/src/modules/bootloader/module.desc b/src/modules/bootloader/module.desc index 083e1f4b5..44a1c0ee5 100644 --- a/src/modules/bootloader/module.desc +++ b/src/modules/bootloader/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" interface: "python" diff --git a/src/modules/contextualprocess/contextualprocess.conf b/src/modules/contextualprocess/contextualprocess.conf index 0f5972d04..b86fd922c 100644 --- a/src/modules/contextualprocess/contextualprocess.conf +++ b/src/modules/contextualprocess/contextualprocess.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the contextual process job. # # Contextual processes are based on **global** configuration values. diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf index f6b5a397f..7175c112d 100644 --- a/src/modules/displaymanager/displaymanager.conf +++ b/src/modules/displaymanager/displaymanager.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configure one or more display managers (e.g. SDDM) # with a "best effort" approach. # diff --git a/src/modules/displaymanager/module.desc b/src/modules/displaymanager/module.desc index 56d3fcb07..a58941879 100644 --- a/src/modules/displaymanager/module.desc +++ b/src/modules/displaymanager/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "displaymanager" diff --git a/src/modules/dracut/module.desc b/src/modules/dracut/module.desc index 6d808ac88..9029bf66b 100644 --- a/src/modules/dracut/module.desc +++ b/src/modules/dracut/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "dracut" diff --git a/src/modules/dummycpp/dummycpp.conf b/src/modules/dummycpp/dummycpp.conf index 1f2e1daee..b00a42825 100644 --- a/src/modules/dummycpp/dummycpp.conf +++ b/src/modules/dummycpp/dummycpp.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This is a dummy (example) module for C++ Jobs. # # The code is the documentation for the configuration file. diff --git a/src/modules/dummycpp/module.desc b/src/modules/dummycpp/module.desc index 11b9c500c..bc768a17a 100644 --- a/src/modules/dummycpp/module.desc +++ b/src/modules/dummycpp/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Module metadata file for dummycpp job # # The metadata for C++ (qtplugin) plugins is almost never interesting: diff --git a/src/modules/dummyprocess/module.desc b/src/modules/dummyprocess/module.desc index 55d11cfab..a329b7725 100644 --- a/src/modules/dummyprocess/module.desc +++ b/src/modules/dummyprocess/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Module metadata file for dummy process jobmodule # Syntax is YAML 1.2 --- diff --git a/src/modules/dummypython/dummypython.conf b/src/modules/dummypython/dummypython.conf index c700120e7..6ea50c5d1 100644 --- a/src/modules/dummypython/dummypython.conf +++ b/src/modules/dummypython/dummypython.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This is a dummy (example) module for a Python Job Module. # # The code is the documentation for the configuration file. diff --git a/src/modules/dummypython/module.desc b/src/modules/dummypython/module.desc index ebe81af1a..52c1d09d2 100644 --- a/src/modules/dummypython/module.desc +++ b/src/modules/dummypython/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Module metadata file for dummy python jobmodule # Syntax is YAML 1.2 --- diff --git a/src/modules/dummypythonqt/dummypythonqt.conf b/src/modules/dummypythonqt/dummypythonqt.conf index 5bc64abfa..6caf9cc18 100644 --- a/src/modules/dummypythonqt/dummypythonqt.conf +++ b/src/modules/dummypythonqt/dummypythonqt.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This is a dummy (example) module for PythonQt. # # The code is the documentation for the configuration file. diff --git a/src/modules/dummypythonqt/module.desc b/src/modules/dummypythonqt/module.desc index 46633a6db..a747daeaa 100644 --- a/src/modules/dummypythonqt/module.desc +++ b/src/modules/dummypythonqt/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Module metadata file for dummy pythonqt jobmodule # Syntax is YAML 1.2 --- diff --git a/src/modules/finished/finished.conf b/src/modules/finished/finished.conf index 3b6dd9dd1..7abfb36f1 100644 --- a/src/modules/finished/finished.conf +++ b/src/modules/finished/finished.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the "finished" page, which is usually shown only at # the end of the installation (successful or not). --- diff --git a/src/modules/fsresizer/fsresizer.conf b/src/modules/fsresizer/fsresizer.conf index 33329248d..e58c39822 100644 --- a/src/modules/fsresizer/fsresizer.conf +++ b/src/modules/fsresizer/fsresizer.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Module that resizes a single FS to fill the entire (rest) of # a device. This is used in OEM situations where an image is # flashed onto an SD card (or similar) and used to boot a device, diff --git a/src/modules/fstab/fstab.conf b/src/modules/fstab/fstab.conf index ce38a184c..21f6ffce3 100644 --- a/src/modules/fstab/fstab.conf +++ b/src/modules/fstab/fstab.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Creates /etc/fstab and /etc/crypttab in the target system. # Also creates mount points for all the filesystems. # diff --git a/src/modules/fstab/module.desc b/src/modules/fstab/module.desc index bbd416606..77cb7adbc 100644 --- a/src/modules/fstab/module.desc +++ b/src/modules/fstab/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "fstab" diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index 374561787..33c2a72ab 100644 --- a/src/modules/grubcfg/grubcfg.conf +++ b/src/modules/grubcfg/grubcfg.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Create, overwrite or update /etc/default/grub in the target system. # # Write lines to /etc/default/grub (in the target system) based diff --git a/src/modules/grubcfg/module.desc b/src/modules/grubcfg/module.desc index 34f1a5a1e..293e75ba7 100644 --- a/src/modules/grubcfg/module.desc +++ b/src/modules/grubcfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "grubcfg" diff --git a/src/modules/hwclock/module.desc b/src/modules/hwclock/module.desc index ba3dbbaf8..d13435b3c 100644 --- a/src/modules/hwclock/module.desc +++ b/src/modules/hwclock/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "hwclock" diff --git a/src/modules/initcpio/initcpio.conf b/src/modules/initcpio/initcpio.conf index 517e48392..717a511df 100644 --- a/src/modules/initcpio/initcpio.conf +++ b/src/modules/initcpio/initcpio.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Run mkinitcpio(8) with the given preset value --- # This key defines the kernel to be loaded. diff --git a/src/modules/initcpiocfg/module.desc b/src/modules/initcpiocfg/module.desc index 936a99bbe..a4476121b 100644 --- a/src/modules/initcpiocfg/module.desc +++ b/src/modules/initcpiocfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "initcpiocfg" diff --git a/src/modules/initramfs/initramfs.conf b/src/modules/initramfs/initramfs.conf index a989d83c3..c9dcf1697 100644 --- a/src/modules/initramfs/initramfs.conf +++ b/src/modules/initramfs/initramfs.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# ## initramfs module # # This module is specific to Debian based distros. Post installation on Debian diff --git a/src/modules/initramfscfg/module.desc b/src/modules/initramfscfg/module.desc index c00e8170f..17db29465 100644 --- a/src/modules/initramfscfg/module.desc +++ b/src/modules/initramfscfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "initramfscfg" diff --git a/src/modules/interactiveterminal/interactiveterminal.conf b/src/modules/interactiveterminal/interactiveterminal.conf index 067bce8be..9354f8f4a 100644 --- a/src/modules/interactiveterminal/interactiveterminal.conf +++ b/src/modules/interactiveterminal/interactiveterminal.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # The interactive terminal provides a konsole (terminal) window # during the installation process. The terminal runs in the # host system, so you will need to change directories to the diff --git a/src/modules/keyboard/keyboard.conf b/src/modules/keyboard/keyboard.conf index ee97c3939..d122f30d7 100644 --- a/src/modules/keyboard/keyboard.conf +++ b/src/modules/keyboard/keyboard.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # NOTE: you must have ckbcomp installed and runnable # on the live system, for keyboard layout previews. --- diff --git a/src/modules/keyboardq/keyboardq.conf b/src/modules/keyboardq/keyboardq.conf index ee97c3939..d122f30d7 100644 --- a/src/modules/keyboardq/keyboardq.conf +++ b/src/modules/keyboardq/keyboardq.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # NOTE: you must have ckbcomp installed and runnable # on the live system, for keyboard layout previews. --- diff --git a/src/modules/license/license.conf b/src/modules/license/license.conf index 8a1672887..e32d49984 100644 --- a/src/modules/license/license.conf +++ b/src/modules/license/license.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration file for License viewmodule, Calamares # Syntax is YAML 1.2 --- diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 8236a879b..4463f7a94 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- # These settings are used to set your default system time zone. # Time zones are usually located under /usr/share/zoneinfo and diff --git a/src/modules/localecfg/module.desc b/src/modules/localecfg/module.desc index 4b8cd9e6d..030846a3e 100644 --- a/src/modules/localecfg/module.desc +++ b/src/modules/localecfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Enable the configured locales (those set by the user on the # user page) in /etc/locale.gen, if they are available in the # target system. diff --git a/src/modules/localeq/localeq.conf b/src/modules/localeq/localeq.conf index 4beb4fe85..bb2a7e816 100644 --- a/src/modules/localeq/localeq.conf +++ b/src/modules/localeq/localeq.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- # This settings are used to set your default system time zone. # Time zones are usually located under /usr/share/zoneinfo and diff --git a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf index f5610cd7c..f1f03bbe4 100644 --- a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf +++ b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Writes an openswap configuration with LUKS settings to the given path --- # Path of the configuration file to write (in the target system) diff --git a/src/modules/luksopenswaphookcfg/module.desc b/src/modules/luksopenswaphookcfg/module.desc index 53f8b7c39..919a92792 100644 --- a/src/modules/luksopenswaphookcfg/module.desc +++ b/src/modules/luksopenswaphookcfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "luksopenswaphookcfg" diff --git a/src/modules/machineid/machineid.conf b/src/modules/machineid/machineid.conf index fa42655fd..5ebf17c8c 100644 --- a/src/modules/machineid/machineid.conf +++ b/src/modules/machineid/machineid.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Machine-ID and other random data on the target system. # # This module can create a number of "random" things on the target: diff --git a/src/modules/mkinitfs/module.desc b/src/modules/mkinitfs/module.desc index 06541fb87..decc3259f 100644 --- a/src/modules/mkinitfs/module.desc +++ b/src/modules/mkinitfs/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "mkinitfs" diff --git a/src/modules/mount/module.desc b/src/modules/mount/module.desc index 13e411716..e4486cf12 100644 --- a/src/modules/mount/module.desc +++ b/src/modules/mount/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "mount" diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf index bb28eed66..1e70465c2 100644 --- a/src/modules/mount/mount.conf +++ b/src/modules/mount/mount.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Mount filesystems in the target (generally, before treating the # target as a usable chroot / "live" system). Filesystems are # automatically mounted from the partitioning module. Filesystems diff --git a/src/modules/netinstall/netinstall.conf b/src/modules/netinstall/netinstall.conf index db4d65da0..f96da9a8e 100644 --- a/src/modules/netinstall/netinstall.conf +++ b/src/modules/netinstall/netinstall.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# ### Netinstall module # # The netinstall module allows distribution maintainers to ship minimal ISOs diff --git a/src/modules/networkcfg/module.desc b/src/modules/networkcfg/module.desc index 68024cb8d..cbafe8cd5 100644 --- a/src/modules/networkcfg/module.desc +++ b/src/modules/networkcfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "networkcfg" diff --git a/src/modules/notesqml/notesqml.conf b/src/modules/notesqml/notesqml.conf index 88948bf64..c65f98879 100644 --- a/src/modules/notesqml/notesqml.conf +++ b/src/modules/notesqml/notesqml.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # The *notesqml* module can be used to display a QML file # as an installer step. This is most useful for release-notes # and similar somewhat-static content, but if you want to you diff --git a/src/modules/oemid/oemid.conf b/src/modules/oemid/oemid.conf index 8f9bc3d08..921fb3b30 100644 --- a/src/modules/oemid/oemid.conf +++ b/src/modules/oemid/oemid.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This is an OEM setup (phase-0) configuration file. --- # The batch-identifier is written to /var/log/installer/oem-id. diff --git a/src/modules/openrcdmcryptcfg/module.desc b/src/modules/openrcdmcryptcfg/module.desc index 283adfdac..e63339573 100644 --- a/src/modules/openrcdmcryptcfg/module.desc +++ b/src/modules/openrcdmcryptcfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "openrcdmcryptcfg" diff --git a/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf b/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf index 57ee2dc31..911a4eff3 100644 --- a/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf +++ b/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- configFilePath: /etc/conf.d/dmcrypt diff --git a/src/modules/packagechooser/packagechooser.conf b/src/modules/packagechooser/packagechooser.conf index 68330337b..bb824c5e7 100644 --- a/src/modules/packagechooser/packagechooser.conf +++ b/src/modules/packagechooser/packagechooser.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the low-density software chooser --- # The packagechooser writes a GlobalStorage value for the choice that diff --git a/src/modules/packages/module.desc b/src/modules/packages/module.desc index 6a0423614..3e3053bfa 100644 --- a/src/modules/packages/module.desc +++ b/src/modules/packages/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "packages" diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index df477e6e9..b1289ad51 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- # # Which package manager to use, options are: diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 363ef7db1..4075fd273 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This setting specifies the mount point of the EFI system partition. Some # distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS, # etc.) use just /boot. diff --git a/src/modules/plasmalnf/plasmalnf.conf b/src/modules/plasmalnf/plasmalnf.conf index a954c685a..fd59389a8 100644 --- a/src/modules/plasmalnf/plasmalnf.conf +++ b/src/modules/plasmalnf/plasmalnf.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # The Plasma Look-and-Feel module allows selecting a Plasma # Look-and-Feel in the live- or host-system and switches the # host Plasma session immediately to the chosen LnF; it diff --git a/src/modules/plymouthcfg/module.desc b/src/modules/plymouthcfg/module.desc index f2d2d4743..660aa71b2 100644 --- a/src/modules/plymouthcfg/module.desc +++ b/src/modules/plymouthcfg/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "plymouthcfg" diff --git a/src/modules/plymouthcfg/plymouthcfg.conf b/src/modules/plymouthcfg/plymouthcfg.conf index 47c54f5ff..ebe51d1ed 100644 --- a/src/modules/plymouthcfg/plymouthcfg.conf +++ b/src/modules/plymouthcfg/plymouthcfg.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Plymouth Configuration Module # # This module can be used to setup the default plymouth theme to diff --git a/src/modules/preservefiles/preservefiles.conf b/src/modules/preservefiles/preservefiles.conf index 671a308cc..962ca756a 100644 --- a/src/modules/preservefiles/preservefiles.conf +++ b/src/modules/preservefiles/preservefiles.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the preserve-files job # # The *files* key contains a list of files to preserve. Each element of diff --git a/src/modules/rawfs/module.desc b/src/modules/rawfs/module.desc index aaf65c183..0c4f21f92 100644 --- a/src/modules/rawfs/module.desc +++ b/src/modules/rawfs/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Module metadata file for block-copy jobmodule # Syntax is YAML 1.2 --- diff --git a/src/modules/rawfs/rawfs.conf b/src/modules/rawfs/rawfs.conf index 8d7da3ba3..bbc36906b 100644 --- a/src/modules/rawfs/rawfs.conf +++ b/src/modules/rawfs/rawfs.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the rawfs module: raw filesystem copy to a block device --- diff --git a/src/modules/removeuser/removeuser.conf b/src/modules/removeuser/removeuser.conf index d266e6952..cc086e723 100644 --- a/src/modules/removeuser/removeuser.conf +++ b/src/modules/removeuser/removeuser.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Removes a single user (with userdel) from the system. # This is typically used in OEM setups or if the live user # spills into the target system. diff --git a/src/modules/services-openrc/module.desc b/src/modules/services-openrc/module.desc index 4b0b51614..c60872bc1 100644 --- a/src/modules/services-openrc/module.desc +++ b/src/modules/services-openrc/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "services-openrc" diff --git a/src/modules/services-openrc/services-openrc.conf b/src/modules/services-openrc/services-openrc.conf index b8255b21a..6042b5305 100644 --- a/src/modules/services-openrc/services-openrc.conf +++ b/src/modules/services-openrc/services-openrc.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # openrc services module to modify service runlevels via rc-update in the chroot # # Services can be added (to any runlevel, or multiple runlevels) or deleted. diff --git a/src/modules/services-systemd/module.desc b/src/modules/services-systemd/module.desc index 4305b1141..e016c6dcb 100644 --- a/src/modules/services-systemd/module.desc +++ b/src/modules/services-systemd/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "services-systemd" diff --git a/src/modules/services-systemd/services-systemd.conf b/src/modules/services-systemd/services-systemd.conf index 6ff1409bf..77224b00b 100644 --- a/src/modules/services-systemd/services-systemd.conf +++ b/src/modules/services-systemd/services-systemd.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Systemd services manipulation. # # This module can enable services and targets for systemd diff --git a/src/modules/shellprocess/shellprocess.conf b/src/modules/shellprocess/shellprocess.conf index 4734aaadd..00d88851f 100644 --- a/src/modules/shellprocess/shellprocess.conf +++ b/src/modules/shellprocess/shellprocess.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the shell process job. # # Executes a list of commands found under the key *script*. diff --git a/src/modules/tracking/tracking.conf b/src/modules/tracking/tracking.conf index 533d0e0dd..6f726226d 100644 --- a/src/modules/tracking/tracking.conf +++ b/src/modules/tracking/tracking.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Settings for various kinds of tracking that Distributions can # enable. Distributions looking at tracking should be aware of # the privacy (and hence communications) impact of that tracking, diff --git a/src/modules/umount/module.desc b/src/modules/umount/module.desc index a1ead1228..a1c189a62 100644 --- a/src/modules/umount/module.desc +++ b/src/modules/umount/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "umount" diff --git a/src/modules/umount/umount.conf b/src/modules/umount/umount.conf index 3d4eb7d95..b6d86e353 100644 --- a/src/modules/umount/umount.conf +++ b/src/modules/umount/umount.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# ### Umount Module # # This module represents the last part of the installation, the unmounting diff --git a/src/modules/unpackfs/module.desc b/src/modules/unpackfs/module.desc index c87613d74..2723c3c46 100644 --- a/src/modules/unpackfs/module.desc +++ b/src/modules/unpackfs/module.desc @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Syntax is YAML 1.2 --- type: "job" diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf index 454e82e66..2c4a25a80 100644 --- a/src/modules/unpackfs/unpackfs.conf +++ b/src/modules/unpackfs/unpackfs.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Unsquash / unpack a filesystem. Multiple sources are supported, and # they may be squashed or plain filesystems. # diff --git a/src/modules/users/tests/3-wing.conf b/src/modules/users/tests/3-wing.conf index 3c7dc61af..4fc760fa8 100644 --- a/src/modules/users/tests/3-wing.conf +++ b/src/modules/users/tests/3-wing.conf @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- defaultGroups: [ wing, wheel, users ] diff --git a/src/modules/users/tests/4-audio.conf b/src/modules/users/tests/4-audio.conf index fb7fdb3d2..1280bc207 100644 --- a/src/modules/users/tests/4-audio.conf +++ b/src/modules/users/tests/4-audio.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- defaultGroups: - users diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 259723df2..ee1ccbf1c 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the one-user-system user module. # # Besides these settings, the user module also places the following diff --git a/src/modules/usersq/usersq.conf b/src/modules/usersq/usersq.conf index f416a5c39..19a30bd02 100644 --- a/src/modules/usersq/usersq.conf +++ b/src/modules/usersq/usersq.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # For documentation see Users Module users.conf # --- diff --git a/src/modules/webview/owncloud.conf b/src/modules/webview/owncloud.conf index 46b639ade..4e2930919 100644 --- a/src/modules/webview/owncloud.conf +++ b/src/modules/webview/owncloud.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- prettyName: "OwnCloud" url: "https://owncloud.org" diff --git a/src/modules/webview/webview.conf b/src/modules/webview/webview.conf index c4e6568e9..353f81488 100644 --- a/src/modules/webview/webview.conf +++ b/src/modules/webview/webview.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- prettyName: "Webview" url: "https://calamares.io" diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf index 45cb654a2..bd15a6f2d 100644 --- a/src/modules/welcome/welcome.conf +++ b/src/modules/welcome/welcome.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the welcome module. The welcome page # displays some information from the branding file. # Which parts it displays can be configured through diff --git a/src/modules/welcomeq/welcomeq.conf b/src/modules/welcomeq/welcomeq.conf index 035db9714..2efc51473 100644 --- a/src/modules/welcomeq/welcomeq.conf +++ b/src/modules/welcomeq/welcomeq.conf @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Configuration for the welcomeq module. # # The configuration for welcomeq is exactly the same From 5523bffbf211e124bdf5cf087790a6c8b0309782 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 01:41:30 +0200 Subject: [PATCH 359/399] REUSE: administrative and repo-meta files - Mostly CC0 because they're not interesting - formatting, git, travis, transifex - Some BSD-2-Clause because of habit - CMake and shell-script-like files --- .clang-format | 2 ++ .editorconfig | 3 ++- .gitattributes | 3 +++ .gitignore | 3 +++ .travis.yml | 3 +++ .tx/config | 3 +++ AUTHORS | 4 ++++ CHANGES | 4 ++++ CalamaresConfig.cmake.in | 7 +++++++ Dockerfile | 3 +++ README.md | 4 ++++ cmake_uninstall.cmake.in | 3 +++ com.github.calamares.calamares.policy | 5 ++++- io.calamares.calamares.appdata.xml | 3 +++ 14 files changed, 48 insertions(+), 2 deletions(-) diff --git a/.clang-format b/.clang-format index 187c3638f..aa4aa0e2a 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- BasedOnStyle: WebKit diff --git a/.editorconfig b/.editorconfig index d5851076b..44e191e5c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,4 +1,5 @@ -# http://EditorConfig.org +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 root = true diff --git a/.gitattributes b/.gitattributes index 3b8a7f1e8..6a8126fad 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 + .editorconfig export-ignore .gitattributes export-ignore .github export-ignore diff --git a/.gitignore b/.gitignore index da0f082a6..5bf3c57ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # C++ objects and libs *.slo diff --git a/.travis.yml b/.travis.yml index 2b11af912..1df81a6bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# language: cpp python: diff --git a/.tx/config b/.tx/config index 686a98bbe..65a8521b5 100644 --- a/.tx/config +++ b/.tx/config @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 + [main] host = https://www.transifex.com diff --git a/AUTHORS b/AUTHORS index ecd0aafc8..912d48da7 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,3 +1,7 @@ + + # MAINTAINER Calamares development is sponsored by Blue Systems GmbH - Liberating Software. diff --git a/CHANGES b/CHANGES index b4e4fd5c0..d1ea088bd 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ + + This is the changelog for Calamares. For each release, the major changes and contributors are listed. Note that Calamares does not have a historical changelog -- this log starts with version 3.2.0. The release notes on the diff --git a/CalamaresConfig.cmake.in b/CalamaresConfig.cmake.in index 4c62fb477..f51b5991d 100644 --- a/CalamaresConfig.cmake.in +++ b/CalamaresConfig.cmake.in @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +# Note that Calamares itself is GPL-3.0-or-later: the above license +# applies to **this** CMake file. +# # Config file for the Calamares package # # The following IMPORTED targets are defined: diff --git a/Dockerfile b/Dockerfile index 2c8be23a0..7a1cad92a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: 2017 Rohan Garg +# SPDX-License-Identifier: BSD-2-Clause + FROM kdeneon/all:user RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools diff --git a/README.md b/README.md index 2544ebb69..3ba9221d6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ + + ### Calamares: Distribution-Independent Installer Framework --------- diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in index df95fb9d8..d223136a9 100644 --- a/cmake_uninstall.cmake.in +++ b/cmake_uninstall.cmake.in @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-License-Identifier: BSD-2-Clause + IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") diff --git a/com.github.calamares.calamares.policy b/com.github.calamares.calamares.policy index 6bc250e3b..976ec0f1a 100644 --- a/com.github.calamares.calamares.policy +++ b/com.github.calamares.calamares.policy @@ -1,4 +1,7 @@ + @@ -19,4 +22,4 @@ /usr/bin/calamares true - \ No newline at end of file + diff --git a/io.calamares.calamares.appdata.xml b/io.calamares.calamares.appdata.xml index d49a33b0f..9b1f883bd 100644 --- a/io.calamares.calamares.appdata.xml +++ b/io.calamares.calamares.appdata.xml @@ -1,4 +1,7 @@ + io.calamares.calamares.desktop CC0-1.0 From 863a4cc2a49c5424fef8175031317e58c5906071 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 24 Aug 2020 16:36:47 +0200 Subject: [PATCH 360/399] REUSE: (GPL-3.0-or-later) Python modules --- src/modules/bootloader/main.py | 23 ++++++++++++----------- src/modules/displaymanager/main.py | 15 ++++++++------- src/modules/dracut/main.py | 9 +++++---- src/modules/dummypython/main.py | 7 ++++--- src/modules/dummypythonqt/main.py | 5 +++-- src/modules/fstab/main.py | 9 +++++---- src/modules/grubcfg/main.py | 11 ++++++----- src/modules/hwclock/main.py | 11 ++++++----- src/modules/initcpiocfg/main.py | 9 +++++---- src/modules/initramfscfg/main.py | 13 +++++++------ src/modules/localecfg/main.py | 11 ++++++----- src/modules/luksopenswaphookcfg/main.py | 7 ++++--- src/modules/mkinitfs/main.py | 9 +++++---- src/modules/mount/main.py | 9 +++++---- src/modules/networkcfg/main.py | 9 +++++---- src/modules/openrcdmcryptcfg/main.py | 5 +++-- src/modules/packages/main.py | 13 +++++++------ src/modules/plymouthcfg/main.py | 9 +++++---- src/modules/rawfs/main.py | 3 ++- src/modules/services-openrc/main.py | 9 +++++---- src/modules/services-systemd/main.py | 9 +++++---- src/modules/umount/main.py | 7 ++++--- src/modules/unpackfs/main.py | 15 ++++++++------- src/modules/unpackfs/runtests.sh | 8 ++++++++ 24 files changed, 133 insertions(+), 102 deletions(-) diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 87288b583..bfb695909 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -3,17 +3,18 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Aurélien Gâteau -# Copyright 2014, Anke Boersma -# Copyright 2014, Daniel Hillenbrand -# Copyright 2014, Benjamin Vaudour -# Copyright 2014-2019, Kevin Kofler -# Copyright 2015-2018, Philip Mueller -# Copyright 2016-2017, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2017-2019, Adriaan de Groot -# Copyright 2017, Gabriel Craciunescu -# Copyright 2017, Ben Green +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2014 Anke Boersma +# SPDX-FileCopyrightText: 2014 Daniel Hillenbrand +# SPDX-FileCopyrightText: 2014 Benjamin Vaudour +# SPDX-FileCopyrightText: 2014-2019 Kevin Kofler +# SPDX-FileCopyrightText: 2015-2018 Philip Mueller +# SPDX-FileCopyrightText: 2016-2017 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot +# SPDX-FileCopyrightText: 2017 Gabriel Craciunescu +# SPDX-FileCopyrightText: 2017 Ben Green +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 1529aab17..509257bb1 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -3,13 +3,14 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2018, Philip Müller -# Copyright 2014-2015, Teo Mrnjavac -# Copyright 2014, Kevin Kofler -# Copyright 2017, Alf Gaida -# Copyright 2017, Bernhard Landauer -# Copyright 2017, 2019, Adriaan de Groot -# Copyright 2019, Dominic Hayes +# SPDX-FileCopyrightText: 2014-2018 Philip Müller +# SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac +# SPDX-FileCopyrightText: 2014 Kevin Kofler +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017 Bernhard Landauer +# SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2019 Dominic Hayes +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/dracut/main.py b/src/modules/dracut/main.py index a929ac70b..2a5ba91d7 100644 --- a/src/modules/dracut/main.py +++ b/src/modules/dracut/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2015, Philip Müller -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014-2015 Philip Müller +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummypython/main.py b/src/modules/dummypython/main.py index 96de6030f..2f21e9b77 100644 --- a/src/modules/dummypython/main.py +++ b/src/modules/dummypython/main.py @@ -3,9 +3,10 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2017, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummypythonqt/main.py b/src/modules/dummypythonqt/main.py index f830caf30..c08b79fbb 100644 --- a/src/modules/dummypythonqt/main.py +++ b/src/modules/dummypythonqt/main.py @@ -3,8 +3,9 @@ # # === This file is part of Calamares - === # -# Copyright 2016-2017, Teo Mrnjavac -# Copyright 2017, Alf Gaida +# SPDX-FileCopyrightText: 2016-2017 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index c58e8eb11..19af12b9e 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Aurélien Gâteau -# Copyright 2016, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index fad6d3677..be9752402 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -3,11 +3,12 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2015, Philip Müller -# Copyright 2015-2017, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2017, 2019, Adriaan de Groot -# Copyright 2017-2018, Gabriel Craciunescu +# SPDX-FileCopyrightText: 2014-2015 Philip Müller +# SPDX-FileCopyrightText: 2015-2017 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2017-2018 Gabriel Craciunescu +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index f18cf12a9..7cf5790f9 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -3,11 +3,12 @@ # # === This file is part of Calamares - === # -# Copyright 2014 - 2015, Philip Müller -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2017-2018, Gabriel Craciunescu -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014-2015 Philip Müller +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017-2018 Gabriel Craciunescu +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index 3d570ff94..119fa5cf2 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Rohan Garg -# Copyright 2015,2019-2020, Philip Müller -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Rohan Garg +# SPDX-FileCopyrightText: 2015 2019-2020, Philip Müller +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/initramfscfg/main.py b/src/modules/initramfscfg/main.py index 52d512567..e3b6d0439 100644 --- a/src/modules/initramfscfg/main.py +++ b/src/modules/initramfscfg/main.py @@ -3,12 +3,13 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Rohan Garg -# Copyright 2015, Philip Müller -# Copyright 2016, David McKinney -# Copyright 2016, Kevin Kofler -# Copyright 2017, Alf Gaida -# Copyright 2017, 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Rohan Garg +# SPDX-FileCopyrightText: 2015 Philip Müller +# SPDX-FileCopyrightText: 2016 David McKinney +# SPDX-FileCopyrightText: 2016 Kevin Kofler +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 9e50fb448..021f4a454 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -3,11 +3,12 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Anke Boersma -# Copyright 2015, Philip Müller -# Copyright 2016, Teo Mrnjavac -# Copyright 2018, AlmAck -# Copyright 2018-2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Anke Boersma +# SPDX-FileCopyrightText: 2015 Philip Müller +# SPDX-FileCopyrightText: 2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2018 AlmAck +# SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/luksopenswaphookcfg/main.py b/src/modules/luksopenswaphookcfg/main.py index a30ae999b..96dfea83b 100644 --- a/src/modules/luksopenswaphookcfg/main.py +++ b/src/modules/luksopenswaphookcfg/main.py @@ -3,9 +3,10 @@ # # === This file is part of Calamares - === # -# Copyright 2016, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/mkinitfs/main.py b/src/modules/mkinitfs/main.py index 7deac3914..cc9d80a37 100644 --- a/src/modules/mkinitfs/main.py +++ b/src/modules/mkinitfs/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2015, Philip Müller -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014-2015 Philip Müller +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index 4e16b43c3..caa5ea828 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Aurélien Gâteau -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot -# Copyright 2019, Kevin Kofler +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-FileCopyrightText: 2019 Kevin Kofler +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/networkcfg/main.py b/src/modules/networkcfg/main.py index 00a264f53..2db819945 100644 --- a/src/modules/networkcfg/main.py +++ b/src/modules/networkcfg/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Philip Müller -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Philip Müller +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/openrcdmcryptcfg/main.py b/src/modules/openrcdmcryptcfg/main.py index 0362b421b..83b3a4c40 100644 --- a/src/modules/openrcdmcryptcfg/main.py +++ b/src/modules/openrcdmcryptcfg/main.py @@ -3,8 +3,9 @@ # # === This file is part of Calamares - === # -# Copyright 2017, Ghiunhan Mamut -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2017 Ghiunhan Mamut +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 908d778b2..42cf3a4bd 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -3,12 +3,13 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Pier Luigi Fiorini -# Copyright 2015-2017, Teo Mrnjavac -# Copyright 2016-2017, Kyle Robbertze -# Copyright 2017, Alf Gaida -# Copyright 2018, Adriaan de Groot -# Copyright 2018, Philip Müller +# SPDX-FileCopyrightText: 2014 Pier Luigi Fiorini +# SPDX-FileCopyrightText: 2015-2017 Teo Mrnjavac +# SPDX-FileCopyrightText: 2016-2017 Kyle Robbertze +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-FileCopyrightText: 2018 Philip Müller +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index e224f5df0..404a4651c 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2016, Artoo -# Copyright 2017, Alf Gaida -# Copyright 2018, Gabriel Craciunescu -# Copyright 2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2016 Artoo +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2018 Gabriel Craciunescu +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/rawfs/main.py b/src/modules/rawfs/main.py index 68f3c444e..cdce1d784 100644 --- a/src/modules/rawfs/main.py +++ b/src/modules/rawfs/main.py @@ -3,7 +3,8 @@ # # === This file is part of Calamares - === # -# Copyright 2019, Collabora Ltd +# SPDX-FileCopyrightText: 2019 Collabora Ltd +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 23591fb84..f89369a7f 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2016, Artoo -# Copyright 2017, Philip Müller -# Copyright 2018, Artoo -# Copyright 2018-2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2016 Artoo +# SPDX-FileCopyrightText: 2017 Philip Müller +# SPDX-FileCopyrightText: 2018 Artoo +# SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index cd13d9ce9..8932bc7e5 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Philip Müller -# Copyright 2014, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 2018-2019, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Philip Müller +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/umount/main.py b/src/modules/umount/main.py index 454222c5c..ea0976453 100644 --- a/src/modules/umount/main.py +++ b/src/modules/umount/main.py @@ -3,9 +3,10 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Aurélien Gâteau -# Copyright 2016, Anke Boersma -# Copyright 2018, Adriaan de Groot +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2016 Anke Boersma +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 00de4165d..bd69125a1 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -3,13 +3,14 @@ # # === This file is part of Calamares - === # -# Copyright 2014, Teo Mrnjavac -# Copyright 2014, Daniel Hillenbrand -# Copyright 2014, Philip Müller -# Copyright 2017, Alf Gaida -# Copyright 2019, Kevin Kofler -# Copyright 2020, Adriaan de Groot -# Copyright 2020, Gabriel Craciunescu +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2014 Daniel Hillenbrand +# SPDX-FileCopyrightText: 2014 Philip Müller +# SPDX-FileCopyrightText: 2017 Alf Gaida +# SPDX-FileCopyrightText: 2019 Kevin Kofler +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-FileCopyrightText: 2020 Gabriel Craciunescu +# SPDX-License-Identifier: GPL-3.0-or-later # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/unpackfs/runtests.sh b/src/modules/unpackfs/runtests.sh index be175e0cd..2269b078a 100644 --- a/src/modules/unpackfs/runtests.sh +++ b/src/modules/unpackfs/runtests.sh @@ -1,4 +1,12 @@ #! /bin/sh +# +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +# Test preparation for unpackfs; since there's a bunch +# of fiddly bits than need to be present for the tests, +# do that in a script rather than entirely in CTest. +# SRCDIR=$( dirname "$0" ) # For test 3 From 30a85668b727ae839345d5cf6cec917fad681e4e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 22 Aug 2020 01:19:58 +0200 Subject: [PATCH 361/399] REUSE: (GPL-3.0-or-later) C++ modules --- src/modules/README.md | 5 + src/modules/contextualprocess/Binding.h | 3 +- .../ContextualProcessJob.cpp | 5 +- .../contextualprocess/ContextualProcessJob.h | 3 +- src/modules/contextualprocess/Tests.cpp | 3 +- src/modules/contextualprocess/Tests.h | 3 +- .../dracutlukscfg/DracutLuksCfgJob.cpp | 3 +- src/modules/dracutlukscfg/DracutLuksCfgJob.h | 5 +- src/modules/dummycpp/DummyCppJob.cpp | 7 +- src/modules/dummycpp/DummyCppJob.h | 5 +- src/modules/finished/FinishedPage.cpp | 9 +- src/modules/finished/FinishedPage.h | 5 +- src/modules/finished/FinishedViewStep.cpp | 7 +- src/modules/finished/FinishedViewStep.h | 5 +- src/modules/fsresizer/ResizeFSJob.cpp | 88 +- src/modules/fsresizer/ResizeFSJob.h | 28 +- src/modules/fsresizer/Tests.cpp | 25 +- src/modules/fsresizer/Tests.h | 3 +- src/modules/hostinfo/HostInfoJob.cpp | 7 +- src/modules/hostinfo/HostInfoJob.h | 3 +- src/modules/hostinfo/Tests.cpp | 9 +- src/modules/initcpio/InitcpioJob.cpp | 10 +- src/modules/initcpio/InitcpioJob.h | 3 +- src/modules/initcpio/Tests.cpp | 17 +- src/modules/initcpio/Tests.h | 3 +- src/modules/initramfs/InitramfsJob.cpp | 10 +- src/modules/initramfs/InitramfsJob.h | 3 +- src/modules/initramfs/Tests.cpp | 24 +- src/modules/initramfs/Tests.h | 3 +- src/modules/initramfscfg/encrypt_hook | 3 + src/modules/initramfscfg/encrypt_hook_nokey | 3 + .../InteractiveTerminalPage.cpp | 34 +- .../InteractiveTerminalPage.h | 5 +- .../InteractiveTerminalViewStep.cpp | 14 +- .../InteractiveTerminalViewStep.h | 7 +- src/modules/keyboard/Config.cpp | 5 +- src/modules/keyboard/Config.h | 5 +- src/modules/keyboard/KeyboardLayoutModel.cpp | 5 +- src/modules/keyboard/KeyboardLayoutModel.h | 3 +- src/modules/keyboard/KeyboardPage.cpp | 6 +- src/modules/keyboard/KeyboardPage.h | 6 +- src/modules/keyboard/KeyboardViewStep.cpp | 3 +- src/modules/keyboard/KeyboardViewStep.h | 5 +- src/modules/keyboard/README.md | 5 - src/modules/keyboard/SetKeyboardLayoutJob.cpp | 7 +- src/modules/keyboard/SetKeyboardLayoutJob.h | 5 +- .../keyboard/images/restore.png.license | 2 + src/modules/keyboard/kbd-model-map | 4 + .../keyboardwidget/keyboardglobal.cpp | 32 +- .../keyboard/keyboardwidget/keyboardglobal.h | 23 +- .../keyboardwidget/keyboardpreview.cpp | 380 ++++--- .../keyboard/keyboardwidget/keyboardpreview.h | 58 +- src/modules/keyboardq/KeyboardQmlViewStep.cpp | 5 +- src/modules/keyboardq/KeyboardQmlViewStep.h | 5 +- src/modules/license/LicensePage.cpp | 9 +- src/modules/license/LicensePage.h | 9 +- src/modules/license/LicenseViewStep.cpp | 5 +- src/modules/license/LicenseViewStep.h | 5 +- src/modules/license/LicenseWidget.cpp | 9 +- src/modules/license/LicenseWidget.h | 9 +- src/modules/license/README.md | 24 +- src/modules/locale/Config.cpp | 1 - src/modules/locale/Config.h | 1 - src/modules/locale/LCLocaleDialog.cpp | 5 +- src/modules/locale/LCLocaleDialog.h | 3 +- src/modules/locale/LocaleConfiguration.cpp | 5 +- src/modules/locale/LocaleConfiguration.h | 5 +- src/modules/locale/LocalePage.h | 5 +- src/modules/locale/LocaleViewStep.cpp | 5 +- src/modules/locale/LocaleViewStep.h | 5 +- src/modules/locale/SetTimezoneJob.cpp | 5 +- src/modules/locale/SetTimezoneJob.h | 3 +- src/modules/locale/images/bg.png.license | 2 + src/modules/locale/images/pin.png.license | 2 + .../locale/timezonewidget/TimeZoneImage.cpp | 3 +- .../locale/timezonewidget/TimeZoneImage.h | 3 +- .../locale/timezonewidget/timezonewidget.cpp | 6 +- .../locale/timezonewidget/timezonewidget.h | 6 +- src/modules/localeq/LocaleQmlViewStep.cpp | 5 +- src/modules/localeq/LocaleQmlViewStep.h | 3 +- src/modules/localeq/Map.qml | 3 +- src/modules/localeq/Offline.qml | 3 +- src/modules/localeq/i18n.qml | 3 +- .../img/chevron-left-solid.svg.license | 2 + src/modules/localeq/img/locale.svg.license | 2 + src/modules/localeq/img/minus.png.license | 2 + src/modules/localeq/img/pin.svg.license | 2 + src/modules/localeq/img/plus.png.license | 2 + src/modules/localeq/img/worldmap.png.license | 2 + src/modules/localeq/localeq.qml | 5 +- .../luksbootkeyfile/LuksBootKeyFileJob.cpp | 15 +- .../luksbootkeyfile/LuksBootKeyFileJob.h | 15 +- src/modules/machineid/MachineIdJob.cpp | 9 +- src/modules/machineid/MachineIdJob.h | 3 +- src/modules/machineid/Tests.cpp | 7 +- src/modules/machineid/Workers.cpp | 9 +- src/modules/machineid/Workers.h | 3 +- src/modules/netinstall/Config.cpp | 11 +- src/modules/netinstall/Config.h | 9 +- src/modules/netinstall/NetInstallPage.cpp | 11 +- src/modules/netinstall/NetInstallPage.h | 9 +- src/modules/netinstall/NetInstallViewStep.cpp | 9 +- src/modules/netinstall/NetInstallViewStep.h | 7 +- src/modules/netinstall/PackageModel.cpp | 5 +- src/modules/netinstall/PackageModel.h | 5 +- src/modules/netinstall/PackageTreeItem.cpp | 5 +- src/modules/netinstall/PackageTreeItem.h | 5 +- src/modules/netinstall/README.md | 6 - src/modules/netinstall/Tests.cpp | 3 +- src/modules/netinstall/netinstall.yaml | 3 + src/modules/notesqml/NotesQmlViewStep.cpp | 19 +- src/modules/notesqml/NotesQmlViewStep.h | 21 +- .../notesqml/examples/notesqml.qml.example | 100 +- src/modules/notesqml/notesqml.qml | 13 +- src/modules/oemid/IDJob.cpp | 44 +- src/modules/oemid/IDJob.h | 5 +- src/modules/oemid/OEMViewStep.cpp | 69 +- src/modules/oemid/OEMViewStep.h | 3 +- src/modules/packagechooser/ItemAppData.cpp | 3 +- src/modules/packagechooser/ItemAppData.h | 3 +- src/modules/packagechooser/ItemAppStream.cpp | 3 +- src/modules/packagechooser/ItemAppStream.h | 3 +- .../packagechooser/PackageChooserPage.cpp | 3 +- .../packagechooser/PackageChooserPage.h | 3 +- .../packagechooser/PackageChooserViewStep.cpp | 3 +- .../packagechooser/PackageChooserViewStep.h | 3 +- src/modules/packagechooser/PackageModel.cpp | 3 +- src/modules/packagechooser/PackageModel.h | 3 +- src/modules/packagechooser/Tests.cpp | 9 +- src/modules/packagechooser/Tests.h | 3 +- .../images/calamares.png.license | 2 + .../images/no-selection.png.license | 2 + src/modules/partition/README.md | 6 + .../partition/core/BootLoaderModel.cpp | 7 +- src/modules/partition/core/BootLoaderModel.h | 7 +- src/modules/partition/core/ColorUtils.cpp | 5 +- src/modules/partition/core/ColorUtils.h | 5 +- src/modules/partition/core/Config.cpp | 3 +- src/modules/partition/core/DeviceList.cpp | 5 +- src/modules/partition/core/DeviceList.h | 5 +- src/modules/partition/core/DeviceModel.cpp | 7 +- src/modules/partition/core/DeviceModel.h | 5 +- src/modules/partition/core/KPMHelpers.cpp | 5 +- src/modules/partition/core/KPMHelpers.h | 7 +- src/modules/partition/core/OsproberEntry.h | 5 +- src/modules/partition/core/PartUtils.cpp | 9 +- src/modules/partition/core/PartUtils.h | 7 +- .../partition/core/PartitionActions.cpp | 7 +- src/modules/partition/core/PartitionActions.h | 3 +- .../partition/core/PartitionCoreModule.cpp | 11 +- .../partition/core/PartitionCoreModule.h | 7 +- src/modules/partition/core/PartitionInfo.cpp | 5 +- src/modules/partition/core/PartitionInfo.h | 5 +- .../partition/core/PartitionLayout.cpp | 7 +- src/modules/partition/core/PartitionLayout.h | 5 +- src/modules/partition/core/PartitionModel.cpp | 5 +- src/modules/partition/core/PartitionModel.h | 5 +- src/modules/partition/gui/BootInfoWidget.cpp | 19 +- src/modules/partition/gui/BootInfoWidget.h | 5 +- src/modules/partition/gui/ChoicePage.cpp | 936 +++++++++--------- src/modules/partition/gui/ChoicePage.h | 7 +- .../partition/gui/CreatePartitionDialog.cpp | 128 +-- .../partition/gui/CreatePartitionDialog.h | 13 +- .../partition/gui/CreateVolumeGroupDialog.cpp | 3 +- .../partition/gui/CreateVolumeGroupDialog.h | 5 +- .../partition/gui/DeviceInfoWidget.cpp | 35 +- src/modules/partition/gui/DeviceInfoWidget.h | 5 +- .../gui/EditExistingPartitionDialog.cpp | 126 +-- .../gui/EditExistingPartitionDialog.h | 10 +- src/modules/partition/gui/EncryptWidget.cpp | 5 +- src/modules/partition/gui/EncryptWidget.h | 7 +- .../gui/ListPhysicalVolumeWidgetItem.cpp | 10 +- .../gui/ListPhysicalVolumeWidgetItem.h | 5 +- .../partition/gui/PartitionBarsView.cpp | 195 ++-- src/modules/partition/gui/PartitionBarsView.h | 7 +- .../partition/gui/PartitionDialogHelpers.cpp | 34 +- .../partition/gui/PartitionDialogHelpers.h | 19 +- .../partition/gui/PartitionLabelsView.cpp | 160 +-- .../partition/gui/PartitionLabelsView.h | 12 +- src/modules/partition/gui/PartitionPage.cpp | 226 +++-- src/modules/partition/gui/PartitionPage.h | 17 +- .../partition/gui/PartitionSizeController.cpp | 31 +- .../partition/gui/PartitionSizeController.h | 5 +- .../partition/gui/PartitionSplitterWidget.cpp | 3 +- .../partition/gui/PartitionSplitterWidget.h | 25 +- .../gui/PartitionViewSelectionFilter.h | 5 +- .../partition/gui/PartitionViewStep.cpp | 50 +- src/modules/partition/gui/PartitionViewStep.h | 20 +- src/modules/partition/gui/ReplaceWidget.cpp | 146 ++- src/modules/partition/gui/ReplaceWidget.h | 15 +- .../partition/gui/ResizeVolumeGroupDialog.cpp | 16 +- .../partition/gui/ResizeVolumeGroupDialog.h | 9 +- src/modules/partition/gui/ScanningDialog.cpp | 36 +- src/modules/partition/gui/ScanningDialog.h | 27 +- .../partition/gui/VolumeGroupBaseDialog.cpp | 80 +- .../partition/gui/VolumeGroupBaseDialog.h | 12 +- src/modules/partition/jobs/ClearMountsJob.cpp | 7 +- src/modules/partition/jobs/ClearMountsJob.h | 3 +- .../partition/jobs/ClearTempMountsJob.cpp | 3 +- .../partition/jobs/ClearTempMountsJob.h | 3 +- .../partition/jobs/CreatePartitionJob.cpp | 7 +- .../partition/jobs/CreatePartitionJob.h | 5 +- .../jobs/CreatePartitionTableJob.cpp | 7 +- .../partition/jobs/CreatePartitionTableJob.h | 5 +- .../partition/jobs/CreateVolumeGroupJob.cpp | 3 +- .../partition/jobs/CreateVolumeGroupJob.h | 3 +- .../jobs/DeactivateVolumeGroupJob.cpp | 3 +- .../partition/jobs/DeactivateVolumeGroupJob.h | 3 +- .../partition/jobs/DeletePartitionJob.cpp | 7 +- .../partition/jobs/DeletePartitionJob.h | 5 +- .../partition/jobs/FillGlobalStorageJob.cpp | 7 +- .../partition/jobs/FillGlobalStorageJob.h | 5 +- .../partition/jobs/FormatPartitionJob.cpp | 7 +- .../partition/jobs/FormatPartitionJob.h | 5 +- src/modules/partition/jobs/PartitionJob.cpp | 3 +- src/modules/partition/jobs/PartitionJob.h | 5 +- .../partition/jobs/RemoveVolumeGroupJob.cpp | 3 +- .../partition/jobs/RemoveVolumeGroupJob.h | 3 +- .../partition/jobs/ResizePartitionJob.cpp | 7 +- .../partition/jobs/ResizePartitionJob.h | 5 +- .../partition/jobs/ResizeVolumeGroupJob.cpp | 3 +- .../partition/jobs/ResizeVolumeGroupJob.h | 3 +- .../partition/jobs/SetPartitionFlagsJob.cpp | 9 +- .../partition/jobs/SetPartitionFlagsJob.h | 5 +- .../partition/tests/ClearMountsJobTests.cpp | 3 +- .../partition/tests/ClearMountsJobTests.h | 3 +- .../partition/tests/PartitionJobTests.cpp | 5 +- .../partition/tests/PartitionJobTests.h | 3 +- src/modules/plasmalnf/PlasmaLnfJob.cpp | 32 +- src/modules/plasmalnf/PlasmaLnfJob.h | 5 +- src/modules/plasmalnf/PlasmaLnfPage.cpp | 57 +- src/modules/plasmalnf/PlasmaLnfPage.h | 7 +- src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 37 +- src/modules/plasmalnf/PlasmaLnfViewStep.h | 9 +- src/modules/plasmalnf/ThemeInfo.h | 22 +- src/modules/plasmalnf/ThemeWidget.cpp | 28 +- src/modules/plasmalnf/ThemeWidget.h | 6 +- .../plasmalnf/view-preview.png.license | 2 + .../plasmalnf/view-preview.svg.license | 2 + src/modules/removeuser/RemoveUserJob.cpp | 7 +- src/modules/removeuser/RemoveUserJob.h | 3 +- src/modules/shellprocess/ShellProcessJob.cpp | 3 +- src/modules/shellprocess/ShellProcessJob.h | 3 +- src/modules/shellprocess/Tests.cpp | 3 +- src/modules/shellprocess/Tests.h | 3 +- src/modules/summary/SummaryPage.cpp | 37 +- src/modules/summary/SummaryPage.h | 5 +- src/modules/summary/SummaryViewStep.cpp | 8 +- src/modules/summary/SummaryViewStep.h | 5 +- src/modules/tracking/Config.cpp | 3 +- src/modules/tracking/Config.h | 3 +- src/modules/tracking/Tests.cpp | 1 - src/modules/tracking/TrackingJobs.cpp | 3 +- src/modules/tracking/TrackingJobs.h | 3 +- src/modules/tracking/TrackingPage.cpp | 3 +- src/modules/tracking/TrackingPage.h | 3 +- src/modules/tracking/TrackingType.h | 3 +- src/modules/tracking/TrackingViewStep.cpp | 3 +- src/modules/tracking/TrackingViewStep.h | 3 +- .../tracking/level-install.svg.license | 2 + .../tracking/level-machine.svg.license | 2 + src/modules/tracking/level-none.svg.license | 2 + src/modules/tracking/level-user.svg.license | 2 + src/modules/users/CheckPWQuality.h | 3 +- src/modules/users/Config.cpp | 1 - src/modules/users/Config.h | 1 - src/modules/users/CreateUserJob.cpp | 1 - src/modules/users/CreateUserJob.h | 3 +- src/modules/users/SetHostNameJob.cpp | 7 +- src/modules/users/SetHostNameJob.h | 7 +- src/modules/users/SetPasswordJob.cpp | 5 +- src/modules/users/SetPasswordJob.h | 5 +- src/modules/users/UsersPage.cpp | 9 +- src/modules/users/UsersPage.h | 6 +- src/modules/users/UsersViewStep.cpp | 7 +- src/modules/users/UsersViewStep.h | 5 +- src/modules/users/images/invalid.png.license | 2 + src/modules/users/images/valid.png.license | 2 + src/modules/usersq/UsersQmlViewStep.cpp | 9 +- src/modules/usersq/UsersQmlViewStep.h | 7 +- src/modules/webview/WebViewConfig.h.in | 3 + src/modules/webview/WebViewStep.cpp | 41 +- src/modules/webview/WebViewStep.h | 16 +- src/modules/welcome/Config.cpp | 3 +- src/modules/welcome/Config.h | 3 +- src/modules/welcome/WelcomePage.cpp | 7 +- src/modules/welcome/WelcomePage.h | 5 +- src/modules/welcome/WelcomeViewStep.cpp | 5 +- src/modules/welcome/WelcomeViewStep.h | 3 +- .../welcome/checker/CheckerContainer.cpp | 7 +- .../welcome/checker/CheckerContainer.h | 7 +- .../welcome/checker/GeneralRequirements.cpp | 9 +- .../welcome/checker/GeneralRequirements.h | 5 +- src/modules/welcome/checker/ResultWidget.cpp | 5 +- src/modules/welcome/checker/ResultWidget.h | 5 +- .../welcome/checker/ResultsListWidget.cpp | 5 +- .../welcome/checker/ResultsListWidget.h | 5 +- src/modules/welcome/checker/partman_devices.c | 3 +- src/modules/welcome/checker/partman_devices.h | 3 +- .../welcome/language-icon-128px.png.license | 2 + .../welcome/language-icon-48px.png.license | 2 + src/modules/welcomeq/Recommended.qml | 5 +- src/modules/welcomeq/Requirements.qml | 5 +- src/modules/welcomeq/WelcomeQmlViewStep.cpp | 5 +- src/modules/welcomeq/WelcomeQmlViewStep.h | 3 +- src/modules/welcomeq/about.qml | 25 +- .../img/chevron-left-solid.svg.license | 2 + .../img/language-icon-48px.png.license | 2 + src/modules/welcomeq/img/squid.png.license | 2 + src/modules/welcomeq/release_notes.qml | 7 +- src/modules/welcomeq/welcomeq.qml | 5 +- 311 files changed, 2745 insertions(+), 2197 deletions(-) delete mode 100644 src/modules/keyboard/README.md create mode 100644 src/modules/keyboard/images/restore.png.license create mode 100644 src/modules/locale/images/bg.png.license create mode 100644 src/modules/locale/images/pin.png.license create mode 100644 src/modules/localeq/img/chevron-left-solid.svg.license create mode 100644 src/modules/localeq/img/locale.svg.license create mode 100644 src/modules/localeq/img/minus.png.license create mode 100644 src/modules/localeq/img/pin.svg.license create mode 100644 src/modules/localeq/img/plus.png.license create mode 100644 src/modules/localeq/img/worldmap.png.license delete mode 100644 src/modules/netinstall/README.md create mode 100644 src/modules/packagechooser/images/calamares.png.license create mode 100644 src/modules/packagechooser/images/no-selection.png.license create mode 100644 src/modules/plasmalnf/view-preview.png.license create mode 100644 src/modules/plasmalnf/view-preview.svg.license create mode 100644 src/modules/tracking/level-install.svg.license create mode 100644 src/modules/tracking/level-machine.svg.license create mode 100644 src/modules/tracking/level-none.svg.license create mode 100644 src/modules/tracking/level-user.svg.license create mode 100644 src/modules/users/images/invalid.png.license create mode 100644 src/modules/users/images/valid.png.license create mode 100644 src/modules/welcome/language-icon-128px.png.license create mode 100644 src/modules/welcome/language-icon-48px.png.license create mode 100644 src/modules/welcomeq/img/chevron-left-solid.svg.license create mode 100644 src/modules/welcomeq/img/language-icon-48px.png.license create mode 100644 src/modules/welcomeq/img/squid.png.license diff --git a/src/modules/README.md b/src/modules/README.md index bf74506ee..89085e54e 100644 --- a/src/modules/README.md +++ b/src/modules/README.md @@ -1,5 +1,10 @@ # Calamares modules + + Calamares modules are plugins that provide features like installer pages, batch jobs, etc. An installer page (visible to the user) is called a "view", while other modules are "jobs". diff --git a/src/modules/contextualprocess/Binding.h b/src/modules/contextualprocess/Binding.h index 25b5c7547..5b6f09087 100644 --- a/src/modules/contextualprocess/Binding.h +++ b/src/modules/contextualprocess/Binding.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 1173a3071..f970740ca 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -77,7 +78,7 @@ fetch( QString& value, QStringList& selector, int index, const QVariant& v ) } const QVariantMap map = v.toMap(); const QString& key = selector.at( index ); - if ( index == selector.length() - 1) + if ( index == selector.length() - 1 ) { value = map.value( key ).toString(); return map.contains( key ); diff --git a/src/modules/contextualprocess/ContextualProcessJob.h b/src/modules/contextualprocess/ContextualProcessJob.h index 5ab4b935e..e926f699d 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.h +++ b/src/modules/contextualprocess/ContextualProcessJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/contextualprocess/Tests.cpp b/src/modules/contextualprocess/Tests.cpp index 50ce9f400..97277dfce 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/contextualprocess/Tests.h b/src/modules/contextualprocess/Tests.h index fd705a103..5b27d497d 100644 --- a/src/modules/contextualprocess/Tests.h +++ b/src/modules/contextualprocess/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp index e151acc0c..18bbcae88 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Kevin Kofler + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h index 52b290d1c..b10a8647e 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Kevin Kofler - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index 5a2ca1803..b9765ac01 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac (original dummypython code) - * Copyright 2016, Kevin Kofler - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac (original dummypython code) + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummycpp/DummyCppJob.h b/src/modules/dummycpp/DummyCppJob.h index bf8625950..1b6f0eeb5 100644 --- a/src/modules/dummycpp/DummyCppJob.h +++ b/src/modules/dummycpp/DummyCppJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Kevin Kofler - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Kevin Kofler + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index e2ad4a24f..bdcbb9a85 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -100,7 +101,7 @@ FinishedPage::setUpRestart() cDebug() << "FinishedPage::setUpRestart(), Quit button" << "setup=" << FinishedViewStep::modeName( m_mode ) << "command=" << m_restartNowCommand; - connect( qApp, &QApplication::aboutToQuit, [ this ]() { + connect( qApp, &QApplication::aboutToQuit, [this]() { if ( ui->restartCheckBox->isVisible() && ui->restartCheckBox->isChecked() ) { cDebug() << "Running restart command" << m_restartNowCommand; diff --git a/src/modules/finished/FinishedPage.h b/src/modules/finished/FinishedPage.h index 40f437e07..90ce9383a 100644 --- a/src/modules/finished/FinishedPage.h +++ b/src/modules/finished/FinishedPage.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/finished/FinishedViewStep.cpp b/src/modules/finished/FinishedViewStep.cpp index 7e4cf1c6b..0ea2bbe4c 100644 --- a/src/modules/finished/FinishedViewStep.cpp +++ b/src/modules/finished/FinishedViewStep.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/finished/FinishedViewStep.h b/src/modules/finished/FinishedViewStep.h index 8f57d0210..f19304935 100644 --- a/src/modules/finished/FinishedViewStep.h +++ b/src/modules/finished/FinishedViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/fsresizer/ResizeFSJob.cpp b/src/modules/fsresizer/ResizeFSJob.cpp index 217f1315e..d7003c76d 100644 --- a/src/modules/fsresizer/ResizeFSJob.cpp +++ b/src/modules/fsresizer/ResizeFSJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,8 +27,8 @@ #include "utils/Units.h" #include "utils/Variant.h" -#include #include +#include #include #include @@ -46,9 +47,7 @@ ResizeFSJob::ResizeFSJob( QObject* parent ) } -ResizeFSJob::~ResizeFSJob() -{ -} +ResizeFSJob::~ResizeFSJob() {} QString @@ -62,7 +61,8 @@ ResizeFSJob::findPartition() { using DeviceList = QList< Device* >; #if defined( WITH_KPMCORE4API ) - DeviceList devices = m_kpmcore.backend()->scanDevices( /* not includeReadOnly, not includeLoopback */ ScanFlag(0) ); + DeviceList devices + = m_kpmcore.backend()->scanDevices( /* not includeReadOnly, not includeLoopback */ ScanFlag( 0 ) ); #else DeviceList devices = m_kpmcore.backend()->scanDevices( /* excludeReadOnly */ true ); #endif @@ -70,14 +70,17 @@ ResizeFSJob::findPartition() cDebug() << "ResizeFSJob found" << devices.count() << "devices."; for ( DeviceList::iterator dev_it = devices.begin(); dev_it != devices.end(); ++dev_it ) { - if ( ! ( *dev_it ) ) - continue; - cDebug() << "ResizeFSJob found" << ( *dev_it )->deviceNode(); - for ( auto part_it = PartitionIterator::begin( *dev_it ); part_it != PartitionIterator::end( *dev_it ); ++part_it ) + if ( !( *dev_it ) ) { - cDebug() << Logger::SubEntry << ( *part_it )->mountPoint() << "on" << ( *part_it )->deviceNode(); - if ( ( !m_fsname.isEmpty() && ( *part_it )->mountPoint() == m_fsname ) || - ( !m_devicename.isEmpty() && ( *part_it )->deviceNode() == m_devicename ) ) + continue; + } + cDebug() << "ResizeFSJob found" << ( *dev_it )->deviceNode(); + for ( auto part_it = PartitionIterator::begin( *dev_it ); part_it != PartitionIterator::end( *dev_it ); + ++part_it ) + { + cDebug() << Logger::SubEntry << ( *part_it )->mountPoint() << "on" << ( *part_it )->deviceNode(); + if ( ( !m_fsname.isEmpty() && ( *part_it )->mountPoint() == m_fsname ) + || ( !m_devicename.isEmpty() && ( *part_it )->deviceNode() == m_devicename ) ) { cDebug() << Logger::SubEntry << "matched configuration dev=" << m_devicename << "fs=" << m_fsname; return PartitionMatch( *dev_it, *part_it ); @@ -101,11 +104,17 @@ qint64 ResizeFSJob::findGrownEnd( ResizeFSJob::PartitionMatch m ) { if ( !m.first || !m.second ) + { return -1; // Missing device data + } if ( !ResizeOperation::canGrow( m.second ) ) + { return -1; // Operation is doomed + } if ( !m_size.isValid() ) + { return -1; // Must have a grow-size + } cDebug() << "Containing device size" << m.first->totalLogical(); qint64 last_available = m.first->totalLogical() - 1; // Numbered from 0 @@ -170,12 +179,11 @@ ResizeFSJob::exec() tr( "Invalid configuration" ), tr( "The file-system resize job has an invalid configuration and will not run." ) ); - if ( !m_kpmcore) + if ( !m_kpmcore ) { cWarning() << "Could not load KPMCore backend (2)."; - return Calamares::JobResult::error( - tr( "KPMCore not Available" ), - tr( "Calamares cannot start KPMCore for the file-system resize job." ) ); + return Calamares::JobResult::error( tr( "KPMCore not Available" ), + tr( "Calamares cannot start KPMCore for the file-system resize job." ) ); } m_kpmcore.backend()->initFSSupport(); // Might not be enough, see below @@ -184,34 +192,32 @@ ResizeFSJob::exec() if ( !m.first || !m.second ) return Calamares::JobResult::error( tr( "Resize Failed" ), - !m_fsname.isEmpty() ? tr( "The filesystem %1 could not be found in this system, and cannot be resized." ).arg( m_fsname ) - : tr( "The device %1 could not be found in this system, and cannot be resized." ).arg( m_devicename ) ); + !m_fsname.isEmpty() + ? tr( "The filesystem %1 could not be found in this system, and cannot be resized." ).arg( m_fsname ) + : tr( "The device %1 could not be found in this system, and cannot be resized." ).arg( m_devicename ) ); m.second->fileSystem().init(); // Initialize support for specific FS if ( !ResizeOperation::canGrow( m.second ) ) { cDebug() << "canGrow() returned false."; - return Calamares::JobResult::error( - tr( "Resize Failed" ), - !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized." ).arg( m_fsname ) - : tr( "The device %1 cannot be resized." ).arg( m_devicename ) ); + return Calamares::JobResult::error( tr( "Resize Failed" ), + !m_fsname.isEmpty() + ? tr( "The filesystem %1 cannot be resized." ).arg( m_fsname ) + : tr( "The device %1 cannot be resized." ).arg( m_devicename ) ); } qint64 new_end = findGrownEnd( m ); - cDebug() << "Resize from" - << m.second->firstSector() << '-' << m.second->lastSector() - << '(' << m.second->length() << ')' - << "to -" << new_end; + cDebug() << "Resize from" << m.second->firstSector() << '-' << m.second->lastSector() << '(' << m.second->length() + << ')' << "to -" << new_end; if ( new_end < 0 ) - return Calamares::JobResult::error( - tr( "Resize Failed" ), - !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized." ).arg( m_fsname ) - : tr( "The device %1 cannot be resized." ).arg( m_devicename ) ); + return Calamares::JobResult::error( tr( "Resize Failed" ), + !m_fsname.isEmpty() + ? tr( "The filesystem %1 cannot be resized." ).arg( m_fsname ) + : tr( "The device %1 cannot be resized." ).arg( m_devicename ) ); if ( new_end == 0 ) { - cWarning() << "Resize operation on" << m_fsname << m_devicename - << "skipped as not-useful."; + cWarning() << "Resize operation on" << m_fsname << m_devicename << "skipped as not-useful."; if ( m_required ) return Calamares::JobResult::error( tr( "Resize Failed" ), @@ -226,13 +232,13 @@ ResizeFSJob::exec() ResizeOperation op( *m.first, *m.second, m.second->firstSector(), new_end ); Report op_report( nullptr ); if ( op.execute( op_report ) ) + { cDebug() << "Resize operation OK."; + } else { cDebug() << "Resize failed." << op_report.output(); - return Calamares::JobResult::error( - tr( "Resize Failed" ), - op_report.toText() ); + return Calamares::JobResult::error( tr( "Resize Failed" ), op_report.toText() ); } } @@ -243,8 +249,8 @@ ResizeFSJob::exec() void ResizeFSJob::setConfigurationMap( const QVariantMap& configurationMap ) { - m_fsname = configurationMap["fs"].toString(); - m_devicename = configurationMap["dev"].toString(); + m_fsname = configurationMap[ "fs" ].toString(); + m_devicename = configurationMap[ "dev" ].toString(); if ( m_fsname.isEmpty() && m_devicename.isEmpty() ) { @@ -252,10 +258,10 @@ ResizeFSJob::setConfigurationMap( const QVariantMap& configurationMap ) return; } - m_size = PartitionSize( configurationMap["size"].toString() ); - m_atleast = PartitionSize( configurationMap["atleast"].toString() ); + m_size = PartitionSize( configurationMap[ "size" ].toString() ); + m_atleast = PartitionSize( configurationMap[ "atleast" ].toString() ); m_required = CalamaresUtils::getBool( configurationMap, "required", false ); } -CALAMARES_PLUGIN_FACTORY_DEFINITION( ResizeFSJobFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( ResizeFSJobFactory, registerPlugin< ResizeFSJob >(); ) diff --git a/src/modules/fsresizer/ResizeFSJob.h b/src/modules/fsresizer/ResizeFSJob.h index f7ff676cd..5bc810370 100644 --- a/src/modules/fsresizer/ResizeFSJob.h +++ b/src/modules/fsresizer/ResizeFSJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,26 +52,13 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; /** @brief Is the configuration of this job valid? */ - bool isValid() const - { - return ( !m_fsname.isEmpty() || !m_devicename.isEmpty() ) && - m_size.isValid(); - } + bool isValid() const { return ( !m_fsname.isEmpty() || !m_devicename.isEmpty() ) && m_size.isValid(); } - QString name() const - { - return m_fsname.isEmpty() ? m_devicename : m_fsname; - } + QString name() const { return m_fsname.isEmpty() ? m_devicename : m_fsname; } - PartitionSize size() const - { - return m_size; - } + PartitionSize size() const { return m_size; } - PartitionSize minimumSize() const - { - return m_atleast; - } + PartitionSize minimumSize() const { return m_atleast; } private: CalamaresUtils::Partition::KPMManager m_kpmcore; @@ -80,7 +68,7 @@ private: QString m_devicename; bool m_required; - using PartitionMatch = QPair; + using PartitionMatch = QPair< Device*, Partition* >; /** @brief Find the configured FS */ PartitionMatch findPartition(); @@ -90,4 +78,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( ResizeFSJobFactory ) -#endif // RESIZEFSJOB_H +#endif // RESIZEFSJOB_H diff --git a/src/modules/fsresizer/Tests.cpp b/src/modules/fsresizer/Tests.cpp index 42d587631..a7be5dab8 100644 --- a/src/modules/fsresizer/Tests.cpp +++ b/src/modules/fsresizer/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,20 +37,17 @@ using SizeUnit = CalamaresUtils::Partition::SizeUnit; QTEST_GUILESS_MAIN( FSResizerTests ) -FSResizerTests::FSResizerTests() -{ -} +FSResizerTests::FSResizerTests() {} -FSResizerTests::~FSResizerTests() -{ -} +FSResizerTests::~FSResizerTests() {} void FSResizerTests::initTestCase() { } -void FSResizerTests::testConfigurationRobust() +void +FSResizerTests::testConfigurationRobust() { ResizeFSJob j; @@ -72,7 +70,8 @@ atleast: 600MiB QCOMPARE( j.minimumSize().value(), 0 ); } -void FSResizerTests::testConfigurationValues() +void +FSResizerTests::testConfigurationValues() { ResizeFSJob j; @@ -84,7 +83,7 @@ atleast: 600MiB )" ); j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ) ); QVERIFY( !j.name().isEmpty() ); - QCOMPARE( j.name(), QString("/") ); + QCOMPARE( j.name(), QString( "/" ) ); QCOMPARE( j.size().unit(), SizeUnit::Percent ); QCOMPARE( j.minimumSize().unit(), SizeUnit::MiB ); QCOMPARE( j.size().value(), 100 ); @@ -99,7 +98,7 @@ atleast: 127 % )" ); j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ) ); QVERIFY( !j.name().isEmpty() ); - QCOMPARE( j.name(), QString("/") ); + QCOMPARE( j.name(), QString( "/" ) ); QCOMPARE( j.size().unit(), SizeUnit::MiB ); QCOMPARE( j.minimumSize().unit(), SizeUnit::None ); QCOMPARE( j.size().value(), 72 ); @@ -113,7 +112,7 @@ atleast: 127 % )" ); j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ) ); QVERIFY( !j.name().isEmpty() ); - QCOMPARE( j.name(), QString("/dev/m00") ); + QCOMPARE( j.name(), QString( "/dev/m00" ) ); QCOMPARE( j.size().unit(), SizeUnit::MiB ); QCOMPARE( j.minimumSize().unit(), SizeUnit::None ); QCOMPARE( j.size().value(), 72 ); @@ -128,7 +127,7 @@ size: 71MiB )" ); j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ) ); QVERIFY( !j.name().isEmpty() ); - QCOMPARE( j.name(), QString("/") ); + QCOMPARE( j.name(), QString( "/" ) ); QCOMPARE( j.size().unit(), SizeUnit::MiB ); QCOMPARE( j.minimumSize().unit(), SizeUnit::None ); QCOMPARE( j.size().value(), 71 ); diff --git a/src/modules/fsresizer/Tests.h b/src/modules/fsresizer/Tests.h index 958c0e655..24ac0bc8a 100644 --- a/src/modules/fsresizer/Tests.h +++ b/src/modules/fsresizer/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/hostinfo/HostInfoJob.cpp b/src/modules/hostinfo/HostInfoJob.cpp index 90c9cd515..02320c7ac 100644 --- a/src/modules/hostinfo/HostInfoJob.cpp +++ b/src/modules/hostinfo/HostInfoJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -123,7 +124,7 @@ hostCPUmatchARM( const QString& s ) * silicon. For instance, a list from lscpu-arm.c (Linux kernel) * shows this: * -static const struct hw_impl hw_implementer[] = { + static const struct hw_impl hw_implementer[] = { { 0x41, arm_part, "ARM" }, { 0x42, brcm_part, "Broadcom" }, { 0x43, cavium_part, "Cavium" }, @@ -137,7 +138,7 @@ static const struct hw_impl hw_implementer[] = { { 0x66, faraday_part, "Faraday" }, { 0x69, intel_part, "Intel" }, { -1, unknown_part, "unknown" }, -}; + }; * * Since the specific implementor isn't interesting, just * map everything to "ARM". diff --git a/src/modules/hostinfo/HostInfoJob.h b/src/modules/hostinfo/HostInfoJob.h index 5db169b0e..bf519e953 100644 --- a/src/modules/hostinfo/HostInfoJob.h +++ b/src/modules/hostinfo/HostInfoJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp index 7ab797ed4..883bddf28 100644 --- a/src/modules/hostinfo/Tests.cpp +++ b/src/modules/hostinfo/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,8 +64,8 @@ HostInfoTests::testHostOS() // This is a lousy test, too: the implementation reads /proc/cpuinfo // and that's the only way we could use, too, to find what the "right" // answer is. - QStringList x86cpunames{ QStringLiteral( "Intel" ), QStringLiteral( "AMD" ) }; - QStringList armcpunames{ QStringLiteral( "ARM" ) }; + QStringList x86cpunames { QStringLiteral( "Intel" ), QStringLiteral( "AMD" ) }; + QStringList armcpunames { QStringLiteral( "ARM" ) }; const QString cpu = hostCPU(); QVERIFY( x86cpunames.contains( cpu ) || armcpunames.contains( cpu ) ); @@ -83,7 +84,7 @@ HostInfoTests::testHostOS() } else { - QCOMPARE( cpu, QString( "Unknown CPU modalias '%1'" ).arg(cpumodalias) ); + QCOMPARE( cpu, QString( "Unknown CPU modalias '%1'" ).arg( cpumodalias ) ); } } } diff --git a/src/modules/initcpio/InitcpioJob.cpp b/src/modules/initcpio/InitcpioJob.cpp index 38f3a8961..ae910995c 100644 --- a/src/modules/initcpio/InitcpioJob.cpp +++ b/src/modules/initcpio/InitcpioJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -88,8 +89,11 @@ InitcpioJob::setConfigurationMap( const QVariantMap& configurationMap ) } else if ( m_kernel == "$uname" ) { - auto r = CalamaresUtils::System::runCommand( - CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), std::chrono::seconds( 3 ) ); + auto r = CalamaresUtils::System::runCommand( CalamaresUtils::System::RunLocation::RunInHost, + { "/bin/uname", "-r" }, + QString(), + QString(), + std::chrono::seconds( 3 ) ); if ( r.getExitCode() == 0 ) { m_kernel = r.getOutput(); diff --git a/src/modules/initcpio/InitcpioJob.h b/src/modules/initcpio/InitcpioJob.h index cdc48f6ce..ae8ff47c3 100644 --- a/src/modules/initcpio/InitcpioJob.h +++ b/src/modules/initcpio/InitcpioJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/initcpio/Tests.cpp b/src/modules/initcpio/Tests.cpp index e0590ba25..83b10388d 100644 --- a/src/modules/initcpio/Tests.cpp +++ b/src/modules/initcpio/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,23 +32,20 @@ #include extern void fixPermissions( const QDir& d ); - + QTEST_GUILESS_MAIN( InitcpioTests ) -InitcpioTests::InitcpioTests() -{ -} +InitcpioTests::InitcpioTests() {} -InitcpioTests::~InitcpioTests() -{ -} +InitcpioTests::~InitcpioTests() {} void InitcpioTests::initTestCase() { } -void InitcpioTests::testFixPermissions() +void +InitcpioTests::testFixPermissions() { Logger::setupLogLevel( Logger::LOGDEBUG ); cDebug() << "Fixing up /boot"; @@ -56,4 +54,3 @@ void InitcpioTests::testFixPermissions() fixPermissions( QDir( "/nonexistent/nonexistent" ) ); QVERIFY( true ); } - diff --git a/src/modules/initcpio/Tests.h b/src/modules/initcpio/Tests.h index 5bab26d3f..bebab408a 100644 --- a/src/modules/initcpio/Tests.h +++ b/src/modules/initcpio/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/initramfs/InitramfsJob.cpp b/src/modules/initramfs/InitramfsJob.cpp index 468047c45..05ee4bde8 100644 --- a/src/modules/initramfs/InitramfsJob.cpp +++ b/src/modules/initramfs/InitramfsJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -78,8 +79,11 @@ InitramfsJob::setConfigurationMap( const QVariantMap& configurationMap ) } else if ( m_kernel == "$uname" ) { - auto r = CalamaresUtils::System::runCommand( - CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), std::chrono::seconds( 3 ) ); + auto r = CalamaresUtils::System::runCommand( CalamaresUtils::System::RunLocation::RunInHost, + { "/bin/uname", "-r" }, + QString(), + QString(), + std::chrono::seconds( 3 ) ); if ( r.getExitCode() == 0 ) { m_kernel = r.getOutput(); diff --git a/src/modules/initramfs/InitramfsJob.h b/src/modules/initramfs/InitramfsJob.h index 3239c6929..b1b3fb397 100644 --- a/src/modules/initramfs/InitramfsJob.h +++ b/src/modules/initramfs/InitramfsJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/initramfs/Tests.cpp b/src/modules/initramfs/Tests.cpp index 2a236e64b..955d9b8bf 100644 --- a/src/modules/initramfs/Tests.cpp +++ b/src/modules/initramfs/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,32 +34,30 @@ QTEST_GUILESS_MAIN( InitramfsTests ) -InitramfsTests::InitramfsTests() -{ -} +InitramfsTests::InitramfsTests() {} -InitramfsTests::~InitramfsTests() -{ -} +InitramfsTests::~InitramfsTests() {} void InitramfsTests::initTestCase() { Logger::setupLogLevel( Logger::LOGDEBUG ); - (void) new Calamares::JobQueue(); - (void) new CalamaresUtils::System( true ); + (void)new Calamares::JobQueue(); + (void)new CalamaresUtils::System( true ); } static const char contents[] = "UMASK=0077\n"; static const char confFile[] = "/tmp/calamares-safe-umask"; -void InitramfsTests::cleanup() +void +InitramfsTests::cleanup() { QFile::remove( confFile ); } -void InitramfsTests::testCreateTargetFile() +void +InitramfsTests::testCreateTargetFile() { static const char short_confFile[] = "/calamares-safe-umask"; @@ -79,8 +78,7 @@ void InitramfsTests::testCreateTargetFile() QFileInfo fi( path ); QVERIFY( fi.exists() ); - QCOMPARE( ulong( fi.size() ), sizeof( contents )-1 ); // don't count trailing NUL + QCOMPARE( ulong( fi.size() ), sizeof( contents ) - 1 ); // don't count trailing NUL QFile::remove( path ); - } diff --git a/src/modules/initramfs/Tests.h b/src/modules/initramfs/Tests.h index 715c90169..11d0fd1d0 100644 --- a/src/modules/initramfs/Tests.h +++ b/src/modules/initramfs/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/initramfscfg/encrypt_hook b/src/modules/initramfscfg/encrypt_hook index 257097303..70d661a98 100755 --- a/src/modules/initramfscfg/encrypt_hook +++ b/src/modules/initramfscfg/encrypt_hook @@ -1,4 +1,7 @@ #!/bin/sh +# +# SPDX-FileCopyrightText: 2016 David McKinney +# SPDX-License-Identifier: GPL-3.0-or-later PREREQ="" diff --git a/src/modules/initramfscfg/encrypt_hook_nokey b/src/modules/initramfscfg/encrypt_hook_nokey index db51475bd..8ee669c30 100755 --- a/src/modules/initramfscfg/encrypt_hook_nokey +++ b/src/modules/initramfscfg/encrypt_hook_nokey @@ -1,4 +1,7 @@ #!/bin/sh +# +# SPDX-FileCopyrightText: 2016 David McKinney +# SPDX-License-Identifier: GPL-3.0-or-later PREREQ="" diff --git a/src/modules/interactiveterminal/InteractiveTerminalPage.cpp b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp index 5b2f81bfa..9d5f76724 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,14 +19,14 @@ #include "InteractiveTerminalPage.h" -#include "viewpages/ViewStep.h" -#include "utils/Retranslator.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" +#include "utils/Retranslator.h" +#include "viewpages/ViewStep.h" -#include -#include #include +#include +#include #include #include @@ -49,17 +50,17 @@ InteractiveTerminalPage::InteractiveTerminalPage( QWidget* parent ) void InteractiveTerminalPage::errorKonsoleNotInstalled() { - QMessageBox::critical( this, - tr( "Konsole not installed"), - tr( "Please install KDE Konsole and try again!" ), - QMessageBox::Ok ); + QMessageBox::critical( + this, tr( "Konsole not installed" ), tr( "Please install KDE Konsole and try again!" ), QMessageBox::Ok ); } void InteractiveTerminalPage::onActivate() { if ( m_termHostWidget ) + { return; + } // For whatever reason, instead of simply linking against a library we // need to do a runtime query to KService just to get a sodding terminal // widget. @@ -69,14 +70,11 @@ InteractiveTerminalPage::onActivate() // And all of this hoping the Konsole application is installed. If not, // tough cookies. errorKonsoleNotInstalled(); - return ; + return; } // Create one instance of konsolepart. - KParts::ReadOnlyPart* p = - service->createInstance< KParts::ReadOnlyPart >( this, - this, - {} ); + KParts::ReadOnlyPart* p = service->createInstance< KParts::ReadOnlyPart >( this, this, {} ); if ( !p ) { // One more opportunity for the loading operation to fail. @@ -100,8 +98,7 @@ InteractiveTerminalPage::onActivate() m_termHostWidget = p->widget(); m_layout->addWidget( m_termHostWidget ); - cDebug() << "Part widget ought to be" - << m_termHostWidget->metaObject()->className(); + cDebug() << "Part widget ought to be" << m_termHostWidget->metaObject()->className(); t->showShellInDir( QDir::home().path() ); t->sendInput( QString( "%1\n" ).arg( m_command ) ); @@ -112,8 +109,5 @@ void InteractiveTerminalPage::setCommand( const QString& command ) { m_command = command; - CALAMARES_RETRANSLATE( - m_headerLabel->setText( tr( "Executing script:  %1" ) - .arg( m_command ) ); - ) + CALAMARES_RETRANSLATE( m_headerLabel->setText( tr( "Executing script:  %1" ).arg( m_command ) ); ) } diff --git a/src/modules/interactiveterminal/InteractiveTerminalPage.h b/src/modules/interactiveterminal/InteractiveTerminalPage.h index 503a53756..20ab0d651 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.h +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,4 +44,4 @@ private: void errorKonsoleNotInstalled(); }; -#endif // INTERACTIVETERMINALPAGE_H +#endif // INTERACTIVETERMINALPAGE_H diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp b/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp index 874c8a9cc..45019cf4a 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +25,8 @@ #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( InteractiveTerminalViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( InteractiveTerminalViewStepFactory, + registerPlugin< InteractiveTerminalViewStep >(); ) InteractiveTerminalViewStep::InteractiveTerminalViewStep( QObject* parent ) : Calamares::ViewStep( parent ) @@ -37,7 +39,9 @@ InteractiveTerminalViewStep::InteractiveTerminalViewStep( QObject* parent ) InteractiveTerminalViewStep::~InteractiveTerminalViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -102,8 +106,8 @@ InteractiveTerminalViewStep::onActivate() void InteractiveTerminalViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - if ( configurationMap.contains( "command" ) && - configurationMap.value( "command").type() == QVariant::String ) + if ( configurationMap.contains( "command" ) && configurationMap.value( "command" ).type() == QVariant::String ) + { m_widget->setCommand( configurationMap.value( "command" ).toString() ); + } } - diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h index bf26ba91e..d91fc07cc 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -60,4 +61,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( InteractiveTerminalViewStepFactory ) -#endif // INTERACTIVETERMINALPAGEPLUGIN_H +#endif // INTERACTIVETERMINALPAGEPLUGIN_H diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index 64b253835..bd2c41780 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot - * Copyright 2020, Camilo Higuita * + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Camilo Higuita * + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/Config.h b/src/modules/keyboard/Config.h index a05a5ab86..a7e9c621b 100644 --- a/src/modules/keyboard/Config.h +++ b/src/modules/keyboard/Config.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardLayoutModel.cpp b/src/modules/keyboard/KeyboardLayoutModel.cpp index 7e24df570..9077ea60e 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.cpp +++ b/src/modules/keyboard/KeyboardLayoutModel.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardLayoutModel.h b/src/modules/keyboard/KeyboardLayoutModel.h index e0007fdbc..eeb0666fa 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.h +++ b/src/modules/keyboard/KeyboardLayoutModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index e8997b915..6ab472446 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/keyboard/KeyboardPage.h b/src/modules/keyboard/KeyboardPage.h index 1ce21787c..73896923a 100644 --- a/src/modules/keyboard/KeyboardPage.h +++ b/src/modules/keyboard/KeyboardPage.h @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/keyboard/KeyboardViewStep.cpp b/src/modules/keyboard/KeyboardViewStep.cpp index e6e89eb1c..b424653f7 100644 --- a/src/modules/keyboard/KeyboardViewStep.cpp +++ b/src/modules/keyboard/KeyboardViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardViewStep.h b/src/modules/keyboard/KeyboardViewStep.h index 208d50686..8de05d0af 100644 --- a/src/modules/keyboard/KeyboardViewStep.h +++ b/src/modules/keyboard/KeyboardViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/README.md b/src/modules/keyboard/README.md deleted file mode 100644 index cf4ce3994..000000000 --- a/src/modules/keyboard/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Keyboard layout configuration viewmodule ---- -Requires ckbcomp script. - * Debian package console-setup or - * Manjaro package keyboardctl https://github.com/manjaro/packages-core/tree/master/keyboardctl diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.cpp b/src/modules/keyboard/SetKeyboardLayoutJob.cpp index 537feeb8c..e9c20e0aa 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -1,7 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2014, Kevin Kofler + * SPDX-FileCopyrightText: 2011 Lennart Poettering + * SPDX-FileCopyrightText: Kay Sievers + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Kevin Kofler + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from systemd (localed.c): * Copyright 2011 Lennart Poettering diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.h b/src/modules/keyboard/SetKeyboardLayoutJob.h index 599642b19..ee0cd0a99 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.h +++ b/src/modules/keyboard/SetKeyboardLayoutJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2014, Kevin Kofler + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Kevin Kofler + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/images/restore.png.license b/src/modules/keyboard/images/restore.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/keyboard/images/restore.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/keyboard/kbd-model-map b/src/modules/keyboard/kbd-model-map index 49ec4ad75..e113c92ba 100644 --- a/src/modules/keyboard/kbd-model-map +++ b/src/modules/keyboard/kbd-model-map @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2015 Systemd authors and contributors +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later +# # Copied from systemd-localed # # https://cgit.freedesktop.org/systemd/systemd/log/src/locale/kbd-model-map diff --git a/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp b/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp index f363ea844..d5f6984d4 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Originally from the Manjaro Installation Framework * by Roland Singer @@ -43,18 +45,22 @@ static const char XKB_FILE[] = "/usr/share/X11/xkb/rules/base.lst"; * or hits end-of-file. Returns true if the section is found. The * @p name must include the "! " section marker as well. */ -static bool findSection( QFile& fh, const char* name ) +static bool +findSection( QFile& fh, const char* name ) { while ( !fh.atEnd() ) { QByteArray line = fh.readLine(); if ( line.startsWith( name ) ) + { return true; + } } return false; } -static KeyboardGlobal::ModelsMap parseKeyboardModels( const char* filepath ) +static KeyboardGlobal::ModelsMap +parseKeyboardModels( const char* filepath ) { KeyboardGlobal::ModelsMap models; @@ -75,7 +81,9 @@ static KeyboardGlobal::ModelsMap parseKeyboardModels( const char* filepath ) // check if we start a new section if ( line.startsWith( '!' ) ) + { break; + } // here we are in the model section, otherwhise we would continue or break QRegExp rx; @@ -88,7 +96,9 @@ static KeyboardGlobal::ModelsMap parseKeyboardModels( const char* filepath ) QString model = rx.cap( 1 ); if ( model == "pc105" ) + { modelDesc += " - " + QObject::tr( "Default Keyboard Model" ); + } models.insert( modelDesc, model ); } @@ -98,7 +108,8 @@ static KeyboardGlobal::ModelsMap parseKeyboardModels( const char* filepath ) } -KeyboardGlobal::LayoutsMap parseKeyboardLayouts( const char* filepath ) +KeyboardGlobal::LayoutsMap +parseKeyboardLayouts( const char* filepath ) { KeyboardGlobal::LayoutsMap layouts; @@ -120,7 +131,9 @@ KeyboardGlobal::LayoutsMap parseKeyboardLayouts( const char* filepath ) QByteArray line = fh.readLine(); if ( line.startsWith( '!' ) ) + { break; + } QRegExp rx; rx.setPattern( "^\\s+(\\S+)\\s+(\\w.*)\n$" ); @@ -147,7 +160,9 @@ KeyboardGlobal::LayoutsMap parseKeyboardLayouts( const char* filepath ) QByteArray line = fh.readLine(); if ( line.startsWith( '!' ) ) + { break; + } QRegExp rx; rx.setPattern( "^\\s+(\\S+)\\s+(\\S+): (\\w.*)\n$" ); @@ -176,14 +191,15 @@ KeyboardGlobal::LayoutsMap parseKeyboardLayouts( const char* filepath ) } -KeyboardGlobal::LayoutsMap KeyboardGlobal::getKeyboardLayouts() +KeyboardGlobal::LayoutsMap +KeyboardGlobal::getKeyboardLayouts() { return parseKeyboardLayouts( XKB_FILE ); } -KeyboardGlobal::ModelsMap KeyboardGlobal::getKeyboardModels() +KeyboardGlobal::ModelsMap +KeyboardGlobal::getKeyboardModels() { return parseKeyboardModels( XKB_FILE ); } - diff --git a/src/modules/keyboard/keyboardwidget/keyboardglobal.h b/src/modules/keyboard/keyboardwidget/keyboardglobal.h index 1732dc913..9e03c05e5 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardglobal.h +++ b/src/modules/keyboard/keyboardwidget/keyboardglobal.h @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Originally from the Manjaro Installation Framework * by Roland Singer @@ -24,21 +26,22 @@ #ifndef KEYBOARDGLOBAL_H #define KEYBOARDGLOBAL_H -#include -#include -#include +#include #include -#include -#include +#include #include +#include #include #include -#include +#include +#include +#include class KeyboardGlobal { public: - struct KeyboardInfo { + struct KeyboardInfo + { QString description; QMap< QString, QString > variants; }; @@ -50,4 +53,4 @@ public: static ModelsMap getKeyboardModels(); }; -#endif // KEYBOARDGLOBAL_H +#endif // KEYBOARDGLOBAL_H diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index 02ddd4186..6cc306526 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -33,96 +35,126 @@ KeyBoardPreview::KeyBoardPreview( QWidget* parent ) , usable_width( 0 ) , key_w( 0 ) { - setMinimumSize(700, 191); + setMinimumSize( 700, 191 ); // We must set up the font size in pixels to fit the keys - lowerFont = QFont("Helvetica", 10, QFont::DemiBold); - lowerFont.setPixelSize(16); - upperFont = QFont("Helvetica", 8); - upperFont.setPixelSize(13); + lowerFont = QFont( "Helvetica", 10, QFont::DemiBold ); + lowerFont.setPixelSize( 16 ); + upperFont = QFont( "Helvetica", 8 ); + upperFont.setPixelSize( 13 ); // Setup keyboard types - kbList[KB_104].kb_extended_return = false; - kbList[KB_104].keys.append(QList() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa << 0xb << 0xc << 0xd); - kbList[KB_104].keys.append(QList() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 << 0x19 << 0x1a << 0x1b << 0x2b); - kbList[KB_104].keys.append(QList() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 << 0x27 << 0x28); - kbList[KB_104].keys.append(QList() << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 << 0x34 << 0x35); + kbList[ KB_104 ].kb_extended_return = false; + kbList[ KB_104 ].keys.append( QList< int >() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa + << 0xb << 0xc << 0xd ); + kbList[ KB_104 ].keys.append( QList< int >() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 + << 0x19 << 0x1a << 0x1b << 0x2b ); + kbList[ KB_104 ].keys.append( QList< int >() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 + << 0x27 << 0x28 ); + kbList[ KB_104 ].keys.append( QList< int >() + << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 << 0x34 << 0x35 ); - kbList[KB_105].kb_extended_return = true; - kbList[KB_105].keys.append(QList() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa << 0xb << 0xc << 0xd); - kbList[KB_105].keys.append(QList() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 << 0x19 << 0x1a << 0x1b); - kbList[KB_105].keys.append(QList() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 << 0x27 << 0x28 << 0x2b); - kbList[KB_105].keys.append(QList() << 0x54 << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 << 0x34 << 0x35); + kbList[ KB_105 ].kb_extended_return = true; + kbList[ KB_105 ].keys.append( QList< int >() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa + << 0xb << 0xc << 0xd ); + kbList[ KB_105 ].keys.append( QList< int >() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 + << 0x19 << 0x1a << 0x1b ); + kbList[ KB_105 ].keys.append( QList< int >() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 + << 0x27 << 0x28 << 0x2b ); + kbList[ KB_105 ].keys.append( QList< int >() << 0x54 << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 + << 0x34 << 0x35 ); - kbList[KB_106].kb_extended_return = true; - kbList[KB_106].keys.append(QList() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa << 0xb << 0xc << 0xd << 0xe); - kbList[KB_106].keys.append(QList() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 << 0x19 << 0x1a << 0x1b); - kbList[KB_106].keys.append(QList() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 << 0x27 << 0x28 << 0x29); - kbList[KB_106].keys.append(QList() << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 << 0x34 << 0x35 << 0x36); + kbList[ KB_106 ].kb_extended_return = true; + kbList[ KB_106 ].keys.append( QList< int >() << 0x29 << 0x2 << 0x3 << 0x4 << 0x5 << 0x6 << 0x7 << 0x8 << 0x9 << 0xa + << 0xb << 0xc << 0xd << 0xe ); + kbList[ KB_106 ].keys.append( QList< int >() << 0x10 << 0x11 << 0x12 << 0x13 << 0x14 << 0x15 << 0x16 << 0x17 << 0x18 + << 0x19 << 0x1a << 0x1b ); + kbList[ KB_106 ].keys.append( QList< int >() << 0x1e << 0x1f << 0x20 << 0x21 << 0x22 << 0x23 << 0x24 << 0x25 << 0x26 + << 0x27 << 0x28 << 0x29 ); + kbList[ KB_106 ].keys.append( QList< int >() << 0x2c << 0x2d << 0x2e << 0x2f << 0x30 << 0x31 << 0x32 << 0x33 << 0x34 + << 0x35 << 0x36 ); - kb = &kbList[KB_104]; + kb = &kbList[ KB_104 ]; } - -void KeyBoardPreview::setLayout(QString _layout) { +void +KeyBoardPreview::setLayout( QString _layout ) +{ layout = _layout; } - -void KeyBoardPreview::setVariant(QString _variant) { +void +KeyBoardPreview::setVariant( QString _variant ) +{ variant = _variant; - if (!loadCodes()) + if ( !loadCodes() ) + { return; + } loadInfo(); repaint(); } - //### //### Private //### - -void KeyBoardPreview::loadInfo() { +void +KeyBoardPreview::loadInfo() +{ // kb_104 - if (layout == "us" || layout == "th") - kb = &kbList[KB_104]; + if ( layout == "us" || layout == "th" ) + { + kb = &kbList[ KB_104 ]; + } // kb_106 - else if (layout == "jp") - kb = &kbList[KB_106]; + else if ( layout == "jp" ) + { + kb = &kbList[ KB_106 ]; + } // most keyboards are 105 key so default to that else - kb = &kbList[KB_105]; + { + kb = &kbList[ KB_105 ]; + } } - -bool KeyBoardPreview::loadCodes() { - if (layout.isEmpty()) +bool +KeyBoardPreview::loadCodes() +{ + if ( layout.isEmpty() ) + { return false; + } QStringList param; - param << "-model" << "pc106" << "-layout" << layout << "-compact"; - if (!variant.isEmpty()) + param << "-model" + << "pc106" + << "-layout" << layout << "-compact"; + if ( !variant.isEmpty() ) + { param << "-variant" << variant; + } QProcess process; - process.setEnvironment(QStringList() << "LANG=C" << "LC_MESSAGES=C"); - process.start("ckbcomp", param); - if (!process.waitForStarted()) + process.setEnvironment( QStringList() << "LANG=C" + << "LC_MESSAGES=C" ); + process.start( "ckbcomp", param ); + if ( !process.waitForStarted() ) { cWarning() << "ckbcomp not found , keyboard preview disabled"; return false; } - if (!process.waitForFinished()) + if ( !process.waitForFinished() ) { cWarning() << "ckbcomp failed, keyboard preview disabled"; return false; @@ -131,209 +163,247 @@ bool KeyBoardPreview::loadCodes() { // Clear codes codes.clear(); - const QStringList list = QString(process.readAll()).split("\n", SplitSkipEmptyParts); + const QStringList list = QString( process.readAll() ).split( "\n", SplitSkipEmptyParts ); - for (const QString &line : list) { - if (!line.startsWith("keycode") || !line.contains('=')) + for ( const QString& line : list ) + { + if ( !line.startsWith( "keycode" ) || !line.contains( '=' ) ) + { continue; + } - QStringList split = line.split('=').at(1).trimmed().split(' '); - if (split.size() < 4) + QStringList split = line.split( '=' ).at( 1 ).trimmed().split( ' ' ); + if ( split.size() < 4 ) + { continue; + } Code code; - code.plain = fromUnicodeString(split.at(0)); - code.shift = fromUnicodeString(split.at(1)); - code.ctrl = fromUnicodeString(split.at(2)); - code.alt = fromUnicodeString(split.at(3)); + code.plain = fromUnicodeString( split.at( 0 ) ); + code.shift = fromUnicodeString( split.at( 1 ) ); + code.ctrl = fromUnicodeString( split.at( 2 ) ); + code.alt = fromUnicodeString( split.at( 3 ) ); - if (code.ctrl == code.plain) + if ( code.ctrl == code.plain ) + { code.ctrl = ""; + } - if (code.alt == code.plain) + if ( code.alt == code.plain ) + { code.alt = ""; + } - codes.append(code); + codes.append( code ); } return true; } - -QString KeyBoardPreview::fromUnicodeString(QString raw) { - if (raw.startsWith("U+")) - return QChar(raw.mid(2).toInt(nullptr, 16)); - else if (raw.startsWith("+U")) - return QChar(raw.mid(3).toInt(nullptr, 16)); +QString +KeyBoardPreview::fromUnicodeString( QString raw ) +{ + if ( raw.startsWith( "U+" ) ) + { + return QChar( raw.mid( 2 ).toInt( nullptr, 16 ) ); + } + else if ( raw.startsWith( "+U" ) ) + { + return QChar( raw.mid( 3 ).toInt( nullptr, 16 ) ); + } return ""; } - -QString KeyBoardPreview::regular_text(int index) { - if (index < 0 || index >= codes.size()) +QString +KeyBoardPreview::regular_text( int index ) +{ + if ( index < 0 || index >= codes.size() ) + { return ""; + } - return codes.at(index - 1).plain; + return codes.at( index - 1 ).plain; } - -QString KeyBoardPreview::shift_text(int index) { - if (index < 0 || index >= codes.size()) +QString +KeyBoardPreview::shift_text( int index ) +{ + if ( index < 0 || index >= codes.size() ) + { return ""; + } - return codes.at(index - 1).shift; + return codes.at( index - 1 ).shift; } - -QString KeyBoardPreview::ctrl_text(int index) { - if (index < 0 || index >= codes.size()) +QString +KeyBoardPreview::ctrl_text( int index ) +{ + if ( index < 0 || index >= codes.size() ) + { return ""; + } - return codes.at(index - 1).ctrl; + return codes.at( index - 1 ).ctrl; } - -QString KeyBoardPreview::alt_text(int index) { - if (index < 0 || index >= codes.size()) +QString +KeyBoardPreview::alt_text( int index ) +{ + if ( index < 0 || index >= codes.size() ) + { return ""; + } - return codes.at(index - 1).alt; + return codes.at( index - 1 ).alt; } - -void KeyBoardPreview::resizeEvent(QResizeEvent *) { +void +KeyBoardPreview::resizeEvent( QResizeEvent* ) +{ space = 6; - usable_width = width()-7; - key_w = (usable_width - 14 * space)/15; + usable_width = width() - 7; + key_w = ( usable_width - 14 * space ) / 15; - setMaximumHeight(key_w*4 + space*5 + 1); + setMaximumHeight( key_w * 4 + space * 5 + 1 ); } +void +KeyBoardPreview::paintEvent( QPaintEvent* event ) +{ + QPainter p( this ); + p.setRenderHint( QPainter::Antialiasing ); -void KeyBoardPreview::paintEvent(QPaintEvent* event) { - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - p.setBrush(QColor(0xd6, 0xd6, 0xd6)); - p.drawRect(rect()); + p.setBrush( QColor( 0xd6, 0xd6, 0xd6 ) ); + p.drawRect( rect() ); QPen pen; - pen.setWidth(1); - pen.setColor(QColor(0x58, 0x58, 0x58)); - p.setPen(pen); + pen.setWidth( 1 ); + pen.setColor( QColor( 0x58, 0x58, 0x58 ) ); + p.setPen( pen ); - p.setBrush(QColor(0x58, 0x58, 0x58)); + p.setBrush( QColor( 0x58, 0x58, 0x58 ) ); - p.setBackgroundMode(Qt::TransparentMode); - p.translate(0.5, 0.5); + p.setBackgroundMode( Qt::TransparentMode ); + p.translate( 0.5, 0.5 ); int rx = 3; - int x=6; - int y=6; + int x = 6; + int y = 6; int first_key_w = 0; - int remaining_x[] = {0,0,0,0}; - int remaining_widths[] = {0,0,0,0}; + int remaining_x[] = { 0, 0, 0, 0 }; + int remaining_widths[] = { 0, 0, 0, 0 }; - for (int i = 0; i < 4; i++) { - if (first_key_w > 0) { - first_key_w = int(first_key_w * 1.375); + for ( int i = 0; i < 4; i++ ) + { + if ( first_key_w > 0 ) + { + first_key_w = int( first_key_w * 1.375 ); - if (kb == &kbList[KB_105] && i == 3) - first_key_w = int(key_w * 1.275); + if ( kb == &kbList[ KB_105 ] && i == 3 ) + { + first_key_w = int( key_w * 1.275 ); + } - p.drawRoundedRect(QRectF(6, y, first_key_w, key_w), rx, rx); + p.drawRoundedRect( QRectF( 6, y, first_key_w, key_w ), rx, rx ); x = 6 + first_key_w + space; } - else { + else + { first_key_w = key_w; } + bool last_end = ( i == 1 && !kb->kb_extended_return ); + int rw = usable_width - x; + int ii = 0; - bool last_end = (i==1 && ! kb->kb_extended_return); - int rw=usable_width-x; - int ii=0; + for ( int k : kb->keys.at( i ) ) + { + QRectF rect = QRectF( x, y, key_w, key_w ); - for (int k : kb->keys.at(i)) { - QRectF rect = QRectF(x, y, key_w, key_w); + if ( ii == kb->keys.at( i ).size() - 1 && last_end ) + { + rect.setWidth( rw ); + } - if (ii == kb->keys.at(i).size()-1 && last_end) - rect.setWidth(rw); + p.drawRoundedRect( rect, rx, rx ); - p.drawRoundedRect(rect, rx, rx); + rect.adjust( 5, 1, 0, 0 ); - rect.adjust(5, 1, 0, 0); + p.setPen( QColor( 0x9e, 0xde, 0x00 ) ); + p.setFont( upperFont ); + p.drawText( rect, Qt::AlignLeft | Qt::AlignTop, shift_text( k ) ); - p.setPen(QColor(0x9e, 0xde, 0x00)); - p.setFont(upperFont); - p.drawText(rect, Qt::AlignLeft | Qt::AlignTop, shift_text(k)); + rect.setBottom( rect.bottom() - 2.5 ); - rect.setBottom(rect.bottom() - 2.5); - - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setFont(lowerFont); - p.drawText(rect, Qt::AlignLeft | Qt::AlignBottom, regular_text(k)); + p.setPen( QColor( 0xff, 0xff, 0xff ) ); + p.setFont( lowerFont ); + p.drawText( rect, Qt::AlignLeft | Qt::AlignBottom, regular_text( k ) ); rw = rw - space - key_w; x = x + space + key_w; - ii = ii+1; + ii = ii + 1; - p.setPen(pen); + p.setPen( pen ); } + remaining_x[ i ] = x; + remaining_widths[ i ] = rw; - remaining_x[i] = x; - remaining_widths[i] = rw; - - if (i != 1 && i != 2) - p.drawRoundedRect(QRectF(x, y, rw, key_w), rx, rx); + if ( i != 1 && i != 2 ) + { + p.drawRoundedRect( QRectF( x, y, rw, key_w ), rx, rx ); + } y = y + space + key_w; } - if (kb->kb_extended_return) { - rx=rx*2; - int x1 = remaining_x[1]; - int y1 = 6 + key_w*1 + space*1; - int w1 = remaining_widths[1]; - int x2 = remaining_x[2]; - int y2 = 6 + key_w*2 + space*2; + if ( kb->kb_extended_return ) + { + rx = rx * 2; + int x1 = remaining_x[ 1 ]; + int y1 = 6 + key_w * 1 + space * 1; + int w1 = remaining_widths[ 1 ]; + int x2 = remaining_x[ 2 ]; + int y2 = 6 + key_w * 2 + space * 2; // this is some serious crap... but it has to be so // maybe one day keyboards won't look like this... // one can only hope QPainterPath pp; - pp.moveTo(x1, y1+rx); - pp.arcTo(x1, y1, rx, rx, 180, -90); - pp.lineTo(x1+w1-rx, y1); - pp.arcTo(x1+w1-rx, y1, rx, rx, 90, -90); - pp.lineTo(x1+w1, y2+key_w-rx); - pp.arcTo(x1+w1-rx, y2+key_w-rx, rx, rx, 0, -90); - pp.lineTo(x2+rx, y2+key_w); - pp.arcTo(x2, y2+key_w-rx, rx, rx, -90, -90); - pp.lineTo(x2, y1+key_w); - pp.lineTo(x1+rx, y1+key_w); - pp.arcTo(x1, y1+key_w-rx, rx, rx, -90, -90); + pp.moveTo( x1, y1 + rx ); + pp.arcTo( x1, y1, rx, rx, 180, -90 ); + pp.lineTo( x1 + w1 - rx, y1 ); + pp.arcTo( x1 + w1 - rx, y1, rx, rx, 90, -90 ); + pp.lineTo( x1 + w1, y2 + key_w - rx ); + pp.arcTo( x1 + w1 - rx, y2 + key_w - rx, rx, rx, 0, -90 ); + pp.lineTo( x2 + rx, y2 + key_w ); + pp.arcTo( x2, y2 + key_w - rx, rx, rx, -90, -90 ); + pp.lineTo( x2, y1 + key_w ); + pp.lineTo( x1 + rx, y1 + key_w ); + pp.arcTo( x1, y1 + key_w - rx, rx, rx, -90, -90 ); pp.closeSubpath(); - p.drawPath(pp); + p.drawPath( pp ); } - else { - x= remaining_x[2]; - y = 6 + key_w*2 + space*2; - p.drawRoundedRect(QRectF(x, y, remaining_widths[2], key_w), rx, rx); + else + { + x = remaining_x[ 2 ]; + y = 6 + key_w * 2 + space * 2; + p.drawRoundedRect( QRectF( x, y, remaining_widths[ 2 ], key_w ), rx, rx ); } - QWidget::paintEvent(event); + QWidget::paintEvent( event ); } diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.h b/src/modules/keyboard/keyboardwidget/keyboardpreview.h index 881866147..f09f9b5f5 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.h +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.h @@ -1,6 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -23,17 +25,17 @@ #ifndef KEYBOARDPREVIEW_H #define KEYBOARDPREVIEW_H -#include -#include +#include #include #include -#include #include -#include +#include #include #include +#include #include #include +#include class KeyBoardPreview : public QWidget @@ -41,40 +43,46 @@ class KeyBoardPreview : public QWidget Q_OBJECT public: explicit KeyBoardPreview( QWidget* parent = nullptr ); - - void setLayout(QString layout); - void setVariant(QString variant); + + void setLayout( QString layout ); + void setVariant( QString variant ); private: - enum KB_TYPE { KB_104, KB_105, KB_106 }; - - struct KB { - bool kb_extended_return; - QList > keys; + enum KB_TYPE + { + KB_104, + KB_105, + KB_106 }; - struct Code { + struct KB + { + bool kb_extended_return; + QList< QList< int > > keys; + }; + + struct Code + { QString plain, shift, ctrl, alt; }; QString layout, variant; QFont lowerFont, upperFont; - KB* kb, kbList[3]; - QList codes; + KB *kb, kbList[ 3 ]; + QList< Code > codes; int space, usable_width, key_w; void loadInfo(); bool loadCodes(); - QString regular_text(int index); - QString shift_text(int index); - QString ctrl_text(int index); - QString alt_text(int index); - QString fromUnicodeString(QString raw); + QString regular_text( int index ); + QString shift_text( int index ); + QString ctrl_text( int index ); + QString alt_text( int index ); + QString fromUnicodeString( QString raw ); protected: - void paintEvent(QPaintEvent* event); - void resizeEvent(QResizeEvent* event); - + void paintEvent( QPaintEvent* event ); + void resizeEvent( QResizeEvent* event ); }; -#endif // KEYBOARDPREVIEW_H +#endif // KEYBOARDPREVIEW_H diff --git a/src/modules/keyboardq/KeyboardQmlViewStep.cpp b/src/modules/keyboardq/KeyboardQmlViewStep.cpp index 783349075..a5c1f9435 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.cpp +++ b/src/modules/keyboardq/KeyboardQmlViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboardq/KeyboardQmlViewStep.h b/src/modules/keyboardq/KeyboardQmlViewStep.h index 22826f2cd..b1e7e15e7 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.h +++ b/src/modules/keyboardq/KeyboardQmlViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index f2b1f4a50..411032404 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Alexandre Arnt - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Alexandre Arnt + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicensePage.h b/src/modules/license/LicensePage.h index dcd3ea7b4..8493825b5 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Alexandre Arnt - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Alexandre Arnt + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicenseViewStep.cpp b/src/modules/license/LicenseViewStep.cpp index 89cddf27f..24ae5652a 100644 --- a/src/modules/license/LicenseViewStep.cpp +++ b/src/modules/license/LicenseViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicenseViewStep.h b/src/modules/license/LicenseViewStep.h index 6bfab4246..3aef1f7f3 100644 --- a/src/modules/license/LicenseViewStep.h +++ b/src/modules/license/LicenseViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicenseWidget.cpp b/src/modules/license/LicenseWidget.cpp index 09d2230e5..a5f6d688a 100644 --- a/src/modules/license/LicenseWidget.cpp +++ b/src/modules/license/LicenseWidget.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Alexandre Arnt - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Alexandre Arnt + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/LicenseWidget.h b/src/modules/license/LicenseWidget.h index a386ae353..08aa031c5 100644 --- a/src/modules/license/LicenseWidget.h +++ b/src/modules/license/LicenseWidget.h @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Anke Boersma - * Copyright 2015, Alexandre Arnt - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2015 Alexandre Arnt + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/license/README.md b/src/modules/license/README.md index 4c9862c8a..0ad7a636e 100644 --- a/src/modules/license/README.md +++ b/src/modules/license/README.md @@ -1,11 +1,25 @@ ### License Approval Module ---------- -For distributions shipping proprietary software, this module creates a globalstorage entry when the user accepts or declines one or more presented End User License Agreements files. -The number of licenses shown are configurable. The license.conf file has a few examples of how to add URLs. -If you do not want to include this module in your Calamares build, add ```-DSKIP_MODULES="license"``` to your build settings (CMake call). + + +For distributions shipping proprietary software, this module creates a +Global Storage entry when the user accepts or declines one or more of +the End User License Agreements files that are presented here. + +The number of licenses shown are configurable. The `license.conf` file +has a few examples of how to add URLs. + +If you do not want to include this module in your Calamares build, +add `-DSKIP_MODULES="license"` to your build settings (CMake call). + +How to implement the removal or not installing of proprietary software is +up to any distribution to implement. For example, proprietary graphics +drivers cannot simply be removed in the packages module, a free version +will need to be installed. -How to implement the removal or not installing of proprietary software is up to any distribution to implement. For example, proprietary graphics drivers cannot simply be removed in the packages module, a free version will need to be installed. An example of where the licenseAgree globalstorage entry is used: https://github.com/KaOSx/calamares/blob/master/src/modules/nonfree_drivers/main.py diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 5bbe20038..ae4f772ad 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -2,7 +2,6 @@ * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index d95606d99..cbebf9844 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -2,7 +2,6 @@ * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index db33f0c3d..a3b0a4d2c 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LCLocaleDialog.h b/src/modules/locale/LCLocaleDialog.h index 81e4cb547..389c98ba6 100644 --- a/src/modules/locale/LCLocaleDialog.h +++ b/src/modules/locale/LCLocaleDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index 055907228..41f315f0b 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 2e02bc02a..de3da1d74 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 4f2d321b5..57dbfe540 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 9ffb96c25..34f4d783b 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 0a40da861..735e5d2ce 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index aa8c4c241..2d90a6609 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2015, Rohan Garg + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Rohan Garg + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/SetTimezoneJob.h b/src/modules/locale/SetTimezoneJob.h index 7b93770bb..b4e04edf2 100644 --- a/src/modules/locale/SetTimezoneJob.h +++ b/src/modules/locale/SetTimezoneJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/images/bg.png.license b/src/modules/locale/images/bg.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/locale/images/bg.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/locale/images/pin.png.license b/src/modules/locale/images/pin.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/locale/images/pin.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index 22bd263d6..1d1c1f806 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.h b/src/modules/locale/timezonewidget/TimeZoneImage.h index ee02bfbfd..6c77303a5 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.h +++ b/src/modules/locale/timezonewidget/TimeZoneImage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 778f0535d..b2c0efc5b 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index c15570b52..dc95429de 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index d60664a8f..6531e59a2 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018,2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 20182020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index bbafd5abb..261c1cfc2 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index d414825dd..3a2041bc0 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/localeq/Offline.qml b/src/modules/localeq/Offline.qml index 8e9d91280..72170711d 100644 --- a/src/modules/localeq/Offline.qml +++ b/src/modules/localeq/Offline.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/localeq/i18n.qml b/src/modules/localeq/i18n.qml index 6907b1ba8..06f871b28 100644 --- a/src/modules/localeq/i18n.qml +++ b/src/modules/localeq/i18n.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/localeq/img/chevron-left-solid.svg.license b/src/modules/localeq/img/chevron-left-solid.svg.license new file mode 100644 index 000000000..5a578a8a2 --- /dev/null +++ b/src/modules/localeq/img/chevron-left-solid.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 https://github.com/FortAwesome/Font-Awesome +SPDX-License-Identifier: CC-BY-4.0 diff --git a/src/modules/localeq/img/locale.svg.license b/src/modules/localeq/img/locale.svg.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/localeq/img/locale.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/img/minus.png.license b/src/modules/localeq/img/minus.png.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/localeq/img/minus.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/img/pin.svg.license b/src/modules/localeq/img/pin.svg.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/localeq/img/pin.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/img/plus.png.license b/src/modules/localeq/img/plus.png.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/localeq/img/plus.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/img/worldmap.png.license b/src/modules/localeq/img/worldmap.png.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/localeq/img/worldmap.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index a2013f5de..f862e2d08 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp index 90d64d5a6..63b5d753d 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp @@ -1,19 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LuksBootKeyFileJob.h" diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h index de9b9c677..780f90883 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h @@ -1,19 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LUKSBOOTKEYFILEJOB_H diff --git a/src/modules/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp index fc535e356..d70b0fed4 100644 --- a/src/modules/machineid/MachineIdJob.cpp +++ b/src/modules/machineid/MachineIdJob.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Kevin Kofler - * Copyright 2016, Philip Müller - * Copyright 2017, Alf Gaida - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Kevin Kofler + * SPDX-FileCopyrightText: 2016 Philip Müller + * SPDX-FileCopyrightText: 2017 Alf Gaida + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/machineid/MachineIdJob.h b/src/modules/machineid/MachineIdJob.h index 08943392a..91d091b16 100644 --- a/src/modules/machineid/MachineIdJob.h +++ b/src/modules/machineid/MachineIdJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/machineid/Tests.cpp b/src/modules/machineid/Tests.cpp index 2b6a9b1d1..af2dcee3f 100644 --- a/src/modules/machineid/Tests.cpp +++ b/src/modules/machineid/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -130,7 +131,7 @@ MachineIdTests::testJob() // Prepare part of the target filesystem { - QVERIFY( system->createTargetDirs("/etc") ); + QVERIFY( system->createTargetDirs( "/etc" ) ); auto r = system->createTargetFile( "/etc/machine-id", "Hello" ); QVERIFY( !r.failed() ); QVERIFY( r ); @@ -164,7 +165,7 @@ MachineIdTests::testJob() QFileInfo fi( "/tmp/var/lib/dbus/machine-id" ); QVERIFY( fi.exists() ); QVERIFY( fi.isSymLink() ); - QCOMPARE( fi.size(), 5); + QCOMPARE( fi.size(), 5 ); #endif } tempRoot.setAutoRemove( true ); // All tests succeeded diff --git a/src/modules/machineid/Workers.cpp b/src/modules/machineid/Workers.cpp index 76e466435..67910ce9a 100644 --- a/src/modules/machineid/Workers.cpp +++ b/src/modules/machineid/Workers.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Kevin Kofler - * Copyright 2016, Philip Müller - * Copyright 2017, Alf Gaida - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Kevin Kofler + * SPDX-FileCopyrightText: 2016 Philip Müller + * SPDX-FileCopyrightText: 2017 Alf Gaida + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/machineid/Workers.h b/src/modules/machineid/Workers.h index 8cb8d74ff..8e6926760 100644 --- a/src/modules/machineid/Workers.h +++ b/src/modules/machineid/Workers.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/Config.cpp b/src/modules/netinstall/Config.cpp index 062518221..8383b51af 100644 --- a/src/modules/netinstall/Config.cpp +++ b/src/modules/netinstall/Config.cpp @@ -1,9 +1,10 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/Config.h b/src/modules/netinstall/Config.h index 781c9be5d..a7e979827 100644 --- a/src/modules/netinstall/Config.h +++ b/src/modules/netinstall/Config.h @@ -1,8 +1,9 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 755b17999..309adc490 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -1,9 +1,10 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 13a106eaf..c680360d4 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -1,8 +1,9 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index e99b43830..3b82ff5e0 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -1,8 +1,9 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallViewStep.h b/src/modules/netinstall/NetInstallViewStep.h index d2114a346..44299632c 100644 --- a/src/modules/netinstall/NetInstallViewStep.h +++ b/src/modules/netinstall/NetInstallViewStep.h @@ -1,7 +1,8 @@ /* - * Copyright 2016, Luca Giambonini - * Copyright 2016, Lisa Vitolo - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Luca Giambonini + * SPDX-FileCopyrightText: 2016 Lisa Vitolo + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp index dd5047129..b5e6103c8 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017-2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageModel.h b/src/modules/netinstall/PackageModel.h index b4e8fc102..35bc11354 100644 --- a/src/modules/netinstall/PackageModel.h +++ b/src/modules/netinstall/PackageModel.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp index 30a57ac2a..32fcf4296 100644 --- a/src/modules/netinstall/PackageTreeItem.cpp +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageTreeItem.h b/src/modules/netinstall/PackageTreeItem.h index 0b2d506d7..5df703a29 100644 --- a/src/modules/netinstall/PackageTreeItem.h +++ b/src/modules/netinstall/PackageTreeItem.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Kyle Robbertze + * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/README.md b/src/modules/netinstall/README.md deleted file mode 100644 index 0a9db2f22..000000000 --- a/src/modules/netinstall/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Netinstall module - -All of the actual documentation of the netinstall module has moved -into the `netinstall.conf` file; since the configuration file **may** -contain the groups-and-packages list itself, that format is -also described there. diff --git a/src/modules/netinstall/Tests.cpp b/src/modules/netinstall/Tests.cpp index c74e6aafe..1ffc72f3f 100644 --- a/src/modules/netinstall/Tests.cpp +++ b/src/modules/netinstall/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/netinstall.yaml b/src/modules/netinstall/netinstall.yaml index 6a93d84ea..e55bc1b24 100644 --- a/src/modules/netinstall/netinstall.yaml +++ b/src/modules/netinstall/netinstall.yaml @@ -1,5 +1,8 @@ # Example configuration with groups and packages, taken from Chakra Linux. # +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # This example is rather limited. See `netinstall.conf` for full documentation # on the configuration format. The module configuration file `netinstall.conf` # **may** contain the package-list, but that is only useful for static diff --git a/src/modules/notesqml/NotesQmlViewStep.cpp b/src/modules/notesqml/NotesQmlViewStep.cpp index 5a6bbc494..4d0430e95 100644 --- a/src/modules/notesqml/NotesQmlViewStep.cpp +++ b/src/modules/notesqml/NotesQmlViewStep.cpp @@ -1,20 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "NotesQmlViewStep.h" @@ -45,7 +34,7 @@ NotesQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_notesName = new CalamaresUtils::Locale::TranslatedString( qmlLabel, "notes" ); } - Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last + Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last } CALAMARES_PLUGIN_FACTORY_DEFINITION( NotesQmlViewStepFactory, registerPlugin< NotesQmlViewStep >(); ) diff --git a/src/modules/notesqml/NotesQmlViewStep.h b/src/modules/notesqml/NotesQmlViewStep.h index 5ffd4598e..8545b47b9 100644 --- a/src/modules/notesqml/NotesQmlViewStep.h +++ b/src/modules/notesqml/NotesQmlViewStep.h @@ -1,20 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef NOTESQMLVIEWSTEP_H @@ -23,8 +12,8 @@ #include "DllMacro.h" #include "locale/TranslatableConfiguration.h" #include "utils/CalamaresUtilsSystem.h" -#include "utils/Variant.h" #include "utils/PluginFactory.h" +#include "utils/Variant.h" #include "viewpages/QmlViewStep.h" class PLUGINDLLEXPORT NotesQmlViewStep : public Calamares::QmlViewStep @@ -36,7 +25,7 @@ public: virtual ~NotesQmlViewStep() override; QString prettyName() const override; - + void setConfigurationMap( const QVariantMap& configurationMap ) override; private: diff --git a/src/modules/notesqml/examples/notesqml.qml.example b/src/modules/notesqml/examples/notesqml.qml.example index a41fa98fd..b3094f447 100644 --- a/src/modules/notesqml/examples/notesqml.qml.example +++ b/src/modules/notesqml/examples/notesqml.qml.example @@ -1,20 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* Some Calamares internals are available to all QML modules. @@ -25,60 +14,61 @@ */ import calamares.ui 1.0 -import QtQuick 2.7 -import QtQuick.Controls 2.2 -import QtQuick.Window 2.2 -import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.1 + import QtQuick 2.7 import QtQuick.Controls 2.2 import QtQuick.Window 2.2 import QtQuick.Layouts 1.3 import QtQuick.Controls.Material 2.1 -Item { - width: 740 - height: 420 + Item +{ +width: + 740 height : 420 - Flickable { - id: flick - anchors.fill: parent - contentHeight: 800 + Flickable + { + id: + flick anchors + .fill : parent contentHeight : 800 - ScrollBar.vertical: ScrollBar { - id: fscrollbar - width: 10 - policy: ScrollBar.AlwaysOn - } + ScrollBar.vertical : ScrollBar { id : fscrollbar width : 10 policy : ScrollBar.AlwaysOn } - TextArea { - id: intro + TextArea + { + id: + intro x: 1 y: 0 - width: parent.width - fscrollbar.width +width: + parent.width - fscrollbar.width font.pointSize: 14 - textFormat: Text.RichText - antialiasing: true - activeFocusOnPress: false - wrapMode: Text.WordWrap +textFormat: + Text.RichText +antialiasing: + true +activeFocusOnPress: + false +wrapMode: + Text.WordWrap - text: qsTr("

%1

-

This an example QML file, showing options in RichText with Flickable content.

+text: + qsTr( "

%1

+

This an example QML file, showing options in RichText with Flickable content.

-

QML with RichText can use HTML tags, Flickable content is useful for touchscreens.

+

QML with RichText can use HTML tags, Flickable content is useful for touchscreens.

-

This is bold text

-

This is italic text

-

This is underlined text

-

This text will be center-aligned.

-

This is strikethrough

+

This is bold text

+

This is italic text

+

This is underlined text

+

This text will be center-aligned.

+

This is strikethrough

-

Code example: - ls -l /home

+

Code example: + ls -l /home

-

Lists:

-
    -
  • Intel CPU systems
  • -
  • AMD CPU systems
  • -
- -

The vertical scrollbar is adjustable, current width set to 10.

").arg(Branding.string(Branding.VersionedName)) +

Lists:

+
    +
  • Intel CPU systems
  • +
  • AMD CPU systems
  • +
+

The vertical scrollbar is adjustable, current width set to 10.

").arg(Branding.string(Branding.VersionedName)) } } } diff --git a/src/modules/notesqml/notesqml.qml b/src/modules/notesqml/notesqml.qml index 374d9c399..7be5cffa9 100644 --- a/src/modules/notesqml/notesqml.qml +++ b/src/modules/notesqml/notesqml.qml @@ -2,19 +2,8 @@ * * Copyright 2020, Anke Boersma * Copyright 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* Some Calamares internals are available to all QML modules. diff --git a/src/modules/oemid/IDJob.cpp b/src/modules/oemid/IDJob.cpp index 16461b191..19ad85cc9 100644 --- a/src/modules/oemid/IDJob.cpp +++ b/src/modules/oemid/IDJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,52 +28,54 @@ #include #include -IDJob::IDJob(const QString& id, QObject* parent) +IDJob::IDJob( const QString& id, QObject* parent ) : Job( parent ) , m_batchIdentifier( id ) { } -QString IDJob::prettyName() const +QString +IDJob::prettyName() const { return tr( "OEM Batch Identifier" ); } -Calamares::JobResult IDJob::writeId( const QString& dirs, const QString& filename, const QString& contents ) +Calamares::JobResult +IDJob::writeId( const QString& dirs, const QString& filename, const QString& contents ) { if ( !QDir().mkpath( dirs ) ) { cError() << "Could not create directories" << dirs; - return Calamares::JobResult::error( - tr( "OEM Batch Identifier" ), - tr( "Could not create directories %1." ).arg( dirs ) ); + return Calamares::JobResult::error( tr( "OEM Batch Identifier" ), + tr( "Could not create directories %1." ).arg( dirs ) ); } QFile output( QDir( dirs ).filePath( filename ) ); if ( output.exists() ) + { cWarning() << "Existing OEM Batch ID" << output.fileName() << "overwritten."; + } if ( !output.open( QIODevice::WriteOnly ) ) { cError() << "Could not write to" << output.fileName(); - return Calamares::JobResult::error( - tr( "OEM Batch Identifier" ), - tr( "Could not open file %1." ).arg( output.fileName() ) ); + return Calamares::JobResult::error( tr( "OEM Batch Identifier" ), + tr( "Could not open file %1." ).arg( output.fileName() ) ); } if ( output.write( contents.toUtf8() ) < 0 ) { cError() << "Write error on" << output.fileName(); - return Calamares::JobResult::error( - tr( "OEM Batch Identifier" ), - tr( "Could not write to file %1." ).arg( output.fileName() ) ); + return Calamares::JobResult::error( tr( "OEM Batch Identifier" ), + tr( "Could not write to file %1." ).arg( output.fileName() ) ); } output.write( "\n" ); // Ignore error on this one return Calamares::JobResult::ok(); } -Calamares::JobResult IDJob::exec() +Calamares::JobResult +IDJob::exec() { cDebug() << "Setting OEM Batch ID to" << m_batchIdentifier; @@ -84,10 +87,11 @@ Calamares::JobResult IDJob::exec() // Don't bother translating internal errors if ( rootMount.isEmpty() && Calamares::Settings::instance()->doChroot() ) - return Calamares::JobResult::internalError( - "OEM Batch Identifier", - "No rootMountPoint is set, but a chroot is required. " - "Is there a module before oemid that sets up the partitions?", - Calamares::JobResult::InvalidConfiguration ); - return writeId( Calamares::Settings::instance()->doChroot() ? rootMount + targetDir : targetDir, targetFile, m_batchIdentifier ); + return Calamares::JobResult::internalError( "OEM Batch Identifier", + "No rootMountPoint is set, but a chroot is required. " + "Is there a module before oemid that sets up the partitions?", + Calamares::JobResult::InvalidConfiguration ); + return writeId( Calamares::Settings::instance()->doChroot() ? rootMount + targetDir : targetDir, + targetFile, + m_batchIdentifier ); } diff --git a/src/modules/oemid/IDJob.h b/src/modules/oemid/IDJob.h index 845a3f451..dd8bd5e24 100644 --- a/src/modules/oemid/IDJob.h +++ b/src/modules/oemid/IDJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +37,7 @@ private: Calamares::JobResult writeId( const QString&, const QString&, const QString& ); QString m_batchIdentifier; -} ; +}; #endif diff --git a/src/modules/oemid/OEMViewStep.cpp b/src/modules/oemid/OEMViewStep.cpp index 8a12bd17c..85de722dc 100644 --- a/src/modules/oemid/OEMViewStep.cpp +++ b/src/modules/oemid/OEMViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,22 +39,18 @@ public: { m_ui->setupUi( this ); - CALAMARES_RETRANSLATE( - m_ui->retranslateUi( this ); - ) + CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); ) } virtual ~OEMPage() override; - + Ui_OEMPage* m_ui; -} ; +}; -OEMPage::~OEMPage() -{ -} +OEMPage::~OEMPage() {} -OEMViewStep::OEMViewStep(QObject* parent) +OEMViewStep::OEMViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( nullptr ) , m_visited( false ) @@ -63,86 +60,106 @@ OEMViewStep::OEMViewStep(QObject* parent) OEMViewStep::~OEMViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } -bool OEMViewStep::isBackEnabled() const +bool +OEMViewStep::isBackEnabled() const { return true; } -bool OEMViewStep::isNextEnabled() const +bool +OEMViewStep::isNextEnabled() const { return true; } -bool OEMViewStep::isAtBeginning() const +bool +OEMViewStep::isAtBeginning() const { return true; } -bool OEMViewStep::isAtEnd() const +bool +OEMViewStep::isAtEnd() const { return true; } -static QString substitute( QString s ) +static QString +substitute( QString s ) { QString t_date = QStringLiteral( "@@DATE@@" ); if ( s.contains( t_date ) ) { auto date = QDate::currentDate(); - s = s.replace( t_date, date.toString( Qt::ISODate )); + s = s.replace( t_date, date.toString( Qt::ISODate ) ); } return s; } -void OEMViewStep::onActivate() +void +OEMViewStep::onActivate() { if ( !m_widget ) - (void) widget(); + { + (void)widget(); + } if ( !m_visited && m_widget ) + { m_widget->m_ui->batchIdentifier->setText( m_user_batchIdentifier ); + } m_visited = true; ViewStep::onActivate(); } -void OEMViewStep::onLeave() +void +OEMViewStep::onLeave() { m_user_batchIdentifier = m_widget->m_ui->batchIdentifier->text(); ViewStep::onLeave(); } -QString OEMViewStep::prettyName() const +QString +OEMViewStep::prettyName() const { return tr( "OEM Configuration" ); } -QString OEMViewStep::prettyStatus() const +QString +OEMViewStep::prettyStatus() const { return tr( "Set the OEM Batch Identifier to %1." ).arg( m_user_batchIdentifier ); } -QWidget * OEMViewStep::widget() +QWidget* +OEMViewStep::widget() { - if (!m_widget) + if ( !m_widget ) + { m_widget = new OEMPage; + } return m_widget; } -Calamares::JobList OEMViewStep::jobs() const +Calamares::JobList +OEMViewStep::jobs() const { return Calamares::JobList() << Calamares::job_ptr( new IDJob( m_user_batchIdentifier ) ); } -void OEMViewStep::setConfigurationMap(const QVariantMap& configurationMap) +void +OEMViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_conf_batchIdentifier = CalamaresUtils::getString( configurationMap, "batch-identifier" ); m_user_batchIdentifier = substitute( m_conf_batchIdentifier ); } -CALAMARES_PLUGIN_FACTORY_DEFINITION( OEMViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( OEMViewStepFactory, registerPlugin< OEMViewStep >(); ) diff --git a/src/modules/oemid/OEMViewStep.h b/src/modules/oemid/OEMViewStep.h index 1f0e58915..342c62d60 100644 --- a/src/modules/oemid/OEMViewStep.h +++ b/src/modules/oemid/OEMViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/ItemAppData.cpp b/src/modules/packagechooser/ItemAppData.cpp index ed0ba9223..4adebb5c3 100644 --- a/src/modules/packagechooser/ItemAppData.cpp +++ b/src/modules/packagechooser/ItemAppData.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/ItemAppData.h b/src/modules/packagechooser/ItemAppData.h index 72617ff0c..c811ae4d5 100644 --- a/src/modules/packagechooser/ItemAppData.h +++ b/src/modules/packagechooser/ItemAppData.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/ItemAppStream.cpp b/src/modules/packagechooser/ItemAppStream.cpp index 83837a9ca..e397f8a15 100644 --- a/src/modules/packagechooser/ItemAppStream.cpp +++ b/src/modules/packagechooser/ItemAppStream.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/ItemAppStream.h b/src/modules/packagechooser/ItemAppStream.h index c44b84b06..cbfccdc90 100644 --- a/src/modules/packagechooser/ItemAppStream.h +++ b/src/modules/packagechooser/ItemAppStream.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp index 16f50abab..ac59f929c 100644 --- a/src/modules/packagechooser/PackageChooserPage.cpp +++ b/src/modules/packagechooser/PackageChooserPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageChooserPage.h b/src/modules/packagechooser/PackageChooserPage.h index b4ef2169b..a5ce6d2e5 100644 --- a/src/modules/packagechooser/PackageChooserPage.h +++ b/src/modules/packagechooser/PackageChooserPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageChooserViewStep.cpp b/src/modules/packagechooser/PackageChooserViewStep.cpp index 759c6eeab..fb64727f7 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.cpp +++ b/src/modules/packagechooser/PackageChooserViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageChooserViewStep.h b/src/modules/packagechooser/PackageChooserViewStep.h index 9e9087971..f74abe376 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.h +++ b/src/modules/packagechooser/PackageChooserViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageModel.cpp b/src/modules/packagechooser/PackageModel.cpp index 12995fad5..dd8903fc9 100644 --- a/src/modules/packagechooser/PackageModel.cpp +++ b/src/modules/packagechooser/PackageModel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/PackageModel.h b/src/modules/packagechooser/PackageModel.h index ee3b30185..2dff3834a 100644 --- a/src/modules/packagechooser/PackageModel.h +++ b/src/modules/packagechooser/PackageModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/Tests.cpp b/src/modules/packagechooser/Tests.cpp index da355dc96..0e9968814 100644 --- a/src/modules/packagechooser/Tests.cpp +++ b/src/modules/packagechooser/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -77,7 +78,8 @@ PackageChooserTests::testAppData() QCOMPARE( p1.description.get(), QStringLiteral( "Calamares is an installer program for Linux distributions." ) ); // .. but en_GB doesn't have an entry in description, so uses QCOMPARE( p1.description.get( QLocale( "en_GB" ) ), QStringLiteral( "Calamares Linux Installer" ) ); - QCOMPARE( p1.description.get( QLocale( "nl" ) ), QStringLiteral( "Calamares is een installatieprogramma voor Linux distributies." ) ); + QCOMPARE( p1.description.get( QLocale( "nl" ) ), + QStringLiteral( "Calamares is een installatieprogramma voor Linux distributies." ) ); QVERIFY( p1.screenshot.isNull() ); m.insert( "id", "calamares" ); @@ -85,7 +87,8 @@ PackageChooserTests::testAppData() PackageItem p2 = fromAppData( m ); QVERIFY( p2.isValid() ); QCOMPARE( p2.id, QStringLiteral( "calamares" ) ); - QCOMPARE( p2.description.get( QLocale( "nl" ) ), QStringLiteral( "Calamares is een installatieprogramma voor Linux distributies." ) ); + QCOMPARE( p2.description.get( QLocale( "nl" ) ), + QStringLiteral( "Calamares is een installatieprogramma voor Linux distributies." ) ); QVERIFY( !p2.screenshot.isNull() ); #endif } diff --git a/src/modules/packagechooser/Tests.h b/src/modules/packagechooser/Tests.h index 62efe92cc..716f930e3 100644 --- a/src/modules/packagechooser/Tests.h +++ b/src/modules/packagechooser/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/packagechooser/images/calamares.png.license b/src/modules/packagechooser/images/calamares.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/packagechooser/images/calamares.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/packagechooser/images/no-selection.png.license b/src/modules/packagechooser/images/no-selection.png.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/packagechooser/images/no-selection.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/partition/README.md b/src/modules/partition/README.md index 3491b309b..cbebd589e 100644 --- a/src/modules/partition/README.md +++ b/src/modules/partition/README.md @@ -1,5 +1,11 @@ # Architecture + + ## Overview The heart of the module is the PartitionCoreModule class. It holds Qt models for diff --git a/src/modules/partition/core/BootLoaderModel.cpp b/src/modules/partition/core/BootLoaderModel.cpp index 10b88be76..13ce2a379 100644 --- a/src/modules/partition/core/BootLoaderModel.cpp +++ b/src/modules/partition/core/BootLoaderModel.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/BootLoaderModel.h b/src/modules/partition/core/BootLoaderModel.h index 8daa8ca04..1157879ef 100644 --- a/src/modules/partition/core/BootLoaderModel.h +++ b/src/modules/partition/core/BootLoaderModel.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/ColorUtils.cpp b/src/modules/partition/core/ColorUtils.cpp index d04c4110d..9b86cdb46 100644 --- a/src/modules/partition/core/ColorUtils.cpp +++ b/src/modules/partition/core/ColorUtils.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/ColorUtils.h b/src/modules/partition/core/ColorUtils.h index 3c65b75b2..ab4e86481 100644 --- a/src/modules/partition/core/ColorUtils.h +++ b/src/modules/partition/core/ColorUtils.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index 086d87da5..00b896724 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -125,7 +125,8 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) m_swapChoices = getSwapChoices( configurationMap ); bool nameFound = false; // In the name table (ignored, falls back to first entry in table) - m_initialInstallChoice = PartitionActions::Choices::installChoiceNames().find( CalamaresUtils::getString( configurationMap, "initialPartitioningChoice" ), nameFound ); + m_initialInstallChoice = PartitionActions::Choices::installChoiceNames().find( + CalamaresUtils::getString( configurationMap, "initialPartitioningChoice" ), nameFound ); } void diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index 041801b9e..dfba17523 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2018-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/DeviceList.h b/src/modules/partition/core/DeviceList.h index 306d90739..986c6b05f 100644 --- a/src/modules/partition/core/DeviceList.h +++ b/src/modules/partition/core/DeviceList.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index f881d265b..3e42ab029 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/DeviceModel.h b/src/modules/partition/core/DeviceModel.h index 29d1598ad..a03405cb6 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2017, 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/KPMHelpers.cpp b/src/modules/partition/core/KPMHelpers.cpp index 730d1d9af..ba8238531 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * Copyright 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/KPMHelpers.h b/src/modules/partition/core/KPMHelpers.h index 326993362..743dcc790 100644 --- a/src/modules/partition/core/KPMHelpers.h +++ b/src/modules/partition/core/KPMHelpers.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/OsproberEntry.h b/src/modules/partition/core/OsproberEntry.h index 1e1fd0eca..9313a6bb5 100644 --- a/src/modules/partition/core/OsproberEntry.h +++ b/src/modules/partition/core/OsproberEntry.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 4dd3dcbf3..1d5484671 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * Copyright 2018-2019 Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -459,7 +460,7 @@ isEfiBootable( const Partition* candidate ) while ( root && !root->isRoot() ) { root = root->parent(); - cDebug() << Logger::SubEntry << "moved towards root" << Logger::Pointer(root); + cDebug() << Logger::SubEntry << "moved towards root" << Logger::Pointer( root ); } // Strange case: no root found, no partition table node? @@ -469,7 +470,7 @@ isEfiBootable( const Partition* candidate ) } const PartitionTable* table = dynamic_cast< const PartitionTable* >( root ); - cDebug() << Logger::SubEntry << "partition table" << Logger::Pointer(table) << "type" + cDebug() << Logger::SubEntry << "partition table" << Logger::Pointer( table ) << "type" << ( table ? table->type() : PartitionTable::TableType::unknownTableType ); return table && ( table->type() == PartitionTable::TableType::gpt ) && flags.testFlag( KPM_PARTITION_FLAG( Boot ) ); } diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index 0db49d043..a56cb8a60 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2018-2019 Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index cae5025bf..dba02318e 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index 6f4b41cc8..63dfccb11 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 8856778b3..370caebfb 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -1,10 +1,11 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot - * Copyright 2018, Caio Carvalho - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Caio Carvalho + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index f88544ae8..b75f67d75 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index fe38bf2d6..415fdc5c1 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 9f9cd2d1e..3ddbe192b 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 367b7487a..3df9b21c2 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2018-2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2018-2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index da691d200..52bd96e42 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2018-2019, Collabora Ltd - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2018-2019 Collabora Ltd + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index 1135f5719..662e26032 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionModel.h b/src/modules/partition/core/PartitionModel.h index 7066aa5a5..9d1e40f20 100644 --- a/src/modules/partition/core/PartitionModel.h +++ b/src/modules/partition/core/PartitionModel.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2017, 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/BootInfoWidget.cpp b/src/modules/partition/gui/BootInfoWidget.cpp index 696628c37..d1df9ae33 100644 --- a/src/modules/partition/gui/BootInfoWidget.cpp +++ b/src/modules/partition/gui/BootInfoWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,16 +25,16 @@ #include "utils/Retranslator.h" #include -#include #include +#include BootInfoWidget::BootInfoWidget( QWidget* parent ) : QWidget( parent ) , m_bootIcon( new QLabel ) , m_bootLabel( new QLabel ) { - m_bootIcon->setObjectName("bootInfoIcon"); - m_bootLabel->setObjectName("bootInfoLabel"); + m_bootIcon->setObjectName( "bootInfoIcon" ); + m_bootLabel->setObjectName( "bootInfoLabel" ); QHBoxLayout* mainLayout = new QHBoxLayout; setLayout( mainLayout ); @@ -46,16 +47,15 @@ BootInfoWidget::BootInfoWidget( QWidget* parent ) m_bootIcon->setMargin( 0 ); m_bootIcon->setFixedSize( iconSize ); - m_bootIcon->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::BootEnvironment, - CalamaresUtils::Original, - iconSize ) ); - + m_bootIcon->setPixmap( + CalamaresUtils::defaultPixmap( CalamaresUtils::BootEnvironment, CalamaresUtils::Original, iconSize ) ); + QFontMetrics fm = QFontMetrics( QFont() ); m_bootLabel->setMinimumWidth( fm.boundingRect( "BIOS" ).width() + CalamaresUtils::defaultFontHeight() / 2 ); m_bootLabel->setAlignment( Qt::AlignCenter ); QPalette palette; - palette.setBrush( QPalette::Foreground, QColor( "#4D4D4D" ) ); //dark grey + palette.setBrush( QPalette::Foreground, QColor( "#4D4D4D" ) ); //dark grey m_bootIcon->setAutoFillBackground( true ); m_bootLabel->setAutoFillBackground( true ); @@ -100,7 +100,6 @@ BootInfoWidget::retranslateUi() "This is automatic, unless " "you choose manual partitioning, in which case you must " "set it up on your own." ); - } m_bootLabel->setToolTip( bootToolTip ); } diff --git a/src/modules/partition/gui/BootInfoWidget.h b/src/modules/partition/gui/BootInfoWidget.h index 257b3904a..5865a3b9c 100644 --- a/src/modules/partition/gui/BootInfoWidget.h +++ b/src/modules/partition/gui/BootInfoWidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,4 +39,4 @@ private: QLabel* m_bootLabel; }; -#endif // BOOTINFOWIDGET_H +#endif // BOOTINFOWIDGET_H diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index d7b5e497e..b032065cf 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017-2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,16 +60,16 @@ #include #include #include +#include #include #include -#include #include -using PartitionActions::Choices::SwapChoice; -using CalamaresUtils::Partition::PartitionIterator; -using CalamaresUtils::Partition::isPartitionFreeSpace; -using CalamaresUtils::Partition::findPartitionByPath; using Calamares::PrettyRadioButton; +using CalamaresUtils::Partition::findPartitionByPath; +using CalamaresUtils::Partition::isPartitionFreeSpace; +using CalamaresUtils::Partition::PartitionIterator; +using PartitionActions::Choices::SwapChoice; /** * @brief ChoicePage::ChoicePage is the default constructor. Called on startup as part of @@ -107,7 +108,9 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) m_allowManualPartitioning = gs->value( "allowManualPartitioning" ).toBool(); if ( FileSystem::typeForName( m_defaultFsType ) == FileSystem::Unknown ) + { m_defaultFsType = "ext4"; + } // Set up drives combo m_mainLayout->setDirection( QBoxLayout::TopToBottom ); @@ -134,12 +137,9 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) CalamaresUtils::unmarginLayout( m_itemsLayout ); // Drive selector + preview - CALAMARES_RETRANSLATE( - retranslateUi( this ); - m_drivesLabel->setText( tr( "Select storage de&vice:" ) ); - m_previewBeforeLabel->setText( tr( "Current:" ) ); - m_previewAfterLabel->setText( tr( "After:" ) ); - ) + CALAMARES_RETRANSLATE( retranslateUi( this ); m_drivesLabel->setText( tr( "Select storage de&vice:" ) ); + m_previewBeforeLabel->setText( tr( "Current:" ) ); + m_previewAfterLabel->setText( tr( "After:" ) ); ) m_previewBeforeFrame->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); m_previewAfterFrame->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); @@ -151,8 +151,7 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) } -ChoicePage::~ChoicePage() -{} +ChoicePage::~ChoicePage() {} void @@ -165,9 +164,7 @@ ChoicePage::init( PartitionCoreModule* core ) // We need to do this because a PCM revert invalidates the deviceModel. - connect( core, &PartitionCoreModule::reverted, - this, [=] - { + connect( core, &PartitionCoreModule::reverted, this, [=] { m_drivesCombo->setModel( core->deviceModel() ); m_drivesCombo->setCurrentIndex( m_lastSelectedDeviceIndex ); } ); @@ -175,12 +172,11 @@ ChoicePage::init( PartitionCoreModule* core ) connect( m_drivesCombo, static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), - this, &ChoicePage::applyDeviceChoice ); + this, + &ChoicePage::applyDeviceChoice ); - connect( m_encryptWidget, &EncryptWidget::stateChanged, - this, &ChoicePage::onEncryptWidgetStateChanged ); - connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, - this, &ChoicePage::onHomeCheckBoxStateChanged ); + connect( m_encryptWidget, &EncryptWidget::stateChanged, this, &ChoicePage::onEncryptWidgetStateChanged ); + connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, this, &ChoicePage::onHomeCheckBoxStateChanged ); ChoicePage::applyDeviceChoice(); } @@ -195,13 +191,21 @@ static inline QComboBox* createCombo( const QSet< SwapChoice >& s, SwapChoice dflt ) { QComboBox* box = new QComboBox; - for ( SwapChoice c : { SwapChoice::NoSwap, SwapChoice::SmallSwap, SwapChoice::FullSwap, SwapChoice::ReuseSwap, SwapChoice::SwapFile } ) + for ( SwapChoice c : { SwapChoice::NoSwap, + SwapChoice::SmallSwap, + SwapChoice::FullSwap, + SwapChoice::ReuseSwap, + SwapChoice::SwapFile } ) if ( s.contains( c ) ) + { box->addItem( QString(), c ); + } int dfltIndex = box->findData( dflt ); if ( dfltIndex >= 0 ) + { box->setCurrentIndex( dfltIndex ); + } return box; } @@ -233,30 +237,26 @@ ChoicePage::setupChoices() // 3) Manual // TBD: upgrade option? - QSize iconSize( CalamaresUtils::defaultIconSize().width() * 2, - CalamaresUtils::defaultIconSize().height() * 2 ); + QSize iconSize( CalamaresUtils::defaultIconSize().width() * 2, CalamaresUtils::defaultIconSize().height() * 2 ); m_grp = new QButtonGroup( this ); m_alongsideButton = new PrettyRadioButton; m_alongsideButton->setIconSize( iconSize ); - m_alongsideButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionAlongside, - CalamaresUtils::Original, - iconSize ) ); + m_alongsideButton->setIcon( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionAlongside, CalamaresUtils::Original, iconSize ) ); m_alongsideButton->addToGroup( m_grp, InstallChoice::Alongside ); m_eraseButton = new PrettyRadioButton; m_eraseButton->setIconSize( iconSize ); - m_eraseButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionEraseAuto, - CalamaresUtils::Original, - iconSize ) ); + m_eraseButton->setIcon( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionEraseAuto, CalamaresUtils::Original, iconSize ) ); m_eraseButton->addToGroup( m_grp, InstallChoice::Erase ); m_replaceButton = new PrettyRadioButton; m_replaceButton->setIconSize( iconSize ); - m_replaceButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionReplaceOs, - CalamaresUtils::Original, - iconSize ) ); + m_replaceButton->setIcon( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionReplaceOs, CalamaresUtils::Original, iconSize ) ); m_replaceButton->addToGroup( m_grp, InstallChoice::Replace ); // Fill up swap options @@ -273,17 +273,14 @@ ChoicePage::setupChoices() m_somethingElseButton = new PrettyRadioButton; m_somethingElseButton->setIconSize( iconSize ); - m_somethingElseButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionManual, - CalamaresUtils::Original, - iconSize ) ); + m_somethingElseButton->setIcon( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionManual, CalamaresUtils::Original, iconSize ) ); m_itemsLayout->addWidget( m_somethingElseButton ); m_somethingElseButton->addToGroup( m_grp, InstallChoice::Manual ); m_itemsLayout->addStretch(); - connect( m_grp, QOverload::of( &QButtonGroup::buttonToggled ), - this, [ this ]( int id, bool checked ) - { + connect( m_grp, QOverload< int, bool >::of( &QButtonGroup::buttonToggled ), this, [this]( int id, bool checked ) { if ( checked ) // An action was picked. { m_choice = static_cast< InstallChoice >( id ); @@ -291,10 +288,11 @@ ChoicePage::setupChoices() emit actionChosen(); } - else // An action was unpicked, either on its own or because of another selection. + else // An action was unpicked, either on its own or because of another selection. { if ( m_grp->checkedButton() == nullptr ) // If no other action is chosen, we must - { // set m_choice to NoChoice and reset previews. + { + // set m_choice to NoChoice and reset previews. m_choice = InstallChoice::NoChoice; updateNextEnabled(); @@ -307,17 +305,16 @@ ChoicePage::setupChoices() m_rightLayout->setStretchFactor( m_previewBeforeFrame, 0 ); m_rightLayout->setStretchFactor( m_previewAfterFrame, 0 ); - connect( this, &ChoicePage::actionChosen, - this, &ChoicePage::onActionChanged ); + connect( this, &ChoicePage::actionChosen, this, &ChoicePage::onActionChanged ); if ( m_eraseSwapChoiceComboBox ) - connect( m_eraseSwapChoiceComboBox, QOverload::of(&QComboBox::currentIndexChanged), - this, &ChoicePage::onEraseSwapChoiceChanged ); + connect( m_eraseSwapChoiceComboBox, + QOverload< int >::of( &QComboBox::currentIndexChanged ), + this, + &ChoicePage::onEraseSwapChoiceChanged ); - CALAMARES_RETRANSLATE( - m_somethingElseButton->setText( tr( "Manual partitioning
" - "You can create or resize partitions yourself." ) ); - updateSwapChoicesTr( m_eraseSwapChoiceComboBox ); - ) + CALAMARES_RETRANSLATE( m_somethingElseButton->setText( tr( "Manual partitioning
" + "You can create or resize partitions yourself." ) ); + updateSwapChoicesTr( m_eraseSwapChoiceComboBox ); ) } @@ -331,9 +328,8 @@ Device* ChoicePage::selectedDevice() { Device* currentDevice = nullptr; - currentDevice = m_core->deviceModel()->deviceForIndex( - m_core->deviceModel()->index( - m_drivesCombo->currentIndex() ) ); + currentDevice + = m_core->deviceModel()->deviceForIndex( m_core->deviceModel()->index( m_drivesCombo->currentIndex() ) ); return currentDevice; } @@ -367,16 +363,13 @@ ChoicePage::applyDeviceChoice() if ( m_core->isDirty() ) { - ScanningDialog::run( QtConcurrent::run( [ = ] - { - QMutexLocker locker( &m_coreMutex ); - m_core->revertAllDevices(); - } ), - [ this ] - { - continueApplyDeviceChoice(); - }, - this ); + ScanningDialog::run( + QtConcurrent::run( [=] { + QMutexLocker locker( &m_coreMutex ); + m_core->revertAllDevices(); + } ), + [this] { continueApplyDeviceChoice(); }, + this ); } else { @@ -426,7 +419,8 @@ ChoicePage::onEraseSwapChoiceChanged() { if ( m_eraseSwapChoiceComboBox ) { - m_eraseSwapChoice = static_cast( m_eraseSwapChoiceComboBox->currentData().toInt() ); + m_eraseSwapChoice + = static_cast< PartitionActions::Choices::SwapChoice >( m_eraseSwapChoiceComboBox->currentData().toInt() ); onActionChanged(); } } @@ -434,85 +428,85 @@ ChoicePage::onEraseSwapChoiceChanged() void ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) { - m_beforePartitionBarsView->selectionModel()-> - disconnect( SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ) ); + m_beforePartitionBarsView->selectionModel()->disconnect( SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ) ); m_beforePartitionBarsView->selectionModel()->clearSelection(); m_beforePartitionBarsView->selectionModel()->clearCurrentIndex(); switch ( choice ) { case InstallChoice::Erase: + { + auto gs = Calamares::JobQueue::instance()->globalStorage(); + + PartitionActions::Choices::AutoPartitionOptions options { gs->value( "defaultFileSystemType" ).toString(), + m_encryptWidget->passphrase(), + gs->value( "efiSystemPartition" ).toString(), + CalamaresUtils::GiBtoBytes( + gs->value( "requiredStorageGiB" ).toDouble() ), + m_eraseSwapChoice }; + + if ( m_core->isDirty() ) { - auto gs = Calamares::JobQueue::instance()->globalStorage(); - - PartitionActions::Choices::AutoPartitionOptions options { - gs->value( "defaultFileSystemType" ).toString(), - m_encryptWidget->passphrase(), - gs->value( "efiSystemPartition" ).toString(), - CalamaresUtils::GiBtoBytes( gs->value( "requiredStorageGiB" ).toDouble() ), - m_eraseSwapChoice - }; - - if ( m_core->isDirty() ) - { - ScanningDialog::run( QtConcurrent::run( [ = ] - { + ScanningDialog::run( + QtConcurrent::run( [=] { QMutexLocker locker( &m_coreMutex ); m_core->revertDevice( selectedDevice() ); } ), - [ = ] - { + [=] { PartitionActions::doAutopartition( m_core, selectedDevice(), options ); emit deviceChosen(); }, this ); - } - else - { - PartitionActions::doAutopartition( m_core, selectedDevice(), options ); - emit deviceChosen(); - } } - break; + else + { + PartitionActions::doAutopartition( m_core, selectedDevice(), options ); + emit deviceChosen(); + } + } + break; case InstallChoice::Replace: if ( m_core->isDirty() ) { - ScanningDialog::run( QtConcurrent::run( [ = ] - { - QMutexLocker locker( &m_coreMutex ); - m_core->revertDevice( selectedDevice() ); - } ), - []{}, - this ); + ScanningDialog::run( + QtConcurrent::run( [=] { + QMutexLocker locker( &m_coreMutex ); + m_core->revertDevice( selectedDevice() ); + } ), + [] {}, + this ); } updateNextEnabled(); - connect( m_beforePartitionBarsView->selectionModel(), SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), - this, SLOT( onPartitionToReplaceSelected( QModelIndex, QModelIndex ) ), + connect( m_beforePartitionBarsView->selectionModel(), + SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), + this, + SLOT( onPartitionToReplaceSelected( QModelIndex, QModelIndex ) ), Qt::UniqueConnection ); break; case InstallChoice::Alongside: if ( m_core->isDirty() ) { - ScanningDialog::run( QtConcurrent::run( [ = ] - { - QMutexLocker locker( &m_coreMutex ); - m_core->revertDevice( selectedDevice() ); - } ), - [this] - { - // We need to reupdate after reverting because the splitter widget is - // not a true view. - updateActionChoicePreview( currentChoice() ); - updateNextEnabled(); - }, - this ); + ScanningDialog::run( + QtConcurrent::run( [=] { + QMutexLocker locker( &m_coreMutex ); + m_core->revertDevice( selectedDevice() ); + } ), + [this] { + // We need to reupdate after reverting because the splitter widget is + // not a true view. + updateActionChoicePreview( currentChoice() ); + updateNextEnabled(); + }, + this ); } updateNextEnabled(); - connect( m_beforePartitionBarsView->selectionModel(), SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), - this, SLOT( doAlongsideSetupSplitter( QModelIndex, QModelIndex ) ), + connect( m_beforePartitionBarsView->selectionModel(), + SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), + this, + SLOT( doAlongsideSetupSplitter( QModelIndex, QModelIndex ) ), Qt::UniqueConnection ); break; case InstallChoice::NoChoice: @@ -524,19 +518,24 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) void -ChoicePage::doAlongsideSetupSplitter( const QModelIndex& current, - const QModelIndex& previous ) +ChoicePage::doAlongsideSetupSplitter( const QModelIndex& current, const QModelIndex& previous ) { Q_UNUSED( previous ) if ( !current.isValid() ) + { return; + } if ( !m_afterPartitionSplitterWidget ) + { return; + } const PartitionModel* modl = qobject_cast< const PartitionModel* >( current.model() ); if ( !modl ) + { return; + } Partition* part = modl->partitionForIndex( current ); if ( !part ) @@ -545,21 +544,20 @@ ChoicePage::doAlongsideSetupSplitter( const QModelIndex& current, return; } - double requiredStorageGB = Calamares::JobQueue::instance() - ->globalStorage() - ->value( "requiredStorageGiB" ) - .toDouble(); + double requiredStorageGB + = Calamares::JobQueue::instance()->globalStorage()->value( "requiredStorageGiB" ).toDouble(); qint64 requiredStorageB = CalamaresUtils::GiBtoBytes( requiredStorageGB + 0.1 + 2.0 ); - m_afterPartitionSplitterWidget->setSplitPartition( - part->partitionPath(), - qRound64( part->used() * 1.1 ), - part->capacity() - requiredStorageB, - part->capacity() / 2 ); + m_afterPartitionSplitterWidget->setSplitPartition( part->partitionPath(), + qRound64( part->used() * 1.1 ), + part->capacity() - requiredStorageB, + part->capacity() / 2 ); if ( m_isEfi ) + { setupEfiSystemPartitionSelector(); + } cDebug() << "Partition selected for Alongside."; @@ -573,20 +571,17 @@ ChoicePage::onEncryptWidgetStateChanged() EncryptWidget::Encryption state = m_encryptWidget->state(); if ( m_choice == InstallChoice::Erase ) { - if ( state == EncryptWidget::Encryption::Confirmed || - state == EncryptWidget::Encryption::Disabled ) + if ( state == EncryptWidget::Encryption::Confirmed || state == EncryptWidget::Encryption::Disabled ) + { applyActionChoice( m_choice ); + } } else if ( m_choice == InstallChoice::Replace ) { - if ( m_beforePartitionBarsView && - m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() && - ( state == EncryptWidget::Encryption::Confirmed || - state == EncryptWidget::Encryption::Disabled ) ) + if ( m_beforePartitionBarsView && m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() + && ( state == EncryptWidget::Encryption::Confirmed || state == EncryptWidget::Encryption::Disabled ) ) { - doReplaceSelectedPartition( m_beforePartitionBarsView-> - selectionModel()-> - currentIndex() ); + doReplaceSelectedPartition( m_beforePartitionBarsView->selectionModel()->currentIndex() ); } } updateNextEnabled(); @@ -596,12 +591,10 @@ ChoicePage::onEncryptWidgetStateChanged() void ChoicePage::onHomeCheckBoxStateChanged() { - if ( currentChoice() == InstallChoice::Replace && - m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() ) + if ( currentChoice() == InstallChoice::Replace + && m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() ) { - doReplaceSelectedPartition( m_beforePartitionBarsView-> - selectionModel()-> - currentIndex() ); + doReplaceSelectedPartition( m_beforePartitionBarsView->selectionModel()->currentIndex() ); } } @@ -610,7 +603,9 @@ void ChoicePage::onLeave() { if ( m_choice == InstallChoice::Alongside ) + { doAlongsideApply(); + } if ( m_isEfi && ( m_choice == InstallChoice::Alongside || m_choice == InstallChoice::Replace ) ) { @@ -618,27 +613,22 @@ ChoicePage::onLeave() if ( efiSystemPartitions.count() == 1 ) { PartitionInfo::setMountPoint( - efiSystemPartitions.first(), - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "efiSystemPartition" ).toString() ); + efiSystemPartitions.first(), + Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString() ); } else if ( efiSystemPartitions.count() > 1 && m_efiComboBox ) { PartitionInfo::setMountPoint( - efiSystemPartitions.at( m_efiComboBox->currentIndex() ), - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "efiSystemPartition" ).toString() ); + efiSystemPartitions.at( m_efiComboBox->currentIndex() ), + Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString() ); } else { - cError() << "cannot set up EFI system partition.\nESP count:" - << efiSystemPartitions.count() << "\nm_efiComboBox:" - << m_efiComboBox; + cError() << "cannot set up EFI system partition.\nESP count:" << efiSystemPartitions.count() + << "\nm_efiComboBox:" << m_efiComboBox; } } - else // installPath is then passed to the bootloader module for MBR setup + else // installPath is then passed to the bootloader module for MBR setup { if ( !m_isEfi ) { @@ -646,15 +636,21 @@ ChoicePage::onLeave() { auto d_p = selectedDevice(); if ( d_p ) + { m_core->setBootLoaderInstallPath( d_p->deviceNode() ); + } else + { cWarning() << "No device selected for bootloader."; + } } else { QVariant var = m_bootloaderComboBox->currentData( BootLoaderModel::BootLoaderPathRole ); if ( !var.isValid() ) + { return; + } m_core->setBootLoaderInstallPath( var.toString() ); } } @@ -666,13 +662,14 @@ void ChoicePage::doAlongsideApply() { Q_ASSERT( m_afterPartitionSplitterWidget->splitPartitionSize() >= 0 ); - Q_ASSERT( m_afterPartitionSplitterWidget->newPartitionSize() >= 0 ); + Q_ASSERT( m_afterPartitionSplitterWidget->newPartitionSize() >= 0 ); QMutexLocker locker( &m_coreMutex ); - QString path = m_beforePartitionBarsView-> - selectionModel()-> - currentIndex().data( PartitionModel::PartitionPathRole ).toString(); + QString path = m_beforePartitionBarsView->selectionModel() + ->currentIndex() + .data( PartitionModel::PartitionPathRole ) + .toString(); DeviceModel* dm = m_core->deviceModel(); for ( int i = 0; i < dm->rowCount(); ++i ) @@ -683,15 +680,16 @@ ChoicePage::doAlongsideApply() { qint64 firstSector = candidate->firstSector(); qint64 oldLastSector = candidate->lastSector(); - qint64 newLastSector = firstSector + - m_afterPartitionSplitterWidget->splitPartitionSize() / - dev->logicalSize(); + qint64 newLastSector + = firstSector + m_afterPartitionSplitterWidget->splitPartitionSize() / dev->logicalSize(); m_core->resizePartition( dev, candidate, firstSector, newLastSector ); - m_core->layoutApply( dev, newLastSector + 2, oldLastSector, - m_encryptWidget->passphrase(), candidate->parent(), - candidate->roles() - ); + m_core->layoutApply( dev, + newLastSector + 2, + oldLastSector, + m_encryptWidget->passphrase(), + candidate->parent(), + candidate->roles() ); m_core->dumpQueue(); break; @@ -701,12 +699,13 @@ ChoicePage::doAlongsideApply() void -ChoicePage::onPartitionToReplaceSelected( const QModelIndex& current, - const QModelIndex& previous ) +ChoicePage::onPartitionToReplaceSelected( const QModelIndex& current, const QModelIndex& previous ) { Q_UNUSED( previous ) if ( !current.isValid() ) + { return; + } // Reset state on selection regardless of whether this will be used. m_reuseHomeCheckBox->setChecked( false ); @@ -719,111 +718,114 @@ void ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) { if ( !current.isValid() ) + { return; + } QString* homePartitionPath = new QString(); bool doReuseHomePartition = m_reuseHomeCheckBox->isChecked(); // NOTE: using by-ref captures because we need to write homePartitionPath and // doReuseHomePartition *after* the device revert, for later use. - ScanningDialog::run( QtConcurrent::run( - [ this, current ]( QString* homePartitionPath, bool doReuseHomePartition ) - { - QMutexLocker locker( &m_coreMutex ); + ScanningDialog::run( + QtConcurrent::run( + [this, current]( QString* homePartitionPath, bool doReuseHomePartition ) { + QMutexLocker locker( &m_coreMutex ); - if ( m_core->isDirty() ) - { - m_core->revertDevice( selectedDevice() ); - } - - // if the partition is unallocated(free space), we don't replace it but create new one - // with the same first and last sector - Partition* selectedPartition = - static_cast< Partition* >( current.data( PartitionModel::PartitionPtrRole ) - .value< void* >() ); - if ( isPartitionFreeSpace( selectedPartition ) ) - { - //NOTE: if the selected partition is free space, we don't deal with - // a separate /home partition at all because there's no existing - // rootfs to read it from. - PartitionRole newRoles = PartitionRole( PartitionRole::Primary ); - PartitionNode* newParent = selectedDevice()->partitionTable(); - - if ( selectedPartition->parent() ) - { - Partition* parent = dynamic_cast< Partition* >( selectedPartition->parent() ); - if ( parent && parent->roles().has( PartitionRole::Extended ) ) + if ( m_core->isDirty() ) { - newRoles = PartitionRole( PartitionRole::Logical ); - newParent = findPartitionByPath( { selectedDevice() }, parent->partitionPath() ); + m_core->revertDevice( selectedDevice() ); } - } - m_core->layoutApply( selectedDevice(), selectedPartition->firstSector(), - selectedPartition->lastSector(), - m_encryptWidget->passphrase(), newParent, newRoles - ); - } - else - { - // We can't use the PartitionPtrRole because we need to make changes to the - // main DeviceModel, not the immutable copy. - QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); - selectedPartition = findPartitionByPath( { selectedDevice() }, - partPath ); - if ( selectedPartition ) - { - // Find out is the selected partition has a rootfs. If yes, then make the - // m_reuseHomeCheckBox visible and set its text to something meaningful. - homePartitionPath->clear(); - for ( const OsproberEntry& osproberEntry : m_core->osproberEntries() ) - if ( osproberEntry.path == partPath ) - *homePartitionPath = osproberEntry.homePath; - if ( homePartitionPath->isEmpty() ) - doReuseHomePartition = false; - - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - - PartitionActions::doReplacePartition( - m_core, - selectedDevice(), - selectedPartition, - { - gs->value( "defaultFileSystemType" ).toString(), - m_encryptWidget->passphrase() - } ); - Partition* homePartition = findPartitionByPath( { selectedDevice() }, - *homePartitionPath ); - - if ( homePartition && doReuseHomePartition ) + // if the partition is unallocated(free space), we don't replace it but create new one + // with the same first and last sector + Partition* selectedPartition + = static_cast< Partition* >( current.data( PartitionModel::PartitionPtrRole ).value< void* >() ); + if ( isPartitionFreeSpace( selectedPartition ) ) { - PartitionInfo::setMountPoint( homePartition, "/home" ); - gs->insert( "reuseHome", true ); + //NOTE: if the selected partition is free space, we don't deal with + // a separate /home partition at all because there's no existing + // rootfs to read it from. + PartitionRole newRoles = PartitionRole( PartitionRole::Primary ); + PartitionNode* newParent = selectedDevice()->partitionTable(); + + if ( selectedPartition->parent() ) + { + Partition* parent = dynamic_cast< Partition* >( selectedPartition->parent() ); + if ( parent && parent->roles().has( PartitionRole::Extended ) ) + { + newRoles = PartitionRole( PartitionRole::Logical ); + newParent = findPartitionByPath( { selectedDevice() }, parent->partitionPath() ); + } + } + + m_core->layoutApply( selectedDevice(), + selectedPartition->firstSector(), + selectedPartition->lastSector(), + m_encryptWidget->passphrase(), + newParent, + newRoles ); } else { - gs->insert( "reuseHome", false ); + // We can't use the PartitionPtrRole because we need to make changes to the + // main DeviceModel, not the immutable copy. + QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); + selectedPartition = findPartitionByPath( { selectedDevice() }, partPath ); + if ( selectedPartition ) + { + // Find out is the selected partition has a rootfs. If yes, then make the + // m_reuseHomeCheckBox visible and set its text to something meaningful. + homePartitionPath->clear(); + for ( const OsproberEntry& osproberEntry : m_core->osproberEntries() ) + if ( osproberEntry.path == partPath ) + { + *homePartitionPath = osproberEntry.homePath; + } + if ( homePartitionPath->isEmpty() ) + { + doReuseHomePartition = false; + } + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + + PartitionActions::doReplacePartition( + m_core, + selectedDevice(), + selectedPartition, + { gs->value( "defaultFileSystemType" ).toString(), m_encryptWidget->passphrase() } ); + Partition* homePartition = findPartitionByPath( { selectedDevice() }, *homePartitionPath ); + + if ( homePartition && doReuseHomePartition ) + { + PartitionInfo::setMountPoint( homePartition, "/home" ); + gs->insert( "reuseHome", true ); + } + else + { + gs->insert( "reuseHome", false ); + } + } } - } - } - }, homePartitionPath, doReuseHomePartition ), - [ = ] - { - m_reuseHomeCheckBox->setVisible( !homePartitionPath->isEmpty() ); - if ( !homePartitionPath->isEmpty() ) - m_reuseHomeCheckBox->setText( tr( "Reuse %1 as home partition for %2." ) - .arg( *homePartitionPath ) - .arg( Calamares::Branding::instance()->shortProductName() ) ); - delete homePartitionPath; + }, + homePartitionPath, + doReuseHomePartition ), + [=] { + m_reuseHomeCheckBox->setVisible( !homePartitionPath->isEmpty() ); + if ( !homePartitionPath->isEmpty() ) + m_reuseHomeCheckBox->setText( tr( "Reuse %1 as home partition for %2." ) + .arg( *homePartitionPath ) + .arg( Calamares::Branding::instance()->shortProductName() ) ); + delete homePartitionPath; - if ( m_isEfi ) - setupEfiSystemPartitionSelector(); + if ( m_isEfi ) + setupEfiSystemPartitionSelector(); - updateNextEnabled(); - if ( !m_bootloaderComboBox.isNull() && - m_bootloaderComboBox->currentIndex() < 0 ) - m_bootloaderComboBox->setCurrentIndex( m_lastSelectedDeviceIndex ); - }, this ); + updateNextEnabled(); + if ( !m_bootloaderComboBox.isNull() && m_bootloaderComboBox->currentIndex() < 0 ) + m_bootloaderComboBox->setCurrentIndex( m_lastSelectedDeviceIndex ); + }, + this ); } @@ -847,17 +849,19 @@ ChoicePage::updateDeviceStatePreview() auto layout = m_previewBeforeFrame->layout(); if ( layout ) + { layout->deleteLater(); // Doesn't like nullptr + } layout = new QVBoxLayout; m_previewBeforeFrame->setLayout( layout ); CalamaresUtils::unmarginLayout( layout ); layout->setSpacing( 6 ); - PartitionBarsView::NestedPartitionsMode mode = Calamares::JobQueue::instance()->globalStorage()-> - value( "drawNestedPartitions" ).toBool() ? - PartitionBarsView::DrawNestedPartitions : - PartitionBarsView::NoNestedPartitions; + PartitionBarsView::NestedPartitionsMode mode + = Calamares::JobQueue::instance()->globalStorage()->value( "drawNestedPartitions" ).toBool() + ? PartitionBarsView::DrawNestedPartitions + : PartitionBarsView::NoNestedPartitions; m_beforePartitionBarsView = new PartitionBarsView( m_previewBeforeFrame ); m_beforePartitionBarsView->setNestedPartitionsMode( mode ); m_beforePartitionLabelsView = new PartitionLabelsView( m_previewBeforeFrame ); @@ -875,7 +879,9 @@ ChoicePage::updateDeviceStatePreview() auto sm = m_beforePartitionLabelsView->selectionModel(); m_beforePartitionLabelsView->setSelectionModel( m_beforePartitionBarsView->selectionModel() ); if ( sm ) + { sm->deleteLater(); + } switch ( m_choice ) { @@ -914,17 +920,19 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) auto oldlayout = m_previewAfterFrame->layout(); if ( oldlayout ) + { oldlayout->deleteLater(); + } QVBoxLayout* layout = new QVBoxLayout; m_previewAfterFrame->setLayout( layout ); CalamaresUtils::unmarginLayout( layout ); layout->setSpacing( 6 ); - PartitionBarsView::NestedPartitionsMode mode = Calamares::JobQueue::instance()->globalStorage()-> - value( "drawNestedPartitions" ).toBool() ? - PartitionBarsView::DrawNestedPartitions : - PartitionBarsView::NoNestedPartitions; + PartitionBarsView::NestedPartitionsMode mode + = Calamares::JobQueue::instance()->globalStorage()->value( "drawNestedPartitions" ).toBool() + ? PartitionBarsView::DrawNestedPartitions + : PartitionBarsView::NoNestedPartitions; m_reuseHomeCheckBox->hide(); Calamares::JobQueue::instance()->globalStorage()->insert( "reuseHome", false ); @@ -932,136 +940,142 @@ ChoicePage::updateActionChoicePreview( ChoicePage::InstallChoice choice ) switch ( choice ) { case InstallChoice::Alongside: + { + if ( m_enableEncryptionWidget ) { - if ( m_enableEncryptionWidget ) - m_encryptWidget->show(); - m_previewBeforeLabel->setText( tr( "Current:" ) ); - m_selectLabel->setText( tr( "Select a partition to shrink, " - "then drag the bottom bar to resize" ) ); - m_selectLabel->show(); + m_encryptWidget->show(); + } + m_previewBeforeLabel->setText( tr( "Current:" ) ); + m_selectLabel->setText( tr( "Select a partition to shrink, " + "then drag the bottom bar to resize" ) ); + m_selectLabel->show(); - m_afterPartitionSplitterWidget = new PartitionSplitterWidget( m_previewAfterFrame ); - m_afterPartitionSplitterWidget->init( selectedDevice(), mode == PartitionBarsView::DrawNestedPartitions ); - layout->addWidget( m_afterPartitionSplitterWidget ); + m_afterPartitionSplitterWidget = new PartitionSplitterWidget( m_previewAfterFrame ); + m_afterPartitionSplitterWidget->init( selectedDevice(), mode == PartitionBarsView::DrawNestedPartitions ); + layout->addWidget( m_afterPartitionSplitterWidget ); - QLabel* sizeLabel = new QLabel( m_previewAfterFrame ); - layout->addWidget( sizeLabel ); - sizeLabel->setWordWrap( true ); - connect( m_afterPartitionSplitterWidget, &PartitionSplitterWidget::partitionResized, this, - [ this, sizeLabel ]( const QString& path, qint64 size, qint64 sizeNext ) + QLabel* sizeLabel = new QLabel( m_previewAfterFrame ); + layout->addWidget( sizeLabel ); + sizeLabel->setWordWrap( true ); + connect( m_afterPartitionSplitterWidget, + &PartitionSplitterWidget::partitionResized, + this, + [this, sizeLabel]( const QString& path, qint64 size, qint64 sizeNext ) { + Q_UNUSED( path ) + sizeLabel->setText( + tr( "%1 will be shrunk to %2MiB and a new " + "%3MiB partition will be created for %4." ) + .arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() ) + .arg( CalamaresUtils::BytesToMiB( size ) ) + .arg( CalamaresUtils::BytesToMiB( sizeNext ) ) + .arg( Calamares::Branding::instance()->shortProductName() ) ); + } ); + + m_previewAfterFrame->show(); + m_previewAfterLabel->show(); + + SelectionFilter filter = [this]( const QModelIndex& index ) { + return PartUtils::canBeResized( + static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); + }; + m_beforePartitionBarsView->setSelectionFilter( filter ); + m_beforePartitionLabelsView->setSelectionFilter( filter ); + + break; + } + case InstallChoice::Erase: + case InstallChoice::Replace: + { + if ( m_enableEncryptionWidget ) + { + m_encryptWidget->show(); + } + m_previewBeforeLabel->setText( tr( "Current:" ) ); + m_afterPartitionBarsView = new PartitionBarsView( m_previewAfterFrame ); + m_afterPartitionBarsView->setNestedPartitionsMode( mode ); + m_afterPartitionLabelsView = new PartitionLabelsView( m_previewAfterFrame ); + m_afterPartitionLabelsView->setExtendedPartitionHidden( mode == PartitionBarsView::NoNestedPartitions ); + m_afterPartitionLabelsView->setCustomNewRootLabel( + Calamares::Branding::instance()->string( Calamares::Branding::BootloaderEntryName ) ); + + PartitionModel* model = m_core->partitionModelForDevice( selectedDevice() ); + + // The QObject parents tree is meaningful for memory management here, + // see qDeleteAll above. + m_afterPartitionBarsView->setModel( model ); + m_afterPartitionLabelsView->setModel( model ); + m_afterPartitionBarsView->setSelectionMode( QAbstractItemView::NoSelection ); + m_afterPartitionLabelsView->setSelectionMode( QAbstractItemView::NoSelection ); + + layout->addWidget( m_afterPartitionBarsView ); + layout->addWidget( m_afterPartitionLabelsView ); + + if ( !m_isEfi ) + { + QWidget* eraseWidget = new QWidget; + + QHBoxLayout* eraseLayout = new QHBoxLayout; + eraseWidget->setLayout( eraseLayout ); + eraseLayout->setContentsMargins( 0, 0, 0, 0 ); + QLabel* eraseBootloaderLabel = new QLabel( eraseWidget ); + eraseLayout->addWidget( eraseBootloaderLabel ); + eraseBootloaderLabel->setText( tr( "Boot loader location:" ) ); + + m_bootloaderComboBox = createBootloaderComboBox( eraseWidget ); + connect( m_core->bootLoaderModel(), &QAbstractItemModel::modelReset, [this]() { + if ( !m_bootloaderComboBox.isNull() ) { - Q_UNUSED( path ) - sizeLabel->setText( tr( "%1 will be shrunk to %2MiB and a new " - "%3MiB partition will be created for %4." ) - .arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() ) - .arg( CalamaresUtils::BytesToMiB( size ) ) - .arg( CalamaresUtils::BytesToMiB( sizeNext ) ) - .arg( Calamares::Branding::instance()->shortProductName() ) ); + Calamares::restoreSelectedBootLoader( *m_bootloaderComboBox, m_core->bootLoaderInstallPath() ); } - ); + } ); + connect( + m_core, + &PartitionCoreModule::deviceReverted, + this, + [this]( Device* dev ) { + Q_UNUSED( dev ) + if ( !m_bootloaderComboBox.isNull() ) + { + if ( m_bootloaderComboBox->model() != m_core->bootLoaderModel() ) + { + m_bootloaderComboBox->setModel( m_core->bootLoaderModel() ); + } - m_previewAfterFrame->show(); - m_previewAfterLabel->show(); + m_bootloaderComboBox->setCurrentIndex( m_lastSelectedDeviceIndex ); + } + }, + Qt::QueuedConnection ); + // ^ Must be Queued so it's sure to run when the widget is already visible. - SelectionFilter filter = [ this ]( const QModelIndex& index ) - { - return PartUtils::canBeResized( - static_cast< Partition* >( - index.data( PartitionModel::PartitionPtrRole ) - .value< void* >() ) ); + eraseLayout->addWidget( m_bootloaderComboBox ); + eraseBootloaderLabel->setBuddy( m_bootloaderComboBox ); + eraseLayout->addStretch(); + + layout->addWidget( eraseWidget ); + } + + m_previewAfterFrame->show(); + m_previewAfterLabel->show(); + + if ( m_choice == InstallChoice::Erase ) + { + m_selectLabel->hide(); + } + else + { + SelectionFilter filter = [this]( const QModelIndex& index ) { + return PartUtils::canBeReplaced( + static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); }; m_beforePartitionBarsView->setSelectionFilter( filter ); m_beforePartitionLabelsView->setSelectionFilter( filter ); - break; + m_selectLabel->show(); + m_selectLabel->setText( tr( "Select a partition to install on" ) ); } - case InstallChoice::Erase: - case InstallChoice::Replace: - { - if ( m_enableEncryptionWidget ) - m_encryptWidget->show(); - m_previewBeforeLabel->setText( tr( "Current:" ) ); - m_afterPartitionBarsView = new PartitionBarsView( m_previewAfterFrame ); - m_afterPartitionBarsView->setNestedPartitionsMode( mode ); - m_afterPartitionLabelsView = new PartitionLabelsView( m_previewAfterFrame ); - m_afterPartitionLabelsView->setExtendedPartitionHidden( mode == PartitionBarsView::NoNestedPartitions ); - m_afterPartitionLabelsView->setCustomNewRootLabel( Calamares::Branding::instance()->string(Calamares::Branding::BootloaderEntryName) ); - PartitionModel* model = m_core->partitionModelForDevice( selectedDevice() ); - - // The QObject parents tree is meaningful for memory management here, - // see qDeleteAll above. - m_afterPartitionBarsView->setModel( model ); - m_afterPartitionLabelsView->setModel( model ); - m_afterPartitionBarsView->setSelectionMode( QAbstractItemView::NoSelection ); - m_afterPartitionLabelsView->setSelectionMode( QAbstractItemView::NoSelection ); - - layout->addWidget( m_afterPartitionBarsView ); - layout->addWidget( m_afterPartitionLabelsView ); - - if ( !m_isEfi ) - { - QWidget* eraseWidget = new QWidget; - - QHBoxLayout* eraseLayout = new QHBoxLayout; - eraseWidget->setLayout( eraseLayout ); - eraseLayout->setContentsMargins( 0, 0, 0, 0 ); - QLabel* eraseBootloaderLabel = new QLabel( eraseWidget ); - eraseLayout->addWidget( eraseBootloaderLabel ); - eraseBootloaderLabel->setText( tr( "Boot loader location:" ) ); - - m_bootloaderComboBox = createBootloaderComboBox( eraseWidget ); - connect( m_core->bootLoaderModel(), &QAbstractItemModel::modelReset, - [ this ]() - { - if ( !m_bootloaderComboBox.isNull() ) - Calamares::restoreSelectedBootLoader( *m_bootloaderComboBox, m_core->bootLoaderInstallPath() ); - } - ); - connect( m_core, &PartitionCoreModule::deviceReverted, this, - [ this ]( Device* dev ) - { - Q_UNUSED( dev ) - if ( !m_bootloaderComboBox.isNull() ) - { - if ( m_bootloaderComboBox->model() != m_core->bootLoaderModel() ) - m_bootloaderComboBox->setModel( m_core->bootLoaderModel() ); - - m_bootloaderComboBox->setCurrentIndex( m_lastSelectedDeviceIndex ); - } - }, Qt::QueuedConnection ); - // ^ Must be Queued so it's sure to run when the widget is already visible. - - eraseLayout->addWidget( m_bootloaderComboBox ); - eraseBootloaderLabel->setBuddy( m_bootloaderComboBox ); - eraseLayout->addStretch(); - - layout->addWidget( eraseWidget ); - } - - m_previewAfterFrame->show(); - m_previewAfterLabel->show(); - - if ( m_choice == InstallChoice::Erase ) - m_selectLabel->hide(); - else - { - SelectionFilter filter = [ this ]( const QModelIndex& index ) - { - return PartUtils::canBeReplaced( - static_cast< Partition* >( - index.data( PartitionModel::PartitionPtrRole ) - .value< void* >() ) ); - }; - m_beforePartitionBarsView->setSelectionFilter( filter ); - m_beforePartitionLabelsView->setSelectionFilter( filter ); - - m_selectLabel->show(); - m_selectLabel->setText( tr( "Select a partition to install on" ) ); - } - - break; - } + break; + } case InstallChoice::NoChoice: case InstallChoice::Manual: m_selectLabel->hide(); @@ -1110,22 +1124,20 @@ ChoicePage::setupEfiSystemPartitionSelector() // Only the already existing ones: QList< Partition* > efiSystemPartitions = m_core->efiSystemPartitions(); - if ( efiSystemPartitions.count() == 0 ) //should never happen + if ( efiSystemPartitions.count() == 0 ) //should never happen { - m_efiLabel->setText( - tr( "An EFI system partition cannot be found anywhere " - "on this system. Please go back and use manual " - "partitioning to set up %1." ) - .arg( Calamares::Branding::instance()->shortProductName() ) ); + m_efiLabel->setText( tr( "An EFI system partition cannot be found anywhere " + "on this system. Please go back and use manual " + "partitioning to set up %1." ) + .arg( Calamares::Branding::instance()->shortProductName() ) ); updateNextEnabled(); } - else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation + else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation { - m_efiLabel->setText( - tr( "The EFI system partition at %1 will be used for " - "starting %2." ) - .arg( efiSystemPartitions.first()->partitionPath() ) - .arg( Calamares::Branding::instance()->shortProductName() ) ); + m_efiLabel->setText( tr( "The EFI system partition at %1 will be used for " + "starting %2." ) + .arg( efiSystemPartitions.first()->partitionPath() ) + .arg( Calamares::Branding::instance()->shortProductName() ) ); } else { @@ -1137,9 +1149,10 @@ ChoicePage::setupEfiSystemPartitionSelector() m_efiComboBox->addItem( efiPartition->partitionPath(), i ); // We pick an ESP on the currently selected device, if possible - if ( efiPartition->devicePath() == selectedDevice()->deviceNode() && - efiPartition->number() == 1 ) + if ( efiPartition->devicePath() == selectedDevice()->deviceNode() && efiPartition->number() == 1 ) + { m_efiComboBox->setCurrentIndex( i ); + } } } } @@ -1152,15 +1165,15 @@ ChoicePage::createBootloaderComboBox( QWidget* parent ) bcb->setModel( m_core->bootLoaderModel() ); // When the chosen bootloader device changes, we update the choice in the PCM - connect( bcb, QOverload::of( &QComboBox::currentIndexChanged ), - this, [this]( int newIndex ) - { + connect( bcb, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, [this]( int newIndex ) { QComboBox* bcb = qobject_cast< QComboBox* >( sender() ); if ( bcb ) { QVariant var = bcb->itemData( newIndex, BootLoaderModel::BootLoaderPathRole ); if ( !var.isValid() ) + { return; + } m_core->setBootLoaderInstallPath( var.toString() ); } } ); @@ -1170,7 +1183,7 @@ ChoicePage::createBootloaderComboBox( QWidget* parent ) static inline void -force_uncheck(QButtonGroup* grp, PrettyRadioButton* button) +force_uncheck( QButtonGroup* grp, PrettyRadioButton* button ) { button->hide(); grp->setExclusive( false ); @@ -1179,7 +1192,7 @@ force_uncheck(QButtonGroup* grp, PrettyRadioButton* button) } static inline QDebug& -operator <<( QDebug& s, PartitionIterator& it ) +operator<<( QDebug& s, PartitionIterator& it ) { s << ( ( *it ) ? ( *it )->deviceNode() : QString( "" ) ); return s; @@ -1195,21 +1208,28 @@ void ChoicePage::setupActions() { Device* currentDevice = selectedDevice(); - OsproberEntryList osproberEntriesForCurrentDevice = - getOsproberEntriesForDevice( currentDevice ); + OsproberEntryList osproberEntriesForCurrentDevice = getOsproberEntriesForDevice( currentDevice ); - cDebug() << "Setting up actions for" << currentDevice->deviceNode() - << "with" << osproberEntriesForCurrentDevice.count() << "entries."; + cDebug() << "Setting up actions for" << currentDevice->deviceNode() << "with" + << osproberEntriesForCurrentDevice.count() << "entries."; if ( currentDevice->partitionTable() ) + { m_deviceInfoWidget->setPartitionTableType( currentDevice->partitionTable()->type() ); + } else + { m_deviceInfoWidget->setPartitionTableType( PartitionTable::unknownTableType ); + } if ( m_allowManualPartitioning ) + { m_somethingElseButton->show(); + } else + { force_uncheck( m_grp, m_somethingElseButton ); + } bool atLeastOneCanBeResized = false; bool atLeastOneCanBeReplaced = false; @@ -1217,16 +1237,15 @@ ChoicePage::setupActions() bool isInactiveRAID = false; #ifdef WITH_KPMCORE4API - if ( currentDevice->type() == Device::Type::SoftwareRAID_Device && - static_cast< SoftwareRAID* >(currentDevice)->status() == SoftwareRAID::Status::Inactive ) + if ( currentDevice->type() == Device::Type::SoftwareRAID_Device + && static_cast< SoftwareRAID* >( currentDevice )->status() == SoftwareRAID::Status::Inactive ) { cDebug() << Logger::SubEntry << "part of an inactive RAID device"; isInactiveRAID = true; } #endif - for ( auto it = PartitionIterator::begin( currentDevice ); - it != PartitionIterator::end( currentDevice ); ++it ) + for ( auto it = PartitionIterator::begin( currentDevice ); it != PartitionIterator::end( currentDevice ); ++it ) { if ( PartUtils::canBeResized( *it ) ) { @@ -1238,7 +1257,7 @@ ChoicePage::setupActions() cDebug() << Logger::SubEntry << "contains replaceable" << it; atLeastOneCanBeReplaced = true; } - if ( (*it)->isMounted() ) + if ( ( *it )->isMounted() ) { atLeastOneIsMounted = true; } @@ -1259,12 +1278,11 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); - ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); ) m_replaceButton->hide(); m_alongsideButton->hide(); @@ -1285,11 +1303,11 @@ ChoicePage::setupActions() "What would you like to do?
" "You will be able to review and confirm your choices " "before any change is made to the storage device." ) - .arg( osName ) ); + .arg( osName ) ); m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1298,8 +1316,7 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); - ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); ) } else { @@ -1312,7 +1329,7 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1320,8 +1337,7 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); - ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); ) } } else @@ -1338,7 +1354,7 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1346,8 +1362,7 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()->shortVersionedName() ) ); - ) + .arg( Calamares::Branding::instance()->shortVersionedName() ) ); ) } #ifdef DEBUG_PARTITION_UNSAFE @@ -1361,7 +1376,9 @@ ChoicePage::setupActions() #endif if ( atLeastOneCanBeReplaced ) + { m_replaceButton->show(); + } else { cDebug() << "Replace button suppressed because none can be replaced."; @@ -1369,7 +1386,9 @@ ChoicePage::setupActions() } if ( atLeastOneCanBeResized ) + { m_alongsideButton->show(); + } else { cDebug() << "Alongside button suppressed because none can be resized."; @@ -1377,12 +1396,13 @@ ChoicePage::setupActions() } if ( !atLeastOneIsMounted && !isInactiveRAID ) + { m_eraseButton->show(); // None mounted + } else { cDebug() << "Erase button suppressed" - << "mount?" << atLeastOneIsMounted - << "raid?" << isInactiveRAID; + << "mount?" << atLeastOneIsMounted << "raid?" << isInactiveRAID; force_uncheck( m_grp, m_eraseButton ); } @@ -1392,7 +1412,7 @@ ChoicePage::setupActions() if ( isEfi && !efiSystemPartitionFound ) { cWarning() << "System is EFI but there's no EFI system partition, " - "DISABLING alongside and replace features."; + "DISABLING alongside and replace features."; m_alongsideButton->hide(); m_replaceButton->hide(); } @@ -1406,7 +1426,9 @@ ChoicePage::getOsproberEntriesForDevice( Device* device ) const for ( const OsproberEntry& entry : m_core->osproberEntries() ) { if ( entry.path.startsWith( device->deviceNode() ) ) + { eList.append( entry ); + } } return eList; } @@ -1450,7 +1472,7 @@ ChoicePage::calculateNextEnabled() const enabled = true; } - if (!enabled) + if ( !enabled ) { cDebug() << "No valid choice made"; return false; @@ -1470,13 +1492,13 @@ ChoicePage::calculateNextEnabled() const { switch ( m_encryptWidget->state() ) { - case EncryptWidget::Encryption::Unconfirmed: - cDebug() << "No passphrase provided"; - return false; - case EncryptWidget::Encryption::Disabled: - case EncryptWidget::Encryption::Confirmed: - // Checkbox not checked, **or** passphrases match - break; + case EncryptWidget::Encryption::Unconfirmed: + cDebug() << "No passphrase provided"; + return false; + case EncryptWidget::Encryption::Disabled: + case EncryptWidget::Encryption::Confirmed: + // Checkbox not checked, **or** passphrases match + break; } } @@ -1497,12 +1519,14 @@ ChoicePage::updateNextEnabled() } void -ChoicePage::updateSwapChoicesTr(QComboBox* box) +ChoicePage::updateSwapChoicesTr( QComboBox* box ) { if ( !box ) + { return; + } - static_assert(SwapChoice::NoSwap == 0, "Enum values out-of-sync"); + static_assert( SwapChoice::NoSwap == 0, "Enum values out-of-sync" ); for ( int index = 0; index < box->count(); ++index ) { bool ok = false; @@ -1510,28 +1534,32 @@ ChoicePage::updateSwapChoicesTr(QComboBox* box) switch ( value = box->itemData( index ).toInt( &ok ) ) { - // case 0: - case SwapChoice::NoSwap: - // toInt() returns 0 on failure, so check for ok - if ( ok ) // It was explicitly set to 0 - box->setItemText( index, tr( "No Swap" ) ); - else - cWarning() << "Box item" << index << box->itemText( index ) << "has non-integer role."; - break; - case SwapChoice::ReuseSwap: - box->setItemText( index, tr( "Reuse Swap" ) ); - break; - case SwapChoice::SmallSwap: - box->setItemText( index, tr( "Swap (no Hibernate)" ) ); - break; - case SwapChoice::FullSwap: - box->setItemText( index, tr( "Swap (with Hibernate)" ) ); - break; - case SwapChoice::SwapFile: - box->setItemText( index, tr( "Swap to file" ) ); - break; - default: - cWarning() << "Box item" << index << box->itemText( index ) << "has role" << value; + // case 0: + case SwapChoice::NoSwap: + // toInt() returns 0 on failure, so check for ok + if ( ok ) // It was explicitly set to 0 + { + box->setItemText( index, tr( "No Swap" ) ); + } + else + { + cWarning() << "Box item" << index << box->itemText( index ) << "has non-integer role."; + } + break; + case SwapChoice::ReuseSwap: + box->setItemText( index, tr( "Reuse Swap" ) ); + break; + case SwapChoice::SmallSwap: + box->setItemText( index, tr( "Swap (no Hibernate)" ) ); + break; + case SwapChoice::FullSwap: + box->setItemText( index, tr( "Swap (with Hibernate)" ) ); + break; + case SwapChoice::SwapFile: + box->setItemText( index, tr( "Swap to file" ) ); + break; + default: + cWarning() << "Box item" << index << box->itemText( index ) << "has role" << value; } } } diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index af8ee9060..9aa8befed 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2018-2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index a73441bc3..ae500c500 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -1,10 +1,11 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, 2020, Adriaan de Groot - * Copyright 2018, Andrius Štikonas - * Copyright 2018, Caio Carvalho + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Andrius Štikonas + * SPDX-FileCopyrightText: 2018 Caio Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,16 +25,16 @@ #include "ui_CreatePartitionDialog.h" #include "core/ColorUtils.h" -#include "core/PartitionInfo.h" -#include "core/PartUtils.h" #include "core/KPMHelpers.h" +#include "core/PartUtils.h" +#include "core/PartitionInfo.h" #include "gui/PartitionDialogHelpers.h" #include "gui/PartitionSizeController.h" #include "GlobalStorage.h" #include "JobQueue.h" -#include "partition/PartitionQuery.h" #include "partition/FileSystem.h" +#include "partition/PartitionQuery.h" #include "utils/Logger.h" #include @@ -53,16 +54,17 @@ using CalamaresUtils::Partition::untranslatedFS; using CalamaresUtils::Partition::userVisibleFS; -static QSet< FileSystem::Type > s_unmountableFS( -{ - FileSystem::Unformatted, - FileSystem::LinuxSwap, - FileSystem::Extended, - FileSystem::Unknown, - FileSystem::Lvm2_PV -} ); +static QSet< FileSystem::Type > s_unmountableFS( { FileSystem::Unformatted, + FileSystem::LinuxSwap, + FileSystem::Extended, + FileSystem::Unknown, + FileSystem::Lvm2_PV } ); -CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* parentPartition, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget ) +CreatePartitionDialog::CreatePartitionDialog( Device* device, + PartitionNode* parentPartition, + Partition* partition, + const QStringList& usedMountPoints, + QWidget* parentWidget ) : QDialog( parentWidget ) , m_ui( new Ui_CreatePartitionDialog ) , m_partitionSizeController( new PartitionSizeController( this ) ) @@ -74,33 +76,38 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->encryptWidget->setText( tr( "En&crypt" ) ); m_ui->encryptWidget->hide(); - if (m_device->type() != Device::Type::LVM_Device) { + if ( m_device->type() != Device::Type::LVM_Device ) + { m_ui->lvNameLabel->hide(); m_ui->lvNameLineEdit->hide(); } - if (m_device->type() == Device::Type::LVM_Device) { + if ( m_device->type() == Device::Type::LVM_Device ) + { /* LVM logical volume name can consist of: letters numbers _ . - + * It cannot start with underscore _ and must not be equal to . or .. or any entry in /dev/ * QLineEdit accepts QValidator::Intermediate, so we just disable . at the beginning */ - QRegularExpression re(QStringLiteral(R"(^(?!_|\.)[\w\-.+]+)")); - QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this); - m_ui->lvNameLineEdit->setValidator(validator); + QRegularExpression re( QStringLiteral( R"(^(?!_|\.)[\w\-.+]+)" ) ); + QRegularExpressionValidator* validator = new QRegularExpressionValidator( re, this ); + m_ui->lvNameLineEdit->setValidator( validator ); } - standardMountPoints( *(m_ui->mountPointComboBox), partition ? PartitionInfo::mountPoint( partition ) : QString() ); + standardMountPoints( *( m_ui->mountPointComboBox ), + partition ? PartitionInfo::mountPoint( partition ) : QString() ); - if ( device->partitionTable()->type() == PartitionTable::msdos || - device->partitionTable()->type() == PartitionTable::msdos_sectorbased ) + if ( device->partitionTable()->type() == PartitionTable::msdos + || device->partitionTable()->type() == PartitionTable::msdos_sectorbased ) + { initMbrPartitionTypeUi(); + } else + { initGptPartitionTypeUi(); + } // File system; the config value is translated (best-effort) to a type FileSystem::Type defaultFSType; QString untranslatedFSName = PartUtils::findFS( - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "defaultFileSystemType" ).toString(), &defaultFSType ); + Calamares::JobQueue::instance()->globalStorage()->value( "defaultFileSystemType" ).toString(), &defaultFSType ); if ( defaultFSType == FileSystem::Type::Unknown ) { defaultFSType = FileSystem::Type::Ext4; @@ -111,12 +118,13 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par QStringList fsNames; for ( auto fs : FileSystemFactory::map() ) { - if ( fs->supportCreate() != FileSystem::cmdSupportNone && - fs->type() != FileSystem::Extended ) + if ( fs->supportCreate() != FileSystem::cmdSupportNone && fs->type() != FileSystem::Extended ) { fsNames << userVisibleFS( fs ); // This is put into the combobox if ( fs->type() == defaultFSType ) + { defaultFsIndex = fsCounter; + } fsCounter++; } } @@ -126,26 +134,30 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par connect( m_ui->fsComboBox, SIGNAL( activated( int ) ), SLOT( updateMountPointUi() ) ); connect( m_ui->extendedRadioButton, SIGNAL( toggled( bool ) ), SLOT( updateMountPointUi() ) ); - connect( m_ui->mountPointComboBox, &QComboBox::currentTextChanged, this, &CreatePartitionDialog::checkMountPointSelection ); + connect( m_ui->mountPointComboBox, + &QComboBox::currentTextChanged, + this, + &CreatePartitionDialog::checkMountPointSelection ); // Select a default m_ui->fsComboBox->setCurrentIndex( defaultFsIndex ); updateMountPointUi(); - setFlagList( *(m_ui->m_listFlags), static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int(0) ), partition ? PartitionInfo::flags( partition ) : PartitionTable::Flags() ); + setFlagList( *( m_ui->m_listFlags ), + static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int( 0 ) ), + partition ? PartitionInfo::flags( partition ) : PartitionTable::Flags() ); // Checks the initial selection. checkMountPointSelection(); } -CreatePartitionDialog::~CreatePartitionDialog() -{} +CreatePartitionDialog::~CreatePartitionDialog() {} PartitionTable::Flags CreatePartitionDialog::newFlags() const { - return flagsFromList( *(m_ui->m_listFlags) ); + return flagsFromList( *( m_ui->m_listFlags ) ); } void @@ -165,7 +177,9 @@ CreatePartitionDialog::initMbrPartitionTypeUi() } if ( fixedPartitionString.isEmpty() ) + { m_ui->fixedPartitionLabel->hide(); + } else { m_ui->fixedPartitionLabel->setText( fixedPartitionString ); @@ -188,44 +202,33 @@ CreatePartitionDialog::createPartition() { if ( m_role.roles() == PartitionRole::None ) { - m_role = PartitionRole( - m_ui->extendedRadioButton->isChecked() - ? PartitionRole::Extended - : PartitionRole::Primary - ); + m_role = PartitionRole( m_ui->extendedRadioButton->isChecked() ? PartitionRole::Extended + : PartitionRole::Primary ); } qint64 first = m_partitionSizeController->firstSector(); qint64 last = m_partitionSizeController->lastSector(); FileSystem::Type fsType = m_role.has( PartitionRole::Extended ) - ? FileSystem::Extended - : FileSystem::typeForName( m_ui->fsComboBox->currentText() ); + ? FileSystem::Extended + : FileSystem::typeForName( m_ui->fsComboBox->currentText() ); Partition* partition = nullptr; QString luksPassphrase = m_ui->encryptWidget->passphrase(); - if ( m_ui->encryptWidget->state() == EncryptWidget::Encryption::Confirmed && - !luksPassphrase.isEmpty() ) + if ( m_ui->encryptWidget->state() == EncryptWidget::Encryption::Confirmed && !luksPassphrase.isEmpty() ) { partition = KPMHelpers::createNewEncryptedPartition( - m_parent, - *m_device, - m_role, - fsType, first, last, luksPassphrase, newFlags() - ); + m_parent, *m_device, m_role, fsType, first, last, luksPassphrase, newFlags() ); } else { - partition = KPMHelpers::createNewPartition( - m_parent, - *m_device, - m_role, - fsType, first, last, newFlags() - ); + partition = KPMHelpers::createNewPartition( m_parent, *m_device, m_role, fsType, first, last, newFlags() ); } - if (m_device->type() == Device::Type::LVM_Device) { - partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed()); + if ( m_device->type() == Device::Type::LVM_Device ) + { + partition->setPartitionPath( m_device->deviceNode() + QStringLiteral( "/" ) + + m_ui->lvNameLineEdit->text().trimmed() ); } PartitionInfo::setMountPoint( partition, selectedMountPoint( m_ui->mountPointComboBox ) ); @@ -244,9 +247,8 @@ CreatePartitionDialog::updateMountPointUi() FileSystem::Type type = FileSystem::typeForName( m_ui->fsComboBox->currentText() ); enabled = !s_unmountableFS.contains( type ); - if ( FileSystemFactory::map()[FileSystem::Type::Luks]->supportCreate() && - FS::luks::canEncryptType( type ) && - !m_role.has( PartitionRole::Extended ) ) + if ( FileSystemFactory::map()[ FileSystem::Type::Luks ]->supportCreate() && FS::luks::canEncryptType( type ) + && !m_role.has( PartitionRole::Extended ) ) { m_ui->encryptWidget->show(); m_ui->encryptWidget->reset(); @@ -260,7 +262,9 @@ CreatePartitionDialog::updateMountPointUi() m_ui->mountPointLabel->setEnabled( enabled ); m_ui->mountPointComboBox->setEnabled( enabled ); if ( !enabled ) + { m_ui->mountPointComboBox->setCurrentText( QString() ); + } } void @@ -282,8 +286,8 @@ void CreatePartitionDialog::initPartResizerWidget( Partition* partition ) { QColor color = CalamaresUtils::Partition::isPartitionFreeSpace( partition ) - ? ColorUtils::colorForPartitionInFreeSpace( partition ) - : ColorUtils::colorForPartition( partition ); + ? ColorUtils::colorForPartitionInFreeSpace( partition ) + : ColorUtils::colorForPartition( partition ); m_partitionSizeController->init( m_device, partition, color ); m_partitionSizeController->setPartResizerWidget( m_ui->partResizerWidget ); m_partitionSizeController->setSpinBox( m_ui->sizeSpinBox ); diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 2f3cc14a5..6991d1fa5 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,7 +50,11 @@ public: * For the (unlikely) case that a newly created partition is being re-edited, * pass a pointer to that @p partition, otherwise pass nullptr. */ - CreatePartitionDialog( Device* device, PartitionNode* parentPartition, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); + CreatePartitionDialog( Device* device, + PartitionNode* parentPartition, + Partition* partition, + const QStringList& usedMountPoints, + QWidget* parentWidget = nullptr ); ~CreatePartitionDialog(); /** diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp index a255e9902..2f5984301 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.h b/src/modules/partition/gui/CreateVolumeGroupDialog.h index 02ca6410c..3c3d5cc1b 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.h +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,4 +40,4 @@ private: qint64& m_peSize; }; -#endif // CREATEVOLUMEGROUPDIALOG_H +#endif // CREATEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp index ea318e85c..d7059c71e 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.cpp +++ b/src/modules/partition/gui/DeviceInfoWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,15 +20,15 @@ #include "DeviceInfoWidget.h" +#include "GlobalStorage.h" +#include "JobQueue.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Retranslator.h" -#include "JobQueue.h" -#include "GlobalStorage.h" #include -#include #include +#include DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) : QWidget( parent ) @@ -39,8 +40,8 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) setLayout( mainLayout ); CalamaresUtils::unmarginLayout( mainLayout ); - m_ptLabel->setObjectName("deviceInfoLabel"); - m_ptIcon->setObjectName("deviceInfoIcon"); + m_ptLabel->setObjectName( "deviceInfoLabel" ); + m_ptIcon->setObjectName( "deviceInfoIcon" ); mainLayout->addWidget( m_ptIcon ); mainLayout->addWidget( m_ptLabel ); @@ -49,16 +50,14 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) m_ptIcon->setMargin( 0 ); m_ptIcon->setFixedSize( iconSize ); m_ptIcon->setPixmap( - CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionTable, - CalamaresUtils::Original, - iconSize ) ); + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionTable, CalamaresUtils::Original, iconSize ) ); QFontMetrics fm = QFontMetrics( QFont() ); m_ptLabel->setMinimumWidth( fm.boundingRect( "Amiga" ).width() + CalamaresUtils::defaultFontHeight() / 2 ); m_ptLabel->setAlignment( Qt::AlignCenter ); QPalette palette; - palette.setBrush( QPalette::Foreground, QColor( "#4D4D4D" ) ); //dark grey + palette.setBrush( QPalette::Foreground, QColor( "#4D4D4D" ) ); //dark grey m_ptIcon->setAutoFillBackground( true ); m_ptLabel->setAutoFillBackground( true ); @@ -107,7 +106,7 @@ DeviceInfoWidget::retranslateUi() QString toolTipString = tr( "This device has a %1 partition " "table." ) - .arg( typeString ); + .arg( typeString ); switch ( m_tableType ) { @@ -149,11 +148,11 @@ DeviceInfoWidget::retranslateUi() m_ptLabel->setToolTip( toolTipString ); m_ptIcon->setToolTip( tr( "The type of partition table on the " - "selected storage device.

" - "The only way to change the partition table type is to " - "erase and recreate the partition table from scratch, " - "which destroys all data on the storage device.
" - "This installer will keep the current partition table " - "unless you explicitly choose otherwise.
" - "If unsure, on modern systems GPT is preferred." ) ); + "selected storage device.

" + "The only way to change the partition table type is to " + "erase and recreate the partition table from scratch, " + "which destroys all data on the storage device.
" + "This installer will keep the current partition table " + "unless you explicitly choose otherwise.
" + "If unsure, on modern systems GPT is preferred." ) ); } diff --git a/src/modules/partition/gui/DeviceInfoWidget.h b/src/modules/partition/gui/DeviceInfoWidget.h index b1769c19d..38a0309f3 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.h +++ b/src/modules/partition/gui/DeviceInfoWidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,4 +44,4 @@ private: PartitionTable::TableType m_tableType; }; -#endif // DEVICEINFOWIDGET_H +#endif // DEVICEINFOWIDGET_H diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 37868c7ff..633418ec3 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -1,12 +1,13 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2008-2009 Volker Lanz + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Andrius Štikonas + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Flags handling originally from KDE Partition Manager, - * Copyright 2008-2009, Volker Lanz - * Copyright 2016, Andrius Štikonas + * Flags handling originally from KDE Partition Manager. * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,9 +27,9 @@ #include "ui_EditExistingPartitionDialog.h" #include "core/ColorUtils.h" +#include "core/PartUtils.h" #include "core/PartitionCoreModule.h" #include "core/PartitionInfo.h" -#include "core/PartUtils.h" #include "gui/PartitionDialogHelpers.h" #include "gui/PartitionSizeController.h" @@ -48,7 +49,10 @@ using CalamaresUtils::Partition::untranslatedFS; using CalamaresUtils::Partition::userVisibleFS; -EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget ) +EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, + Partition* partition, + const QStringList& usedMountPoints, + QWidget* parentWidget ) : QDialog( parentWidget ) , m_ui( new Ui_EditExistingPartitionDialog ) , m_device( device ) @@ -57,51 +61,50 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit , m_usedMountPoints( usedMountPoints ) { m_ui->setupUi( this ); - standardMountPoints( *(m_ui->mountPointComboBox), PartitionInfo::mountPoint( partition ) ); + standardMountPoints( *( m_ui->mountPointComboBox ), PartitionInfo::mountPoint( partition ) ); QColor color = ColorUtils::colorForPartition( m_partition ); m_partitionSizeController->init( m_device, m_partition, color ); m_partitionSizeController->setSpinBox( m_ui->sizeSpinBox ); - connect( m_ui->mountPointComboBox, &QComboBox::currentTextChanged, - this, &EditExistingPartitionDialog::checkMountPointSelection ); + connect( m_ui->mountPointComboBox, + &QComboBox::currentTextChanged, + this, + &EditExistingPartitionDialog::checkMountPointSelection ); replacePartResizerWidget(); - connect( m_ui->formatRadioButton, &QAbstractButton::toggled, - [ this ]( bool doFormat ) - { + connect( m_ui->formatRadioButton, &QAbstractButton::toggled, [this]( bool doFormat ) { replacePartResizerWidget(); m_ui->fileSystemLabel->setEnabled( doFormat ); m_ui->fileSystemComboBox->setEnabled( doFormat ); if ( !doFormat ) + { m_ui->fileSystemComboBox->setCurrentText( userVisibleFS( m_partition->fileSystem() ) ); + } updateMountPointPicker(); } ); - connect( m_ui->fileSystemComboBox, &QComboBox::currentTextChanged, - [ this ]( QString ) - { - updateMountPointPicker(); - } ); + connect( + m_ui->fileSystemComboBox, &QComboBox::currentTextChanged, [this]( QString ) { updateMountPointPicker(); } ); // File system QStringList fsNames; for ( auto fs : FileSystemFactory::map() ) { if ( fs->supportCreate() != FileSystem::cmdSupportNone && fs->type() != FileSystem::Extended ) - fsNames << userVisibleFS( fs ); // For the combo box + { + fsNames << userVisibleFS( fs ); // For the combo box + } } m_ui->fileSystemComboBox->addItems( fsNames ); FileSystem::Type defaultFSType; QString untranslatedFSName = PartUtils::findFS( - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "defaultFileSystemType" ).toString(), &defaultFSType ); + Calamares::JobQueue::instance()->globalStorage()->value( "defaultFileSystemType" ).toString(), &defaultFSType ); if ( defaultFSType == FileSystem::Type::Unknown ) { defaultFSType = FileSystem::Type::Ext4; @@ -109,39 +112,40 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit QString thisFSNameForUser = userVisibleFS( m_partition->fileSystem() ); if ( fsNames.contains( thisFSNameForUser ) ) + { m_ui->fileSystemComboBox->setCurrentText( thisFSNameForUser ); + } else + { m_ui->fileSystemComboBox->setCurrentText( FileSystem::nameForType( defaultFSType ) ); + } m_ui->fileSystemLabel->setEnabled( m_ui->formatRadioButton->isChecked() ); m_ui->fileSystemComboBox->setEnabled( m_ui->formatRadioButton->isChecked() ); - setFlagList( *(m_ui->m_listFlags), m_partition->availableFlags(), PartitionInfo::flags( m_partition ) ); + setFlagList( *( m_ui->m_listFlags ), m_partition->availableFlags(), PartitionInfo::flags( m_partition ) ); } -EditExistingPartitionDialog::~EditExistingPartitionDialog() -{} +EditExistingPartitionDialog::~EditExistingPartitionDialog() {} PartitionTable::Flags EditExistingPartitionDialog::newFlags() const { - return flagsFromList( *(m_ui->m_listFlags) ); + return flagsFromList( *( m_ui->m_listFlags ) ); } void EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { - PartitionInfo::setMountPoint( m_partition, selectedMountPoint(m_ui->mountPointComboBox) ); + PartitionInfo::setMountPoint( m_partition, selectedMountPoint( m_ui->mountPointComboBox ) ); qint64 newFirstSector = m_partitionSizeController->firstSector(); - qint64 newLastSector = m_partitionSizeController->lastSector(); - bool partResizedMoved = newFirstSector != m_partition->firstSector() || - newLastSector != m_partition->lastSector(); + qint64 newLastSector = m_partitionSizeController->lastSector(); + bool partResizedMoved = newFirstSector != m_partition->firstSector() || newLastSector != m_partition->lastSector(); - cDebug() << "old boundaries:" << m_partition->firstSector() - << m_partition->lastSector() << m_partition->length(); + cDebug() << "old boundaries:" << m_partition->firstSector() << m_partition->lastSector() << m_partition->length(); cDebug() << "new boundaries:" << newFirstSector << newLastSector; cDebug() << "dirty status:" << m_partitionSizeController->isDirty(); @@ -149,22 +153,21 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) if ( m_ui->formatRadioButton->isChecked() ) { fsType = m_partition->roles().has( PartitionRole::Extended ) - ? FileSystem::Extended - : FileSystem::typeForName( m_ui->fileSystemComboBox->currentText() ); + ? FileSystem::Extended + : FileSystem::typeForName( m_ui->fileSystemComboBox->currentText() ); } if ( partResizedMoved ) { if ( m_ui->formatRadioButton->isChecked() ) { - Partition* newPartition = KPMHelpers::createNewPartition( - m_partition->parent(), - *m_device, - m_partition->roles(), - fsType, - newFirstSector, - newLastSector, - newFlags() ); + Partition* newPartition = KPMHelpers::createNewPartition( m_partition->parent(), + *m_device, + m_partition->roles(), + fsType, + newFirstSector, + newLastSector, + newFlags() ); PartitionInfo::setMountPoint( newPartition, PartitionInfo::mountPoint( m_partition ) ); PartitionInfo::setFormat( newPartition, true ); @@ -174,12 +177,11 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) } else { - core->resizePartition( m_device, - m_partition, - newFirstSector, - newLastSector ); + core->resizePartition( m_device, m_partition, newFirstSector, newLastSector ); if ( m_partition->activeFlags() != newFlags() ) + { core->setPartitionFlags( m_device, m_partition, newFlags() ); + } } } else @@ -192,18 +194,19 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { core->formatPartition( m_device, m_partition ); if ( m_partition->activeFlags() != newFlags() ) + { core->setPartitionFlags( m_device, m_partition, newFlags() ); + } } - else // otherwise, we delete and recreate the partition with new fs type + else // otherwise, we delete and recreate the partition with new fs type { - Partition* newPartition = KPMHelpers::createNewPartition( - m_partition->parent(), - *m_device, - m_partition->roles(), - fsType, - m_partition->firstSector(), - m_partition->lastSector(), - newFlags() ); + Partition* newPartition = KPMHelpers::createNewPartition( m_partition->parent(), + *m_device, + m_partition->roles(), + fsType, + m_partition->firstSector(), + m_partition->lastSector(), + newFlags() ); PartitionInfo::setMountPoint( newPartition, PartitionInfo::mountPoint( m_partition ) ); PartitionInfo::setFormat( newPartition, true ); @@ -216,7 +219,9 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { core->refreshPartition( m_device, m_partition ); if ( m_partition->activeFlags() != newFlags() ) + { core->setPartitionFlags( m_device, m_partition, newFlags() ); + } } } } @@ -255,11 +260,8 @@ EditExistingPartitionDialog::updateMountPointPicker() fsType = m_partition->fileSystem().type(); } bool canMount = true; - if ( fsType == FileSystem::Extended || - fsType == FileSystem::LinuxSwap || - fsType == FileSystem::Unformatted || - fsType == FileSystem::Unknown || - fsType == FileSystem::Lvm2_PV ) + if ( fsType == FileSystem::Extended || fsType == FileSystem::LinuxSwap || fsType == FileSystem::Unformatted + || fsType == FileSystem::Unknown || fsType == FileSystem::Lvm2_PV ) { canMount = false; } @@ -267,7 +269,9 @@ EditExistingPartitionDialog::updateMountPointPicker() m_ui->mountPointLabel->setEnabled( canMount ); m_ui->mountPointComboBox->setEnabled( canMount ); if ( !canMount ) + { setSelectedMountPoint( m_ui->mountPointComboBox, QString() ); + } } void diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index e98563bc0..7788305fc 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,7 +42,10 @@ class EditExistingPartitionDialog : public QDialog { Q_OBJECT public: - EditExistingPartitionDialog( Device* device, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); + EditExistingPartitionDialog( Device* device, + Partition* partition, + const QStringList& usedMountPoints, + QWidget* parentWidget = nullptr ); ~EditExistingPartitionDialog(); void applyChanges( PartitionCoreModule* module ); diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 5e44c15fd..cf9a0c922 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h index 79beb1fa7..c3f7928fe 100644 --- a/src/modules/partition/gui/EncryptWidget.h +++ b/src/modules/partition/gui/EncryptWidget.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,7 +26,7 @@ namespace Ui { - class EncryptWidget; +class EncryptWidget; } class EncryptWidget : public QWidget diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp index cd480aa55..f9f1b9c6b 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,11 +22,12 @@ #include ListPhysicalVolumeWidgetItem::ListPhysicalVolumeWidgetItem( const Partition* partition, bool checked ) - : QListWidgetItem(QString("%1 | %2").arg( partition->deviceNode(), Capacity::formatByteSize( partition->capacity() ))) - , m_partition(partition) + : QListWidgetItem( + QString( "%1 | %2" ).arg( partition->deviceNode(), Capacity::formatByteSize( partition->capacity() ) ) ) + , m_partition( partition ) { setToolTip( partition->deviceNode() ); - setSizeHint( QSize(0, 32) ); + setSizeHint( QSize( 0, 32 ) ); setCheckState( checked ? Qt::Checked : Qt::Unchecked ); } diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h index 44ba8c3bf..7d8e8faf0 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,4 +35,4 @@ private: const Partition* m_partition; }; -#endif // LISTPHYSICALVOLUMEWIDGETITEM_H +#endif // LISTPHYSICALVOLUMEWIDGETITEM_H diff --git a/src/modules/partition/gui/PartitionBarsView.cpp b/src/modules/partition/gui/PartitionBarsView.cpp index b7c21473c..6799b26f0 100644 --- a/src/modules/partition/gui/PartitionBarsView.cpp +++ b/src/modules/partition/gui/PartitionBarsView.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,8 +19,8 @@ */ #include "gui/PartitionBarsView.h" -#include "core/PartitionModel.h" #include "core/ColorUtils.h" +#include "core/PartitionModel.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" @@ -32,8 +33,9 @@ #include -static const int VIEW_HEIGHT = qMax( CalamaresUtils::defaultFontHeight() + 8, // wins out with big fonts - int( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts +static const int VIEW_HEIGHT + = qMax( CalamaresUtils::defaultFontHeight() + 8, // wins out with big fonts + int( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts static constexpr int CORNER_RADIUS = 3; static const int EXTENDED_PARTITION_MARGIN = qMax( 4, VIEW_HEIGHT / 6 ); @@ -45,8 +47,8 @@ static const int EXTENDED_PARTITION_MARGIN = qMax( 4, VIEW_HEIGHT / 6 ); // and the extended partition box (the "- 2" part). // At worst, on low DPI systems, this will mean in order: // 1px outer rect, 1 px gap, 1px selection rect, 1px gap, 1px extended partition rect. -static const int SELECTION_MARGIN = qMin( ( EXTENDED_PARTITION_MARGIN - 2 ) / 2, - ( EXTENDED_PARTITION_MARGIN - 2 ) - 2 ); +static const int SELECTION_MARGIN + = qMin( ( EXTENDED_PARTITION_MARGIN - 2 ) / 2, ( EXTENDED_PARTITION_MARGIN - 2 ) - 2 ); PartitionBarsView::PartitionBarsView( QWidget* parent ) @@ -55,25 +57,21 @@ PartitionBarsView::PartitionBarsView( QWidget* parent ) , canBeSelected( []( const QModelIndex& ) { return true; } ) , m_hoveredIndex( QModelIndex() ) { - this->setObjectName("partitionBarView"); + this->setObjectName( "partitionBarView" ); setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); setFrameStyle( QFrame::NoFrame ); setSelectionBehavior( QAbstractItemView::SelectRows ); setSelectionMode( QAbstractItemView::SingleSelection ); // Debug - connect( this, &PartitionBarsView::clicked, - this, [=]( const QModelIndex& index ) - { + connect( this, &PartitionBarsView::clicked, this, [=]( const QModelIndex& index ) { cDebug() << "Clicked row" << index.row(); } ); setMouseTracking( true ); } -PartitionBarsView::~PartitionBarsView() -{ -} +PartitionBarsView::~PartitionBarsView() {} void @@ -117,12 +115,9 @@ PartitionBarsView::paintEvent( QPaintEvent* event ) void PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, int width, const QModelIndex& index ) { - QColor color = index.isValid() ? - index.data( Qt::DecorationRole ).value< QColor >() : - ColorUtils::unknownDisklabelColor(); - bool isFreeSpace = index.isValid() ? - index.data( PartitionModel::IsFreeSpaceRole ).toBool() : - true; + QColor color + = index.isValid() ? index.data( Qt::DecorationRole ).value< QColor >() : ColorUtils::unknownDisklabelColor(); + bool isFreeSpace = index.isValid() ? index.data( PartitionModel::IsFreeSpaceRole ).toBool() : true; QRect rect = rect_; const int y = rect.y(); @@ -134,14 +129,17 @@ PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, in rect.adjust( 0, 0, -1, -1 ); - if ( selectionMode() != QAbstractItemView::NoSelection && // no hover without selection - m_hoveredIndex.isValid() && - index == m_hoveredIndex ) + if ( selectionMode() != QAbstractItemView::NoSelection && // no hover without selection + m_hoveredIndex.isValid() && index == m_hoveredIndex ) { if ( canBeSelected( index ) ) + { painter->setBrush( color.lighter( 115 ) ); + } else + { painter->setBrush( color ); + } } else { @@ -156,7 +154,9 @@ PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, in // Draw shade if ( !isFreeSpace ) + { rect.adjust( 2, 2, -2, -2 ); + } QLinearGradient gradient( 0, 0, 0, height / 2 ); @@ -169,11 +169,8 @@ PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, in painter->setBrush( gradient ); painter->drawRoundedRect( rect, radius, radius ); - if ( selectionMode() != QAbstractItemView::NoSelection && - index.isValid() && - selectionModel() && - !selectionModel()->selectedIndexes().isEmpty() && - selectionModel()->selectedIndexes().first() == index ) + if ( selectionMode() != QAbstractItemView::NoSelection && index.isValid() && selectionModel() + && !selectionModel()->selectedIndexes().isEmpty() && selectionModel()->selectedIndexes().first() == index ) { painter->setPen( QPen( borderColor, 1 ) ); QColor highlightColor = QPalette().highlight().color(); @@ -183,22 +180,21 @@ PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, in QRect selectionRect = rect; selectionRect.setX( x + 1 ); - selectionRect.setWidth( width - 3 ); //account for the previous rect.adjust + selectionRect.setWidth( width - 3 ); //account for the previous rect.adjust - if ( rect.x() > selectionRect.x() ) //hack for first item + if ( rect.x() > selectionRect.x() ) //hack for first item + { selectionRect.adjust( rect.x() - selectionRect.x(), 0, 0, 0 ); + } - if ( rect.right() < selectionRect.right() ) //hack for last item - selectionRect.adjust( 0, 0, - ( selectionRect.right() - rect.right() ), 0 ); + if ( rect.right() < selectionRect.right() ) //hack for last item + { + selectionRect.adjust( 0, 0, -( selectionRect.right() - rect.right() ), 0 ); + } - selectionRect.adjust( SELECTION_MARGIN, - SELECTION_MARGIN, - -SELECTION_MARGIN, - -SELECTION_MARGIN ); + selectionRect.adjust( SELECTION_MARGIN, SELECTION_MARGIN, -SELECTION_MARGIN, -SELECTION_MARGIN ); - painter->drawRoundedRect( selectionRect, - radius - 1, - radius - 1 ); + painter->drawRoundedRect( selectionRect, radius - 1, radius - 1 ); } painter->translate( -0.5, -0.5 ); @@ -210,7 +206,9 @@ PartitionBarsView::drawPartitions( QPainter* painter, const QRect& rect, const Q { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return; + } const int totalWidth = rect.width(); auto pair = computeItemsVector( parent ); @@ -222,29 +220,29 @@ PartitionBarsView::drawPartitions( QPainter* painter, const QRect& rect, const Q const auto& item = items[ row ]; int width; if ( row < items.count() - 1 ) + { width = totalWidth * ( item.size / total ); + } else - // Make sure we fill the last pixel column + // Make sure we fill the last pixel column + { width = rect.right() - x + 1; + } drawSection( painter, rect, x, width, item.index ); - if ( m_nestedPartitionsMode == DrawNestedPartitions && - modl->hasChildren( item.index ) ) + if ( m_nestedPartitionsMode == DrawNestedPartitions && modl->hasChildren( item.index ) ) { - QRect subRect( - x + EXTENDED_PARTITION_MARGIN, - rect.y() + EXTENDED_PARTITION_MARGIN, - width - 2 * EXTENDED_PARTITION_MARGIN, - rect.height() - 2 * EXTENDED_PARTITION_MARGIN - ); + QRect subRect( x + EXTENDED_PARTITION_MARGIN, + rect.y() + EXTENDED_PARTITION_MARGIN, + width - 2 * EXTENDED_PARTITION_MARGIN, + rect.height() - 2 * EXTENDED_PARTITION_MARGIN ); drawPartitions( painter, subRect, item.index ); } x += width; } - if ( !items.count() && - !modl->device()->partitionTable() ) // No disklabel or unknown + if ( !items.count() && !modl->device()->partitionTable() ) // No disklabel or unknown { int width = rect.right() - rect.x() + 1; drawSection( painter, rect, rect.x(), width, QModelIndex() ); @@ -260,13 +258,13 @@ PartitionBarsView::indexAt( const QPoint& point ) const QModelIndex -PartitionBarsView::indexAt( const QPoint &point, - const QRect &rect, - const QModelIndex& parent ) const +PartitionBarsView::indexAt( const QPoint& point, const QRect& rect, const QModelIndex& parent ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QModelIndex(); + } const int totalWidth = rect.width(); auto pair = computeItemsVector( parent ); @@ -278,23 +276,24 @@ PartitionBarsView::indexAt( const QPoint &point, const auto& item = items[ row ]; int width; if ( row < items.count() - 1 ) + { width = totalWidth * ( item.size / total ); + } else - // Make sure we fill the last pixel column + // Make sure we fill the last pixel column + { width = rect.right() - x + 1; + } QRect thisItemRect( x, rect.y(), width, rect.height() ); if ( thisItemRect.contains( point ) ) { - if ( m_nestedPartitionsMode == DrawNestedPartitions && - modl->hasChildren( item.index ) ) + if ( m_nestedPartitionsMode == DrawNestedPartitions && modl->hasChildren( item.index ) ) { - QRect subRect( - x + EXTENDED_PARTITION_MARGIN, - rect.y() + EXTENDED_PARTITION_MARGIN, - width - 2 * EXTENDED_PARTITION_MARGIN, - rect.height() - 2 * EXTENDED_PARTITION_MARGIN - ); + QRect subRect( x + EXTENDED_PARTITION_MARGIN, + rect.y() + EXTENDED_PARTITION_MARGIN, + width - 2 * EXTENDED_PARTITION_MARGIN, + rect.height() - 2 * EXTENDED_PARTITION_MARGIN ); if ( subRect.contains( point ) ) { @@ -302,7 +301,7 @@ PartitionBarsView::indexAt( const QPoint &point, } return item.index; } - else // contains but no children, we win + else // contains but no children, we win { return item.index; } @@ -322,13 +321,13 @@ PartitionBarsView::visualRect( const QModelIndex& index ) const QRect -PartitionBarsView::visualRect( const QModelIndex& index, - const QRect& rect, - const QModelIndex& parent ) const +PartitionBarsView::visualRect( const QModelIndex& index, const QRect& rect, const QModelIndex& parent ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QRect(); + } const int totalWidth = rect.width(); auto pair = computeItemsVector( parent ); @@ -340,29 +339,34 @@ PartitionBarsView::visualRect( const QModelIndex& index, const auto& item = items[ row ]; int width; if ( row < items.count() - 1 ) + { width = totalWidth * ( item.size / total ); + } else - // Make sure we fill the last pixel column + // Make sure we fill the last pixel column + { width = rect.right() - x + 1; + } QRect thisItemRect( x, rect.y(), width, rect.height() ); if ( item.index == index ) - return thisItemRect; - - if ( m_nestedPartitionsMode == DrawNestedPartitions && - modl->hasChildren( item.index ) && - index.parent() == item.index ) { - QRect subRect( - x + EXTENDED_PARTITION_MARGIN, - rect.y() + EXTENDED_PARTITION_MARGIN, - width - 2 * EXTENDED_PARTITION_MARGIN, - rect.height() - 2 * EXTENDED_PARTITION_MARGIN - ); + return thisItemRect; + } + + if ( m_nestedPartitionsMode == DrawNestedPartitions && modl->hasChildren( item.index ) + && index.parent() == item.index ) + { + QRect subRect( x + EXTENDED_PARTITION_MARGIN, + rect.y() + EXTENDED_PARTITION_MARGIN, + width - 2 * EXTENDED_PARTITION_MARGIN, + rect.height() - 2 * EXTENDED_PARTITION_MARGIN ); QRect candidateVisualRect = visualRect( index, subRect, item.index ); if ( !candidateVisualRect.isNull() ) + { return candidateVisualRect; + } } x += width; @@ -405,23 +409,18 @@ void PartitionBarsView::setSelectionModel( QItemSelectionModel* selectionModel ) { QAbstractItemView::setSelectionModel( selectionModel ); - connect( selectionModel, &QItemSelectionModel::selectionChanged, - this, [=] - { - viewport()->repaint(); - } ); + connect( selectionModel, &QItemSelectionModel::selectionChanged, this, [=] { viewport()->repaint(); } ); } void -PartitionBarsView::setSelectionFilter( std::function< bool ( const QModelIndex& ) > canBeSelected ) +PartitionBarsView::setSelectionFilter( std::function< bool( const QModelIndex& ) > canBeSelected ) { this->canBeSelected = canBeSelected; } -QModelIndex -PartitionBarsView::moveCursor( CursorAction, Qt::KeyboardModifiers ) +QModelIndex PartitionBarsView::moveCursor( CursorAction, Qt::KeyboardModifiers ) { return QModelIndex(); } @@ -456,7 +455,9 @@ PartitionBarsView::setSelection( const QRect& rect, QItemSelectionModel::Selecti QModelIndex eventIndex = indexAt( QPoint( x2, y2 ) ); if ( canBeSelected( eventIndex ) ) + { selectionModel()->select( eventIndex, flags ); + } viewport()->repaint(); } @@ -480,9 +481,13 @@ PartitionBarsView::mouseMoveEvent( QMouseEvent* event ) if ( oldHoveredIndex != m_hoveredIndex ) { if ( m_hoveredIndex.isValid() && !canBeSelected( m_hoveredIndex ) ) + { QGuiApplication::setOverrideCursor( Qt::ForbiddenCursor ); + } else + { QGuiApplication::restoreOverrideCursor(); + } viewport()->repaint(); } @@ -506,16 +511,20 @@ PartitionBarsView::mousePressEvent( QMouseEvent* event ) { QModelIndex candidateIndex = indexAt( event->pos() ); if ( canBeSelected( candidateIndex ) ) + { QAbstractItemView::mousePressEvent( event ); + } else + { event->accept(); + } } void PartitionBarsView::updateGeometries() { - updateGeometry(); //get a new rect() for redrawing all the labels + updateGeometry(); //get a new rect() for redrawing all the labels } @@ -529,11 +538,9 @@ PartitionBarsView::computeItemsVector( const QModelIndex& parent ) const for ( int row = 0; row < count; ++row ) { QModelIndex index = model()->index( row, 0, parent ); - if ( m_nestedPartitionsMode == NoNestedPartitions && - model()->hasChildren( index ) ) + if ( m_nestedPartitionsMode == NoNestedPartitions && model()->hasChildren( index ) ) { - QPair< QVector< PartitionBarsView::Item >, qreal > childVect = - computeItemsVector( index ); + QPair< QVector< PartitionBarsView::Item >, qreal > childVect = computeItemsVector( index ); items += childVect.first; total += childVect.second; } @@ -552,8 +559,9 @@ PartitionBarsView::computeItemsVector( const QModelIndex& parent ) const qreal adjustedTotal = total; for ( int row = 0; row < count; ++row ) { - if ( items[ row ].size < 0.01 * total ) // If this item is smaller than 1% of everything, - { // force its width to 1%. + if ( items[ row ].size < 0.01 * total ) // If this item is smaller than 1% of everything, + { + // force its width to 1%. adjustedTotal -= items[ row ].size; items[ row ].size = 0.01 * total; adjustedTotal += items[ row ].size; @@ -562,4 +570,3 @@ PartitionBarsView::computeItemsVector( const QModelIndex& parent ) const return qMakePair( items, adjustedTotal ); } - diff --git a/src/modules/partition/gui/PartitionBarsView.h b/src/modules/partition/gui/PartitionBarsView.h index 0d5051b41..1f0100ffa 100644 --- a/src/modules/partition/gui/PartitionBarsView.h +++ b/src/modules/partition/gui/PartitionBarsView.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionDialogHelpers.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp index 112d12cea..8ab1f38d7 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac - * Copyright 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,16 +33,18 @@ QStringList standardMountPoints() { - QStringList mountPoints{ "/", "/boot", "/home", "/opt", "/srv", "/usr", "/var" }; + QStringList mountPoints { "/", "/boot", "/home", "/opt", "/srv", "/usr", "/var" }; if ( PartUtils::isEfiSystem() ) + { mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); + } mountPoints.removeDuplicates(); mountPoints.sort(); return mountPoints; } void -standardMountPoints(QComboBox& combo) +standardMountPoints( QComboBox& combo ) { combo.clear(); combo.addItem( QObject::tr( "(no mount point)" ) ); @@ -49,25 +52,29 @@ standardMountPoints(QComboBox& combo) } void -standardMountPoints(QComboBox& combo, const QString& selected) +standardMountPoints( QComboBox& combo, const QString& selected ) { standardMountPoints( combo ); setSelectedMountPoint( combo, selected ); } QString -selectedMountPoint(QComboBox& combo) +selectedMountPoint( QComboBox& combo ) { if ( combo.currentIndex() == 0 ) + { return QString(); + } return combo.currentText(); } void -setSelectedMountPoint(QComboBox& combo, const QString& selected) +setSelectedMountPoint( QComboBox& combo, const QString& selected ) { if ( selected.isEmpty() ) + { combo.setCurrentIndex( 0 ); // (no mount point) + } else { for ( int i = 0; i < combo.count(); ++i ) @@ -77,7 +84,7 @@ setSelectedMountPoint(QComboBox& combo, const QString& selected) return; } combo.addItem( selected ); - combo.setCurrentIndex( combo.count() - 1); + combo.setCurrentIndex( combo.count() - 1 ); } } @@ -89,8 +96,9 @@ flagsFromList( const QListWidget& list ) for ( int i = 0; i < list.count(); i++ ) if ( list.item( i )->checkState() == Qt::Checked ) - flags |= static_cast< PartitionTable::Flag >( - list.item( i )->data( Qt::UserRole ).toInt() ); + { + flags |= static_cast< PartitionTable::Flag >( list.item( i )->data( Qt::UserRole ).toInt() ); + } return flags; } @@ -108,9 +116,7 @@ setFlagList( QListWidget& list, PartitionTable::Flags available, PartitionTable: list.addItem( item ); item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); item->setData( Qt::UserRole, f ); - item->setCheckState( ( checked & f ) ? - Qt::Checked : - Qt::Unchecked ); + item->setCheckState( ( checked & f ) ? Qt::Checked : Qt::Unchecked ); } f <<= 1; diff --git a/src/modules/partition/gui/PartitionDialogHelpers.h b/src/modules/partition/gui/PartitionDialogHelpers.h index 594142993..fd485a690 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,10 +55,18 @@ void standardMountPoints( QComboBox&, const QString& selected ); * to blank, to allow easy detection of no-mount-selected. */ QString selectedMountPoint( QComboBox& combo ); -static inline QString selectedMountPoint(QComboBox* combo) { return selectedMountPoint(*combo); } +static inline QString +selectedMountPoint( QComboBox* combo ) +{ + return selectedMountPoint( *combo ); +} void setSelectedMountPoint( QComboBox& combo, const QString& selected ); -static inline void setSelectedMountPoint(QComboBox* combo, const QString& selected) { setSelectedMountPoint( *combo, selected); } +static inline void +setSelectedMountPoint( QComboBox* combo, const QString& selected ) +{ + setSelectedMountPoint( *combo, selected ); +} /** * Get the flags that have been checked in the list widget. diff --git a/src/modules/partition/gui/PartitionLabelsView.cpp b/src/modules/partition/gui/PartitionLabelsView.cpp index 270710e02..e42e9de89 100644 --- a/src/modules/partition/gui/PartitionLabelsView.cpp +++ b/src/modules/partition/gui/PartitionLabelsView.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,8 +20,8 @@ #include "PartitionLabelsView.h" -#include "core/PartitionModel.h" #include "core/ColorUtils.h" +#include "core/PartitionModel.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" @@ -39,8 +40,7 @@ using CalamaresUtils::operator""_MiB; static const int LAYOUT_MARGIN = 4; -static const int LABEL_PARTITION_SQUARE_MARGIN = - qMax( QFontMetrics( CalamaresUtils::defaultFont() ).ascent() - 2, 18 ); +static const int LABEL_PARTITION_SQUARE_MARGIN = qMax( QFontMetrics( CalamaresUtils::defaultFont() ).ascent() - 2, 18 ); static const int LABELS_MARGIN = LABEL_PARTITION_SQUARE_MARGIN; static const int CORNER_RADIUS = 2; @@ -63,14 +63,12 @@ PartitionLabelsView::PartitionLabelsView( QWidget* parent ) setFrameStyle( QFrame::NoFrame ); setSelectionBehavior( QAbstractItemView::SelectRows ); setSelectionMode( QAbstractItemView::SingleSelection ); - this->setObjectName("partitionLabel"); + this->setObjectName( "partitionLabel" ); setMouseTracking( true ); } -PartitionLabelsView::~PartitionLabelsView() -{ -} +PartitionLabelsView::~PartitionLabelsView() {} QSize @@ -80,7 +78,6 @@ PartitionLabelsView::minimumSizeHint() const } - QSize PartitionLabelsView::sizeHint() const { @@ -150,7 +147,9 @@ PartitionLabelsView::getIndexesToDraw( const QModelIndex& parent ) const QAbstractItemModel* modl = model(); if ( !modl ) + { return list; + } for ( int row = 0; row < modl->rowCount( parent ); ++row ) { @@ -160,15 +159,21 @@ PartitionLabelsView::getIndexesToDraw( const QModelIndex& parent ) const // To save vertical space, we choose to hide short instances of free space. // Arbitrary limit: 10MiB. const qint64 maxHiddenB = 10_MiB; - if ( index.data( PartitionModel::IsFreeSpaceRole ).toBool() && - index.data( PartitionModel::SizeRole ).toLongLong() < maxHiddenB ) + if ( index.data( PartitionModel::IsFreeSpaceRole ).toBool() + && index.data( PartitionModel::SizeRole ).toLongLong() < maxHiddenB ) + { continue; + } if ( !modl->hasChildren( index ) || !m_extendedPartitionHidden ) + { list.append( index ); + } if ( modl->hasChildren( index ) ) + { list.append( getIndexesToDraw( index ) ); + } } return list; } @@ -189,64 +194,74 @@ PartitionLabelsView::buildTexts( const QModelIndex& index ) const } else { - QString mountPoint = index.sibling( index.row(), - PartitionModel::MountPointColumn ) - .data().toString(); + QString mountPoint = index.sibling( index.row(), PartitionModel::MountPointColumn ).data().toString(); if ( mountPoint == "/" ) - firstLine = m_customNewRootLabel.isEmpty() ? - tr( "Root" ) : - m_customNewRootLabel; + { + firstLine = m_customNewRootLabel.isEmpty() ? tr( "Root" ) : m_customNewRootLabel; + } else if ( mountPoint == "/home" ) + { firstLine = tr( "Home" ); + } else if ( mountPoint == "/boot" ) + { firstLine = tr( "Boot" ); - else if ( mountPoint.contains( "/efi" ) && - index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::Fat32 ) + } + else if ( mountPoint.contains( "/efi" ) + && index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::Fat32 ) + { firstLine = tr( "EFI system" ); + } else if ( index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::LinuxSwap ) + { firstLine = tr( "Swap" ); + } else if ( !mountPoint.isEmpty() ) + { firstLine = tr( "New partition for %1" ).arg( mountPoint ); + } else + { firstLine = tr( "New partition" ); + } } } else if ( index.data( PartitionModel::OsproberNameRole ).toString().isEmpty() ) { firstLine = index.data().toString(); if ( firstLine.startsWith( "/dev/" ) ) - firstLine.remove( 0, 5 ); // "/dev/" + { + firstLine.remove( 0, 5 ); // "/dev/" + } } else + { firstLine = index.data( PartitionModel::OsproberNameRole ).toString(); + } - if ( index.data( PartitionModel::IsFreeSpaceRole ).toBool() || - index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::Extended ) - secondLine = index.sibling( index.row(), - PartitionModel::SizeColumn ) - .data().toString(); + if ( index.data( PartitionModel::IsFreeSpaceRole ).toBool() + || index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::Extended ) + { + secondLine = index.sibling( index.row(), PartitionModel::SizeColumn ).data().toString(); + } else //: size[number] filesystem[name] secondLine = tr( "%1 %2" ) - .arg( index.sibling( index.row(), - PartitionModel::SizeColumn ) - .data().toString() ) - .arg( index.sibling( index.row(), - PartitionModel::FileSystemColumn ) - .data().toString() ); + .arg( index.sibling( index.row(), PartitionModel::SizeColumn ).data().toString() ) + .arg( index.sibling( index.row(), PartitionModel::FileSystemColumn ).data().toString() ); return { firstLine, secondLine }; } void -PartitionLabelsView::drawLabels( QPainter* painter, - const QRect& rect, - const QModelIndex& parent ) +PartitionLabelsView::drawLabels( QPainter* painter, const QRect& rect, const QModelIndex& parent ) { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return; + } const QModelIndexList indexesToDraw = getIndexesToDraw( parent ); @@ -260,20 +275,19 @@ PartitionLabelsView::drawLabels( QPainter* painter, QColor labelColor = index.data( Qt::DecorationRole ).value< QColor >(); - if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow + if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow { label_x = rect.x(); label_y += labelSize.height() + labelSize.height() / 4; } // Draw hover - if ( selectionMode() != QAbstractItemView::NoSelection && // no hover without selection - m_hoveredIndex.isValid() && - index == m_hoveredIndex ) + if ( selectionMode() != QAbstractItemView::NoSelection && // no hover without selection + m_hoveredIndex.isValid() && index == m_hoveredIndex ) { painter->save(); QRect labelRect( QPoint( label_x, label_y ), labelSize ); - labelRect.adjust( 0, -LAYOUT_MARGIN, 0, -2*LAYOUT_MARGIN ); + labelRect.adjust( 0, -LAYOUT_MARGIN, 0, -2 * LAYOUT_MARGIN ); painter->translate( 0.5, 0.5 ); QRect hoverRect = labelRect.adjusted( 0, 0, -1, -1 ); painter->setBrush( QPalette().window().color().lighter( 102 ) ); @@ -285,19 +299,15 @@ PartitionLabelsView::drawLabels( QPainter* painter, } // Is this element the selected one? - bool sel = selectionMode() != QAbstractItemView::NoSelection && - index.isValid() && - selectionModel() && - !selectionModel()->selectedIndexes().isEmpty() && - selectionModel()->selectedIndexes().first() == index; + bool sel = selectionMode() != QAbstractItemView::NoSelection && index.isValid() && selectionModel() + && !selectionModel()->selectedIndexes().isEmpty() && selectionModel()->selectedIndexes().first() == index; drawLabel( painter, texts, labelColor, QPoint( label_x, label_y ), sel ); label_x += labelSize.width() + LABELS_MARGIN; } - if ( !modl->rowCount() && - !modl->device()->partitionTable() ) // No disklabel or unknown + if ( !modl->rowCount() && !modl->device()->partitionTable() ) // No disklabel or unknown { QStringList texts = buildUnknownDisklabelTexts( modl->device() ); QColor labelColor = ColorUtils::unknownDisklabelColor(); @@ -311,7 +321,9 @@ PartitionLabelsView::sizeForAllLabels( int maxLineWidth ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QSize(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -337,15 +349,12 @@ PartitionLabelsView::sizeForAllLabels( int maxLineWidth ) const singleLabelHeight = qMax( singleLabelHeight, labelSize.height() ); } - if ( !modl->rowCount() && - !modl->device()->partitionTable() ) // Unknown or no disklabel + if ( !modl->rowCount() && !modl->device()->partitionTable() ) // Unknown or no disklabel { - singleLabelHeight = sizeForLabel( buildUnknownDisklabelTexts( modl->device() ) ) - .height(); + singleLabelHeight = sizeForLabel( buildUnknownDisklabelTexts( modl->device() ) ).height(); } - int totalHeight = numLines * singleLabelHeight + - ( numLines - 1 ) * singleLabelHeight / 4; //spacings + int totalHeight = numLines * singleLabelHeight + ( numLines - 1 ) * singleLabelHeight / 4; //spacings return QSize( maxLineWidth, totalHeight ); } @@ -363,7 +372,7 @@ PartitionLabelsView::sizeForLabel( const QStringList& text ) const vertOffset += textSize.height(); width = qMax( width, textSize.width() ); } - width += LABEL_PARTITION_SQUARE_MARGIN; //for the color square + width += LABEL_PARTITION_SQUARE_MARGIN; //for the color square return QSize( width, vertOffset ); } @@ -381,22 +390,21 @@ PartitionLabelsView::drawLabel( QPainter* painter, for ( const QString& textLine : text ) { QSize textSize = painter->fontMetrics().size( Qt::TextSingleLine, textLine ); - painter->drawText( pos.x()+LABEL_PARTITION_SQUARE_MARGIN, - pos.y() + vertOffset + textSize.height() / 2, - textLine ); + painter->drawText( + pos.x() + LABEL_PARTITION_SQUARE_MARGIN, pos.y() + vertOffset + textSize.height() / 2, textLine ); vertOffset += textSize.height(); painter->setPen( Qt::gray ); width = qMax( width, textSize.width() ); } - QRect partitionSquareRect( pos.x(), - pos.y() - 3, - LABEL_PARTITION_SQUARE_MARGIN - 5, - LABEL_PARTITION_SQUARE_MARGIN - 5 ); + QRect partitionSquareRect( + pos.x(), pos.y() - 3, LABEL_PARTITION_SQUARE_MARGIN - 5, LABEL_PARTITION_SQUARE_MARGIN - 5 ); drawPartitionSquare( painter, partitionSquareRect, color ); if ( selected ) + { drawSelectionSquare( painter, partitionSquareRect.adjusted( 2, 2, -2, -2 ), color ); + } painter->setPen( Qt::black ); } @@ -407,7 +415,9 @@ PartitionLabelsView::indexAt( const QPoint& point ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QModelIndex(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -420,7 +430,7 @@ PartitionLabelsView::indexAt( const QPoint& point ) const QSize labelSize = sizeForLabel( texts ); - if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow + if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow { label_x = rect.x(); label_y += labelSize.height() + labelSize.height() / 4; @@ -428,7 +438,9 @@ PartitionLabelsView::indexAt( const QPoint& point ) const QRect labelRect( QPoint( label_x, label_y ), labelSize ); if ( labelRect.contains( point ) ) + { return index; + } label_x += labelSize.width() + LABELS_MARGIN; } @@ -442,7 +454,9 @@ PartitionLabelsView::visualRect( const QModelIndex& idx ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QRect(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -455,14 +469,16 @@ PartitionLabelsView::visualRect( const QModelIndex& idx ) const QSize labelSize = sizeForLabel( texts ); - if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow + if ( label_x + labelSize.width() > rect.width() ) //wrap to new line if overflow { label_x = rect.x(); label_y += labelSize.height() + labelSize.height() / 4; } if ( idx.isValid() && idx == index ) + { return QRect( QPoint( label_x, label_y ), labelSize ); + } label_x += labelSize.width() + LABELS_MARGIN; } @@ -514,11 +530,7 @@ void PartitionLabelsView::setSelectionModel( QItemSelectionModel* selectionModel ) { QAbstractItemView::setSelectionModel( selectionModel ); - connect( selectionModel, &QItemSelectionModel::selectionChanged, - this, [=] - { - viewport()->repaint(); - } ); + connect( selectionModel, &QItemSelectionModel::selectionChanged, this, [=] { viewport()->repaint(); } ); } @@ -560,7 +572,9 @@ PartitionLabelsView::setSelection( const QRect& rect, QItemSelectionModel::Selec { QModelIndex eventIndex = indexAt( rect.topLeft() ); if ( m_canBeSelected( eventIndex ) ) + { selectionModel()->select( eventIndex, flags ); + } } @@ -582,9 +596,13 @@ PartitionLabelsView::mouseMoveEvent( QMouseEvent* event ) if ( oldHoveredIndex != m_hoveredIndex ) { if ( m_hoveredIndex.isValid() && !m_canBeSelected( m_hoveredIndex ) ) + { QGuiApplication::setOverrideCursor( Qt::ForbiddenCursor ); + } else + { QGuiApplication::restoreOverrideCursor(); + } viewport()->repaint(); } @@ -610,14 +628,18 @@ PartitionLabelsView::mousePressEvent( QMouseEvent* event ) { QModelIndex candidateIndex = indexAt( event->pos() ); if ( m_canBeSelected( candidateIndex ) ) + { QAbstractItemView::mousePressEvent( event ); + } else + { event->accept(); + } } void PartitionLabelsView::updateGeometries() { - updateGeometry(); //get a new rect() for redrawing all the labels + updateGeometry(); //get a new rect() for redrawing all the labels } diff --git a/src/modules/partition/gui/PartitionLabelsView.h b/src/modules/partition/gui/PartitionLabelsView.h index e461a8dd8..45b2b3407 100644 --- a/src/modules/partition/gui/PartitionLabelsView.h +++ b/src/modules/partition/gui/PartitionLabelsView.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -79,8 +80,7 @@ private: void drawLabels( QPainter* painter, const QRect& rect, const QModelIndex& parent ); QSize sizeForAllLabels( int maxLineWidth ) const; QSize sizeForLabel( const QStringList& text ) const; - void drawLabel( QPainter* painter, const QStringList& text, const QColor& color, - const QPoint& pos , bool selected ); + void drawLabel( QPainter* painter, const QStringList& text, const QColor& color, const QPoint& pos, bool selected ); QModelIndexList getIndexesToDraw( const QModelIndex& parent ) const; QStringList buildTexts( const QModelIndex& index ) const; @@ -91,4 +91,4 @@ private: QPersistentModelIndex m_hoveredIndex; }; -#endif // PARTITIONLABELSVIEW_H +#endif // PARTITIONLABELSVIEW_H diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index d2ad49c23..3b73f061e 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -1,11 +1,12 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2018-2019, Adriaan de Groot - * Copyright 2018, Andrius Štikonas - * Copyright 2018, Caio Jordão Carvalho - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Andrius Štikonas + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,19 +27,19 @@ // Local #include "core/BootLoaderModel.h" #include "core/DeviceModel.h" +#include "core/KPMHelpers.h" +#include "core/PartUtils.h" #include "core/PartitionCoreModule.h" #include "core/PartitionInfo.h" #include "core/PartitionModel.h" -#include "core/PartUtils.h" -#include "core/KPMHelpers.h" #include "gui/CreatePartitionDialog.h" #include "gui/CreateVolumeGroupDialog.h" #include "gui/EditExistingPartitionDialog.h" #include "gui/ResizeVolumeGroupDialog.h" #include "gui/ScanningDialog.h" -#include "ui_PartitionPage.h" #include "ui_CreatePartitionTableDialog.h" +#include "ui_PartitionPage.h" #include "GlobalStorage.h" #include "JobQueue.h" @@ -58,34 +59,34 @@ #include // Qt +#include +#include #include #include #include #include -#include -#include #include PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) : QWidget( parent ) , m_ui( new Ui_PartitionPage ) , m_core( core ) - , m_lastSelectedBootLoaderIndex(-1) + , m_lastSelectedBootLoaderIndex( -1 ) , m_isEfi( false ) { m_isEfi = PartUtils::isEfiSystem(); m_ui->setupUi( this ); m_ui->partitionLabelsView->setVisible( - Calamares::JobQueue::instance()->globalStorage()-> - value( "alwaysShowPartitionLabels" ).toBool() ); + Calamares::JobQueue::instance()->globalStorage()->value( "alwaysShowPartitionLabels" ).toBool() ); m_ui->deviceComboBox->setModel( m_core->deviceModel() ); m_ui->bootLoaderComboBox->setModel( m_core->bootLoaderModel() ); - connect( m_core->bootLoaderModel(), &QAbstractItemModel::modelReset, this, &PartitionPage::restoreSelectedBootLoader ); - PartitionBarsView::NestedPartitionsMode mode = Calamares::JobQueue::instance()->globalStorage()-> - value( "drawNestedPartitions" ).toBool() ? - PartitionBarsView::DrawNestedPartitions : - PartitionBarsView::NoNestedPartitions; + connect( + m_core->bootLoaderModel(), &QAbstractItemModel::modelReset, this, &PartitionPage::restoreSelectedBootLoader ); + PartitionBarsView::NestedPartitionsMode mode + = Calamares::JobQueue::instance()->globalStorage()->value( "drawNestedPartitions" ).toBool() + ? PartitionBarsView::DrawNestedPartitions + : PartitionBarsView::NoNestedPartitions; m_ui->partitionBarsView->setNestedPartitionsMode( mode ); updateButtons(); updateBootLoaderInstallPath(); @@ -93,23 +94,35 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) updateFromCurrentDevice(); connect( m_ui->deviceComboBox, &QComboBox::currentTextChanged, this, &PartitionPage::updateFromCurrentDevice ); - connect( m_ui->bootLoaderComboBox, QOverload::of(&QComboBox::activated), this, &PartitionPage::updateSelectedBootLoaderIndex ); - connect( m_ui->bootLoaderComboBox, &QComboBox::currentTextChanged, this, &PartitionPage::updateBootLoaderInstallPath ); + connect( m_ui->bootLoaderComboBox, + QOverload< int >::of( &QComboBox::activated ), + this, + &PartitionPage::updateSelectedBootLoaderIndex ); + connect( + m_ui->bootLoaderComboBox, &QComboBox::currentTextChanged, this, &PartitionPage::updateBootLoaderInstallPath ); connect( m_core, &PartitionCoreModule::isDirtyChanged, m_ui->revertButton, &QWidget::setEnabled ); - connect( m_ui->partitionTreeView, &QAbstractItemView::doubleClicked, this, &PartitionPage::onPartitionViewActivated ); + connect( + m_ui->partitionTreeView, &QAbstractItemView::doubleClicked, this, &PartitionPage::onPartitionViewActivated ); connect( m_ui->revertButton, &QAbstractButton::clicked, this, &PartitionPage::onRevertClicked ); connect( m_ui->newVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onNewVolumeGroupClicked ); - connect( m_ui->resizeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onResizeVolumeGroupClicked ); - connect( m_ui->deactivateVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onDeactivateVolumeGroupClicked ); - connect( m_ui->removeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onRemoveVolumeGroupClicked ); - connect( m_ui->newPartitionTableButton, &QAbstractButton::clicked, this, &PartitionPage::onNewPartitionTableClicked ); + connect( + m_ui->resizeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onResizeVolumeGroupClicked ); + connect( m_ui->deactivateVolumeGroupButton, + &QAbstractButton::clicked, + this, + &PartitionPage::onDeactivateVolumeGroupClicked ); + connect( + m_ui->removeVolumeGroupButton, &QAbstractButton::clicked, this, &PartitionPage::onRemoveVolumeGroupClicked ); + connect( + m_ui->newPartitionTableButton, &QAbstractButton::clicked, this, &PartitionPage::onNewPartitionTableClicked ); connect( m_ui->createButton, &QAbstractButton::clicked, this, &PartitionPage::onCreateClicked ); connect( m_ui->editButton, &QAbstractButton::clicked, this, &PartitionPage::onEditClicked ); connect( m_ui->deleteButton, &QAbstractButton::clicked, this, &PartitionPage::onDeleteClicked ); - if ( m_isEfi ) { + if ( m_isEfi ) + { m_ui->bootLoaderComboBox->hide(); m_ui->label_3->hide(); } @@ -117,14 +130,13 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); ) } -PartitionPage::~PartitionPage() -{ -} +PartitionPage::~PartitionPage() {} void PartitionPage::updateButtons() { - bool create = false, createTable = false, edit = false, del = false, currentDeviceIsVG = false, isDeactivable = false; + bool create = false, createTable = false, edit = false, del = false, currentDeviceIsVG = false, + isDeactivable = false; bool isRemovable = false, isVGdeactivated = false; QModelIndex index = m_ui->partitionTreeView->currentIndex(); @@ -157,16 +169,20 @@ PartitionPage::updateButtons() Device* device = nullptr; QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); if ( deviceIndex.isValid() ) + { device = m_core->deviceModel()->deviceForIndex( deviceIndex ); + } if ( !device ) + { cWarning() << "Device for updateButtons is nullptr"; + } else if ( device->type() != Device::Type::LVM_Device ) { createTable = true; #ifdef WITH_KPMCORE4API - if ( device->type() == Device::Type::SoftwareRAID_Device && - static_cast< SoftwareRAID* >(device)->status() == SoftwareRAID::Status::Inactive ) + if ( device->type() == Device::Type::SoftwareRAID_Device + && static_cast< SoftwareRAID* >( device )->status() == SoftwareRAID::Status::Inactive ) { createTable = false; create = false; @@ -177,7 +193,7 @@ PartitionPage::updateButtons() { currentDeviceIsVG = true; - LvmDevice* lvmDevice = dynamic_cast(m_core->deviceModel()->deviceForIndex( deviceIndex )); + LvmDevice* lvmDevice = dynamic_cast< LvmDevice* >( m_core->deviceModel()->deviceForIndex( deviceIndex ) ); isDeactivable = DeactivateVolumeGroupOperation::isDeactivatable( lvmDevice ); isRemovable = RemoveVolumeGroupOperation::isRemovable( lvmDevice ); @@ -185,7 +201,9 @@ PartitionPage::updateButtons() isVGdeactivated = m_core->isVGdeactivated( lvmDevice ); if ( isVGdeactivated ) + { m_ui->revertButton->setEnabled( true ); + } } } @@ -205,14 +223,18 @@ PartitionPage::onNewPartitionTableClicked() Q_ASSERT( index.isValid() ); Device* device = m_core->deviceModel()->deviceForIndex( index ); - QPointer dlg = new QDialog( this ); + QPointer< QDialog > dlg = new QDialog( this ); Ui_CreatePartitionTableDialog ui; ui.setupUi( dlg.data() ); QString areYouSure = tr( "Are you sure you want to create a new partition table on %1?" ).arg( device->name() ); if ( PartUtils::isEfiSystem() ) + { ui.gptRadioButton->setChecked( true ); + } else + { ui.mbrRadioButton->setChecked( true ); + } ui.areYouSureLabel->setText( areYouSure ); if ( dlg->exec() == QDialog::Accepted ) @@ -231,22 +253,27 @@ PartitionPage::checkCanCreate( Device* device ) { auto table = device->partitionTable(); - if ( table->type() == PartitionTable::msdos ||table->type() == PartitionTable::msdos_sectorbased ) + if ( table->type() == PartitionTable::msdos || table->type() == PartitionTable::msdos_sectorbased ) { cDebug() << "Checking MSDOS partition" << table->numPrimaries() << "primaries, max" << table->maxPrimaries(); if ( ( table->numPrimaries() >= table->maxPrimaries() ) && !table->hasExtended() ) { - QMessageBox::warning( this, tr( "Can not create new partition" ), + QMessageBox::warning( + this, + tr( "Can not create new partition" ), tr( "The partition table on %1 already has %2 primary partitions, and no more can be added. " - "Please remove one primary partition and add an extended partition, instead." ).arg( device->name() ).arg( table->numPrimaries() ) - ); + "Please remove one primary partition and add an extended partition, instead." ) + .arg( device->name() ) + .arg( table->numPrimaries() ) ); return false; } return true; } else + { return true; // GPT is fine + } } void @@ -260,13 +287,12 @@ PartitionPage::onNewVolumeGroupClicked() for ( const Partition* p : m_core->lvmPVs() ) if ( !m_core->isInVG( p ) ) + { availablePVs << p; + } - QPointer< CreateVolumeGroupDialog > dlg = new CreateVolumeGroupDialog( vgName, - selectedPVs, - availablePVs, - peSize, - this ); + QPointer< CreateVolumeGroupDialog > dlg + = new CreateVolumeGroupDialog( vgName, selectedPVs, availablePVs, peSize, this ); if ( dlg->exec() == QDialog::Accepted ) { @@ -282,7 +308,9 @@ PartitionPage::onNewVolumeGroupClicked() // Disable delete button if current partition was selected to be in VG // TODO: Should Calamares edit LVM PVs which are in VGs? if ( selectedPVs.contains( partition ) ) + { m_ui->deleteButton->setEnabled( false ); + } } QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); @@ -297,7 +325,7 @@ PartitionPage::onNewVolumeGroupClicked() // is needed to set the current index in deviceComboBox as the previous one int previousIndex = m_ui->deviceComboBox->findData( previousIndexDeviceData, Qt::ToolTipRole ); - m_ui->deviceComboBox->setCurrentIndex( ( previousIndex < 0 ) ? 0 : previousIndex ); + m_ui->deviceComboBox->setCurrentIndex( ( previousIndex < 0 ) ? 0 : previousIndex ); updateFromCurrentDevice(); } @@ -317,15 +345,16 @@ PartitionPage::onResizeVolumeGroupClicked() for ( const Partition* p : m_core->lvmPVs() ) if ( !m_core->isInVG( p ) ) + { availablePVs << p; + } - QPointer< ResizeVolumeGroupDialog > dlg = new ResizeVolumeGroupDialog( device, - availablePVs, - selectedPVs, - this ); + QPointer< ResizeVolumeGroupDialog > dlg = new ResizeVolumeGroupDialog( device, availablePVs, selectedPVs, this ); if ( dlg->exec() == QDialog::Accepted ) + { m_core->resizeVolumeGroup( device, selectedPVs ); + } delete dlg; } @@ -368,14 +397,11 @@ PartitionPage::onCreateClicked() Q_ASSERT( partition ); if ( !checkCanCreate( model->device() ) ) + { return; + } - CreatePartitionDialog dlg( - model->device(), - partition->parent(), - nullptr, - getCurrentUsedMountpoints(), - this ); + CreatePartitionDialog dlg( model->device(), partition->parent(), nullptr, getCurrentUsedMountpoints(), this ); dlg.initFromFreeSpace( partition ); if ( dlg.exec() == QDialog::Accepted ) { @@ -395,10 +421,13 @@ PartitionPage::onEditClicked() Q_ASSERT( partition ); if ( CalamaresUtils::Partition::isPartitionNew( partition ) ) + { updatePartitionToCreate( model->device(), partition ); + } else + { editExistingPartition( model->device(), partition ); - + } } void @@ -419,18 +448,18 @@ void PartitionPage::onRevertClicked() { ScanningDialog::run( - QtConcurrent::run( [ this ] - { + QtConcurrent::run( [this] { QMutexLocker locker( &m_revertMutex ); int oldIndex = m_ui->deviceComboBox->currentIndex(); m_core->revertAllDevices(); - m_ui->deviceComboBox->setCurrentIndex( ( oldIndex < 0 ) ? 0 : oldIndex ); + m_ui->deviceComboBox->setCurrentIndex( ( oldIndex < 0 ) ? 0 : oldIndex ); updateFromCurrentDevice(); } ), - [ this ]{ + [this] { m_lastSelectedBootLoaderIndex = -1; - if( m_ui->bootLoaderComboBox->currentIndex() < 0 ) { + if ( m_ui->bootLoaderComboBox->currentIndex() < 0 ) + { m_ui->bootLoaderComboBox->setCurrentIndex( 0 ); } }, @@ -442,7 +471,9 @@ PartitionPage::onPartitionViewActivated() { QModelIndex index = m_ui->partitionTreeView->currentIndex(); if ( !index.isValid() ) + { return; + } const PartitionModel* model = static_cast< const PartitionModel* >( index.model() ); Q_ASSERT( model ); @@ -455,9 +486,13 @@ PartitionPage::onPartitionViewActivated() // action from multiple UI elements in this page, so it does not feel worth // the price. if ( CalamaresUtils::Partition::isPartitionFreeSpace( partition ) ) + { m_ui->createButton->click(); + } else + { m_ui->editButton->click(); + } } void @@ -466,11 +501,8 @@ PartitionPage::updatePartitionToCreate( Device* device, Partition* partition ) QStringList mountPoints = getCurrentUsedMountpoints(); mountPoints.removeOne( PartitionInfo::mountPoint( partition ) ); - QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( device, - partition->parent(), - partition, - mountPoints, - this ); + QPointer< CreatePartitionDialog > dlg + = new CreatePartitionDialog( device, partition->parent(), partition, mountPoints, this ); dlg->initFromPartitionToCreate( partition ); if ( dlg->exec() == QDialog::Accepted ) { @@ -487,9 +519,12 @@ PartitionPage::editExistingPartition( Device* device, Partition* partition ) QStringList mountPoints = getCurrentUsedMountpoints(); mountPoints.removeOne( PartitionInfo::mountPoint( partition ) ); - QPointer dlg = new EditExistingPartitionDialog( device, partition, mountPoints, this ); + QPointer< EditExistingPartitionDialog > dlg + = new EditExistingPartitionDialog( device, partition, mountPoints, this ); if ( dlg->exec() == QDialog::Accepted ) + { dlg->applyChanges( m_core ); + } delete dlg; } @@ -497,11 +532,15 @@ void PartitionPage::updateBootLoaderInstallPath() { if ( m_isEfi || !m_ui->bootLoaderComboBox->isVisible() ) + { return; + } QVariant var = m_ui->bootLoaderComboBox->currentData( BootLoaderModel::BootLoaderPathRole ); if ( !var.isValid() ) + { return; + } cDebug() << "PartitionPage::updateBootLoaderInstallPath" << var.toString(); m_core->setBootLoaderInstallPath( var.toString() ); } @@ -516,7 +555,7 @@ PartitionPage::updateSelectedBootLoaderIndex() void PartitionPage::restoreSelectedBootLoader() { - Calamares::restoreSelectedBootLoader( *(m_ui->bootLoaderComboBox), m_core->bootLoaderInstallPath() ); + Calamares::restoreSelectedBootLoader( *( m_ui->bootLoaderComboBox ), m_core->bootLoaderInstallPath() ); } @@ -525,13 +564,17 @@ PartitionPage::updateFromCurrentDevice() { QModelIndex index = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); if ( !index.isValid() ) + { return; + } Device* device = m_core->deviceModel()->deviceForIndex( index ); QAbstractItemModel* oldModel = m_ui->partitionTreeView->model(); if ( oldModel ) + { disconnect( oldModel, nullptr, this, nullptr ); + } PartitionModel* model = m_core->partitionModelForDevice( device ); m_ui->partitionBarsView->setModel( model ); @@ -540,10 +583,8 @@ PartitionPage::updateFromCurrentDevice() m_ui->partitionTreeView->expandAll(); // Make all views use the same selection model. - if ( m_ui->partitionBarsView->selectionModel() != - m_ui->partitionTreeView->selectionModel() || - m_ui->partitionBarsView->selectionModel() != - m_ui->partitionLabelsView->selectionModel() ) + if ( m_ui->partitionBarsView->selectionModel() != m_ui->partitionTreeView->selectionModel() + || m_ui->partitionBarsView->selectionModel() != m_ui->partitionLabelsView->selectionModel() ) { // Tree view QItemSelectionModel* selectionModel = m_ui->partitionTreeView->selectionModel(); @@ -559,14 +600,17 @@ PartitionPage::updateFromCurrentDevice() // This is necessary because even with the same selection model it might happen that // a !=0 column is selected in the tree view, which for some reason doesn't trigger a // timely repaint in the bars view. - connect( m_ui->partitionBarsView->selectionModel(), &QItemSelectionModel::currentChanged, - this, [=] - { - QModelIndex selectedIndex = m_ui->partitionBarsView->selectionModel()->currentIndex(); - selectedIndex = selectedIndex.sibling( selectedIndex.row(), 0 ); - m_ui->partitionBarsView->setCurrentIndex( selectedIndex ); - m_ui->partitionLabelsView->setCurrentIndex( selectedIndex ); - }, Qt::UniqueConnection ); + connect( + m_ui->partitionBarsView->selectionModel(), + &QItemSelectionModel::currentChanged, + this, + [=] { + QModelIndex selectedIndex = m_ui->partitionBarsView->selectionModel()->currentIndex(); + selectedIndex = selectedIndex.sibling( selectedIndex.row(), 0 ); + m_ui->partitionBarsView->setCurrentIndex( selectedIndex ); + m_ui->partitionLabelsView->setCurrentIndex( selectedIndex ); + }, + Qt::UniqueConnection ); // Must be done here because we need to have a model set to define // individual column resize mode @@ -577,11 +621,9 @@ PartitionPage::updateFromCurrentDevice() updateButtons(); // Establish connection here because selection model is destroyed when // model changes - connect( m_ui->partitionTreeView->selectionModel(), &QItemSelectionModel::currentChanged, - [ this ]( const QModelIndex&, const QModelIndex& ) - { - updateButtons(); - } ); + connect( m_ui->partitionTreeView->selectionModel(), + &QItemSelectionModel::currentChanged, + [this]( const QModelIndex&, const QModelIndex& ) { updateButtons(); } ); connect( model, &QAbstractItemModel::modelReset, this, &PartitionPage::onPartitionModelReset ); } @@ -597,7 +639,8 @@ void PartitionPage::updateBootLoaderIndex() { // set bootloader back to user selected index - if ( m_lastSelectedBootLoaderIndex >= 0 && m_ui->bootLoaderComboBox->count() ) { + if ( m_lastSelectedBootLoaderIndex >= 0 && m_ui->bootLoaderComboBox->count() ) + { m_ui->bootLoaderComboBox->setCurrentIndex( m_lastSelectedBootLoaderIndex ); } } @@ -605,10 +648,11 @@ PartitionPage::updateBootLoaderIndex() QStringList PartitionPage::getCurrentUsedMountpoints() { - QModelIndex index = m_core->deviceModel()->index( - m_ui->deviceComboBox->currentIndex(), 0 ); + QModelIndex index = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 ); if ( !index.isValid() ) + { return QStringList(); + } Device* device = m_core->deviceModel()->deviceForIndex( index ); QStringList mountPoints; @@ -617,7 +661,9 @@ PartitionPage::getCurrentUsedMountpoints() { const QString& mountPoint = PartitionInfo::mountPoint( partition ); if ( !mountPoint.isEmpty() ) + { mountPoints << mountPoint; + } } return mountPoints; @@ -630,7 +676,7 @@ PartitionPage::selectedDeviceIndex() } void -PartitionPage::selectDeviceByIndex ( int index ) +PartitionPage::selectDeviceByIndex( int index ) { - m_ui->deviceComboBox->setCurrentIndex( index ); + m_ui->deviceComboBox->setCurrentIndex( index ); } diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index e8a96a4cf..d23879e15 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018-2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,9 +22,9 @@ #ifndef PARTITIONPAGE_H #define PARTITIONPAGE_H -#include -#include #include +#include +#include class PartitionCoreModule; class Ui_PartitionPage; @@ -90,8 +91,8 @@ private: QStringList getCurrentUsedMountpoints(); QMutex m_revertMutex; - int m_lastSelectedBootLoaderIndex; - bool m_isEfi; + int m_lastSelectedBootLoaderIndex; + bool m_isEfi; }; -#endif // PARTITIONPAGE_H +#endif // PARTITIONPAGE_H diff --git a/src/modules/partition/gui/PartitionSizeController.cpp b/src/modules/partition/gui/PartitionSizeController.cpp index 39879dab9..aefc13992 100644 --- a/src/modules/partition/gui/PartitionSizeController.cpp +++ b/src/modules/partition/gui/PartitionSizeController.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +37,8 @@ PartitionSizeController::PartitionSizeController( QObject* parent ) : QObject( parent ) -{} +{ +} void PartitionSizeController::init( Device* device, Partition* partition, const QColor& color ) @@ -58,7 +60,9 @@ PartitionSizeController::setPartResizerWidget( PartResizerWidget* widget, bool f Q_ASSERT( m_device ); if ( m_partResizerWidget ) + { disconnect( m_partResizerWidget, nullptr, this, nullptr ); + } m_dirty = false; m_currentSpinBoxValue = -1; @@ -108,7 +112,9 @@ void PartitionSizeController::setSpinBox( QSpinBox* spinBox ) { if ( m_spinBox ) + { disconnect( m_spinBox, nullptr, this, nullptr ); + } m_spinBox = spinBox; m_spinBox->setMaximum( std::numeric_limits< int >::max() ); connectWidgets(); @@ -118,7 +124,9 @@ void PartitionSizeController::connectWidgets() { if ( !m_spinBox || !m_partResizerWidget ) + { return; + } connect( m_spinBox, SIGNAL( editingFinished() ), SLOT( updatePartResizerWidget() ) ); connect( m_partResizerWidget, SIGNAL( firstSectorChanged( qint64 ) ), SLOT( updateSpinBox() ) ); @@ -132,9 +140,13 @@ void PartitionSizeController::updatePartResizerWidget() { if ( m_updating ) + { return; + } if ( m_spinBox->value() == m_currentSpinBoxValue ) + { return; + } m_updating = true; qint64 sectorSize = qint64( m_spinBox->value() ) * 1024 * 1024 / m_device->logicalSize(); @@ -148,8 +160,7 @@ PartitionSizeController::updatePartResizerWidget() } void -PartitionSizeController::doAlignAndUpdatePartResizerWidget( qint64 firstSector, - qint64 lastSector ) +PartitionSizeController::doAlignAndUpdatePartResizerWidget( qint64 firstSector, qint64 lastSector ) { if ( lastSector > m_partResizerWidget->maximumLastSector() ) { @@ -176,7 +187,9 @@ void PartitionSizeController::updateSpinBox() { if ( m_updating ) + { return; + } m_updating = true; doUpdateSpinBox(); m_updating = false; @@ -186,12 +199,16 @@ void PartitionSizeController::doUpdateSpinBox() { if ( !m_spinBox ) + { return; + } int mbSize = CalamaresUtils::BytesToMiB( m_partition->length() * m_device->logicalSize() ); m_spinBox->setValue( mbSize ); - if ( m_currentSpinBoxValue != -1 && //if it's not the first time we're setting it - m_currentSpinBoxValue != mbSize ) //and the operation changes the SB value + if ( m_currentSpinBoxValue != -1 && //if it's not the first time we're setting it + m_currentSpinBoxValue != mbSize ) //and the operation changes the SB value + { m_dirty = true; + } m_currentSpinBoxValue = mbSize; } diff --git a/src/modules/partition/gui/PartitionSizeController.h b/src/modules/partition/gui/PartitionSizeController.h index 7337968f5..1353404c5 100644 --- a/src/modules/partition/gui/PartitionSizeController.h +++ b/src/modules/partition/gui/PartitionSizeController.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionSplitterWidget.cpp b/src/modules/partition/gui/PartitionSplitterWidget.cpp index b8a8017ab..08543756c 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.cpp +++ b/src/modules/partition/gui/PartitionSplitterWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionSplitterWidget.h b/src/modules/partition/gui/PartitionSplitterWidget.h index ed4f0d112..36bd96559 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.h +++ b/src/modules/partition/gui/PartitionSplitterWidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,10 +58,7 @@ public: void init( Device* dev, bool drawNestedPartitions ); - void setSplitPartition( const QString& path, - qint64 minSize, - qint64 maxSize, - qint64 preferredSize ); + void setSplitPartition( const QString& path, qint64 minSize, qint64 maxSize, qint64 preferredSize ); qint64 splitPartitionSize() const; qint64 newPartitionSize() const; @@ -80,20 +78,15 @@ protected: private: void setupItems( const QVector< PartitionSplitterItem >& items ); - void drawPartitions( QPainter* painter, - const QRect& rect, - const QVector< PartitionSplitterItem >& itemList ); - void drawSection( QPainter* painter, const QRect& rect_, int x, int width, - const PartitionSplitterItem& item ); - void drawResizeHandle( QPainter* painter, - const QRect& rect_, - int x ); + void drawPartitions( QPainter* painter, const QRect& rect, const QVector< PartitionSplitterItem >& itemList ); + void drawSection( QPainter* painter, const QRect& rect_, int x, int width, const PartitionSplitterItem& item ); + void drawResizeHandle( QPainter* painter, const QRect& rect_, int x ); PartitionSplitterItem _findItem( QVector< PartitionSplitterItem >& items, - std::function< bool ( PartitionSplitterItem& ) > condition ) const; + std::function< bool( PartitionSplitterItem& ) > condition ) const; int _eachItem( QVector< PartitionSplitterItem >& items, - std::function< bool ( PartitionSplitterItem& ) > operation ) const; + std::function< bool( PartitionSplitterItem& ) > operation ) const; QPair< QVector< PartitionSplitterItem >, qreal > computeItemsVector( const QVector< PartitionSplitterItem >& originalItems ) const; @@ -114,4 +107,4 @@ private: bool m_drawNestedPartitions; }; -#endif // PARTITIONSPLITTERWIDGET_H +#endif // PARTITIONSPLITTERWIDGET_H diff --git a/src/modules/partition/gui/PartitionViewSelectionFilter.h b/src/modules/partition/gui/PartitionViewSelectionFilter.h index 75572a5bb..078999f31 100644 --- a/src/modules/partition/gui/PartitionViewSelectionFilter.h +++ b/src/modules/partition/gui/PartitionViewSelectionFilter.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,4 +26,4 @@ typedef std::function< bool( const QModelIndex& ) > SelectionFilter; -#endif // PARTITIONVIEWSELECTIONFILTER_H +#endif // PARTITIONVIEWSELECTIONFILTER_H diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index c05ed3177..59f117b26 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -1,10 +1,11 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2018-2019, 2020, Adriaan de Groot - * Copyright 2019, Collabora Ltd - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-FileCopyrightText: 2020 Anke Boersma shortVersionedName() ); break; case ChoicePage::InstallChoice::Erase: - modeText - = tr( "Erase disk and install %1." ).arg( branding->shortVersionedName() ); + modeText = tr( "Erase disk and install %1." ).arg( branding->shortVersionedName() ); break; case ChoicePage::InstallChoice::Replace: - modeText - = tr( "Replace a partition with %1." ).arg( branding->shortVersionedName() ); + modeText = tr( "Replace a partition with %1." ).arg( branding->shortVersionedName() ); break; case ChoicePage::InstallChoice::NoChoice: case ChoicePage::InstallChoice::Manual: @@ -259,7 +258,8 @@ PartitionViewStep::createSummaryWidget() const previewLabels->setModel( info.partitionModelAfter ); preview->setSelectionMode( QAbstractItemView::NoSelection ); previewLabels->setSelectionMode( QAbstractItemView::NoSelection ); - previewLabels->setCustomNewRootLabel( Calamares::Branding::instance()->string( Calamares::Branding::BootloaderEntryName )); + previewLabels->setCustomNewRootLabel( + Calamares::Branding::instance()->string( Calamares::Branding::BootloaderEntryName ) ); info.partitionModelAfter->setParent( widget ); field = new QVBoxLayout; CalamaresUtils::unmarginLayout( field ); @@ -350,7 +350,7 @@ PartitionViewStep::isNextEnabled() const } void -PartitionViewStep::nextPossiblyChanged(bool) +PartitionViewStep::nextPossiblyChanged( bool ) { emit nextStatusChanged( isNextEnabled() ); } @@ -378,7 +378,8 @@ PartitionViewStep::isAtEnd() const { if ( m_widget->currentWidget() == m_choicePage ) { - if ( m_choicePage->currentChoice() == ChoicePage::InstallChoice::Erase || m_choicePage->currentChoice() == ChoicePage::InstallChoice::Replace + if ( m_choicePage->currentChoice() == ChoicePage::InstallChoice::Erase + || m_choicePage->currentChoice() == ChoicePage::InstallChoice::Replace || m_choicePage->currentChoice() == ChoicePage::InstallChoice::Alongside ) { return true; @@ -395,7 +396,8 @@ PartitionViewStep::onActivate() m_config->updateGlobalStorage(); // if we're coming back to PVS from the next VS - if ( m_widget->currentWidget() == m_choicePage && m_choicePage->currentChoice() == ChoicePage::InstallChoice::Alongside ) + if ( m_widget->currentWidget() == m_choicePage + && m_choicePage->currentChoice() == ChoicePage::InstallChoice::Alongside ) { m_choicePage->applyActionChoice( ChoicePage::InstallChoice::Alongside ); // m_choicePage->reset(); @@ -475,17 +477,17 @@ PartitionViewStep::onLeave() QString message = tr( "Option to use GPT on BIOS" ); QString description = tr( "A GPT partition table is the best option for all " - "systems. This installer supports such a setup for " - "BIOS systems too." - "

" - "To configure a GPT partition table on BIOS, " - "(if not done so already) go back " - "and set the partition table to GPT, next create a 8 MB " - "unformatted partition with the " - "bios_grub flag enabled.

" - "An unformatted 8 MB partition is necessary " - "to start %1 on a BIOS system with GPT." ) - .arg( branding->shortProductName() ); + "systems. This installer supports such a setup for " + "BIOS systems too." + "

" + "To configure a GPT partition table on BIOS, " + "(if not done so already) go back " + "and set the partition table to GPT, next create a 8 MB " + "unformatted partition with the " + "bios_grub flag enabled.

" + "An unformatted 8 MB partition is necessary " + "to start %1 on a BIOS system with GPT." ) + .arg( branding->shortProductName() ); QMessageBox::information( m_manualPartitionPage, message, description ); } diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index 1b0baf142..da1ec5255 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +37,8 @@ class PartitionCoreModule; class QStackedWidget; class WaitingWidget; -template class QFutureWatcher; +template < typename T > +class QFutureWatcher; /** * The starting point of the module. Instantiates PartitionCoreModule, @@ -83,14 +85,14 @@ private: Config* m_config; PartitionCoreModule* m_core; - QStackedWidget* m_widget; - ChoicePage* m_choicePage; - PartitionPage* m_manualPartitionPage; + QStackedWidget* m_widget; + ChoicePage* m_choicePage; + PartitionPage* m_manualPartitionPage; WaitingWidget* m_waitingWidget; - QFutureWatcher* m_future; + QFutureWatcher< void >* m_future; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( PartitionViewStepFactory ) -#endif // PARTITIONVIEWSTEP_H +#endif // PARTITIONVIEWSTEP_H diff --git a/src/modules/partition/gui/ReplaceWidget.cpp b/src/modules/partition/gui/ReplaceWidget.cpp index 8594a3e15..6c4d800dd 100644 --- a/src/modules/partition/gui/ReplaceWidget.cpp +++ b/src/modules/partition/gui/ReplaceWidget.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2014, Aurélien Gâteau - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,8 +23,8 @@ #include "ui_ReplaceWidget.h" #include "core/DeviceModel.h" -#include "core/PartitionCoreModule.h" #include "core/PartitionActions.h" +#include "core/PartitionCoreModule.h" #include "core/PartitionInfo.h" #include "Branding.h" @@ -41,9 +42,7 @@ using CalamaresUtils::Partition::untranslatedFS; using CalamaresUtils::Partition::userVisibleFS; -ReplaceWidget::ReplaceWidget( PartitionCoreModule* core, - QComboBox* devicesComboBox, - QWidget* parent ) +ReplaceWidget::ReplaceWidget( PartitionCoreModule* core, QComboBox* devicesComboBox, QWidget* parent ) : QWidget( parent ) , m_ui( new Ui_ReplaceWidget ) , m_core( core ) @@ -57,20 +56,15 @@ ReplaceWidget::ReplaceWidget( PartitionCoreModule* core, m_ui->bootStatusLabel->clear(); updateFromCurrentDevice( devicesComboBox ); - connect( devicesComboBox, &QComboBox::currentTextChanged, - this, [=]( const QString& /* text */ ) - { + connect( devicesComboBox, &QComboBox::currentTextChanged, this, [=]( const QString& /* text */ ) { updateFromCurrentDevice( devicesComboBox ); } ); - CALAMARES_RETRANSLATE( - onPartitionSelected(); - ) + CALAMARES_RETRANSLATE( onPartitionSelected(); ) } -ReplaceWidget::~ReplaceWidget() -{} +ReplaceWidget::~ReplaceWidget() {} bool @@ -101,23 +95,20 @@ ReplaceWidget::applyChanges() Device* dev = model->device(); PartitionActions::doReplacePartition( - m_core, dev, partition, - { gs->value( "defaultFileSystemType" ).toString(), QString() } ); + m_core, dev, partition, { gs->value( "defaultFileSystemType" ).toString(), QString() } ); if ( m_isEfi ) { QList< Partition* > efiSystemPartitions = m_core->efiSystemPartitions(); if ( efiSystemPartitions.count() == 1 ) { - PartitionInfo::setMountPoint( - efiSystemPartitions.first(), - gs->value( "efiSystemPartition" ).toString() ); + PartitionInfo::setMountPoint( efiSystemPartitions.first(), + gs->value( "efiSystemPartition" ).toString() ); } else if ( efiSystemPartitions.count() > 1 ) { - PartitionInfo::setMountPoint( - efiSystemPartitions.at( m_ui->bootComboBox->currentIndex() ), - gs->value( "efiSystemPartition" ).toString() ); + PartitionInfo::setMountPoint( efiSystemPartitions.at( m_ui->bootComboBox->currentIndex() ), + gs->value( "efiSystemPartition" ).toString() ); } } @@ -131,7 +122,9 @@ void ReplaceWidget::onPartitionSelected() { if ( Calamares::JobQueue::instance()->globalStorage()->value( "firmwareType" ) == "efi" ) + { m_isEfi = true; + } const auto* branding = Calamares::Branding::instance(); if ( m_ui->partitionTreeView->currentIndex() == QModelIndex() ) @@ -146,24 +139,20 @@ ReplaceWidget::onPartitionSelected() } bool ok = false; - double requiredSpaceB = Calamares::JobQueue::instance() - ->globalStorage() - ->value( "requiredStorageGiB" ) - .toDouble( &ok ) * 1024 * 1024 * 1024; + double requiredSpaceB + = Calamares::JobQueue::instance()->globalStorage()->value( "requiredStorageGiB" ).toDouble( &ok ) * 1024 * 1024 + * 1024; PartitionModel* model = qobject_cast< PartitionModel* >( m_ui->partitionTreeView->model() ); if ( model && ok ) { - const QStringList osproberLines = Calamares::JobQueue::instance() - ->globalStorage() - ->value( "osproberLines" ).toStringList(); + const QStringList osproberLines + = Calamares::JobQueue::instance()->globalStorage()->value( "osproberLines" ).toStringList(); Partition* partition = model->partitionForIndex( m_ui->partitionTreeView->currentIndex() ); - if ( !partition || - partition->state() != KPM_PARTITION_STATE(None) ) + if ( !partition || partition->state() != KPM_PARTITION_STATE( None ) ) { - updateStatus( CalamaresUtils::Fail, - tr( "The selected item does not appear to be a valid partition." ) ); + updateStatus( CalamaresUtils::Fail, tr( "The selected item does not appear to be a valid partition." ) ); setNextEnabled( false ); return; } @@ -173,7 +162,7 @@ ReplaceWidget::onPartitionSelected() updateStatus( CalamaresUtils::Fail, tr( "%1 cannot be installed on empty space. Please select an " "existing partition." ) - .arg( branding->versionedName() ) ); + .arg( branding->versionedName() ) ); setNextEnabled( false ); return; } @@ -183,7 +172,7 @@ ReplaceWidget::onPartitionSelected() updateStatus( CalamaresUtils::Fail, tr( "%1 cannot be installed on an extended partition. Please select an " "existing primary or logical partition." ) - .arg( branding->versionedName() ) ); + .arg( branding->versionedName() ) ); setNextEnabled( false ); return; } @@ -191,8 +180,7 @@ ReplaceWidget::onPartitionSelected() if ( partition->partitionPath().isEmpty() ) { updateStatus( CalamaresUtils::Fail, - tr( "%1 cannot be installed on this partition." ) - .arg( branding->versionedName() ) ); + tr( "%1 cannot be installed on this partition." ).arg( branding->versionedName() ) ); setNextEnabled( false ); return; } @@ -208,20 +196,23 @@ ReplaceWidget::onPartitionSelected() { QString osName; if ( !lineColumns.value( 1 ).simplified().isEmpty() ) + { osName = lineColumns.value( 1 ).simplified(); + } else if ( !lineColumns.value( 2 ).simplified().isEmpty() ) + { osName = lineColumns.value( 2 ).simplified(); + } if ( osName.isEmpty() ) { - prettyName = tr( "Unknown system partition (%1)" ) - .arg( fsNameForUser ); + prettyName = tr( "Unknown system partition (%1)" ).arg( fsNameForUser ); } else { - prettyName = tr ( "%1 system partition (%2)" ) - .arg( osName.replace( 0, 1, osName.at( 0 ).toUpper() ) ) - .arg( fsNameForUser ); + prettyName = tr( "%1 system partition (%2)" ) + .arg( osName.replace( 0, 1, osName.at( 0 ).toUpper() ) ) + .arg( fsNameForUser ); } break; } @@ -233,11 +224,10 @@ ReplaceWidget::onPartitionSelected() tr( "%4

" "The partition %1 is too small for %2. Please select a partition " "with capacity at least %3 GiB." ) - .arg( partition->partitionPath() ) - .arg( branding->versionedName() ) - .arg( requiredSpaceB / ( 1024. * 1024. * 1024. ), - 0, 'f', 1 ) - .arg( prettyName ) ); + .arg( partition->partitionPath() ) + .arg( branding->versionedName() ) + .arg( requiredSpaceB / ( 1024. * 1024. * 1024. ), 0, 'f', 1 ) + .arg( prettyName ) ); setNextEnabled( false ); return; } @@ -257,8 +247,8 @@ ReplaceWidget::onPartitionSelected() "An EFI system partition cannot be found anywhere " "on this system. Please go back and use manual " "partitioning to set up %1." ) - .arg( branding->shortProductName() ) - .arg( prettyName ) ); + .arg( branding->shortProductName() ) + .arg( prettyName ) ); setNextEnabled( false ); } else if ( efiSystemPartitions.count() == 1 ) @@ -267,15 +257,14 @@ ReplaceWidget::onPartitionSelected() tr( "%3

" "%1 will be installed on %2.
" "Warning: all data on partition " - "%2 will be lost.") - .arg( branding->versionedName() ) - .arg( partition->partitionPath() ) - .arg( prettyName ) ); + "%2 will be lost." ) + .arg( branding->versionedName() ) + .arg( partition->partitionPath() ) + .arg( prettyName ) ); m_ui->bootStatusLabel->show(); - m_ui->bootStatusLabel->setText( - tr( "The EFI system partition at %1 will be used for starting %2." ) - .arg( efiSystemPartitions.first()->partitionPath() ) - .arg( branding->shortProductName() ) ); + m_ui->bootStatusLabel->setText( tr( "The EFI system partition at %1 will be used for starting %2." ) + .arg( efiSystemPartitions.first()->partitionPath() ) + .arg( branding->shortProductName() ) ); setNextEnabled( true ); } else @@ -284,10 +273,10 @@ ReplaceWidget::onPartitionSelected() tr( "%3

" "%1 will be installed on %2.
" "Warning: all data on partition " - "%2 will be lost.") - .arg( branding->versionedName() ) - .arg( partition->partitionPath() ) - .arg( prettyName ) ); + "%2 will be lost." ) + .arg( branding->versionedName() ) + .arg( partition->partitionPath() ) + .arg( prettyName ) ); m_ui->bootStatusLabel->show(); m_ui->bootStatusLabel->setText( tr( "EFI system partition:" ) ); m_ui->bootComboBox->show(); @@ -295,9 +284,10 @@ ReplaceWidget::onPartitionSelected() { Partition* efiPartition = efiSystemPartitions.at( i ); m_ui->bootComboBox->addItem( efiPartition->partitionPath(), i ); - if ( efiPartition->devicePath() == partition->devicePath() && - efiPartition->number() == 1 ) + if ( efiPartition->devicePath() == partition->devicePath() && efiPartition->number() == 1 ) + { m_ui->bootComboBox->setCurrentIndex( i ); + } } setNextEnabled( true ); } @@ -308,10 +298,10 @@ ReplaceWidget::onPartitionSelected() tr( "%3

" "%1 will be installed on %2.
" "Warning: all data on partition " - "%2 will be lost.") - .arg( branding->versionedName() ) - .arg( partition->partitionPath() ) - .arg( prettyName ) ); + "%2 will be lost." ) + .arg( branding->versionedName() ) + .arg( partition->partitionPath() ) + .arg( prettyName ) ); setNextEnabled( true ); } } @@ -322,7 +312,9 @@ void ReplaceWidget::setNextEnabled( bool enabled ) { if ( enabled == m_nextEnabled ) + { return; + } m_nextEnabled = enabled; emit nextStatusChanged( enabled ); @@ -333,27 +325,29 @@ void ReplaceWidget::updateStatus( CalamaresUtils::ImageType imageType, const QString& text ) { int iconSize = CalamaresUtils::defaultFontHeight() * 6; - m_ui->selectedIconLabel->setPixmap( CalamaresUtils::defaultPixmap( imageType, - CalamaresUtils::Original, - QSize( iconSize, iconSize ) ) ); + m_ui->selectedIconLabel->setPixmap( + CalamaresUtils::defaultPixmap( imageType, CalamaresUtils::Original, QSize( iconSize, iconSize ) ) ); m_ui->selectedIconLabel->setFixedHeight( iconSize ); m_ui->selectedStatusLabel->setText( text ); } - void ReplaceWidget::updateFromCurrentDevice( QComboBox* devicesComboBox ) { QModelIndex index = m_core->deviceModel()->index( devicesComboBox->currentIndex(), 0 ); if ( !index.isValid() ) + { return; + } Device* device = m_core->deviceModel()->deviceForIndex( index ); QAbstractItemModel* oldModel = m_ui->partitionTreeView->model(); if ( oldModel ) + { disconnect( oldModel, nullptr, this, nullptr ); + } PartitionModel* model = m_core->partitionModelForDevice( device ); m_ui->partitionTreeView->setModel( model ); @@ -368,8 +362,10 @@ ReplaceWidget::updateFromCurrentDevice( QComboBox* devicesComboBox ) //updateButtons(); // Establish connection here because selection model is destroyed when // model changes - connect( m_ui->partitionTreeView->selectionModel(), &QItemSelectionModel::currentRowChanged, - this, &ReplaceWidget::onPartitionViewActivated ); + connect( m_ui->partitionTreeView->selectionModel(), + &QItemSelectionModel::currentRowChanged, + this, + &ReplaceWidget::onPartitionViewActivated ); connect( model, &QAbstractItemModel::modelReset, this, &ReplaceWidget::onPartitionModelReset ); } @@ -380,7 +376,9 @@ ReplaceWidget::onPartitionViewActivated() { QModelIndex index = m_ui->partitionTreeView->currentIndex(); if ( !index.isValid() ) + { return; + } const PartitionModel* model = static_cast< const PartitionModel* >( index.model() ); Q_ASSERT( model ); diff --git a/src/modules/partition/gui/ReplaceWidget.h b/src/modules/partition/gui/ReplaceWidget.h index c09c604b1..e30b57bb3 100644 --- a/src/modules/partition/gui/ReplaceWidget.h +++ b/src/modules/partition/gui/ReplaceWidget.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2014, Aurélien Gâteau - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,8 +24,8 @@ #include "utils/CalamaresUtilsGui.h" -#include #include +#include class Ui_ReplaceWidget; class QComboBox; @@ -35,9 +36,7 @@ class ReplaceWidget : public QWidget { Q_OBJECT public: - explicit ReplaceWidget( PartitionCoreModule* core, - QComboBox* devicesComboBox, - QWidget* parent = nullptr ); + explicit ReplaceWidget( PartitionCoreModule* core, QComboBox* devicesComboBox, QWidget* parent = nullptr ); virtual ~ReplaceWidget(); bool isNextEnabled() const; @@ -69,4 +68,4 @@ private: void onPartitionModelReset(); }; -#endif // REPLACEWIDGET_H +#endif // REPLACEWIDGET_H diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp index 2de999360..1aae5f49b 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,7 +30,7 @@ #include #include -ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice *device, +ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice* device, const PartitionVector& availablePVs, PartitionVector& selectedPVs, QWidget* parent ) @@ -39,12 +40,17 @@ ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice *device, setWindowTitle( tr( "Resize Volume Group" ) ); for ( int i = 0; i < pvList()->count(); i++ ) - pvList()->item(i)->setCheckState( Qt::Checked ); + { + pvList()->item( i )->setCheckState( Qt::Checked ); + } for ( const Partition* p : availablePVs ) + { pvList()->addItem( new ListPhysicalVolumeWidgetItem( p, false ) ); + } - peSize()->setValue( static_cast( device->peSize() / Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB) ) ); + peSize()->setValue( + static_cast< int >( device->peSize() / Capacity::unitFactor( Capacity::Unit::Byte, Capacity::Unit::MiB ) ) ); vgName()->setEnabled( false ); peSize()->setEnabled( false ); diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.h b/src/modules/partition/gui/ResizeVolumeGroupDialog.h index bc088de4d..af5a29ae6 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.h +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +31,7 @@ class ResizeVolumeGroupDialog : public VolumeGroupBaseDialog public: using PartitionVector = QVector< const Partition* >; - ResizeVolumeGroupDialog( LvmDevice *device, + ResizeVolumeGroupDialog( LvmDevice* device, const PartitionVector& availablePVs, PartitionVector& selectedPVs, QWidget* parent ); @@ -41,4 +42,4 @@ private: PartitionVector& m_selectedPVs; }; -#endif // RESIZEVOLUMEGROUPDIALOG_H +#endif // RESIZEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index 85479fbb3..5099484d9 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,14 +23,12 @@ #include "3rdparty/waitingspinnerwidget.h" #include -#include #include +#include #include -ScanningDialog::ScanningDialog( const QString& text, - const QString& windowTitle, - QWidget* parent ) +ScanningDialog::ScanningDialog( const QString& text, const QString& windowTitle, QWidget* parent ) : QDialog( parent ) { setModal( true ); @@ -42,8 +41,7 @@ ScanningDialog::ScanningDialog( const QString& text, dialogLayout->addWidget( spinner ); spinner->start(); - QLabel* rescanningLabel = new QLabel( text, - this ); + QLabel* rescanningLabel = new QLabel( text, this ); dialogLayout->addWidget( rescanningLabel ); } @@ -55,16 +53,11 @@ ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent ) { - ScanningDialog* theDialog = - new ScanningDialog( text, - windowTitle, - parent ); + ScanningDialog* theDialog = new ScanningDialog( text, windowTitle, parent ); theDialog->show(); QFutureWatcher< void >* watcher = new QFutureWatcher< void >(); - connect( watcher, &QFutureWatcher< void >::finished, - theDialog, [ watcher, theDialog, callback ] - { + connect( watcher, &QFutureWatcher< void >::finished, theDialog, [watcher, theDialog, callback] { watcher->deleteLater(); theDialog->hide(); theDialog->deleteLater(); @@ -76,18 +69,13 @@ ScanningDialog::run( const QFuture< void >& future, void -ScanningDialog::run( const QFuture< void >& future, - const std::function< void() >& callback, - QWidget* parent ) +ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent ) { - ScanningDialog::run( future, - tr( "Scanning storage devices..." ), - tr( "Partitioning" ), - callback, - parent ); + ScanningDialog::run( future, tr( "Scanning storage devices..." ), tr( "Partitioning" ), callback, parent ); } -void ScanningDialog::setVisible(bool visible) +void +ScanningDialog::setVisible( bool visible ) { QDialog::setVisible( visible ); emit visibilityChanged(); diff --git a/src/modules/partition/gui/ScanningDialog.h b/src/modules/partition/gui/ScanningDialog.h index 4f5254590..25cd36227 100644 --- a/src/modules/partition/gui/ScanningDialog.h +++ b/src/modules/partition/gui/ScanningDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,19 +29,19 @@ class ScanningDialog : public QDialog { Q_OBJECT public: - explicit ScanningDialog( const QString& text, - const QString& windowTitle, - QWidget* parent = nullptr ); + explicit ScanningDialog( const QString& text, const QString& windowTitle, QWidget* parent = nullptr ); - static void run( const QFuture< void >& future, - const QString& text, - const QString& windowTitle, - const std::function< void() >& callback = []{}, - QWidget* parent = nullptr ); + static void run( + const QFuture< void >& future, + const QString& text, + const QString& windowTitle, + const std::function< void() >& callback = [] {}, + QWidget* parent = nullptr ); - static void run( const QFuture< void >& future, - const std::function< void() >& callback = []{}, - QWidget* parent = nullptr ); + static void run( + const QFuture< void >& future, + const std::function< void() >& callback = [] {}, + QWidget* parent = nullptr ); public slots: void setVisible( bool visible ) override; @@ -49,4 +50,4 @@ signals: void visibilityChanged(); }; -#endif // SCANNINGDIALOG_H +#endif // SCANNINGDIALOG_H diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp index 8078253b3..95aa75ac2 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,46 +31,42 @@ #include #include -VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, - QVector< const Partition* > pvList, - QWidget *parent ) - : QDialog(parent) - , ui(new Ui::VolumeGroupBaseDialog) - , m_vgNameValue(vgName) - , m_totalSizeValue(0) - , m_usedSizeValue(0) +VolumeGroupBaseDialog::VolumeGroupBaseDialog( QString& vgName, QVector< const Partition* > pvList, QWidget* parent ) + : QDialog( parent ) + , ui( new Ui::VolumeGroupBaseDialog ) + , m_vgNameValue( vgName ) + , m_totalSizeValue( 0 ) + , m_usedSizeValue( 0 ) { - ui->setupUi(this); + ui->setupUi( this ); for ( const Partition* p : pvList ) + { ui->pvList->addItem( new ListPhysicalVolumeWidgetItem( p, false ) ); + } - ui->vgType->addItems( QStringList() << "LVM" << "RAID" ); - ui->vgType->setCurrentIndex(0); + ui->vgType->addItems( QStringList() << "LVM" + << "RAID" ); + ui->vgType->setCurrentIndex( 0 ); - QRegularExpression re(R"(^(?!_|\.)[\w\-.+]+)"); + QRegularExpression re( R"(^(?!_|\.)[\w\-.+]+)" ); ui->vgName->setValidator( new QRegularExpressionValidator( re, this ) ); ui->vgName->setText( m_vgNameValue ); updateOkButton(); updateTotalSize(); - connect( ui->pvList, &QListWidget::itemChanged, this, - [&](QListWidgetItem*) { - updateTotalSize(); - updateOkButton(); - } ); + connect( ui->pvList, &QListWidget::itemChanged, this, [&]( QListWidgetItem* ) { + updateTotalSize(); + updateOkButton(); + } ); - connect( ui->peSize, qOverload(&QSpinBox::valueChanged), this, - [&](int) { - updateTotalSectors(); - updateOkButton(); - }); + connect( ui->peSize, qOverload< int >( &QSpinBox::valueChanged ), this, [&]( int ) { + updateTotalSectors(); + updateOkButton(); + } ); - connect( ui->vgName, &QLineEdit::textChanged, this, - [&](const QString&) { - updateOkButton(); - }); + connect( ui->vgName, &QLineEdit::textChanged, this, [&]( const QString& ) { updateOkButton(); } ); } VolumeGroupBaseDialog::~VolumeGroupBaseDialog() @@ -82,11 +79,14 @@ VolumeGroupBaseDialog::checkedItems() const { QVector< const Partition* > items; - for ( int i = 0; i < ui->pvList->count(); i++) { - ListPhysicalVolumeWidgetItem* item = dynamic_cast< ListPhysicalVolumeWidgetItem* >( ui->pvList->item(i) ); + for ( int i = 0; i < ui->pvList->count(); i++ ) + { + ListPhysicalVolumeWidgetItem* item = dynamic_cast< ListPhysicalVolumeWidgetItem* >( ui->pvList->item( i ) ); if ( item && item->checkState() == Qt::Checked ) + { items << item->partition(); + } } return items; @@ -101,10 +101,8 @@ VolumeGroupBaseDialog::isSizeValid() const void VolumeGroupBaseDialog::updateOkButton() { - okButton()->setEnabled(isSizeValid() && - !checkedItems().empty() && - !ui->vgName->text().isEmpty() && - ui->peSize->value() > 0); + okButton()->setEnabled( isSizeValid() && !checkedItems().empty() && !ui->vgName->text().isEmpty() + && ui->peSize->value() > 0 ); } void @@ -112,7 +110,7 @@ VolumeGroupBaseDialog::setUsedSizeValue( qint64 usedSize ) { m_usedSizeValue = usedSize; - ui->usedSize->setText( Capacity::formatByteSize(m_usedSizeValue) ); + ui->usedSize->setText( Capacity::formatByteSize( m_usedSizeValue ) ); } void @@ -126,10 +124,14 @@ VolumeGroupBaseDialog::updateTotalSize() { m_totalSizeValue = 0; - for ( const Partition *p : checkedItems()) - m_totalSizeValue += p->capacity() - p->capacity() % (ui->peSize->value() * Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB)); + for ( const Partition* p : checkedItems() ) + { + m_totalSizeValue += p->capacity() + - p->capacity() + % ( ui->peSize->value() * Capacity::unitFactor( Capacity::Unit::Byte, Capacity::Unit::MiB ) ); + } - ui->totalSize->setText(Capacity::formatByteSize(m_totalSizeValue)); + ui->totalSize->setText( Capacity::formatByteSize( m_totalSizeValue ) ); updateTotalSectors(); } @@ -139,10 +141,12 @@ VolumeGroupBaseDialog::updateTotalSectors() { qint64 totalSectors = 0; - qint64 extentSize = ui->peSize->value() * Capacity::unitFactor(Capacity::Unit::Byte, Capacity::Unit::MiB); + qint64 extentSize = ui->peSize->value() * Capacity::unitFactor( Capacity::Unit::Byte, Capacity::Unit::MiB ); if ( extentSize > 0 ) + { totalSectors = m_totalSizeValue / extentSize; + } ui->totalSectors->setText( QString::number( totalSectors ) ); } diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.h b/src/modules/partition/gui/VolumeGroupBaseDialog.h index e6011ce62..7c7b43e48 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.h +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +24,8 @@ #include -namespace Ui { +namespace Ui +{ class VolumeGroupBaseDialog; } @@ -37,9 +39,7 @@ class VolumeGroupBaseDialog : public QDialog Q_OBJECT public: - explicit VolumeGroupBaseDialog( QString& vgName, - QVector< const Partition* > pvList, - QWidget* parent = nullptr ); + explicit VolumeGroupBaseDialog( QString& vgName, QVector< const Partition* > pvList, QWidget* parent = nullptr ); ~VolumeGroupBaseDialog(); protected: @@ -78,4 +78,4 @@ private: qint64 m_usedSizeValue; }; -#endif // VOLUMEGROUPBASEDIALOG_H +#endif // VOLUMEGROUPBASEDIALOG_H diff --git a/src/modules/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index 29f00ebd2..c51a784c1 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot - * Copyright 2019, Kevin Kofler + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Kevin Kofler + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ClearMountsJob.h b/src/modules/partition/jobs/ClearMountsJob.h index 2accc652d..7d9df270a 100644 --- a/src/modules/partition/jobs/ClearMountsJob.h +++ b/src/modules/partition/jobs/ClearMountsJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ClearTempMountsJob.cpp b/src/modules/partition/jobs/ClearTempMountsJob.cpp index cf2c71f0c..36b83f56c 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.cpp +++ b/src/modules/partition/jobs/ClearTempMountsJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ClearTempMountsJob.h b/src/modules/partition/jobs/ClearTempMountsJob.h index 433cfd8ad..6f29f197c 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.h +++ b/src/modules/partition/jobs/ClearTempMountsJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreatePartitionJob.cpp b/src/modules/partition/jobs/CreatePartitionJob.cpp index fd322a94e..ac61518f8 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreatePartitionJob.h b/src/modules/partition/jobs/CreatePartitionJob.h index f315e24fb..b11874fad 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.h +++ b/src/modules/partition/jobs/CreatePartitionJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreatePartitionTableJob.cpp b/src/modules/partition/jobs/CreatePartitionTableJob.cpp index 79675c324..a585c094a 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionTableJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreatePartitionTableJob.h b/src/modules/partition/jobs/CreatePartitionTableJob.h index e0ed6f918..02f23d169 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.h +++ b/src/modules/partition/jobs/CreatePartitionTableJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp index 28a08f5ad..6d9c9d6e0 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.h b/src/modules/partition/jobs/CreateVolumeGroupJob.h index 9ed5e24e2..0e73c52fa 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.h +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp index 77df64e3d..3adce640c 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h index 7b1c9c473..13b60069e 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/DeletePartitionJob.cpp b/src/modules/partition/jobs/DeletePartitionJob.cpp index 9b2d4f37d..8a9fedce2 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.cpp +++ b/src/modules/partition/jobs/DeletePartitionJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/DeletePartitionJob.h b/src/modules/partition/jobs/DeletePartitionJob.h index f68a4ea8f..5a0332bf4 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.h +++ b/src/modules/partition/jobs/DeletePartitionJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.cpp b/src/modules/partition/jobs/FillGlobalStorageJob.cpp index e3f696bbc..a0b229d45 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp +++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2017, 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 2019-2020, Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.h b/src/modules/partition/jobs/FillGlobalStorageJob.h index e3850da37..823f64f2f 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.h +++ b/src/modules/partition/jobs/FillGlobalStorageJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/FormatPartitionJob.cpp b/src/modules/partition/jobs/FormatPartitionJob.cpp index 45e851baf..d12c89022 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.cpp +++ b/src/modules/partition/jobs/FormatPartitionJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015-2016, Teo Mrnjavac - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/FormatPartitionJob.h b/src/modules/partition/jobs/FormatPartitionJob.h index 2031efc78..f3a721187 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.h +++ b/src/modules/partition/jobs/FormatPartitionJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/PartitionJob.cpp b/src/modules/partition/jobs/PartitionJob.cpp index 6b8dc9034..de96ef950 100644 --- a/src/modules/partition/jobs/PartitionJob.cpp +++ b/src/modules/partition/jobs/PartitionJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/PartitionJob.h b/src/modules/partition/jobs/PartitionJob.h index eef6aaa4c..66b9704a1 100644 --- a/src/modules/partition/jobs/PartitionJob.h +++ b/src/modules/partition/jobs/PartitionJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp index ed8353e72..7c4b2ea31 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.h b/src/modules/partition/jobs/RemoveVolumeGroupJob.h index 0a52a837e..06ed2ab2a 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.h +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ResizePartitionJob.cpp b/src/modules/partition/jobs/ResizePartitionJob.cpp index 9ebd4ce7e..c71078dc1 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.cpp +++ b/src/modules/partition/jobs/ResizePartitionJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Andrius Štikonas + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Andrius Štikonas + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ResizePartitionJob.h b/src/modules/partition/jobs/ResizePartitionJob.h index f8413f214..f86b792fc 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.h +++ b/src/modules/partition/jobs/ResizePartitionJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp index b44fd017b..b9828ccb4 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.h b/src/modules/partition/jobs/ResizeVolumeGroupJob.h index 808c39d32..e77098184 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.h +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Caio Jordão Carvalho + * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp index 3c9403b50..cf8aabd35 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp @@ -1,10 +1,11 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2008 2010, Volker Lanz + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * - * Based on the SetPartFlagsJob class from KDE Partition Manager, - * Copyright 2008, 2010, Volker Lanz + * Based on the SetPartFlagsJob class from KDE Partition Manager * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.h b/src/modules/partition/jobs/SetPartitionFlagsJob.h index 41b01ecde..957c6893f 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.h +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.h @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Based on the SetPartFlagsJob class from KDE Partition Manager, - * Copyright 2008, 2010, Volker Lanz + * SPDX-FileCopyrightText: 2008 2010, Volker Lanz * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/tests/ClearMountsJobTests.cpp b/src/modules/partition/tests/ClearMountsJobTests.cpp index bdccc1bc4..69d34c848 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.cpp +++ b/src/modules/partition/tests/ClearMountsJobTests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/tests/ClearMountsJobTests.h b/src/modules/partition/tests/ClearMountsJobTests.h index 0cc2b5c78..27dfca8b9 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.h +++ b/src/modules/partition/tests/ClearMountsJobTests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/tests/PartitionJobTests.cpp b/src/modules/partition/tests/PartitionJobTests.cpp index ae40215db..9aa58ff58 100644 --- a/src/modules/partition/tests/PartitionJobTests.cpp +++ b/src/modules/partition/tests/PartitionJobTests.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2017, 2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2017, 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/tests/PartitionJobTests.h b/src/modules/partition/tests/PartitionJobTests.h index 4ce064ec7..d2f0eb16c 100644 --- a/src/modules/partition/tests/PartitionJobTests.h +++ b/src/modules/partition/tests/PartitionJobTests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfJob.cpp b/src/modules/plasmalnf/PlasmaLnfJob.cpp index 44bdb5cc7..b4ffadcd8 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.cpp +++ b/src/modules/plasmalnf/PlasmaLnfJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,9 +31,7 @@ PlasmaLnfJob::PlasmaLnfJob( const QString& lnfPath, const QString& id ) } -PlasmaLnfJob::~PlasmaLnfJob() -{ -} +PlasmaLnfJob::~PlasmaLnfJob() {} QString @@ -41,7 +40,8 @@ PlasmaLnfJob::prettyName() const return tr( "Plasma Look-and-Feel Job" ); } -QString PlasmaLnfJob::prettyStatusMessage() const +QString +PlasmaLnfJob::prettyStatusMessage() const { return prettyName(); } @@ -55,18 +55,22 @@ PlasmaLnfJob::exec() auto system = CalamaresUtils::System::instance(); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - QStringList command( - { - "sudo", "-E", "-H", "-u", gs->value( "username" ).toString(), - m_lnfPath, "-platform", "minimal", "--resetLayout", "--apply", m_id - } ); + QStringList command( { "sudo", + "-E", + "-H", + "-u", + gs->value( "username" ).toString(), + m_lnfPath, + "-platform", + "minimal", + "--resetLayout", + "--apply", + m_id } ); int r = system->targetEnvCall( command ); if ( r ) - return Calamares::JobResult::error( - tr( "Could not select KDE Plasma Look-and-Feel package" ), - tr( "Could not select KDE Plasma Look-and-Feel package" ) ); + return Calamares::JobResult::error( tr( "Could not select KDE Plasma Look-and-Feel package" ), + tr( "Could not select KDE Plasma Look-and-Feel package" ) ); return Calamares::JobResult::ok(); } - diff --git a/src/modules/plasmalnf/PlasmaLnfJob.h b/src/modules/plasmalnf/PlasmaLnfJob.h index 9c52f2c8d..9462f66ac 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.h +++ b/src/modules/plasmalnf/PlasmaLnfJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,4 +43,4 @@ private: QString m_id; }; -#endif // PLASMALNFJOB_H +#endif // PLASMALNFJOB_H diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index 7e2ef8aa6..f3bcc09c8 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,9 +22,9 @@ #include "ui_page_plasmalnf.h" +#include "Settings.h" #include "utils/Logger.h" #include "utils/Retranslator.h" -#include "Settings.h" #include @@ -38,17 +39,18 @@ ThemeInfo::ThemeInfo( const KPluginMetaData& data ) { } -static ThemeInfoList plasma_themes() +static ThemeInfoList +plasma_themes() { ThemeInfoList packages; - QList pkgs = KPackage::PackageLoader::self()->listPackages( "Plasma/LookAndFeel" ); + QList< KPluginMetaData > pkgs = KPackage::PackageLoader::self()->listPackages( "Plasma/LookAndFeel" ); for ( const KPluginMetaData& data : pkgs ) { if ( data.isValid() && !data.isHidden() && !data.name().isEmpty() ) { - packages << ThemeInfo{ data }; + packages << ThemeInfo { data }; } } @@ -63,25 +65,21 @@ PlasmaLnfPage::PlasmaLnfPage( QWidget* parent ) , m_buttonGroup( nullptr ) { ui->setupUi( this ); - CALAMARES_RETRANSLATE( - { + CALAMARES_RETRANSLATE( { ui->retranslateUi( this ); if ( Calamares::Settings::instance()->isSetupMode() ) - ui->generalExplanation->setText( tr( - "Please choose a look-and-feel for the KDE Plasma Desktop. " - "You can also skip this step and configure the look-and-feel " - "once the system is set up. Clicking on a look-and-feel " - "selection will give you a live preview of that look-and-feel.") ); + ui->generalExplanation->setText( tr( "Please choose a look-and-feel for the KDE Plasma Desktop. " + "You can also skip this step and configure the look-and-feel " + "once the system is set up. Clicking on a look-and-feel " + "selection will give you a live preview of that look-and-feel." ) ); else - ui->generalExplanation->setText( tr( - "Please choose a look-and-feel for the KDE Plasma Desktop. " - "You can also skip this step and configure the look-and-feel " - "once the system is installed. Clicking on a look-and-feel " - "selection will give you a live preview of that look-and-feel.") ); + ui->generalExplanation->setText( tr( "Please choose a look-and-feel for the KDE Plasma Desktop. " + "You can also skip this step and configure the look-and-feel " + "once the system is installed. Clicking on a look-and-feel " + "selection will give you a live preview of that look-and-feel." ) ); updateThemeNames(); fillUi(); - } - ) + } ) } void @@ -91,7 +89,7 @@ PlasmaLnfPage::setLnfPath( const QString& path ) } void -PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes, bool showAll ) +PlasmaLnfPage::setEnabledThemes( const ThemeInfoList& themes, bool showAll ) { m_enabledThemes = themes; @@ -100,7 +98,9 @@ PlasmaLnfPage::setEnabledThemes(const ThemeInfoList& themes, bool showAll ) auto plasmaThemes = plasma_themes(); for ( auto& installed_theme : plasmaThemes ) if ( !m_enabledThemes.findById( installed_theme.id ) ) + { m_enabledThemes.append( installed_theme ); + } } updateThemeNames(); @@ -121,10 +121,13 @@ PlasmaLnfPage::setPreselect( const QString& id ) { m_preselect = id; if ( !m_enabledThemes.isEmpty() ) + { fillUi(); + } } -void PlasmaLnfPage::updateThemeNames() +void +PlasmaLnfPage::updateThemeNames() { auto plasmaThemes = plasma_themes(); for ( auto& enabled_theme : m_enabledThemes ) @@ -138,7 +141,8 @@ void PlasmaLnfPage::updateThemeNames() } } -void PlasmaLnfPage::winnowThemes() +void +PlasmaLnfPage::winnowThemes() { auto plasmaThemes = plasma_themes(); bool winnowed = true; @@ -167,7 +171,8 @@ void PlasmaLnfPage::winnowThemes() } } -void PlasmaLnfPage::fillUi() +void +PlasmaLnfPage::fillUi() { if ( m_enabledThemes.isEmpty() ) { @@ -180,7 +185,7 @@ void PlasmaLnfPage::fillUi() m_buttonGroup->setExclusive( true ); } - int c = 1; // After the general explanation + int c = 1; // After the general explanation for ( auto& theme : m_enabledThemes ) { if ( !theme.widget ) @@ -188,7 +193,7 @@ void PlasmaLnfPage::fillUi() ThemeWidget* w = new ThemeWidget( theme ); m_buttonGroup->addButton( w->button() ); ui->verticalLayout->insertWidget( c, w ); - connect( w, &ThemeWidget::themeSelected, this, &PlasmaLnfPage::plasmaThemeSelected); + connect( w, &ThemeWidget::themeSelected, this, &PlasmaLnfPage::plasmaThemeSelected ); theme.widget = w; } else diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index 5a4c68b4e..286a10418 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -75,8 +76,8 @@ private: bool m_showAll; // If true, don't winnow according to enabledThemes ThemeInfoList m_enabledThemes; - QButtonGroup *m_buttonGroup; + QButtonGroup* m_buttonGroup; QList< ThemeWidget* > m_widgets; }; -#endif //PLASMALNFPAGE_H +#endif //PLASMALNFPAGE_H diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index ec5258c64..e9d1c3f61 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,7 +33,7 @@ #include #endif -CALAMARES_PLUGIN_FACTORY_DEFINITION( PlasmaLnfViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( PlasmaLnfViewStepFactory, registerPlugin< PlasmaLnfViewStep >(); ) static QString currentPlasmaTheme() @@ -58,7 +59,9 @@ PlasmaLnfViewStep::PlasmaLnfViewStep( QObject* parent ) PlasmaLnfViewStep::~PlasmaLnfViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -104,7 +107,8 @@ PlasmaLnfViewStep::isAtEnd() const } -void PlasmaLnfViewStep::onLeave() +void +PlasmaLnfViewStep::onLeave() { } @@ -118,9 +122,13 @@ PlasmaLnfViewStep::jobs() const if ( !m_themeId.isEmpty() ) { if ( !m_lnfPath.isEmpty() ) + { l.append( Calamares::job_ptr( new PlasmaLnfJob( m_lnfPath, m_themeId ) ) ); + } else + { cWarning() << "no lnftool given for plasmalnf module."; + } } return l; } @@ -133,20 +141,25 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) m_widget->setLnfPath( m_lnfPath ); if ( m_lnfPath.isEmpty() ) + { cWarning() << "no lnftool given for plasmalnf module."; + } m_liveUser = CalamaresUtils::getString( configurationMap, "liveuser" ); QString preselect = CalamaresUtils::getString( configurationMap, "preselect" ); if ( preselect == QStringLiteral( "*" ) ) + { preselect = currentPlasmaTheme(); + } if ( !preselect.isEmpty() ) + { m_widget->setPreselect( preselect ); + } bool showAll = CalamaresUtils::getBool( configurationMap, "showAll", false ); - if ( configurationMap.contains( "themes" ) && - configurationMap.value( "themes" ).type() == QVariant::List ) + if ( configurationMap.contains( "themes" ) && configurationMap.value( "themes" ).type() == QVariant::List ) { ThemeInfoList listedThemes; auto themeList = configurationMap.value( "themes" ).toList(); @@ -160,14 +173,20 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap ) listedThemes.append( ThemeInfo( iv.value( "theme" ).toString(), iv.value( "image" ).toString() ) ); } else if ( i.type() == QVariant::String ) + { listedThemes.append( ThemeInfo( i.toString() ) ); + } if ( listedThemes.length() == 1 ) + { cWarning() << "only one theme enabled in plasmalnf"; + } m_widget->setEnabledThemes( listedThemes, showAll ); } else + { m_widget->setEnabledThemesAll(); // All of them + } } void @@ -182,9 +201,9 @@ PlasmaLnfViewStep::themeSelected( const QString& id ) QProcess lnftool; if ( !m_liveUser.isEmpty() ) - lnftool.start( "sudo", {"-E", "-H", "-u", m_liveUser, m_lnfPath, "--resetLayout", "--apply", id} ); + lnftool.start( "sudo", { "-E", "-H", "-u", m_liveUser, m_lnfPath, "--resetLayout", "--apply", id } ); else - lnftool.start( m_lnfPath, {"--resetLayout", "--apply", id} ); + lnftool.start( m_lnfPath, { "--resetLayout", "--apply", id } ); if ( !lnftool.waitForStarted( 1000 ) ) { @@ -198,7 +217,11 @@ PlasmaLnfViewStep::themeSelected( const QString& id ) } if ( ( lnftool.exitCode() == 0 ) && ( lnftool.exitStatus() == QProcess::NormalExit ) ) + { cDebug() << "Plasma look-and-feel applied" << id; + } else + { cWarning() << "could not apply look-and-feel" << id; + } } diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index 0bf76934c..c2ecf9ddd 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,9 +20,9 @@ #ifndef PLASMALNFVIEWSTEP_H #define PLASMALNFVIEWSTEP_H +#include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" -#include "DllMacro.h" #include #include @@ -60,9 +61,9 @@ private: PlasmaLnfPage* m_widget; QString m_lnfPath; // Path to the lnf tool QString m_themeId; // Id of selected theme - QString m_liveUser; // Name of the live user (for OEM mode) + QString m_liveUser; // Name of the live user (for OEM mode) }; CALAMARES_PLUGIN_FACTORY_DECLARATION( PlasmaLnfViewStepFactory ) -#endif // PLASMALNFVIEWSTEP_H +#endif // PLASMALNFVIEWSTEP_H diff --git a/src/modules/plasmalnf/ThemeInfo.h b/src/modules/plasmalnf/ThemeInfo.h index 982064073..432738e17 100644 --- a/src/modules/plasmalnf/ThemeInfo.h +++ b/src/modules/plasmalnf/ThemeInfo.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,7 +43,8 @@ struct ThemeInfo ThemeInfo() : widget( nullptr ) - {} + { + } explicit ThemeInfo( const QString& _id ) : id( _id ) @@ -54,13 +56,14 @@ struct ThemeInfo : id( _id ) , imagePath( image ) , widget( nullptr ) - {} + { + } // Defined in PlasmaLnfPage.cpp explicit ThemeInfo( const KPluginMetaData& ); bool isValid() const { return !id.isEmpty(); } -} ; +}; class ThemeInfoList : public QList< ThemeInfo > { @@ -71,7 +74,9 @@ public: for ( ThemeInfo& i : *this ) { if ( i.id == id ) + { return &i; + } } return nullptr; } @@ -82,16 +87,15 @@ public: for ( const ThemeInfo& i : *this ) { if ( i.id == id ) + { return &i; + } } return nullptr; } /** @brief Checks if a given @p id is in the list of themes. */ - bool contains( const QString& id ) const - { - return findById( id ) != nullptr; - } -} ; + bool contains( const QString& id ) const { return findById( id ) != nullptr; } +}; #endif diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 92a88197f..896b28772 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +21,9 @@ #include "ThemeInfo.h" +#include "Branding.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" -#include "Branding.h" #include #include @@ -38,33 +39,41 @@ * empty screenshot. Returns blank if the path * doesn't exist anywhere in the search paths. */ -static QString _munge_imagepath( const QString& path ) +static QString +_munge_imagepath( const QString& path ) { if ( path.isEmpty() ) + { return ":/view-preview.png"; + } if ( path.startsWith( '/' ) ) + { return path; + } if ( QFileInfo::exists( path ) ) + { return path; + } QFileInfo fi( QDir( Calamares::Branding::instance()->componentDirectory() ), path ); if ( fi.exists() ) + { return fi.absoluteFilePath(); + } return QString(); } -ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) +ThemeWidget::ThemeWidget( const ThemeInfo& info, QWidget* parent ) : QWidget( parent ) , m_id( info.id ) , m_check( new QRadioButton( info.name.isEmpty() ? info.id : info.name, parent ) ) , m_description( new QLabel( info.description, parent ) ) { - const QSize image_size{ - qMax(12 * CalamaresUtils::defaultFontHeight(), 120), - qMax(8 * CalamaresUtils::defaultFontHeight(), 80) }; + const QSize image_size { qMax( 12 * CalamaresUtils::defaultFontHeight(), 120 ), + qMax( 8 * CalamaresUtils::defaultFontHeight(), 80 ) }; QHBoxLayout* layout = new QHBoxLayout( this ); this->setLayout( layout ); @@ -99,7 +108,9 @@ void ThemeWidget::clicked( bool checked ) { if ( checked ) + { emit themeSelected( m_id ); + } } QAbstractButton* @@ -108,7 +119,8 @@ ThemeWidget::button() const return m_check; } -void ThemeWidget::updateThemeName(const ThemeInfo& info) +void +ThemeWidget::updateThemeName( const ThemeInfo& info ) { m_check->setText( info.name ); m_description->setText( info.description ); diff --git a/src/modules/plasmalnf/ThemeWidget.h b/src/modules/plasmalnf/ThemeWidget.h index 83294cc77..e3574dfac 100644 --- a/src/modules/plasmalnf/ThemeWidget.h +++ b/src/modules/plasmalnf/ThemeWidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,7 +48,6 @@ private: QString m_id; QRadioButton* m_check; QLabel* m_description; -} ; +}; #endif - diff --git a/src/modules/plasmalnf/view-preview.png.license b/src/modules/plasmalnf/view-preview.png.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/plasmalnf/view-preview.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/plasmalnf/view-preview.svg.license b/src/modules/plasmalnf/view-preview.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/plasmalnf/view-preview.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/removeuser/RemoveUserJob.cpp b/src/modules/removeuser/RemoveUserJob.cpp index 0488d19a4..221f4f5ec 100644 --- a/src/modules/removeuser/RemoveUserJob.cpp +++ b/src/modules/removeuser/RemoveUserJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2017. Alf Gaida - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Alf Gaida + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/removeuser/RemoveUserJob.h b/src/modules/removeuser/RemoveUserJob.h index d13e834f0..25c5c8e73 100644 --- a/src/modules/removeuser/RemoveUserJob.h +++ b/src/modules/removeuser/RemoveUserJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/shellprocess/ShellProcessJob.cpp b/src/modules/shellprocess/ShellProcessJob.cpp index d0507a732..bbc79934c 100644 --- a/src/modules/shellprocess/ShellProcessJob.cpp +++ b/src/modules/shellprocess/ShellProcessJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/shellprocess/ShellProcessJob.h b/src/modules/shellprocess/ShellProcessJob.h index 708a43087..956f7b0c8 100644 --- a/src/modules/shellprocess/ShellProcessJob.h +++ b/src/modules/shellprocess/ShellProcessJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index caf9800c9..434520cca 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/shellprocess/Tests.h b/src/modules/shellprocess/Tests.h index 5b4ebebbb..76b05563b 100644 --- a/src/modules/shellprocess/Tests.h +++ b/src/modules/shellprocess/Tests.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp index 2885b1d61..ebcde6a2c 100644 --- a/src/modules/summary/SummaryPage.cpp +++ b/src/modules/summary/SummaryPage.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019, Adriaan de Groot - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,21 +46,18 @@ SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent ) { Q_UNUSED( parent ) - this->setObjectName("summaryStep"); + this->setObjectName( "summaryStep" ); Q_ASSERT( m_thisViewStep ); QVBoxLayout* layout = new QVBoxLayout( this ); layout->setContentsMargins( 0, 0, 0, 0 ); QLabel* headerLabel = new QLabel( this ); - CALAMARES_RETRANSLATE( - if ( Calamares::Settings::instance()->isSetupMode() ) - headerLabel->setText( tr( "This is an overview of what will happen once you start " - "the setup procedure." ) ); - else - headerLabel->setText( tr( "This is an overview of what will happen once you start " - "the install procedure." ) ); - ) + CALAMARES_RETRANSLATE( if ( Calamares::Settings::instance()->isSetupMode() ) + headerLabel->setText( tr( "This is an overview of what will happen once you start " + "the setup procedure." ) ); + else headerLabel->setText( tr( "This is an overview of what will happen once you start " + "the install procedure." ) ); ) layout->addWidget( headerLabel ); layout->addWidget( m_scrollArea ); m_scrollArea->setWidgetResizable( true ); @@ -81,8 +79,7 @@ SummaryPage::onActivate() createContentWidget(); bool first = true; - const Calamares::ViewStepList steps = - stepsForSummary( Calamares::ViewManager::instance()->viewSteps() ); + const Calamares::ViewStepList steps = stepsForSummary( Calamares::ViewManager::instance()->viewSteps() ); for ( Calamares::ViewStep* step : steps ) { @@ -90,12 +87,18 @@ SummaryPage::onActivate() QWidget* widget = step->createSummaryWidget(); if ( text.isEmpty() && !widget ) + { continue; + } if ( first ) + { first = false; + } else + { m_layout->addSpacing( SECTION_SPACING ); + } m_layout->addWidget( createTitleLabel( step->prettyName() ) ); QHBoxLayout* itemBodyLayout = new QHBoxLayout; @@ -106,9 +109,13 @@ SummaryPage::onActivate() itemBodyLayout->addLayout( itemBodyCoreLayout ); CalamaresUtils::unmarginLayout( itemBodyLayout ); if ( !text.isEmpty() ) + { itemBodyCoreLayout->addWidget( createBodyLabel( text ) ); + } if ( widget ) + { itemBodyCoreLayout->addWidget( widget ); + } itemBodyLayout->addSpacing( CalamaresUtils::defaultFontHeight() * 2 ); } m_layout->addStretch(); @@ -147,7 +154,9 @@ SummaryPage::stepsForSummary( const Calamares::ViewStepList& allSteps ) const // If we reach the parent step of this page, we're done collecting the list of // steps to summarize. if ( m_thisViewStep == step ) + { break; + } steps.append( step ); } diff --git a/src/modules/summary/SummaryPage.h b/src/modules/summary/SummaryPage.h index b9a98f2a1..6d0148760 100644 --- a/src/modules/summary/SummaryPage.h +++ b/src/modules/summary/SummaryPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -70,4 +71,4 @@ private: QScrollArea* m_scrollArea; }; -#endif // SUMMARYPAGE_H +#endif // SUMMARYPAGE_H diff --git a/src/modules/summary/SummaryViewStep.cpp b/src/modules/summary/SummaryViewStep.cpp index 6835b2b05..da0e10e1e 100644 --- a/src/modules/summary/SummaryViewStep.cpp +++ b/src/modules/summary/SummaryViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +21,7 @@ #include "SummaryPage.h" -CALAMARES_PLUGIN_FACTORY_DEFINITION( SummaryViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( SummaryViewStepFactory, registerPlugin< SummaryViewStep >(); ) SummaryViewStep::SummaryViewStep( QObject* parent ) : Calamares::ViewStep( parent ) @@ -33,7 +34,9 @@ SummaryViewStep::SummaryViewStep( QObject* parent ) SummaryViewStep::~SummaryViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -98,4 +101,3 @@ SummaryViewStep::onLeave() { m_widget->createContentWidget(); } - diff --git a/src/modules/summary/SummaryViewStep.h b/src/modules/summary/SummaryViewStep.h index 5b2f49b8e..3e23199ca 100644 --- a/src/modules/summary/SummaryViewStep.h +++ b/src/modules/summary/SummaryViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,4 +58,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( SummaryViewStepFactory ) -#endif // SUMMARYPAGEPLUGIN_H +#endif // SUMMARYPAGEPLUGIN_H diff --git a/src/modules/tracking/Config.cpp b/src/modules/tracking/Config.cpp index 9e8179905..c840d541c 100644 --- a/src/modules/tracking/Config.cpp +++ b/src/modules/tracking/Config.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/Config.h b/src/modules/tracking/Config.h index ad7d1d4f2..787a92dc5 100644 --- a/src/modules/tracking/Config.h +++ b/src/modules/tracking/Config.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/Tests.cpp b/src/modules/tracking/Tests.cpp index b7ed57ab1..0fed06947 100644 --- a/src/modules/tracking/Tests.cpp +++ b/src/modules/tracking/Tests.cpp @@ -2,7 +2,6 @@ * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE */ #include "Config.h" diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 2df3a66a0..f4ee504e2 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 33b8eceb1..d87deb412 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 76b4a6f95..2644b0cd0 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingPage.h b/src/modules/tracking/TrackingPage.h index 7df43b846..7600019bd 100644 --- a/src/modules/tracking/TrackingPage.h +++ b/src/modules/tracking/TrackingPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingType.h b/src/modules/tracking/TrackingType.h index 22e3157d6..15c9cc792 100644 --- a/src/modules/tracking/TrackingType.h +++ b/src/modules/tracking/TrackingType.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index da5d9108d..ce32bb2e6 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index b05f1b053..335fc77d0 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/level-install.svg.license b/src/modules/tracking/level-install.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/tracking/level-install.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/tracking/level-machine.svg.license b/src/modules/tracking/level-machine.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/tracking/level-machine.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/tracking/level-none.svg.license b/src/modules/tracking/level-none.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/tracking/level-none.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/tracking/level-user.svg.license b/src/modules/tracking/level-user.svg.license new file mode 100644 index 000000000..ef0e9d7cd --- /dev/null +++ b/src/modules/tracking/level-user.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Uri Herrera and others +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/modules/users/CheckPWQuality.h b/src/modules/users/CheckPWQuality.h index 1aeb34ba8..80dc809fe 100644 --- a/src/modules/users/CheckPWQuality.h +++ b/src/modules/users/CheckPWQuality.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index de246950f..322884c0e 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -2,7 +2,6 @@ * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 133f59c05..1e2a4c639 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -2,7 +2,6 @@ * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 9a61c5d9e..0f08b1700 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -3,7 +3,6 @@ * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE */ #include "CreateUserJob.h" diff --git a/src/modules/users/CreateUserJob.h b/src/modules/users/CreateUserJob.h index f2239307e..b5d3e9490 100644 --- a/src/modules/users/CreateUserJob.h +++ b/src/modules/users/CreateUserJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index a4cfa0268..ff69c64a9 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Rohan Garg - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Rohan Garg + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetHostNameJob.h b/src/modules/users/SetHostNameJob.h index 5d52b545b..4cc29c9ac 100644 --- a/src/modules/users/SetHostNameJob.h +++ b/src/modules/users/SetHostNameJob.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Rohan Garg - * Copyright 2015, Teo Mrnjavac - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Rohan Garg + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 3199a0a76..78efd3efc 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetPasswordJob.h b/src/modules/users/SetPasswordJob.h index cf5b2f585..aa1af0417 100644 --- a/src/modules/users/SetPasswordJob.h +++ b/src/modules/users/SetPasswordJob.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index ad0c448d5..3e04ff7a7 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2019, Collabora Ltd - * Copyright 2020, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-FileCopyrightText: 2020 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 246a08083..9c3998feb 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,7 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index df77da036..3b2b7152f 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index baf4e6292..6f6baf58b 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/images/invalid.png.license b/src/modules/users/images/invalid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/users/images/invalid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/users/images/valid.png.license b/src/modules/users/images/valid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/users/images/valid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/usersq/UsersQmlViewStep.cpp b/src/modules/usersq/UsersQmlViewStep.cpp index 963383c10..1c011e9b6 100644 --- a/src/modules/usersq/UsersQmlViewStep.cpp +++ b/src/modules/usersq/UsersQmlViewStep.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-FileCopyrightText: 2020 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/usersq/UsersQmlViewStep.h b/src/modules/usersq/UsersQmlViewStep.h index 463698199..2a3c1a6c5 100644 --- a/src/modules/usersq/UsersQmlViewStep.h +++ b/src/modules/usersq/UsersQmlViewStep.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot - * Copyright 2020, Camilo Higuita + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/webview/WebViewConfig.h.in b/src/modules/webview/WebViewConfig.h.in index 6611e44c0..ddc07b31c 100644 --- a/src/modules/webview/WebViewConfig.h.in +++ b/src/modules/webview/WebViewConfig.h.in @@ -1,3 +1,6 @@ +/* SPDX-FileCopyrightText: no + SPDX-License-Identifier: CC0-1.0 +*/ #ifndef CALAMARESWEBVIEWCONFIG_H #define CALAMARESWEBVIEWCONFIG_H diff --git a/src/modules/webview/WebViewStep.cpp b/src/modules/webview/WebViewStep.cpp index e1261433c..671156737 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Rohan Garg - * Copyright 2016, Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Rohan Garg + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,7 +30,7 @@ #include #endif -CALAMARES_PLUGIN_FACTORY_DEFINITION( WebViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( WebViewStepFactory, registerPlugin< WebViewStep >(); ) WebViewStep::WebViewStep( QObject* parent ) : Calamares::ViewStep( parent ) @@ -41,13 +42,9 @@ WebViewStep::WebViewStep( QObject* parent ) m_view = new C_QWEBVIEW(); #ifdef WEBVIEW_WITH_WEBKIT m_view->settings()->setFontFamily( QWebSettings::StandardFont, - m_view->settings()-> - fontFamily( QWebSettings::SansSerifFont ) ); - m_view->setRenderHints( QPainter::Antialiasing | - QPainter::TextAntialiasing | - QPainter::HighQualityAntialiasing | - QPainter::SmoothPixmapTransform | - QPainter::NonCosmeticDefaultPen ); + m_view->settings()->fontFamily( QWebSettings::SansSerifFont ) ); + m_view->setRenderHints( QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::HighQualityAntialiasing + | QPainter::SmoothPixmapTransform | QPainter::NonCosmeticDefaultPen ); #endif } @@ -55,7 +52,9 @@ WebViewStep::WebViewStep( QObject* parent ) WebViewStep::~WebViewStep() { if ( m_view && m_view->parent() == nullptr ) + { m_view->deleteLater(); + } } @@ -100,10 +99,11 @@ WebViewStep::isAtEnd() const return true; } -void WebViewStep::onActivate() +void +WebViewStep::onActivate() { - m_view->load(QUrl(m_url)); - m_view->show(); + m_view->load( QUrl( m_url ) ); + m_view->show(); } QList< Calamares::job_ptr > @@ -116,11 +116,14 @@ WebViewStep::jobs() const void WebViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - if ( configurationMap.contains("url") && - configurationMap.value("url").type() == QVariant::String ) - m_url = configurationMap.value("url").toString(); + if ( configurationMap.contains( "url" ) && configurationMap.value( "url" ).type() == QVariant::String ) + { + m_url = configurationMap.value( "url" ).toString(); + } - if ( configurationMap.contains("prettyName") && - configurationMap.value("prettyName").type() == QVariant::String ) - m_prettyName = configurationMap.value("prettyName").toString(); + if ( configurationMap.contains( "prettyName" ) + && configurationMap.value( "prettyName" ).type() == QVariant::String ) + { + m_prettyName = configurationMap.value( "prettyName" ).toString(); + } } diff --git a/src/modules/webview/WebViewStep.h b/src/modules/webview/WebViewStep.h index a97d465de..9f6658cdc 100644 --- a/src/modules/webview/WebViewStep.h +++ b/src/modules/webview/WebViewStep.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Rohan Garg - * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Rohan Garg + * SPDX-FileCopyrightText: 2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,13 +22,10 @@ #ifndef WEBVIEWPLUGIN_H #define WEBVIEWPLUGIN_H -#include "WebViewConfig.h" - +#include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" -#include "DllMacro.h" - #include #ifdef WEBVIEW_WITH_WEBKIT @@ -63,11 +61,11 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; private: - C_QWEBVIEW *m_view; + C_QWEBVIEW* m_view; QString m_url; QString m_prettyName; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( WebViewStepFactory ) -#endif // WEBVIEWPLUGIN_H +#endif // WEBVIEWPLUGIN_H diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp index 2bf418ff1..d9f4ca19c 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index 6d14097c5..b248f81c8 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 0c4f44c95..0f22631d3 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2015, Anke Boersma - * Copyright 2017-2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2015 Anke Boersma + * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/WelcomePage.h b/src/modules/welcome/WelcomePage.h index 17fedc812..07bea6d76 100644 --- a/src/modules/welcome/WelcomePage.h +++ b/src/modules/welcome/WelcomePage.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * Copyright 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index cad5349a9..7cf5e744a 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/WelcomeViewStep.h b/src/modules/welcome/WelcomeViewStep.h index f4874dc16..c28dc335e 100644 --- a/src/modules/welcome/WelcomeViewStep.h +++ b/src/modules/welcome/WelcomeViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/CheckerContainer.cpp b/src/modules/welcome/checker/CheckerContainer.cpp index 11ae9c7c3..58c9396fa 100644 --- a/src/modules/welcome/checker/CheckerContainer.cpp +++ b/src/modules/welcome/checker/CheckerContainer.cpp @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, 2019-2020, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/CheckerContainer.h b/src/modules/welcome/checker/CheckerContainer.h index 9744ecc77..58358519f 100644 --- a/src/modules/welcome/checker/CheckerContainer.h +++ b/src/modules/welcome/checker/CheckerContainer.h @@ -1,8 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp index e7994f9a0..32d971b6d 100644 --- a/src/modules/welcome/checker/GeneralRequirements.cpp +++ b/src/modules/welcome/checker/GeneralRequirements.cpp @@ -1,9 +1,10 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017-2018, 2020, Adriaan de Groot - * Copyright 2017, Gabriel Craciunescu - * Copyright 2019, Collabora Ltd + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h index ce3abec83..a0a302054 100644 --- a/src/modules/welcome/checker/GeneralRequirements.h +++ b/src/modules/welcome/checker/GeneralRequirements.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/ResultWidget.cpp b/src/modules/welcome/checker/ResultWidget.cpp index 5da120a2a..b86cd23b0 100644 --- a/src/modules/welcome/checker/ResultWidget.cpp +++ b/src/modules/welcome/checker/ResultWidget.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/ResultWidget.h b/src/modules/welcome/checker/ResultWidget.h index f84310bb6..a56ed66e8 100644 --- a/src/modules/welcome/checker/ResultWidget.h +++ b/src/modules/welcome/checker/ResultWidget.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp index afde9f08d..7286dd256 100644 --- a/src/modules/welcome/checker/ResultsListWidget.cpp +++ b/src/modules/welcome/checker/ResultsListWidget.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/ResultsListWidget.h b/src/modules/welcome/checker/ResultsListWidget.h index 3f21955ba..a93cc2371 100644 --- a/src/modules/welcome/checker/ResultsListWidget.h +++ b/src/modules/welcome/checker/ResultsListWidget.h @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2019-2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/checker/partman_devices.c b/src/modules/welcome/checker/partman_devices.c index caee5759c..040c584ba 100644 --- a/src/modules/welcome/checker/partman_devices.c +++ b/src/modules/welcome/checker/partman_devices.c @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Based on parted_devices.c, from partman-base. * diff --git a/src/modules/welcome/checker/partman_devices.h b/src/modules/welcome/checker/partman_devices.h index 9f7695ee9..9c14cda78 100644 --- a/src/modules/welcome/checker/partman_devices.h +++ b/src/modules/welcome/checker/partman_devices.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * SPDX-FileCopyrightText: 2014 Teo Mrnjavac + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcome/language-icon-128px.png.license b/src/modules/welcome/language-icon-128px.png.license new file mode 100644 index 000000000..bc39975ae --- /dev/null +++ b/src/modules/welcome/language-icon-128px.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2011 Farhat Datta and Onur Mustak Cobanli, http://www.languageicon.org/ +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/welcome/language-icon-48px.png.license b/src/modules/welcome/language-icon-48px.png.license new file mode 100644 index 000000000..bc39975ae --- /dev/null +++ b/src/modules/welcome/language-icon-48px.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2011 Farhat Datta and Onur Mustak Cobanli, http://www.languageicon.org/ +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/welcomeq/Recommended.qml b/src/modules/welcomeq/Recommended.qml index 5a6c1316d..cc44c44a9 100644 --- a/src/modules/welcomeq/Recommended.qml +++ b/src/modules/welcomeq/Recommended.qml @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcomeq/Requirements.qml b/src/modules/welcomeq/Requirements.qml index e7835d868..415b828d8 100644 --- a/src/modules/welcomeq/Requirements.qml +++ b/src/modules/welcomeq/Requirements.qml @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma - * Copyright 2020, Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.cpp b/src/modules/welcomeq/WelcomeQmlViewStep.cpp index 42944f20d..e76ab3e00 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.cpp +++ b/src/modules/welcomeq/WelcomeQmlViewStep.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2018,2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.h b/src/modules/welcomeq/WelcomeQmlViewStep.h index 78999986c..6dc06eef4 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.h +++ b/src/modules/welcomeq/WelcomeQmlViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2019-2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/welcomeq/about.qml b/src/modules/welcomeq/about.qml index 7fa6fb462..db8a80135 100644 --- a/src/modules/welcomeq/about.qml +++ b/src/modules/welcomeq/about.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,7 +27,7 @@ Item { width: parent.width height: parent.height focus: true - + property var appName: "Calamares" property var appVersion: "3.2.24" @@ -36,19 +37,19 @@ Item { y: 14 anchors.fill: parent color: "#f2f2f2" - + Column { id: column x: 130 y: 40 - + Rectangle { width: 560 height: 250 radius: 10 border.width: 0 - + Text { width: 400 height: 250 @@ -58,25 +59,25 @@ Item { for %3

Copyright 2014-2017 Teo Mrnjavac <teo@kde.org>
Copyright 2017-2020 Adriaan de Groot <groot@kde.org>
- Thanks to the Calamares team - and the Calamares + Thanks to the Calamares team + and the Calamares translators team.

- Calamares + Calamares development is sponsored by
- Blue Systems - + Blue Systems - Liberating Software." ) .arg(appName) .arg(appVersion) .arg(Branding.string(Branding.VersionedName)) - + onLinkActivated: Qt.openUrlExternally(link) - + MouseArea { anchors.fill: parent acceptedButtons: Qt.NoButton cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor } - + font.pointSize: 10 anchors.verticalCenterOffset: 10 anchors.horizontalCenterOffset: 40 diff --git a/src/modules/welcomeq/img/chevron-left-solid.svg.license b/src/modules/welcomeq/img/chevron-left-solid.svg.license new file mode 100644 index 000000000..5f43e650d --- /dev/null +++ b/src/modules/welcomeq/img/chevron-left-solid.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 demmm +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/welcomeq/img/language-icon-48px.png.license b/src/modules/welcomeq/img/language-icon-48px.png.license new file mode 100644 index 000000000..bc39975ae --- /dev/null +++ b/src/modules/welcomeq/img/language-icon-48px.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2011 Farhat Datta and Onur Mustak Cobanli, http://www.languageicon.org/ +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/welcomeq/img/squid.png.license b/src/modules/welcomeq/img/squid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/modules/welcomeq/img/squid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/welcomeq/release_notes.qml b/src/modules/welcomeq/release_notes.qml index ce9d1d4af..cd2ef257d 100644 --- a/src/modules/welcomeq/release_notes.qml +++ b/src/modules/welcomeq/release_notes.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,9 +34,9 @@ Rectangle { id: flick anchors.fill: parent contentHeight: 3500 - + ScrollBar.vertical: ScrollBar { - id: fscrollbar + id: fscrollbar width: 10 policy: ScrollBar.AlwaysOn } diff --git a/src/modules/welcomeq/welcomeq.qml b/src/modules/welcomeq/welcomeq.qml index 7ba8933c8..e749a621c 100644 --- a/src/modules/welcomeq/welcomeq.qml +++ b/src/modules/welcomeq/welcomeq.qml @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2020, Adriaan de Groot - * Copyright 2020, Anke Boersma + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From 5a3fb613d9694d2f29215337696ddd77eba2da6e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 02:09:23 +0200 Subject: [PATCH 362/399] REUSE: Default branding assets and explanation --- src/branding/README.md | 7 ++++++- src/branding/default/banner.png.license | 2 ++ src/branding/default/branding.desc | 3 +++ src/branding/default/languages.png.license | 2 ++ src/branding/default/show.qml | 7 ++++--- src/branding/default/squid.png.license | 2 ++ src/branding/default/stylesheet.qss | 4 ++++ 7 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/branding/default/banner.png.license create mode 100644 src/branding/default/languages.png.license create mode 100644 src/branding/default/squid.png.license diff --git a/src/branding/README.md b/src/branding/README.md index 099163836..234b2a9b1 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -1,5 +1,10 @@ # Branding directory + + Branding components can go here, or they can be installed separately. A branding component is a subdirectory with a `branding.desc` descriptor @@ -66,7 +71,7 @@ The setting *slideshowAPI* in `branding.desc` indicates which one to use for a given branding slideshow. Which API to use is really a function of the QML. Expect the version 1 API to be deprecated in the course of Calamares 3.3. -In Calamares 3.2.13 support for activation notification to the QML +In Calamares 3.2.13 support for activation notification to the QML parts is improved: - If the root object has a property *activatedInCalamares* (the examples do), then that property is set to *true* when the slideshow becomes visible diff --git a/src/branding/default/banner.png.license b/src/branding/default/banner.png.license new file mode 100644 index 000000000..38aa3617e --- /dev/null +++ b/src/branding/default/banner.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2020 Adriaan de Groot +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/branding/default/branding.desc b/src/branding/default/branding.desc index fc0a16f7e..c3ef2df72 100644 --- a/src/branding/default/branding.desc +++ b/src/branding/default/branding.desc @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Product branding information. This influences some global # user-visible aspects of Calamares, such as the product # name, window behavior, and the slideshow during installation. diff --git a/src/branding/default/languages.png.license b/src/branding/default/languages.png.license new file mode 100644 index 000000000..ea8264571 --- /dev/null +++ b/src/branding/default/languages.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index dcb0f9257..92917cc5c 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2018, Adriaan de Groot + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -78,7 +79,7 @@ Presentation console.log("QML Component (default slideshow) activated"); presentation.currentSlide = 0; } - + function onLeave() { console.log("QML Component (default slideshow) deactivated"); } diff --git a/src/branding/default/squid.png.license b/src/branding/default/squid.png.license new file mode 100644 index 000000000..cc08e1f9f --- /dev/null +++ b/src/branding/default/squid.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2014 Teo Mrnjavac +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/branding/default/stylesheet.qss b/src/branding/default/stylesheet.qss index 72dd91ba4..5c3673847 100644 --- a/src/branding/default/stylesheet.qss +++ b/src/branding/default/stylesheet.qss @@ -1,5 +1,9 @@ /* + * SPDX-FileCopyrightText: no + * SPDX-License-Identifier: CC0-1.0 + */ +/* A branding component can ship a stylesheet (like this one) which is applied to parts of the Calamares user-interface. In principle, all parts can be styled through CSS. From 7a78f2600e0e973def13c6d1d1378e1092f6446b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 01:41:43 +0200 Subject: [PATCH 363/399] REUSE: dep5-style licensing For some dozens of files, adding license information in or next to the file is unwanted: - the translations are variable, and licensing information embedded in them is removed on update; since the translations are derived from the sources, blanket-license them as GPL-3.0-or-later - FreeBSD packaging (ports) directories have a specific structure .. and more cases like that. See the dep5 file for details. --- .reuse/dep5 | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 .reuse/dep5 diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 000000000..6ed0da149 --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,99 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: Calamares +Source: https://github.com/calamares/calamares.git + +### ACTUAL LICENSES +# +# Images in the locale module are a bit unclear; they were added +# by Teo in 2014 but I suspect they came from somewhere else. +# +Files: src/modules/locale/images/timezone*.png +License: GPL-3.0-or-later +Copyright: 2014 Teo Mrnjavac + +Files: man/calamares.8 +License: GPL-3.0-or-later +Copyright: 2017 Jonathan Carter + +### BUILD ARTIFACTS / NOT SOURCE +# +# QRC Files are basically build artifacts +# +FILES: src/modules/*/*.qrc +License: CC0-1.0 +Copyright: no + +# GitHub issue templates are not part of the source +# +Files: .github/ISSUE_TEMPLATE/* +License: CC0-1.0 +Copyright: no + +# Packaging information +# +Files: data/FreeBSD/distinfo data/FreeBSD/pkg-descr data/FreeBSD/pkg-plist +License: CC0-1.0 +Copyright: no + +# Example data for timezones, which is copied out of zoneinfo, +# which has this notice: +# +# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. +# +Files: data/example-root/usr/share/zoneinfo/Zulu data/example-root/usr/share/zoneinfo/UTC data/example-root/usr/share/zoneinfo/America/New_York +License: CC0-1.0 +Copyright: no + +### TRANSLATIONS +# +# .desktop files and template change only with translation +# +FILES: calamares.desktop* +License: CC0-1.0 +Copyright: no + +# Transifex translations derive from the source, and have no +# embedded copyright information. +# +Files: lang/*.ts +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +# Translations of branding slideshow are the same +Files: src/branding/default/lang/*.ts +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +# Python translation files have some copyright information, but +# it's generally very sketchy. +# +Files: lang/python.pot +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +Files: lang/python/*/LC_MESSAGES/python.po +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +Files: src/modules/dummypythonqt/lang/dummypythonqt.pot +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.po +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +### FIXME ISSUES +# +# The .mo files are build artifacts +# +# FIXME: these shouldn't be in the source repo at all +# +Files: lang/python/*/LC_MESSAGES/python.mo +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators + +Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.mo +License: GPL-3.0-or-later +Copyright: 2020 Calamares authors and translators From 1cd9b93a224e3e4bf08a75ed1c86469fb26694ab Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 25 Aug 2020 16:05:56 +0200 Subject: [PATCH 364/399] REUSE: Giant boilerplate cleanup - point to main Calamares site in the 'part of' headers instead of to github (this is the "this file is part of Calamares" opening line for most files). - remove boilerplate from all source files, CMake modules and completions, this is the 3-paragraph summary of the GPL-3.0-or-later, which has a meaning entirely covered by the SPDX tag. --- CMakeLists.txt | 15 ++----------- CMakeModules/BoostPython3.cmake | 2 +- CMakeModules/CMakeColors.cmake | 2 +- CMakeModules/CMakeDateStamp.cmake | 2 +- CMakeModules/CMakeVersionSource.cmake | 2 +- .../CalamaresAddBrandingSubdirectory.cmake | 14 ++----------- CMakeModules/CalamaresAddLibrary.cmake | 14 ++----------- .../CalamaresAddModuleSubdirectory.cmake | 14 ++----------- CMakeModules/CalamaresAddPlugin.cmake | 14 ++----------- CMakeModules/CalamaresAddTest.cmake | 14 ++----------- CMakeModules/CalamaresAddTranslations.cmake | 14 ++----------- CMakeModules/CalamaresAutomoc.cmake | 14 ++----------- CMakeModules/FindCrypt.cmake | 2 +- CMakeModules/FindLibPWQuality.cmake | 2 +- CMakeModules/FindPythonQt.cmake | 2 +- CMakeModules/FindYAMLCPP.cmake | 2 +- ci/txcheck.sh | 2 +- ci/txpull.sh | 2 +- ci/txpush.sh | 2 +- data/completion/bash/calamares | 14 ++----------- lang/CMakeLists.txt | 2 +- lang/txload.cpp | 19 ++++------------- src/CMakeLists.txt | 2 +- src/branding/CMakeLists.txt | 2 +- src/branding/default/show.qml | 14 ++----------- src/calamares/CMakeLists.txt | 2 +- src/calamares/CalamaresApplication.cpp | 14 ++----------- src/calamares/CalamaresApplication.h | 14 ++----------- src/calamares/CalamaresWindow.cpp | 14 ++----------- src/calamares/CalamaresWindow.h | 14 ++----------- src/calamares/DebugWindow.cpp | 14 ++----------- src/calamares/DebugWindow.h | 14 ++----------- src/calamares/VariantModel.cpp | 14 ++----------- src/calamares/VariantModel.h | 14 ++----------- src/calamares/main.cpp | 14 ++----------- .../progresstree/ProgressTreeDelegate.cpp | 14 ++----------- .../progresstree/ProgressTreeDelegate.h | 14 ++----------- .../progresstree/ProgressTreeView.cpp | 14 ++----------- src/calamares/progresstree/ProgressTreeView.h | 14 ++----------- src/calamares/test_conf.cpp | 14 ++----------- src/calamares/testmain.cpp | 14 ++----------- src/libcalamares/CMakeLists.txt | 2 +- src/libcalamares/CalamaresConfig.h.in | 19 +++-------------- src/libcalamares/CppJob.cpp | 21 ++++--------------- src/libcalamares/CppJob.h | 21 ++++--------------- src/libcalamares/DllMacro.h | 19 +++-------------- src/libcalamares/GlobalStorage.cpp | 14 ++----------- src/libcalamares/GlobalStorage.h | 14 ++----------- src/libcalamares/Job.cpp | 19 +++-------------- src/libcalamares/Job.h | 14 ++----------- src/libcalamares/JobExample.cpp | 21 ++++--------------- src/libcalamares/JobExample.h | 21 ++++--------------- src/libcalamares/JobQueue.cpp | 19 +++-------------- src/libcalamares/JobQueue.h | 19 +++-------------- src/libcalamares/ProcessJob.cpp | 21 ++++--------------- src/libcalamares/ProcessJob.h | 21 ++++--------------- src/libcalamares/PythonHelper.cpp | 21 ++++--------------- src/libcalamares/PythonHelper.h | 21 ++++--------------- src/libcalamares/PythonJob.cpp | 19 +++-------------- src/libcalamares/PythonJob.h | 19 +++-------------- src/libcalamares/PythonJobApi.cpp | 21 ++++--------------- src/libcalamares/PythonJobApi.h | 21 ++++--------------- src/libcalamares/Settings.cpp | 14 ++----------- src/libcalamares/Settings.h | 14 ++----------- src/libcalamares/Tests.cpp | 14 ++----------- src/libcalamares/geoip/GeoIPFixed.cpp | 20 ++++-------------- src/libcalamares/geoip/GeoIPFixed.h | 20 ++++-------------- src/libcalamares/geoip/GeoIPJSON.cpp | 21 ++++--------------- src/libcalamares/geoip/GeoIPJSON.h | 21 ++++--------------- src/libcalamares/geoip/GeoIPTests.cpp | 21 ++++--------------- src/libcalamares/geoip/GeoIPTests.h | 21 ++++--------------- src/libcalamares/geoip/GeoIPXML.cpp | 21 ++++--------------- src/libcalamares/geoip/GeoIPXML.h | 21 ++++--------------- src/libcalamares/geoip/Handler.cpp | 21 ++++--------------- src/libcalamares/geoip/Handler.h | 21 ++++--------------- src/libcalamares/geoip/Interface.cpp | 19 +++-------------- src/libcalamares/geoip/Interface.h | 21 ++++--------------- src/libcalamares/geoip/test_geoip.cpp | 21 ++++--------------- src/libcalamares/locale/CountryData_p.cpp | 2 +- src/libcalamares/locale/Label.cpp | 14 ++----------- src/libcalamares/locale/Label.h | 14 ++----------- src/libcalamares/locale/LabelModel.cpp | 14 ++----------- src/libcalamares/locale/LabelModel.h | 14 ++----------- src/libcalamares/locale/Lookup.cpp | 14 ++----------- src/libcalamares/locale/Lookup.h | 14 ++----------- src/libcalamares/locale/Tests.cpp | 14 ++----------- src/libcalamares/locale/TimeZone.cpp | 14 ++----------- src/libcalamares/locale/TimeZone.h | 14 ++----------- .../locale/TranslatableConfiguration.cpp | 14 ++----------- .../locale/TranslatableConfiguration.h | 14 ++----------- .../locale/TranslatableString.cpp | 14 ++----------- src/libcalamares/locale/TranslatableString.h | 14 ++----------- src/libcalamares/locale/cldr-extractor.py | 4 ++-- src/libcalamares/locale/zone-extractor.py | 4 ++-- src/libcalamares/modulesystem/Actions.h | 14 ++----------- src/libcalamares/modulesystem/Descriptor.cpp | 2 +- src/libcalamares/modulesystem/Descriptor.h | 14 ++----------- src/libcalamares/modulesystem/InstanceKey.cpp | 14 ++----------- src/libcalamares/modulesystem/InstanceKey.h | 14 ++----------- src/libcalamares/modulesystem/Module.cpp | 14 ++----------- src/libcalamares/modulesystem/Module.h | 14 ++----------- src/libcalamares/modulesystem/Requirement.h | 14 ++----------- .../modulesystem/RequirementsChecker.cpp | 14 ++----------- .../modulesystem/RequirementsChecker.h | 14 ++----------- .../modulesystem/RequirementsModel.cpp | 14 ++----------- .../modulesystem/RequirementsModel.h | 14 ++----------- src/libcalamares/modulesystem/Tests.cpp | 14 ++----------- src/libcalamares/network/Manager.cpp | 19 +++-------------- src/libcalamares/network/Manager.h | 19 +++-------------- src/libcalamares/network/Tests.cpp | 21 ++++--------------- src/libcalamares/network/Tests.h | 21 ++++--------------- src/libcalamares/partition/FileSystem.cpp | 14 ++----------- src/libcalamares/partition/FileSystem.h | 14 ++----------- src/libcalamares/partition/KPMManager.cpp | 14 ++----------- src/libcalamares/partition/KPMManager.h | 14 ++----------- src/libcalamares/partition/KPMTests.cpp | 14 ++----------- src/libcalamares/partition/Mount.cpp | 14 ++----------- src/libcalamares/partition/Mount.h | 14 ++----------- .../partition/PartitionIterator.cpp | 14 ++----------- .../partition/PartitionIterator.h | 14 ++----------- src/libcalamares/partition/PartitionQuery.cpp | 14 ++----------- src/libcalamares/partition/PartitionQuery.h | 14 ++----------- src/libcalamares/partition/PartitionSize.cpp | 14 ++----------- src/libcalamares/partition/PartitionSize.h | 14 ++----------- src/libcalamares/partition/Sync.cpp | 14 ++----------- src/libcalamares/partition/Sync.h | 14 ++----------- src/libcalamares/partition/Tests.cpp | 14 ++----------- src/libcalamares/partition/Tests.h | 14 ++----------- src/libcalamares/utils/BoostPython.h | 14 ++----------- .../utils/CalamaresUtilsSystem.cpp | 14 ++----------- src/libcalamares/utils/CalamaresUtilsSystem.h | 14 ++----------- src/libcalamares/utils/CommandList.cpp | 14 ++----------- src/libcalamares/utils/CommandList.h | 14 ++----------- src/libcalamares/utils/Dirs.cpp | 14 ++----------- src/libcalamares/utils/Dirs.h | 14 ++----------- src/libcalamares/utils/Entropy.cpp | 14 ++----------- src/libcalamares/utils/Entropy.h | 14 ++----------- src/libcalamares/utils/Logger.cpp | 14 ++----------- src/libcalamares/utils/Logger.h | 14 ++----------- src/libcalamares/utils/NamedEnum.h | 14 ++----------- src/libcalamares/utils/NamedSuffix.h | 14 ++----------- src/libcalamares/utils/Permissions.cpp | 2 +- src/libcalamares/utils/Permissions.h | 2 +- src/libcalamares/utils/PluginFactory.cpp | 14 ++----------- src/libcalamares/utils/PluginFactory.h | 14 ++----------- src/libcalamares/utils/RAII.h | 14 ++----------- src/libcalamares/utils/Retranslator.cpp | 14 ++----------- src/libcalamares/utils/Retranslator.h | 14 ++----------- src/libcalamares/utils/String.cpp | 14 ++----------- src/libcalamares/utils/String.h | 14 ++----------- src/libcalamares/utils/TestPaths.cpp | 14 ++----------- src/libcalamares/utils/Tests.cpp | 14 ++----------- src/libcalamares/utils/Traits.h | 14 ++----------- src/libcalamares/utils/UMask.cpp | 14 ++----------- src/libcalamares/utils/UMask.h | 14 ++----------- src/libcalamares/utils/Units.h | 14 ++----------- src/libcalamares/utils/Variant.cpp | 14 ++----------- src/libcalamares/utils/Variant.h | 14 ++----------- src/libcalamares/utils/Yaml.cpp | 14 ++----------- src/libcalamares/utils/Yaml.h | 14 ++----------- src/libcalamares/utils/moc-warnings.h | 14 ++----------- src/libcalamaresui/Branding.cpp | 14 ++----------- src/libcalamaresui/Branding.h | 14 ++----------- src/libcalamaresui/CMakeLists.txt | 2 +- src/libcalamaresui/ViewManager.cpp | 14 ++----------- src/libcalamaresui/ViewManager.h | 14 ++----------- .../modulesystem/CppJobModule.cpp | 14 ++----------- .../modulesystem/CppJobModule.h | 14 ++----------- .../modulesystem/ModuleFactory.cpp | 14 ++----------- .../modulesystem/ModuleFactory.h | 14 ++----------- .../modulesystem/ModuleManager.cpp | 14 ++----------- .../modulesystem/ModuleManager.h | 14 ++----------- .../modulesystem/ProcessJobModule.cpp | 14 ++----------- .../modulesystem/ProcessJobModule.h | 14 ++----------- .../modulesystem/PythonJobModule.cpp | 14 ++----------- .../modulesystem/PythonJobModule.h | 14 ++----------- .../modulesystem/PythonQtViewModule.cpp | 14 ++----------- .../modulesystem/PythonQtViewModule.h | 14 ++----------- .../modulesystem/ViewModule.cpp | 14 ++----------- src/libcalamaresui/modulesystem/ViewModule.h | 14 ++----------- .../utils/CalamaresUtilsGui.cpp | 14 ++----------- src/libcalamaresui/utils/CalamaresUtilsGui.h | 14 ++----------- src/libcalamaresui/utils/ImageRegistry.cpp | 2 +- src/libcalamaresui/utils/ImageRegistry.h | 2 +- src/libcalamaresui/utils/Paste.cpp | 14 ++----------- src/libcalamaresui/utils/Paste.h | 14 ++----------- src/libcalamaresui/utils/PythonQtUtils.cpp | 14 ++----------- src/libcalamaresui/utils/PythonQtUtils.h | 14 ++----------- src/libcalamaresui/utils/Qml.cpp | 14 ++----------- src/libcalamaresui/utils/Qml.h | 14 ++----------- .../viewpages/BlankViewStep.cpp | 14 ++----------- src/libcalamaresui/viewpages/BlankViewStep.h | 14 ++----------- .../viewpages/ExecutionViewStep.cpp | 14 ++----------- .../viewpages/ExecutionViewStep.h | 14 ++----------- .../PythonQtGlobalStorageWrapper.cpp | 14 ++----------- .../viewpages/PythonQtGlobalStorageWrapper.h | 14 ++----------- src/libcalamaresui/viewpages/PythonQtJob.cpp | 14 ++----------- src/libcalamaresui/viewpages/PythonQtJob.h | 14 ++----------- .../viewpages/PythonQtUtilsWrapper.cpp | 14 ++----------- .../viewpages/PythonQtUtilsWrapper.h | 14 ++----------- .../viewpages/PythonQtViewStep.cpp | 14 ++----------- .../viewpages/PythonQtViewStep.h | 14 ++----------- src/libcalamaresui/viewpages/QmlViewStep.cpp | 14 ++----------- src/libcalamaresui/viewpages/QmlViewStep.h | 14 ++----------- src/libcalamaresui/viewpages/Slideshow.cpp | 14 ++----------- src/libcalamaresui/viewpages/Slideshow.h | 14 ++----------- src/libcalamaresui/viewpages/ViewStep.cpp | 14 ++----------- src/libcalamaresui/viewpages/ViewStep.h | 14 ++----------- src/libcalamaresui/widgets/ClickableLabel.cpp | 14 ++----------- src/libcalamaresui/widgets/ClickableLabel.h | 14 ++----------- .../widgets/FixedAspectRatioLabel.cpp | 14 ++----------- .../widgets/FixedAspectRatioLabel.h | 14 ++----------- .../widgets/PrettyRadioButton.cpp | 14 ++----------- .../widgets/PrettyRadioButton.h | 14 ++----------- src/libcalamaresui/widgets/WaitingWidget.cpp | 14 ++----------- src/libcalamaresui/widgets/WaitingWidget.h | 14 ++----------- src/modules/CMakeLists.txt | 2 +- src/modules/bootloader/main.py | 14 ++----------- src/modules/contextualprocess/Binding.h | 14 ++----------- src/modules/contextualprocess/CMakeLists.txt | 2 +- .../ContextualProcessJob.cpp | 14 ++----------- .../contextualprocess/ContextualProcessJob.h | 14 ++----------- src/modules/contextualprocess/Tests.cpp | 14 ++----------- src/modules/contextualprocess/Tests.h | 14 ++----------- src/modules/displaymanager/main.py | 14 ++----------- src/modules/dracut/main.py | 14 ++----------- src/modules/dracutlukscfg/CMakeLists.txt | 2 +- .../dracutlukscfg/DracutLuksCfgJob.cpp | 14 ++----------- src/modules/dracutlukscfg/DracutLuksCfgJob.h | 14 ++----------- src/modules/dummycpp/CMakeLists.txt | 2 +- src/modules/dummycpp/DummyCppJob.cpp | 14 ++----------- src/modules/dummycpp/DummyCppJob.h | 14 ++----------- src/modules/dummypython/main.py | 14 ++----------- src/modules/dummypythonqt/main.py | 14 ++----------- src/modules/finished/CMakeLists.txt | 2 +- src/modules/finished/FinishedPage.cpp | 14 ++----------- src/modules/finished/FinishedPage.h | 14 ++----------- src/modules/finished/FinishedViewStep.cpp | 14 ++----------- src/modules/finished/FinishedViewStep.h | 14 ++----------- src/modules/fsresizer/CMakeLists.txt | 2 +- src/modules/fsresizer/ResizeFSJob.cpp | 14 ++----------- src/modules/fsresizer/ResizeFSJob.h | 14 ++----------- src/modules/fsresizer/Tests.cpp | 14 ++----------- src/modules/fsresizer/Tests.h | 14 ++----------- src/modules/fstab/main.py | 14 ++----------- src/modules/grubcfg/main.py | 14 ++----------- src/modules/hostinfo/CMakeLists.txt | 2 +- src/modules/hostinfo/HostInfoJob.cpp | 14 ++----------- src/modules/hostinfo/HostInfoJob.h | 14 ++----------- src/modules/hostinfo/Tests.cpp | 14 ++----------- src/modules/hwclock/main.py | 14 ++----------- src/modules/initcpio/CMakeLists.txt | 2 +- src/modules/initcpio/InitcpioJob.cpp | 14 ++----------- src/modules/initcpio/InitcpioJob.h | 14 ++----------- src/modules/initcpio/Tests.cpp | 14 ++----------- src/modules/initcpio/Tests.h | 14 ++----------- src/modules/initcpiocfg/main.py | 14 ++----------- src/modules/initramfs/CMakeLists.txt | 2 +- src/modules/initramfs/InitramfsJob.cpp | 14 ++----------- src/modules/initramfs/InitramfsJob.h | 14 ++----------- src/modules/initramfs/Tests.cpp | 14 ++----------- src/modules/initramfs/Tests.h | 14 ++----------- src/modules/initramfscfg/main.py | 14 ++----------- .../interactiveterminal/CMakeLists.txt | 2 +- .../InteractiveTerminalPage.cpp | 14 ++----------- .../InteractiveTerminalPage.h | 14 ++----------- .../InteractiveTerminalViewStep.cpp | 14 ++----------- .../InteractiveTerminalViewStep.h | 14 ++----------- src/modules/keyboard/CMakeLists.txt | 2 +- src/modules/keyboard/Config.cpp | 14 ++----------- src/modules/keyboard/Config.h | 14 ++----------- src/modules/keyboard/KeyboardLayoutModel.cpp | 14 ++----------- src/modules/keyboard/KeyboardLayoutModel.h | 14 ++----------- src/modules/keyboard/KeyboardPage.cpp | 14 ++----------- src/modules/keyboard/KeyboardPage.h | 14 ++----------- src/modules/keyboard/KeyboardViewStep.cpp | 14 ++----------- src/modules/keyboard/KeyboardViewStep.h | 14 ++----------- src/modules/keyboard/SetKeyboardLayoutJob.cpp | 14 ++----------- src/modules/keyboard/SetKeyboardLayoutJob.h | 14 ++----------- .../keyboardwidget/keyboardglobal.cpp | 14 ++----------- .../keyboard/keyboardwidget/keyboardglobal.h | 14 ++----------- .../keyboardwidget/keyboardpreview.cpp | 14 ++----------- .../keyboard/keyboardwidget/keyboardpreview.h | 14 ++----------- src/modules/keyboardq/CMakeLists.txt | 2 +- src/modules/keyboardq/KeyboardQmlViewStep.cpp | 14 ++----------- src/modules/keyboardq/KeyboardQmlViewStep.h | 14 ++----------- src/modules/license/CMakeLists.txt | 2 +- src/modules/license/LicensePage.cpp | 14 ++----------- src/modules/license/LicensePage.h | 14 ++----------- src/modules/license/LicenseViewStep.cpp | 14 ++----------- src/modules/license/LicenseViewStep.h | 14 ++----------- src/modules/license/LicenseWidget.cpp | 14 ++----------- src/modules/license/LicenseWidget.h | 14 ++----------- src/modules/locale/CMakeLists.txt | 2 +- src/modules/locale/Config.cpp | 14 ++----------- src/modules/locale/Config.h | 14 ++----------- src/modules/locale/LCLocaleDialog.cpp | 14 ++----------- src/modules/locale/LCLocaleDialog.h | 14 ++----------- src/modules/locale/LocaleConfiguration.cpp | 14 ++----------- src/modules/locale/LocaleConfiguration.h | 14 ++----------- src/modules/locale/LocalePage.cpp | 14 ++----------- src/modules/locale/LocalePage.h | 14 ++----------- src/modules/locale/LocaleViewStep.cpp | 14 ++----------- src/modules/locale/LocaleViewStep.h | 14 ++----------- src/modules/locale/SetTimezoneJob.cpp | 14 ++----------- src/modules/locale/SetTimezoneJob.h | 14 ++----------- src/modules/locale/Tests.cpp | 14 ++----------- .../locale/timezonewidget/TimeZoneImage.cpp | 14 ++----------- .../locale/timezonewidget/TimeZoneImage.h | 14 ++----------- .../locale/timezonewidget/timezonewidget.cpp | 14 ++----------- .../locale/timezonewidget/timezonewidget.h | 14 ++----------- src/modules/localecfg/main.py | 14 ++----------- src/modules/localeq/CMakeLists.txt | 2 +- src/modules/localeq/LocaleQmlViewStep.cpp | 14 ++----------- src/modules/localeq/LocaleQmlViewStep.h | 14 ++----------- src/modules/localeq/Map.qml | 14 ++----------- src/modules/localeq/Offline.qml | 14 ++----------- src/modules/localeq/i18n.qml | 14 ++----------- src/modules/localeq/localeq.qml | 14 ++----------- src/modules/luksbootkeyfile/CMakeLists.txt | 2 +- .../luksbootkeyfile/LuksBootKeyFileJob.cpp | 2 +- .../luksbootkeyfile/LuksBootKeyFileJob.h | 2 +- src/modules/luksopenswaphookcfg/main.py | 14 ++----------- src/modules/machineid/CMakeLists.txt | 2 +- src/modules/machineid/MachineIdJob.cpp | 14 ++----------- src/modules/machineid/MachineIdJob.h | 14 ++----------- src/modules/machineid/Tests.cpp | 14 ++----------- src/modules/machineid/Workers.cpp | 14 ++----------- src/modules/machineid/Workers.h | 14 ++----------- src/modules/mkinitfs/main.py | 14 ++----------- src/modules/mount/main.py | 14 ++----------- src/modules/netinstall/CMakeLists.txt | 2 +- src/modules/netinstall/Config.cpp | 12 +---------- src/modules/netinstall/Config.h | 12 +---------- src/modules/netinstall/NetInstallPage.cpp | 12 +---------- src/modules/netinstall/NetInstallPage.h | 12 +---------- src/modules/netinstall/NetInstallViewStep.cpp | 12 +---------- src/modules/netinstall/NetInstallViewStep.h | 12 +---------- src/modules/netinstall/PackageModel.cpp | 14 ++----------- src/modules/netinstall/PackageModel.h | 14 ++----------- src/modules/netinstall/PackageTreeItem.cpp | 14 ++----------- src/modules/netinstall/PackageTreeItem.h | 14 ++----------- src/modules/netinstall/Tests.cpp | 14 ++----------- src/modules/networkcfg/main.py | 14 ++----------- src/modules/notesqml/CMakeLists.txt | 2 +- src/modules/notesqml/NotesQmlViewStep.cpp | 2 +- src/modules/notesqml/NotesQmlViewStep.h | 2 +- .../notesqml/examples/notesqml.qml.example | 2 +- src/modules/notesqml/notesqml.qml | 2 +- src/modules/oemid/CMakeLists.txt | 2 +- src/modules/oemid/IDJob.cpp | 14 ++----------- src/modules/oemid/IDJob.h | 14 ++----------- src/modules/oemid/OEMViewStep.cpp | 14 ++----------- src/modules/oemid/OEMViewStep.h | 14 ++----------- src/modules/openrcdmcryptcfg/main.py | 14 ++----------- src/modules/packagechooser/CMakeLists.txt | 2 +- src/modules/packagechooser/ItemAppData.cpp | 14 ++----------- src/modules/packagechooser/ItemAppData.h | 14 ++----------- src/modules/packagechooser/ItemAppStream.cpp | 14 ++----------- src/modules/packagechooser/ItemAppStream.h | 14 ++----------- .../packagechooser/PackageChooserPage.cpp | 14 ++----------- .../packagechooser/PackageChooserPage.h | 14 ++----------- .../packagechooser/PackageChooserViewStep.cpp | 14 ++----------- .../packagechooser/PackageChooserViewStep.h | 14 ++----------- src/modules/packagechooser/PackageModel.cpp | 14 ++----------- src/modules/packagechooser/PackageModel.h | 14 ++----------- src/modules/packagechooser/Tests.cpp | 14 ++----------- src/modules/packagechooser/Tests.h | 14 ++----------- src/modules/packages/main.py | 14 ++----------- src/modules/partition/CMakeLists.txt | 2 +- .../partition/core/BootLoaderModel.cpp | 14 ++----------- src/modules/partition/core/BootLoaderModel.h | 14 ++----------- src/modules/partition/core/ColorUtils.cpp | 14 ++----------- src/modules/partition/core/ColorUtils.h | 14 ++----------- src/modules/partition/core/Config.cpp | 14 ++----------- src/modules/partition/core/Config.h | 14 ++----------- src/modules/partition/core/DeviceList.cpp | 14 ++----------- src/modules/partition/core/DeviceList.h | 14 ++----------- src/modules/partition/core/DeviceModel.cpp | 14 ++----------- src/modules/partition/core/DeviceModel.h | 14 ++----------- src/modules/partition/core/KPMHelpers.cpp | 14 ++----------- src/modules/partition/core/KPMHelpers.h | 14 ++----------- src/modules/partition/core/OsproberEntry.h | 14 ++----------- src/modules/partition/core/PartUtils.cpp | 14 ++----------- src/modules/partition/core/PartUtils.h | 14 ++----------- .../partition/core/PartitionActions.cpp | 14 ++----------- src/modules/partition/core/PartitionActions.h | 14 ++----------- .../partition/core/PartitionCoreModule.cpp | 14 ++----------- .../partition/core/PartitionCoreModule.h | 14 ++----------- src/modules/partition/core/PartitionInfo.cpp | 14 ++----------- src/modules/partition/core/PartitionInfo.h | 14 ++----------- .../partition/core/PartitionLayout.cpp | 14 ++----------- src/modules/partition/core/PartitionLayout.h | 14 ++----------- src/modules/partition/core/PartitionModel.cpp | 14 ++----------- src/modules/partition/core/PartitionModel.h | 14 ++----------- src/modules/partition/gui/BootInfoWidget.cpp | 14 ++----------- src/modules/partition/gui/BootInfoWidget.h | 14 ++----------- src/modules/partition/gui/ChoicePage.cpp | 14 ++----------- src/modules/partition/gui/ChoicePage.h | 14 ++----------- .../partition/gui/CreatePartitionDialog.cpp | 14 ++----------- .../partition/gui/CreatePartitionDialog.h | 14 ++----------- .../partition/gui/CreateVolumeGroupDialog.cpp | 14 ++----------- .../partition/gui/CreateVolumeGroupDialog.h | 14 ++----------- .../partition/gui/DeviceInfoWidget.cpp | 14 ++----------- src/modules/partition/gui/DeviceInfoWidget.h | 14 ++----------- .../gui/EditExistingPartitionDialog.cpp | 14 ++----------- .../gui/EditExistingPartitionDialog.h | 14 ++----------- src/modules/partition/gui/EncryptWidget.cpp | 14 ++----------- src/modules/partition/gui/EncryptWidget.h | 14 ++----------- .../gui/ListPhysicalVolumeWidgetItem.cpp | 14 ++----------- .../gui/ListPhysicalVolumeWidgetItem.h | 14 ++----------- .../partition/gui/PartitionBarsView.cpp | 14 ++----------- src/modules/partition/gui/PartitionBarsView.h | 14 ++----------- .../partition/gui/PartitionDialogHelpers.cpp | 14 ++----------- .../partition/gui/PartitionDialogHelpers.h | 14 ++----------- .../partition/gui/PartitionLabelsView.cpp | 14 ++----------- .../partition/gui/PartitionLabelsView.h | 14 ++----------- src/modules/partition/gui/PartitionPage.cpp | 14 ++----------- src/modules/partition/gui/PartitionPage.h | 14 ++----------- .../partition/gui/PartitionSizeController.cpp | 14 ++----------- .../partition/gui/PartitionSizeController.h | 14 ++----------- .../partition/gui/PartitionSplitterWidget.cpp | 14 ++----------- .../partition/gui/PartitionSplitterWidget.h | 14 ++----------- .../gui/PartitionViewSelectionFilter.h | 14 ++----------- .../partition/gui/PartitionViewStep.cpp | 14 ++----------- src/modules/partition/gui/PartitionViewStep.h | 14 ++----------- src/modules/partition/gui/ReplaceWidget.cpp | 14 ++----------- src/modules/partition/gui/ReplaceWidget.h | 14 ++----------- .../partition/gui/ResizeVolumeGroupDialog.cpp | 14 ++----------- .../partition/gui/ResizeVolumeGroupDialog.h | 14 ++----------- src/modules/partition/gui/ScanningDialog.cpp | 14 ++----------- src/modules/partition/gui/ScanningDialog.h | 14 ++----------- .../partition/gui/VolumeGroupBaseDialog.cpp | 14 ++----------- .../partition/gui/VolumeGroupBaseDialog.h | 14 ++----------- src/modules/partition/jobs/ClearMountsJob.cpp | 14 ++----------- src/modules/partition/jobs/ClearMountsJob.h | 14 ++----------- .../partition/jobs/ClearTempMountsJob.cpp | 14 ++----------- .../partition/jobs/ClearTempMountsJob.h | 14 ++----------- .../partition/jobs/CreatePartitionJob.cpp | 14 ++----------- .../partition/jobs/CreatePartitionJob.h | 14 ++----------- .../jobs/CreatePartitionTableJob.cpp | 14 ++----------- .../partition/jobs/CreatePartitionTableJob.h | 14 ++----------- .../partition/jobs/CreateVolumeGroupJob.cpp | 14 ++----------- .../partition/jobs/CreateVolumeGroupJob.h | 14 ++----------- .../jobs/DeactivateVolumeGroupJob.cpp | 14 ++----------- .../partition/jobs/DeactivateVolumeGroupJob.h | 14 ++----------- .../partition/jobs/DeletePartitionJob.cpp | 14 ++----------- .../partition/jobs/DeletePartitionJob.h | 14 ++----------- .../partition/jobs/FillGlobalStorageJob.cpp | 14 ++----------- .../partition/jobs/FillGlobalStorageJob.h | 14 ++----------- .../partition/jobs/FormatPartitionJob.cpp | 14 ++----------- .../partition/jobs/FormatPartitionJob.h | 14 ++----------- src/modules/partition/jobs/PartitionJob.cpp | 14 ++----------- src/modules/partition/jobs/PartitionJob.h | 14 ++----------- .../partition/jobs/RemoveVolumeGroupJob.cpp | 14 ++----------- .../partition/jobs/RemoveVolumeGroupJob.h | 14 ++----------- .../partition/jobs/ResizePartitionJob.cpp | 14 ++----------- .../partition/jobs/ResizePartitionJob.h | 14 ++----------- .../partition/jobs/ResizeVolumeGroupJob.cpp | 14 ++----------- .../partition/jobs/ResizeVolumeGroupJob.h | 14 ++----------- .../partition/jobs/SetPartitionFlagsJob.cpp | 14 ++----------- .../partition/jobs/SetPartitionFlagsJob.h | 14 ++----------- src/modules/partition/tests/CMakeLists.txt | 2 +- .../partition/tests/ClearMountsJobTests.cpp | 14 ++----------- .../partition/tests/ClearMountsJobTests.h | 14 ++----------- .../partition/tests/PartitionJobTests.cpp | 14 ++----------- .../partition/tests/PartitionJobTests.h | 14 ++----------- src/modules/plasmalnf/CMakeLists.txt | 2 +- src/modules/plasmalnf/PlasmaLnfJob.cpp | 14 ++----------- src/modules/plasmalnf/PlasmaLnfJob.h | 14 ++----------- src/modules/plasmalnf/PlasmaLnfPage.cpp | 14 ++----------- src/modules/plasmalnf/PlasmaLnfPage.h | 14 ++----------- src/modules/plasmalnf/PlasmaLnfViewStep.cpp | 14 ++----------- src/modules/plasmalnf/PlasmaLnfViewStep.h | 14 ++----------- src/modules/plasmalnf/ThemeInfo.h | 14 ++----------- src/modules/plasmalnf/ThemeWidget.cpp | 14 ++----------- src/modules/plasmalnf/ThemeWidget.h | 14 ++----------- src/modules/plymouthcfg/main.py | 14 ++----------- src/modules/preservefiles/CMakeLists.txt | 2 +- src/modules/preservefiles/PreserveFiles.cpp | 3 +-- src/modules/preservefiles/PreserveFiles.h | 3 +-- src/modules/rawfs/main.py | 14 ++----------- src/modules/removeuser/CMakeLists.txt | 2 +- src/modules/removeuser/RemoveUserJob.cpp | 14 ++----------- src/modules/removeuser/RemoveUserJob.h | 14 ++----------- src/modules/services-openrc/main.py | 14 ++----------- src/modules/services-systemd/main.py | 14 ++----------- src/modules/shellprocess/CMakeLists.txt | 2 +- src/modules/shellprocess/ShellProcessJob.cpp | 14 ++----------- src/modules/shellprocess/ShellProcessJob.h | 14 ++----------- src/modules/shellprocess/Tests.cpp | 14 ++----------- src/modules/shellprocess/Tests.h | 14 ++----------- src/modules/summary/CMakeLists.txt | 2 +- src/modules/summary/SummaryPage.cpp | 14 ++----------- src/modules/summary/SummaryPage.h | 14 ++----------- src/modules/summary/SummaryViewStep.cpp | 14 ++----------- src/modules/summary/SummaryViewStep.h | 14 ++----------- src/modules/tracking/CMakeLists.txt | 2 +- src/modules/tracking/Config.cpp | 14 ++----------- src/modules/tracking/Config.h | 14 ++----------- src/modules/tracking/Tests.cpp | 2 +- src/modules/tracking/TrackingJobs.cpp | 14 ++----------- src/modules/tracking/TrackingJobs.h | 14 ++----------- src/modules/tracking/TrackingPage.cpp | 14 ++----------- src/modules/tracking/TrackingPage.h | 14 ++----------- src/modules/tracking/TrackingType.h | 14 ++----------- src/modules/tracking/TrackingViewStep.cpp | 14 ++----------- src/modules/tracking/TrackingViewStep.h | 14 ++----------- src/modules/umount/main.py | 14 ++----------- src/modules/unpackfs/main.py | 14 ++----------- src/modules/users/CMakeLists.txt | 2 +- src/modules/users/CheckPWQuality.cpp | 14 ++----------- src/modules/users/CheckPWQuality.h | 14 ++----------- src/modules/users/Config.cpp | 14 ++----------- src/modules/users/Config.h | 14 ++----------- src/modules/users/CreateUserJob.cpp | 2 +- src/modules/users/CreateUserJob.h | 14 ++----------- src/modules/users/SetHostNameJob.cpp | 14 ++----------- src/modules/users/SetHostNameJob.h | 14 ++----------- src/modules/users/SetPasswordJob.cpp | 14 ++----------- src/modules/users/SetPasswordJob.h | 14 ++----------- src/modules/users/TestCreateUserJob.cpp | 14 ++----------- src/modules/users/TestPasswordJob.cpp | 14 ++----------- src/modules/users/TestSetHostNameJob.cpp | 14 ++----------- src/modules/users/Tests.cpp | 14 ++----------- src/modules/users/UsersPage.cpp | 14 ++----------- src/modules/users/UsersPage.h | 14 ++----------- src/modules/users/UsersViewStep.cpp | 14 ++----------- src/modules/users/UsersViewStep.h | 14 ++----------- src/modules/usersq/CMakeLists.txt | 2 +- src/modules/usersq/UsersQmlViewStep.cpp | 14 ++----------- src/modules/usersq/UsersQmlViewStep.h | 14 ++----------- src/modules/usersq/usersq.qml | 21 +++++-------------- src/modules/webview/CMakeLists.txt | 2 +- src/modules/webview/WebViewStep.cpp | 14 ++----------- src/modules/webview/WebViewStep.h | 14 ++----------- src/modules/welcome/CMakeLists.txt | 2 +- src/modules/welcome/Config.cpp | 14 ++----------- src/modules/welcome/Config.h | 14 ++----------- src/modules/welcome/WelcomePage.cpp | 14 ++----------- src/modules/welcome/WelcomePage.h | 14 ++----------- src/modules/welcome/WelcomeViewStep.cpp | 14 ++----------- src/modules/welcome/WelcomeViewStep.h | 14 ++----------- .../welcome/checker/CheckerContainer.cpp | 14 ++----------- .../welcome/checker/CheckerContainer.h | 14 ++----------- .../welcome/checker/GeneralRequirements.cpp | 14 ++----------- .../welcome/checker/GeneralRequirements.h | 14 ++----------- src/modules/welcome/checker/ResultWidget.cpp | 14 ++----------- src/modules/welcome/checker/ResultWidget.h | 14 ++----------- .../welcome/checker/ResultsListWidget.cpp | 14 ++----------- .../welcome/checker/ResultsListWidget.h | 14 ++----------- src/modules/welcome/checker/partman_devices.c | 14 ++----------- src/modules/welcome/checker/partman_devices.h | 14 ++----------- src/modules/welcomeq/CMakeLists.txt | 2 +- src/modules/welcomeq/Recommended.qml | 14 ++----------- src/modules/welcomeq/Requirements.qml | 14 ++----------- src/modules/welcomeq/WelcomeQmlViewStep.cpp | 14 ++----------- src/modules/welcomeq/WelcomeQmlViewStep.h | 14 ++----------- src/modules/welcomeq/about.qml | 14 ++----------- src/modules/welcomeq/release_notes.qml | 14 ++----------- src/modules/welcomeq/welcomeq.qml | 14 ++----------- src/qml/calamares/CMakeLists.txt | 2 +- src/qml/calamares/slideshow/BackButton.qml | 14 ++----------- src/qml/calamares/slideshow/ForwardButton.qml | 14 ++----------- src/qml/calamares/slideshow/NavButton.qml | 14 ++----------- src/qml/calamares/slideshow/Presentation.qml | 2 +- src/qml/calamares/slideshow/Slide.qml | 2 +- src/qml/calamares/slideshow/SlideCounter.qml | 14 ++----------- 568 files changed, 1123 insertions(+), 6188 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e35253a10..4e95dad8b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,22 +1,11 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # ### # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . +# Calamares is Free Software: see the License-Identifier above. # # Individual files may have different licenses (like the CMake # infrastructure, which is BSD-2-Clause licensed). Check the SPDX diff --git a/CMakeModules/BoostPython3.cmake b/CMakeModules/BoostPython3.cmake index e53f9072d..bd1d24e0e 100644 --- a/CMakeModules/BoostPython3.cmake +++ b/CMakeModules/BoostPython3.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Aurélien Gâteau # SPDX-FileCopyrightText: 2017 Adriaan de Groot diff --git a/CMakeModules/CMakeColors.cmake b/CMakeModules/CMakeColors.cmake index 7de050e9b..073c24de6 100644 --- a/CMakeModules/CMakeColors.cmake +++ b/CMakeModules/CMakeColors.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2014 Kevin Kofler diff --git a/CMakeModules/CMakeDateStamp.cmake b/CMakeModules/CMakeDateStamp.cmake index 383475ca2..15482100f 100644 --- a/CMakeModules/CMakeDateStamp.cmake +++ b/CMakeModules/CMakeDateStamp.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-License-Identifier: BSD-2-Clause diff --git a/CMakeModules/CMakeVersionSource.cmake b/CMakeModules/CMakeVersionSource.cmake index 69ef8ee59..295fffa5d 100644 --- a/CMakeModules/CMakeVersionSource.cmake +++ b/CMakeModules/CMakeVersionSource.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-License-Identifier: BSD-2-Clause diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index d0ecbae5d..062ad6706 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,21 +1,11 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index 892653ae6..0cbad7424 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -1,21 +1,11 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index 395cd936e..87f8547f8 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -1,21 +1,11 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index ad8531511..55865999c 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -1,21 +1,11 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAddTest.cmake b/CMakeModules/CalamaresAddTest.cmake index 14f9d4144..5bedf81b5 100644 --- a/CMakeModules/CalamaresAddTest.cmake +++ b/CMakeModules/CalamaresAddTest.cmake @@ -1,20 +1,10 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 27ee1b917..4d2fa265c 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -1,20 +1,10 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/CalamaresAutomoc.cmake b/CMakeModules/CalamaresAutomoc.cmake index 21ce35d9c..c7dbd72bf 100644 --- a/CMakeModules/CalamaresAutomoc.cmake +++ b/CMakeModules/CalamaresAutomoc.cmake @@ -1,20 +1,10 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . # ### # diff --git a/CMakeModules/FindCrypt.cmake b/CMakeModules/FindCrypt.cmake index 2a65f9d92..94f8a4510 100644 --- a/CMakeModules/FindCrypt.cmake +++ b/CMakeModules/FindCrypt.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Adriaan de Groot diff --git a/CMakeModules/FindLibPWQuality.cmake b/CMakeModules/FindLibPWQuality.cmake index 903c767bb..2a9943f3d 100644 --- a/CMakeModules/FindLibPWQuality.cmake +++ b/CMakeModules/FindLibPWQuality.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2018 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/CMakeModules/FindPythonQt.cmake b/CMakeModules/FindPythonQt.cmake index 700b38117..81208a86e 100644 --- a/CMakeModules/FindPythonQt.cmake +++ b/CMakeModules/FindPythonQt.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2016 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Adriaan de Groot diff --git a/CMakeModules/FindYAMLCPP.cmake b/CMakeModules/FindYAMLCPP.cmake index cc114de92..0752c7bd7 100644 --- a/CMakeModules/FindYAMLCPP.cmake +++ b/CMakeModules/FindYAMLCPP.cmake @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2020 Adriaan de Groot diff --git a/ci/txcheck.sh b/ci/txcheck.sh index a2fb5a615..cedae6682 100644 --- a/ci/txcheck.sh +++ b/ci/txcheck.sh @@ -1,7 +1,7 @@ #! /bin/sh ### LICENSE -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/ci/txpull.sh b/ci/txpull.sh index 730e2a3f3..8c3a824cc 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -1,7 +1,7 @@ #!/bin/sh ### LICENSE -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac # SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot diff --git a/ci/txpush.sh b/ci/txpush.sh index 796f6cfc1..363a234e8 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -1,7 +1,7 @@ #!/bin/sh ### LICENSE -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac # SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot diff --git a/data/completion/bash/calamares b/data/completion/bash/calamares index 21f2edba4..a73ca38a9 100644 --- a/data/completion/bash/calamares +++ b/data/completion/bash/calamares @@ -1,20 +1,10 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Gaël PORTAY # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . _calamares() { diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index 6c9b12b9e..790d6098a 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2018 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/lang/txload.cpp b/lang/txload.cpp index 68a157b81..62dc13e7d 100644 --- a/lang/txload.cpp +++ b/lang/txload.cpp @@ -1,21 +1,10 @@ -/* === This file is part of Calamares - === - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. + * */ /* diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3d35ac3e4..e35a894cd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/branding/CMakeLists.txt b/src/branding/CMakeLists.txt index 6d99bbe4d..09d60118e 100644 --- a/src/branding/CMakeLists.txt +++ b/src/branding/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index 92917cc5c..f4c50e629 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import QtQuick 2.0; diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index faec6d1a4..6d4eceb8a 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 2b93cc9d1..3f4bf808c 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CalamaresApplication.h" diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index b36577591..e7dea4c61 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARESAPPLICATION_H diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index 2119670be..0960da10a 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CalamaresWindow.h" diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h index 9fa13b44f..8eed50ca5 100644 --- a/src/calamares/CalamaresWindow.h +++ b/src/calamares/CalamaresWindow.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARESWINDOW_H diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index c5effb45f..fecf71ea1 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DebugWindow.h" diff --git a/src/calamares/DebugWindow.h b/src/calamares/DebugWindow.h index e0e939912..a07487b4c 100644 --- a/src/calamares/DebugWindow.h +++ b/src/calamares/DebugWindow.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_DEBUGWINDOW_H diff --git a/src/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp index 9753787ad..8b0378f03 100644 --- a/src/calamares/VariantModel.cpp +++ b/src/calamares/VariantModel.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "VariantModel.h" diff --git a/src/calamares/VariantModel.h b/src/calamares/VariantModel.h index 7deafc88d..3b0b594b7 100644 --- a/src/calamares/VariantModel.h +++ b/src/calamares/VariantModel.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef VARIANTMODEL_H diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index c5815154f..d60108215 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp index a11cd3795..48b5b4328 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.cpp +++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ProgressTreeDelegate.h" diff --git a/src/calamares/progresstree/ProgressTreeDelegate.h b/src/calamares/progresstree/ProgressTreeDelegate.h index 7a2641b7d..55dcf7ac4 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.h +++ b/src/calamares/progresstree/ProgressTreeDelegate.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PROGRESSTREEDELEGATE_H diff --git a/src/calamares/progresstree/ProgressTreeView.cpp b/src/calamares/progresstree/ProgressTreeView.cpp index ad8effd66..b953db64d 100644 --- a/src/calamares/progresstree/ProgressTreeView.cpp +++ b/src/calamares/progresstree/ProgressTreeView.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ProgressTreeView.h" diff --git a/src/calamares/progresstree/ProgressTreeView.h b/src/calamares/progresstree/ProgressTreeView.h index b72291a92..98bbe10b4 100644 --- a/src/calamares/progresstree/ProgressTreeView.h +++ b/src/calamares/progresstree/ProgressTreeView.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PROGRESSTREEVIEW_H diff --git a/src/calamares/test_conf.cpp b/src/calamares/test_conf.cpp index 18330d9a2..a1b663468 100644 --- a/src/calamares/test_conf.cpp +++ b/src/calamares/test_conf.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /** diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index 6e4384b62..7a7967f43 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index d915708f3..849896446 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/libcalamares/CalamaresConfig.h.in b/src/libcalamares/CalamaresConfig.h.in index c081b158f..3d551b8e8 100644 --- a/src/libcalamares/CalamaresConfig.h.in +++ b/src/libcalamares/CalamaresConfig.h.in @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ #ifndef CALAMARESCONFIG_H diff --git a/src/libcalamares/CppJob.cpp b/src/libcalamares/CppJob.cpp index a2647463a..45a321cc2 100644 --- a/src/libcalamares/CppJob.cpp +++ b/src/libcalamares/CppJob.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2016 Kevin Kofler - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/CppJob.h b/src/libcalamares/CppJob.h index ee093675a..7569debe9 100644 --- a/src/libcalamares/CppJob.h +++ b/src/libcalamares/CppJob.h @@ -1,24 +1,11 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/DllMacro.h b/src/libcalamares/DllMacro.h index 5677e928b..662ace44d 100644 --- a/src/libcalamares/DllMacro.h +++ b/src/libcalamares/DllMacro.h @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 253a4d6ad..6cae46eeb 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index a12d78978..9d8e3849b 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/Job.cpp b/src/libcalamares/Job.cpp index a7e67b5f6..902bb2b64 100644 --- a/src/libcalamares/Job.cpp +++ b/src/libcalamares/Job.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index dd13f8608..ed349ab30 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef CALAMARES_JOB_H diff --git a/src/libcalamares/JobExample.cpp b/src/libcalamares/JobExample.cpp index ba085be6e..4852d3ae4 100644 --- a/src/libcalamares/JobExample.cpp +++ b/src/libcalamares/JobExample.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ #include "JobExample.h" diff --git a/src/libcalamares/JobExample.h b/src/libcalamares/JobExample.h index e0307f64a..5c527af6d 100644 --- a/src/libcalamares/JobExample.h +++ b/src/libcalamares/JobExample.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index b39b43759..a09d03b38 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index 31b5407ef..0283172fb 100644 --- a/src/libcalamares/JobQueue.h +++ b/src/libcalamares/JobQueue.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/ProcessJob.cpp b/src/libcalamares/ProcessJob.cpp index c6cb94359..f7404438a 100644 --- a/src/libcalamares/ProcessJob.cpp +++ b/src/libcalamares/ProcessJob.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h index 75ef6f6e3..126eab1f9 100644 --- a/src/libcalamares/ProcessJob.h +++ b/src/libcalamares/ProcessJob.h @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/PythonHelper.cpp b/src/libcalamares/PythonHelper.cpp index 2f5418888..f13f5979f 100644 --- a/src/libcalamares/PythonHelper.cpp +++ b/src/libcalamares/PythonHelper.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h index 7acea5832..c439f4619 100644 --- a/src/libcalamares/PythonHelper.h +++ b/src/libcalamares/PythonHelper.h @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index c1cfbbc1c..1f4680017 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ #include "PythonJob.h" diff --git a/src/libcalamares/PythonJob.h b/src/libcalamares/PythonJob.h index b34b40b0b..5b5cfb7cc 100644 --- a/src/libcalamares/PythonJob.h +++ b/src/libcalamares/PythonJob.h @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index 2f8818738..41fb82151 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/PythonJobApi.h b/src/libcalamares/PythonJobApi.h index 6fd162912..3c7977c4f 100644 --- a/src/libcalamares/PythonJobApi.h +++ b/src/libcalamares/PythonJobApi.h @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 592ffd02d..dcb5c70b0 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 1cff4b34a..0abf3b866 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp index 68e1112c6..c7f1d6028 100644 --- a/src/libcalamares/Tests.cpp +++ b/src/libcalamares/Tests.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/geoip/GeoIPFixed.cpp b/src/libcalamares/geoip/GeoIPFixed.cpp index 69d5d3a4e..7e5efbd6c 100644 --- a/src/libcalamares/geoip/GeoIPFixed.cpp +++ b/src/libcalamares/geoip/GeoIPFixed.cpp @@ -1,22 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. + * */ #include "GeoIPFixed.h" diff --git a/src/libcalamares/geoip/GeoIPFixed.h b/src/libcalamares/geoip/GeoIPFixed.h index 5d6fca266..d6e9b0e41 100644 --- a/src/libcalamares/geoip/GeoIPFixed.h +++ b/src/libcalamares/geoip/GeoIPFixed.h @@ -1,22 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. + * */ #ifndef GEOIP_GEOIPFIXED_H diff --git a/src/libcalamares/geoip/GeoIPJSON.cpp b/src/libcalamares/geoip/GeoIPJSON.cpp index 6522ca085..9869d7a25 100644 --- a/src/libcalamares/geoip/GeoIPJSON.cpp +++ b/src/libcalamares/geoip/GeoIPJSON.cpp @@ -1,23 +1,10 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/GeoIPJSON.h b/src/libcalamares/geoip/GeoIPJSON.h index 246556c74..e9be14102 100644 --- a/src/libcalamares/geoip/GeoIPJSON.h +++ b/src/libcalamares/geoip/GeoIPJSON.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/GeoIPTests.cpp b/src/libcalamares/geoip/GeoIPTests.cpp index 9650cfe2d..6af857b36 100644 --- a/src/libcalamares/geoip/GeoIPTests.cpp +++ b/src/libcalamares/geoip/GeoIPTests.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/GeoIPTests.h b/src/libcalamares/geoip/GeoIPTests.h index 746a83eca..4d36edbb0 100644 --- a/src/libcalamares/geoip/GeoIPTests.h +++ b/src/libcalamares/geoip/GeoIPTests.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/GeoIPXML.cpp b/src/libcalamares/geoip/GeoIPXML.cpp index 125614032..7f2c30090 100644 --- a/src/libcalamares/geoip/GeoIPXML.cpp +++ b/src/libcalamares/geoip/GeoIPXML.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/GeoIPXML.h b/src/libcalamares/geoip/GeoIPXML.h index d686928db..fb3167b24 100644 --- a/src/libcalamares/geoip/GeoIPXML.h +++ b/src/libcalamares/geoip/GeoIPXML.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/Handler.cpp b/src/libcalamares/geoip/Handler.cpp index c76b86492..6825fa5fe 100644 --- a/src/libcalamares/geoip/Handler.cpp +++ b/src/libcalamares/geoip/Handler.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/Handler.h b/src/libcalamares/geoip/Handler.h index a44162576..03133978c 100644 --- a/src/libcalamares/geoip/Handler.h +++ b/src/libcalamares/geoip/Handler.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/Interface.cpp b/src/libcalamares/geoip/Interface.cpp index 47c826e1a..8ebe65208 100644 --- a/src/libcalamares/geoip/Interface.cpp +++ b/src/libcalamares/geoip/Interface.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/Interface.h b/src/libcalamares/geoip/Interface.h index 1afcc911b..2edf62155 100644 --- a/src/libcalamares/geoip/Interface.h +++ b/src/libcalamares/geoip/Interface.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/geoip/test_geoip.cpp b/src/libcalamares/geoip/test_geoip.cpp index a2aff929e..0c475b9c0 100644 --- a/src/libcalamares/geoip/test_geoip.cpp +++ b/src/libcalamares/geoip/test_geoip.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2018 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/locale/CountryData_p.cpp b/src/libcalamares/locale/CountryData_p.cpp index 61b9b05a7..932a1996d 100644 --- a/src/libcalamares/locale/CountryData_p.cpp +++ b/src/libcalamares/locale/CountryData_p.cpp @@ -1,6 +1,6 @@ /* GENERATED FILE DO NOT EDIT * -* === This file is part of Calamares - === +* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 1991-2019 Unicode, Inc. * SPDX-FileCopyrightText: 2019 Adriaan de Groot diff --git a/src/libcalamares/locale/Label.cpp b/src/libcalamares/locale/Label.cpp index 9b16bc757..b4ec8180c 100644 --- a/src/libcalamares/locale/Label.cpp +++ b/src/libcalamares/locale/Label.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/Label.h b/src/libcalamares/locale/Label.h index f52e401e3..58b2a3773 100644 --- a/src/libcalamares/locale/Label.h +++ b/src/libcalamares/locale/Label.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/LabelModel.cpp b/src/libcalamares/locale/LabelModel.cpp index 26adacfb8..9a9be9905 100644 --- a/src/libcalamares/locale/LabelModel.cpp +++ b/src/libcalamares/locale/LabelModel.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Camilo Higuita * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/LabelModel.h b/src/libcalamares/locale/LabelModel.h index 36596c6c4..8648dc71c 100644 --- a/src/libcalamares/locale/LabelModel.h +++ b/src/libcalamares/locale/LabelModel.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Camilo Higuita * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/Lookup.cpp b/src/libcalamares/locale/Lookup.cpp index b4ebe8f67..f792f08ed 100644 --- a/src/libcalamares/locale/Lookup.cpp +++ b/src/libcalamares/locale/Lookup.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/Lookup.h b/src/libcalamares/locale/Lookup.h index 4eae7c6b6..4095fd097 100644 --- a/src/libcalamares/locale/Lookup.h +++ b/src/libcalamares/locale/Lookup.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 6414e2ebf..6e0140e79 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 7535bbc5c..c33705682 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index e14f33e36..8c16517c7 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/TranslatableConfiguration.cpp b/src/libcalamares/locale/TranslatableConfiguration.cpp index 618ecfa4f..1f0811c9d 100644 --- a/src/libcalamares/locale/TranslatableConfiguration.cpp +++ b/src/libcalamares/locale/TranslatableConfiguration.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/TranslatableConfiguration.h b/src/libcalamares/locale/TranslatableConfiguration.h index a47f70eee..c45c8f523 100644 --- a/src/libcalamares/locale/TranslatableConfiguration.h +++ b/src/libcalamares/locale/TranslatableConfiguration.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/locale/TranslatableString.cpp b/src/libcalamares/locale/TranslatableString.cpp index 9200c8d65..8f42a4e41 100644 --- a/src/libcalamares/locale/TranslatableString.cpp +++ b/src/libcalamares/locale/TranslatableString.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #include "TranslatableString.h" diff --git a/src/libcalamares/locale/TranslatableString.h b/src/libcalamares/locale/TranslatableString.h index 8347488f1..663f6a2c2 100644 --- a/src/libcalamares/locale/TranslatableString.h +++ b/src/libcalamares/locale/TranslatableString.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef LOCALE_TRANSLATABLESTRING_H diff --git a/src/libcalamares/locale/cldr-extractor.py b/src/libcalamares/locale/cldr-extractor.py index 0291abf7d..7aff85be1 100644 --- a/src/libcalamares/locale/cldr-extractor.py +++ b/src/libcalamares/locale/cldr-extractor.py @@ -1,6 +1,6 @@ #! /usr/bin/env python3 # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause @@ -186,7 +186,7 @@ def read_subtags_file(): cpp_header_comment = """/* GENERATED FILE DO NOT EDIT * -* === This file is part of Calamares - === +* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 1991-2019 Unicode, Inc. * SPDX-FileCopyrightText: 2019 Adriaan de Groot diff --git a/src/libcalamares/locale/zone-extractor.py b/src/libcalamares/locale/zone-extractor.py index aa8063522..b3d9e196d 100644 --- a/src/libcalamares/locale/zone-extractor.py +++ b/src/libcalamares/locale/zone-extractor.py @@ -1,6 +1,6 @@ #! /usr/bin/env python3 # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause @@ -44,7 +44,7 @@ def write_set(file, label, set): cpp_header_comment = """/* GENERATED FILE DO NOT EDIT * -* === This file is part of Calamares - === +* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2009 Arthur David Olson * SPDX-FileCopyrightText: 2019 Adriaan de Groot diff --git a/src/libcalamares/modulesystem/Actions.h b/src/libcalamares/modulesystem/Actions.h index 4376733a1..f4bbe7e09 100644 --- a/src/libcalamares/modulesystem/Actions.h +++ b/src/libcalamares/modulesystem/Actions.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/Descriptor.cpp b/src/libcalamares/modulesystem/Descriptor.cpp index 9b3e48b6e..71b50d867 100644 --- a/src/libcalamares/modulesystem/Descriptor.cpp +++ b/src/libcalamares/modulesystem/Descriptor.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/libcalamares/modulesystem/Descriptor.h b/src/libcalamares/modulesystem/Descriptor.h index a94c0574d..614d5f15a 100644 --- a/src/libcalamares/modulesystem/Descriptor.h +++ b/src/libcalamares/modulesystem/Descriptor.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/InstanceKey.cpp b/src/libcalamares/modulesystem/InstanceKey.cpp index 982b5f532..948716f69 100644 --- a/src/libcalamares/modulesystem/InstanceKey.cpp +++ b/src/libcalamares/modulesystem/InstanceKey.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #include "InstanceKey.h" diff --git a/src/libcalamares/modulesystem/InstanceKey.h b/src/libcalamares/modulesystem/InstanceKey.h index 074743bf3..e85aa18a4 100644 --- a/src/libcalamares/modulesystem/InstanceKey.h +++ b/src/libcalamares/modulesystem/InstanceKey.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef MODULESYSTEM_INSTANCEKEY_H diff --git a/src/libcalamares/modulesystem/Module.cpp b/src/libcalamares/modulesystem/Module.cpp index 18c33bde8..ff0b20f78 100644 --- a/src/libcalamares/modulesystem/Module.cpp +++ b/src/libcalamares/modulesystem/Module.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/Module.h b/src/libcalamares/modulesystem/Module.h index e9719d756..88632cbf5 100644 --- a/src/libcalamares/modulesystem/Module.h +++ b/src/libcalamares/modulesystem/Module.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/Requirement.h b/src/libcalamares/modulesystem/Requirement.h index 02e0a009a..dc9fe1d77 100644 --- a/src/libcalamares/modulesystem/Requirement.h +++ b/src/libcalamares/modulesystem/Requirement.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef CALAMARES_REQUIREMENT_H diff --git a/src/libcalamares/modulesystem/RequirementsChecker.cpp b/src/libcalamares/modulesystem/RequirementsChecker.cpp index 3256c460d..a12a4f681 100644 --- a/src/libcalamares/modulesystem/RequirementsChecker.cpp +++ b/src/libcalamares/modulesystem/RequirementsChecker.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/RequirementsChecker.h b/src/libcalamares/modulesystem/RequirementsChecker.h index 523bc2bc7..3577b5397 100644 --- a/src/libcalamares/modulesystem/RequirementsChecker.h +++ b/src/libcalamares/modulesystem/RequirementsChecker.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef CALAMARES_REQUIREMENTSCHECKER_H diff --git a/src/libcalamares/modulesystem/RequirementsModel.cpp b/src/libcalamares/modulesystem/RequirementsModel.cpp index 2ff184f3b..5fd886864 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.cpp +++ b/src/libcalamares/modulesystem/RequirementsModel.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/RequirementsModel.h b/src/libcalamares/modulesystem/RequirementsModel.h index 904e0b84e..5f3e13cbb 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.h +++ b/src/libcalamares/modulesystem/RequirementsModel.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/modulesystem/Tests.cpp b/src/libcalamares/modulesystem/Tests.cpp index 2fcd5353d..78d3b5077 100644 --- a/src/libcalamares/modulesystem/Tests.cpp +++ b/src/libcalamares/modulesystem/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp index 9d7534e99..ce7f59571 100644 --- a/src/libcalamares/network/Manager.cpp +++ b/src/libcalamares/network/Manager.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/network/Manager.h b/src/libcalamares/network/Manager.h index 8673d340b..b3a1e23e7 100644 --- a/src/libcalamares/network/Manager.h +++ b/src/libcalamares/network/Manager.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/network/Tests.cpp b/src/libcalamares/network/Tests.cpp index 6841a3061..d42a74115 100644 --- a/src/libcalamares/network/Tests.cpp +++ b/src/libcalamares/network/Tests.cpp @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/network/Tests.h b/src/libcalamares/network/Tests.h index 2d785672e..6000e227a 100644 --- a/src/libcalamares/network/Tests.h +++ b/src/libcalamares/network/Tests.h @@ -1,22 +1,9 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - * * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. * */ diff --git a/src/libcalamares/partition/FileSystem.cpp b/src/libcalamares/partition/FileSystem.cpp index ee4a9f5b1..ad4df31ed 100644 --- a/src/libcalamares/partition/FileSystem.cpp +++ b/src/libcalamares/partition/FileSystem.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/FileSystem.h b/src/libcalamares/partition/FileSystem.h index 03f6ff3bc..6696f0df9 100644 --- a/src/libcalamares/partition/FileSystem.h +++ b/src/libcalamares/partition/FileSystem.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/KPMManager.cpp b/src/libcalamares/partition/KPMManager.cpp index 1f3c5b5fc..6c49f8102 100644 --- a/src/libcalamares/partition/KPMManager.cpp +++ b/src/libcalamares/partition/KPMManager.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/KPMManager.h b/src/libcalamares/partition/KPMManager.h index 2c73bfed3..871deb866 100644 --- a/src/libcalamares/partition/KPMManager.h +++ b/src/libcalamares/partition/KPMManager.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/KPMTests.cpp b/src/libcalamares/partition/KPMTests.cpp index d702c8a01..3834b7913 100644 --- a/src/libcalamares/partition/KPMTests.cpp +++ b/src/libcalamares/partition/KPMTests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Mount.cpp b/src/libcalamares/partition/Mount.cpp index a110f2882..0fd204df4 100644 --- a/src/libcalamares/partition/Mount.cpp +++ b/src/libcalamares/partition/Mount.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Mount.h b/src/libcalamares/partition/Mount.h index a1a0dea65..6a2ef9f8b 100644 --- a/src/libcalamares/partition/Mount.h +++ b/src/libcalamares/partition/Mount.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionIterator.cpp b/src/libcalamares/partition/PartitionIterator.cpp index 6e030346d..7c68e6170 100644 --- a/src/libcalamares/partition/PartitionIterator.cpp +++ b/src/libcalamares/partition/PartitionIterator.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionIterator.h b/src/libcalamares/partition/PartitionIterator.h index 4e3d4362d..b6207f943 100644 --- a/src/libcalamares/partition/PartitionIterator.h +++ b/src/libcalamares/partition/PartitionIterator.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionQuery.cpp b/src/libcalamares/partition/PartitionQuery.cpp index 8a2039b61..beba6b9bc 100644 --- a/src/libcalamares/partition/PartitionQuery.cpp +++ b/src/libcalamares/partition/PartitionQuery.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionQuery.h b/src/libcalamares/partition/PartitionQuery.h index ac241a259..817966d35 100644 --- a/src/libcalamares/partition/PartitionQuery.h +++ b/src/libcalamares/partition/PartitionQuery.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionSize.cpp b/src/libcalamares/partition/PartitionSize.cpp index 38e0366c0..d09cc6064 100644 --- a/src/libcalamares/partition/PartitionSize.cpp +++ b/src/libcalamares/partition/PartitionSize.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/PartitionSize.h b/src/libcalamares/partition/PartitionSize.h index 35c6cdb8d..b4808e36e 100644 --- a/src/libcalamares/partition/PartitionSize.h +++ b/src/libcalamares/partition/PartitionSize.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Sync.cpp b/src/libcalamares/partition/Sync.cpp index fb7b31788..bcdf0cd7f 100644 --- a/src/libcalamares/partition/Sync.cpp +++ b/src/libcalamares/partition/Sync.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Sync.h b/src/libcalamares/partition/Sync.h index bb1938c8b..8bb516214 100644 --- a/src/libcalamares/partition/Sync.h +++ b/src/libcalamares/partition/Sync.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Tests.cpp b/src/libcalamares/partition/Tests.cpp index d69e80fc1..cd2922ee2 100644 --- a/src/libcalamares/partition/Tests.cpp +++ b/src/libcalamares/partition/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/partition/Tests.h b/src/libcalamares/partition/Tests.h index 31983c2f6..0d6f77a76 100644 --- a/src/libcalamares/partition/Tests.h +++ b/src/libcalamares/partition/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/BoostPython.h b/src/libcalamares/utils/BoostPython.h index 055ad590f..f39abe7cf 100644 --- a/src/libcalamares/utils/BoostPython.h +++ b/src/libcalamares/utils/BoostPython.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index 324f2cba1..ff5590506 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h index 63cacca96..61aebc58d 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.h +++ b/src/libcalamares/utils/CalamaresUtilsSystem.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef UTILS_CALAMARESUTILSSYSTEM_H diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp index 2a23d51b0..4652dcc5a 100644 --- a/src/libcalamares/utils/CommandList.cpp +++ b/src/libcalamares/utils/CommandList.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/CommandList.h b/src/libcalamares/utils/CommandList.h index 8eb4dfdab..432020a96 100644 --- a/src/libcalamares/utils/CommandList.h +++ b/src/libcalamares/utils/CommandList.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Dirs.cpp b/src/libcalamares/utils/Dirs.cpp index 2e0eec4d5..f333d6e64 100644 --- a/src/libcalamares/utils/Dirs.cpp +++ b/src/libcalamares/utils/Dirs.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot @@ -9,18 +9,8 @@ * SPDX-FileCopyrightText: 2010-2011 Leo Franchi * SPDX-FileCopyrightText: 2010-2012 Jeff Mitchell * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Dirs.h b/src/libcalamares/utils/Dirs.h index 8a321e4dc..445cbe1f1 100644 --- a/src/libcalamares/utils/Dirs.h +++ b/src/libcalamares/utils/Dirs.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot @@ -9,18 +9,8 @@ * SPDX-FileCopyrightText: 2010-2011 Leo Franchi * SPDX-FileCopyrightText: 2010-2012 Jeff Mitchell * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Entropy.cpp b/src/libcalamares/utils/Entropy.cpp index d574da70a..d28230a85 100644 --- a/src/libcalamares/utils/Entropy.cpp +++ b/src/libcalamares/utils/Entropy.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Entropy.h b/src/libcalamares/utils/Entropy.h index 38d1dae8a..1ca40a68f 100644 --- a/src/libcalamares/utils/Entropy.h +++ b/src/libcalamares/utils/Entropy.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index d132a2e3e..0a7dcefd0 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2010-2011 Christian Muehlhaeuser * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -6,18 +6,8 @@ * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 990f35606..58603c82d 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2010-2011 Christian Muehlhaeuser * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/NamedEnum.h b/src/libcalamares/utils/NamedEnum.h index d962b3c76..cf56a26f2 100644 --- a/src/libcalamares/utils/NamedEnum.h +++ b/src/libcalamares/utils/NamedEnum.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/NamedSuffix.h b/src/libcalamares/utils/NamedSuffix.h index b717e0471..84094e90c 100644 --- a/src/libcalamares/utils/NamedSuffix.h +++ b/src/libcalamares/utils/NamedSuffix.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Permissions.cpp b/src/libcalamares/utils/Permissions.cpp index a73ffe77d..777b3c463 100644 --- a/src/libcalamares/utils/Permissions.cpp +++ b/src/libcalamares/utils/Permissions.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Scott Harvey * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/libcalamares/utils/Permissions.h b/src/libcalamares/utils/Permissions.h index 9e0357b57..11d1d4bab 100644 --- a/src/libcalamares/utils/Permissions.h +++ b/src/libcalamares/utils/Permissions.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Scott Harvey * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/libcalamares/utils/PluginFactory.cpp b/src/libcalamares/utils/PluginFactory.cpp index 74c94a878..9f26a8a1c 100644 --- a/src/libcalamares/utils/PluginFactory.cpp +++ b/src/libcalamares/utils/PluginFactory.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h index 594363fd9..891e3c1cd 100644 --- a/src/libcalamares/utils/PluginFactory.h +++ b/src/libcalamares/utils/PluginFactory.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -8,18 +8,8 @@ * SPDX-FileCopyrightText: 2007 Matthias Kretz * SPDX-FileCopyrightText: 2007 Bernhard Loos * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/RAII.h b/src/libcalamares/utils/RAII.h index 0f1f3f96e..d6f8fe94d 100644 --- a/src/libcalamares/utils/RAII.h +++ b/src/libcalamares/utils/RAII.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Retranslator.cpp b/src/libcalamares/utils/Retranslator.cpp index 149626804..a03ae9a3b 100644 --- a/src/libcalamares/utils/Retranslator.cpp +++ b/src/libcalamares/utils/Retranslator.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Retranslator.h b/src/libcalamares/utils/Retranslator.h index c88aad777..476c0b184 100644 --- a/src/libcalamares/utils/Retranslator.h +++ b/src/libcalamares/utils/Retranslator.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/String.cpp b/src/libcalamares/utils/String.cpp index 870c8ba49..34a7038e3 100644 --- a/src/libcalamares/utils/String.cpp +++ b/src/libcalamares/utils/String.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot @@ -9,18 +9,8 @@ * SPDX-FileCopyrightText: 2010-2011 Leo Franchi * SPDX-FileCopyrightText: 2010-2012 Jeff Mitchell * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/String.h b/src/libcalamares/utils/String.h index ea585188b..48bb17aac 100644 --- a/src/libcalamares/utils/String.h +++ b/src/libcalamares/utils/String.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot @@ -9,18 +9,8 @@ * SPDX-FileCopyrightText: 2010-2011 Leo Franchi * SPDX-FileCopyrightText: 2010-2012 Jeff Mitchell * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/TestPaths.cpp b/src/libcalamares/utils/TestPaths.cpp index 0a5fb9302..f00349c8f 100644 --- a/src/libcalamares/utils/TestPaths.cpp +++ b/src/libcalamares/utils/TestPaths.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 706844f70..644e03cf2 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Traits.h b/src/libcalamares/utils/Traits.h index d957633d5..1970aa833 100644 --- a/src/libcalamares/utils/Traits.h +++ b/src/libcalamares/utils/Traits.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/UMask.cpp b/src/libcalamares/utils/UMask.cpp index 861c635e9..3dd7e84f0 100644 --- a/src/libcalamares/utils/UMask.cpp +++ b/src/libcalamares/utils/UMask.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/UMask.h b/src/libcalamares/utils/UMask.h index 451ee23b2..aea79fbc3 100644 --- a/src/libcalamares/utils/UMask.h +++ b/src/libcalamares/utils/UMask.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ #ifndef UTILS_UMASK_H diff --git a/src/libcalamares/utils/Units.h b/src/libcalamares/utils/Units.h index 49a3ff795..abccacb0d 100644 --- a/src/libcalamares/utils/Units.h +++ b/src/libcalamares/utils/Units.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Variant.cpp b/src/libcalamares/utils/Variant.cpp index a6aad74ce..a484ac8f7 100644 --- a/src/libcalamares/utils/Variant.cpp +++ b/src/libcalamares/utils/Variant.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot @@ -9,18 +9,8 @@ * SPDX-FileCopyrightText: 2010-2011 Leo Franchi * SPDX-FileCopyrightText: 2010-2012 Jeff Mitchell * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Variant.h b/src/libcalamares/utils/Variant.h index ebf3ff8b6..60ff1ff01 100644 --- a/src/libcalamares/utils/Variant.h +++ b/src/libcalamares/utils/Variant.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2013-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamares/utils/Yaml.cpp b/src/libcalamares/utils/Yaml.cpp index af73e2825..b787589c6 100644 --- a/src/libcalamares/utils/Yaml.cpp +++ b/src/libcalamares/utils/Yaml.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * * */ diff --git a/src/libcalamares/utils/Yaml.h b/src/libcalamares/utils/Yaml.h index 0f9631fa2..3922484ce 100644 --- a/src/libcalamares/utils/Yaml.h +++ b/src/libcalamares/utils/Yaml.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * * */ diff --git a/src/libcalamares/utils/moc-warnings.h b/src/libcalamares/utils/moc-warnings.h index fed12a604..2f44438c1 100644 --- a/src/libcalamares/utils/moc-warnings.h +++ b/src/libcalamares/utils/moc-warnings.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . * */ diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index c14f33b85..8145ad57c 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Branding.h" diff --git a/src/libcalamaresui/Branding.h b/src/libcalamaresui/Branding.h index 65b7d9642..b03df3acd 100644 --- a/src/libcalamaresui/Branding.h +++ b/src/libcalamaresui/Branding.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef BRANDING_H diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 52fb838e5..f48008c2d 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index e0a206cae..efa455dea 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ViewManager.h" diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index 208f744a4..947503eaa 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef VIEWMANAGER_H diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp index 453764b13..c2110061c 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.cpp +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CppJobModule.h" diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h index 9c6e7b823..288f674f4 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.h +++ b/src/libcalamaresui/modulesystem/CppJobModule.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_CPPJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.cpp b/src/libcalamaresui/modulesystem/ModuleFactory.cpp index 93ffb745b..7d4dd1960 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.cpp +++ b/src/libcalamaresui/modulesystem/ModuleFactory.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ModuleFactory.h" diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.h b/src/libcalamaresui/modulesystem/ModuleFactory.h index 6d8f12a19..170e27e8e 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.h +++ b/src/libcalamaresui/modulesystem/ModuleFactory.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_MODULEFACTORY_H diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 283ea8b5f..9e84cf646 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ModuleManager.h" diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index abe0dce00..d2beedf2e 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef MODULELOADER_H diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index f3a6d6e98..0414048ca 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ProcessJobModule.h" diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h index e3780ed0e..0e00f5545 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.h +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_PROCESSJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index d3c47fffb..67223b655 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonJobModule.h" diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index 68963802c..37634d6be 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_PYTHONJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index 3e1f2cce3..638fdfc79 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-FileCopyrightText: 2018 Raul Rodrigo Segura * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtViewModule.h" diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h index ad8e0989a..8267dd2cb 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.h +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_PYTHONQTVIEWMODULE_H diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 1674d9fab..32c05bdba 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ViewModule.h" diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h index 370987b15..8e5eb44b4 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.h +++ b/src/libcalamaresui/modulesystem/ViewModule.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARES_VIEWMODULE_H diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 57f04cd95..e16763a70 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CalamaresUtilsGui.h" diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index a98579cd6..aa7aff79b 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CALAMARESUTILSGUI_H diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp index 627cf6a8e..3fdecccef 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2012 Christian Muehlhaeuser * SPDX-FileCopyrightText: 2019, Adriaan de Groot diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h index 706306c23..80bc25ff6 100644 --- a/src/libcalamaresui/utils/ImageRegistry.h +++ b/src/libcalamaresui/utils/ImageRegistry.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2012 Christian Muehlhaeuser * SPDX-FileCopyrightText: 2019 Adriaan de Groot diff --git a/src/libcalamaresui/utils/Paste.cpp b/src/libcalamaresui/utils/Paste.cpp index 16ec7a74f..8099d9024 100644 --- a/src/libcalamaresui/utils/Paste.cpp +++ b/src/libcalamaresui/utils/Paste.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Bill Auger * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Paste.h" diff --git a/src/libcalamaresui/utils/Paste.h b/src/libcalamaresui/utils/Paste.h index 0886a9a7f..f802dfe2e 100644 --- a/src/libcalamaresui/utils/Paste.h +++ b/src/libcalamaresui/utils/Paste.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Bill Auger * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef UTILS_PASTE_H diff --git a/src/libcalamaresui/utils/PythonQtUtils.cpp b/src/libcalamaresui/utils/PythonQtUtils.cpp index 6528ee4a8..bc4e034f0 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.cpp +++ b/src/libcalamaresui/utils/PythonQtUtils.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtUtils.h" diff --git a/src/libcalamaresui/utils/PythonQtUtils.h b/src/libcalamaresui/utils/PythonQtUtils.h index f06a6d4e4..49f3bb1c4 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.h +++ b/src/libcalamaresui/utils/PythonQtUtils.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PYTHONQTUTILS_H diff --git a/src/libcalamaresui/utils/Qml.cpp b/src/libcalamaresui/utils/Qml.cpp index 602e11326..2cb13c803 100644 --- a/src/libcalamaresui/utils/Qml.cpp +++ b/src/libcalamaresui/utils/Qml.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Qml.h" diff --git a/src/libcalamaresui/utils/Qml.h b/src/libcalamaresui/utils/Qml.h index ea5d0aa8f..2d6655e9e 100644 --- a/src/libcalamaresui/utils/Qml.h +++ b/src/libcalamaresui/utils/Qml.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef UTILS_QML_H diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp index 16925a4a1..1fbeaeef0 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "BlankViewStep.h" diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h index e10cce872..793241647 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.h +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef BLANKVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp index de6f12a21..fe90e1ec3 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ExecutionViewStep.h" diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.h b/src/libcalamaresui/viewpages/ExecutionViewStep.h index f2fea641b..26618c77f 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.h +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef EXECUTIONVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp index 835e35361..0d667a097 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtGlobalStorageWrapper.h" diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h index b18fe8fd3..2a8f6af99 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PYTHONQTGLOBALSTORAGEWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtJob.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp index 112e11cc5..d41c70f1f 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.cpp +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtJob.h" diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h index 847dcd44c..5d591c74e 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.h +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PYTHONQTJOB_H diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp index a55e0db05..4cd72f8c0 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtUtilsWrapper.h" diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h index 96243f707..e7c8c0660 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PYTHONQTUTILSWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index cc849e0ea..29c65472f 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PythonQtViewStep.h" diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.h b/src/libcalamaresui/viewpages/PythonQtViewStep.h index c19494013..b23a540b9 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.h +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PYTHONQTVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/QmlViewStep.cpp b/src/libcalamaresui/viewpages/QmlViewStep.cpp index 650a746e2..4ea20ba32 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.cpp +++ b/src/libcalamaresui/viewpages/QmlViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "QmlViewStep.h" diff --git a/src/libcalamaresui/viewpages/QmlViewStep.h b/src/libcalamaresui/viewpages/QmlViewStep.h index c81f90567..7f04bea81 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.h +++ b/src/libcalamaresui/viewpages/QmlViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef QMLVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/Slideshow.cpp b/src/libcalamaresui/viewpages/Slideshow.cpp index ddd8aedb6..13f0a3e51 100644 --- a/src/libcalamaresui/viewpages/Slideshow.cpp +++ b/src/libcalamaresui/viewpages/Slideshow.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Slideshow.h" diff --git a/src/libcalamaresui/viewpages/Slideshow.h b/src/libcalamaresui/viewpages/Slideshow.h index e3b09a6d1..732734755 100644 --- a/src/libcalamaresui/viewpages/Slideshow.h +++ b/src/libcalamaresui/viewpages/Slideshow.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LIBCALAMARESUI_SLIDESHOW_H diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index 1d9fcf1fb..e76dc915b 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ViewStep.h" diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h index 6d6b9b2c5..156975fc5 100644 --- a/src/libcalamaresui/viewpages/ViewStep.h +++ b/src/libcalamaresui/viewpages/ViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef VIEWSTEP_H diff --git a/src/libcalamaresui/widgets/ClickableLabel.cpp b/src/libcalamaresui/widgets/ClickableLabel.cpp index ec5c18a29..4d2885813 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ClickableLabel.h" diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h index 43da49276..83ddb3d86 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.h +++ b/src/libcalamaresui/widgets/ClickableLabel.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LIBCALAMARESUI_CLICKABLELABEL_H diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp index 6e9a64d10..1d496c27f 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "FixedAspectRatioLabel.h" diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h index dd85f98ef..ded7ba602 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef FIXEDASPECTRATIOLABEL_H diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.cpp b/src/libcalamaresui/widgets/PrettyRadioButton.cpp index 091be266b..b79f93a25 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.cpp +++ b/src/libcalamaresui/widgets/PrettyRadioButton.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PrettyRadioButton.h" diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.h b/src/libcalamaresui/widgets/PrettyRadioButton.h index 8b0a3da7d..67ef49ae6 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.h +++ b/src/libcalamaresui/widgets/PrettyRadioButton.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LIBCALAMARESUI_PRETTYRADIOBUTTON_H diff --git a/src/libcalamaresui/widgets/WaitingWidget.cpp b/src/libcalamaresui/widgets/WaitingWidget.cpp index 11b1a10f7..aef5aecf5 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.cpp +++ b/src/libcalamaresui/widgets/WaitingWidget.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "WaitingWidget.h" diff --git a/src/libcalamaresui/widgets/WaitingWidget.h b/src/libcalamaresui/widgets/WaitingWidget.h index be375c453..850b81ca9 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.h +++ b/src/libcalamaresui/widgets/WaitingWidget.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WAITINGWIDGET_H diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index da9e1c574..8836c74ea 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index bfb695909..ec9a6f2e6 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Aurélien Gâteau # SPDX-FileCopyrightText: 2014 Anke Boersma @@ -16,18 +16,8 @@ # SPDX-FileCopyrightText: 2017 Ben Green # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import shutil diff --git a/src/modules/contextualprocess/Binding.h b/src/modules/contextualprocess/Binding.h index 5b6f09087..fc9f65557 100644 --- a/src/modules/contextualprocess/Binding.h +++ b/src/modules/contextualprocess/Binding.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* This file isn't public API, but is used to express the API that diff --git a/src/modules/contextualprocess/CMakeLists.txt b/src/modules/contextualprocess/CMakeLists.txt index 705f494b5..113b504db 100644 --- a/src/modules/contextualprocess/CMakeLists.txt +++ b/src/modules/contextualprocess/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index f970740ca..8bc011127 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ContextualProcessJob.h" diff --git a/src/modules/contextualprocess/ContextualProcessJob.h b/src/modules/contextualprocess/ContextualProcessJob.h index e926f699d..f84afb5f1 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.h +++ b/src/modules/contextualprocess/ContextualProcessJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CONTEXTUALPROCESSJOB_H diff --git a/src/modules/contextualprocess/Tests.cpp b/src/modules/contextualprocess/Tests.cpp index 97277dfce..aa51e1192 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/contextualprocess/Tests.h b/src/modules/contextualprocess/Tests.h index 5b27d497d..0aed1f4a5 100644 --- a/src/modules/contextualprocess/Tests.h +++ b/src/modules/contextualprocess/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TESTS_H diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 509257bb1..a803e0d7a 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014-2018 Philip Müller # SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac @@ -12,18 +12,8 @@ # SPDX-FileCopyrightText: 2019 Dominic Hayes # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import abc import os diff --git a/src/modules/dracut/main.py b/src/modules/dracut/main.py index 2a5ba91d7..392dd8a51 100644 --- a/src/modules/dracut/main.py +++ b/src/modules/dracut/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014-2015 Philip Müller # SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares from libcalamares.utils import target_env_call diff --git a/src/modules/dracutlukscfg/CMakeLists.txt b/src/modules/dracutlukscfg/CMakeLists.txt index 3620bb92c..dd9faf9d4 100644 --- a/src/modules/dracutlukscfg/CMakeLists.txt +++ b/src/modules/dracutlukscfg/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp index 18bbcae88..edd9b2948 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DracutLuksCfgJob.h" diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h index b10a8647e..eb517b21d 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DRACUTLUKSCFGJOB_H diff --git a/src/modules/dummycpp/CMakeLists.txt b/src/modules/dummycpp/CMakeLists.txt index 7b219744c..e199d5027 100644 --- a/src/modules/dummycpp/CMakeLists.txt +++ b/src/modules/dummycpp/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index b9765ac01..5b2deffd1 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac (original dummypython code) * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DummyCppJob.h" diff --git a/src/modules/dummycpp/DummyCppJob.h b/src/modules/dummycpp/DummyCppJob.h index 1b6f0eeb5..2f267d511 100644 --- a/src/modules/dummycpp/DummyCppJob.h +++ b/src/modules/dummycpp/DummyCppJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Kevin Kofler * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DUMMYCPPJOB_H diff --git a/src/modules/dummypython/main.py b/src/modules/dummypython/main.py index 2f21e9b77..aa748006d 100644 --- a/src/modules/dummypython/main.py +++ b/src/modules/dummypython/main.py @@ -1,25 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Alf Gaida # SPDX-FileCopyrightText: 2017 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . """ === Example Python jobmodule. diff --git a/src/modules/dummypythonqt/main.py b/src/modules/dummypythonqt/main.py index c08b79fbb..e33c20e6f 100644 --- a/src/modules/dummypythonqt/main.py +++ b/src/modules/dummypythonqt/main.py @@ -1,24 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2016-2017 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Alf Gaida # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import platform diff --git a/src/modules/finished/CMakeLists.txt b/src/modules/finished/CMakeLists.txt index 746683533..21eb1ad18 100644 --- a/src/modules/finished/CMakeLists.txt +++ b/src/modules/finished/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index bdcbb9a85..23f09df99 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "FinishedPage.h" diff --git a/src/modules/finished/FinishedPage.h b/src/modules/finished/FinishedPage.h index 90ce9383a..1df022f58 100644 --- a/src/modules/finished/FinishedPage.h +++ b/src/modules/finished/FinishedPage.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef FINISHEDPAGE_H diff --git a/src/modules/finished/FinishedViewStep.cpp b/src/modules/finished/FinishedViewStep.cpp index 0ea2bbe4c..525108dc7 100644 --- a/src/modules/finished/FinishedViewStep.cpp +++ b/src/modules/finished/FinishedViewStep.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "FinishedViewStep.h" diff --git a/src/modules/finished/FinishedViewStep.h b/src/modules/finished/FinishedViewStep.h index f19304935..97d38b267 100644 --- a/src/modules/finished/FinishedViewStep.h +++ b/src/modules/finished/FinishedViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef FINISHEDVIEWSTEP_H diff --git a/src/modules/fsresizer/CMakeLists.txt b/src/modules/fsresizer/CMakeLists.txt index 8b23f90b2..7fdea1ff2 100644 --- a/src/modules/fsresizer/CMakeLists.txt +++ b/src/modules/fsresizer/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/fsresizer/ResizeFSJob.cpp b/src/modules/fsresizer/ResizeFSJob.cpp index d7003c76d..9f2b440b8 100644 --- a/src/modules/fsresizer/ResizeFSJob.cpp +++ b/src/modules/fsresizer/ResizeFSJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResizeFSJob.h" diff --git a/src/modules/fsresizer/ResizeFSJob.h b/src/modules/fsresizer/ResizeFSJob.h index 5bc810370..5c9c961a5 100644 --- a/src/modules/fsresizer/ResizeFSJob.h +++ b/src/modules/fsresizer/ResizeFSJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef RESIZEFSJOB_H diff --git a/src/modules/fsresizer/Tests.cpp b/src/modules/fsresizer/Tests.cpp index a7be5dab8..7cd60ee9e 100644 --- a/src/modules/fsresizer/Tests.cpp +++ b/src/modules/fsresizer/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/fsresizer/Tests.h b/src/modules/fsresizer/Tests.h index 24ac0bc8a..f3d2308ec 100644 --- a/src/modules/fsresizer/Tests.h +++ b/src/modules/fsresizer/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TESTS_H diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index 19af12b9e..26c357945 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Aurélien Gâteau # SPDX-FileCopyrightText: 2016 Teo Mrnjavac @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import re diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index be9752402..22ef18130 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014-2015 Philip Müller # SPDX-FileCopyrightText: 2015-2017 Teo Mrnjavac @@ -10,18 +10,8 @@ # SPDX-FileCopyrightText: 2017-2018 Gabriel Craciunescu # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares import os diff --git a/src/modules/hostinfo/CMakeLists.txt b/src/modules/hostinfo/CMakeLists.txt index 401f50168..cdf5857e6 100644 --- a/src/modules/hostinfo/CMakeLists.txt +++ b/src/modules/hostinfo/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/hostinfo/HostInfoJob.cpp b/src/modules/hostinfo/HostInfoJob.cpp index 02320c7ac..0be419978 100644 --- a/src/modules/hostinfo/HostInfoJob.cpp +++ b/src/modules/hostinfo/HostInfoJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "HostInfoJob.h" diff --git a/src/modules/hostinfo/HostInfoJob.h b/src/modules/hostinfo/HostInfoJob.h index bf519e953..d9b450ac4 100644 --- a/src/modules/hostinfo/HostInfoJob.h +++ b/src/modules/hostinfo/HostInfoJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef HOSTINFOJOB_H diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp index 883bddf28..724340269 100644 --- a/src/modules/hostinfo/Tests.cpp +++ b/src/modules/hostinfo/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "HostInfoJob.h" diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index 7cf5790f9..be9fabf5f 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014-2015 Philip Müller # SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -10,18 +10,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares diff --git a/src/modules/initcpio/CMakeLists.txt b/src/modules/initcpio/CMakeLists.txt index d51884edc..e8d90e7fa 100644 --- a/src/modules/initcpio/CMakeLists.txt +++ b/src/modules/initcpio/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/initcpio/InitcpioJob.cpp b/src/modules/initcpio/InitcpioJob.cpp index ae910995c..b96f3b316 100644 --- a/src/modules/initcpio/InitcpioJob.cpp +++ b/src/modules/initcpio/InitcpioJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "InitcpioJob.h" diff --git a/src/modules/initcpio/InitcpioJob.h b/src/modules/initcpio/InitcpioJob.h index ae8ff47c3..45421ea05 100644 --- a/src/modules/initcpio/InitcpioJob.h +++ b/src/modules/initcpio/InitcpioJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef INITCPIOJOB_H diff --git a/src/modules/initcpio/Tests.cpp b/src/modules/initcpio/Tests.cpp index 83b10388d..bff163b5f 100644 --- a/src/modules/initcpio/Tests.cpp +++ b/src/modules/initcpio/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/initcpio/Tests.h b/src/modules/initcpio/Tests.h index bebab408a..aac48d0c4 100644 --- a/src/modules/initcpio/Tests.h +++ b/src/modules/initcpio/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TESTS_H diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index 119fa5cf2..aef980e25 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Rohan Garg # SPDX-FileCopyrightText: 2015 2019-2020, Philip Müller @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares from libcalamares.utils import debug, target_env_call diff --git a/src/modules/initramfs/CMakeLists.txt b/src/modules/initramfs/CMakeLists.txt index 2d64cbc75..b8bcc9681 100644 --- a/src/modules/initramfs/CMakeLists.txt +++ b/src/modules/initramfs/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/initramfs/InitramfsJob.cpp b/src/modules/initramfs/InitramfsJob.cpp index 05ee4bde8..1b10a1a05 100644 --- a/src/modules/initramfs/InitramfsJob.cpp +++ b/src/modules/initramfs/InitramfsJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "InitramfsJob.h" diff --git a/src/modules/initramfs/InitramfsJob.h b/src/modules/initramfs/InitramfsJob.h index b1b3fb397..7b3a03911 100644 --- a/src/modules/initramfs/InitramfsJob.h +++ b/src/modules/initramfs/InitramfsJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef INITRAMFSJOB_H diff --git a/src/modules/initramfs/Tests.cpp b/src/modules/initramfs/Tests.cpp index 955d9b8bf..f1c9b5e24 100644 --- a/src/modules/initramfs/Tests.cpp +++ b/src/modules/initramfs/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/initramfs/Tests.h b/src/modules/initramfs/Tests.h index 11d0fd1d0..377424589 100644 --- a/src/modules/initramfs/Tests.h +++ b/src/modules/initramfs/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TESTS_H diff --git a/src/modules/initramfscfg/main.py b/src/modules/initramfscfg/main.py index e3b6d0439..974e2634d 100644 --- a/src/modules/initramfscfg/main.py +++ b/src/modules/initramfscfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Rohan Garg # SPDX-FileCopyrightText: 2015 Philip Müller @@ -11,18 +11,8 @@ # SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares diff --git a/src/modules/interactiveterminal/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index 05e3388e3..fea99a5dd 100644 --- a/src/modules/interactiveterminal/CMakeLists.txt +++ b/src/modules/interactiveterminal/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/interactiveterminal/InteractiveTerminalPage.cpp b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp index 9d5f76724..ea4e3b42e 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "InteractiveTerminalPage.h" diff --git a/src/modules/interactiveterminal/InteractiveTerminalPage.h b/src/modules/interactiveterminal/InteractiveTerminalPage.h index 20ab0d651..86ba075ad 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.h +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef INTERACTIVETERMINALPAGE_H diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp b/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp index 45019cf4a..b01321c18 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "InteractiveTerminalViewStep.h" diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h index d91fc07cc..f01a19ee6 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef INTERACTIVETERMINALPAGEPLUGIN_H diff --git a/src/modules/keyboard/CMakeLists.txt b/src/modules/keyboard/CMakeLists.txt index 9dca5f2b0..4ee83ec14 100644 --- a/src/modules/keyboard/CMakeLists.txt +++ b/src/modules/keyboard/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index bd2c41780..11a20bbb7 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Camilo Higuita * * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/keyboard/Config.h b/src/modules/keyboard/Config.h index a7e9c621b..44a893faa 100644 --- a/src/modules/keyboard/Config.h +++ b/src/modules/keyboard/Config.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARD_CONFIG_H diff --git a/src/modules/keyboard/KeyboardLayoutModel.cpp b/src/modules/keyboard/KeyboardLayoutModel.cpp index 9077ea60e..5b92678f6 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.cpp +++ b/src/modules/keyboard/KeyboardLayoutModel.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "KeyboardLayoutModel.h" diff --git a/src/modules/keyboard/KeyboardLayoutModel.h b/src/modules/keyboard/KeyboardLayoutModel.h index eeb0666fa..f4699c9f8 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.h +++ b/src/modules/keyboard/KeyboardLayoutModel.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDLAYOUTMODEL_H diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index 6ab472446..66f4c7570 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "KeyboardPage.h" diff --git a/src/modules/keyboard/KeyboardPage.h b/src/modules/keyboard/KeyboardPage.h index 73896923a..485e27ed6 100644 --- a/src/modules/keyboard/KeyboardPage.h +++ b/src/modules/keyboard/KeyboardPage.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDPAGE_H diff --git a/src/modules/keyboard/KeyboardViewStep.cpp b/src/modules/keyboard/KeyboardViewStep.cpp index b424653f7..55402fd14 100644 --- a/src/modules/keyboard/KeyboardViewStep.cpp +++ b/src/modules/keyboard/KeyboardViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "KeyboardViewStep.h" diff --git a/src/modules/keyboard/KeyboardViewStep.h b/src/modules/keyboard/KeyboardViewStep.h index 8de05d0af..5d4882aca 100644 --- a/src/modules/keyboard/KeyboardViewStep.h +++ b/src/modules/keyboard/KeyboardViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDVIEWSTEP_H diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.cpp b/src/modules/keyboard/SetKeyboardLayoutJob.cpp index e9c20e0aa..d0ad8fcbf 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2011 Lennart Poettering * SPDX-FileCopyrightText: Kay Sievers @@ -11,18 +11,8 @@ * Copyright 2013 Kay Sievers * (originally under LGPLv2.1+, used under the LGPL to GPL conversion clause) * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetKeyboardLayoutJob.h" diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.h b/src/modules/keyboard/SetKeyboardLayoutJob.h index ee0cd0a99..f1eabe195 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.h +++ b/src/modules/keyboard/SetKeyboardLayoutJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2014 Kevin Kofler * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SETKEYBOARDLAYOUTJOB_H diff --git a/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp b/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp index d5f6984d4..329913d79 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -11,18 +11,8 @@ * * Source by Georg Grabler * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "keyboardglobal.h" diff --git a/src/modules/keyboard/keyboardwidget/keyboardglobal.h b/src/modules/keyboard/keyboardwidget/keyboardglobal.h index 9e03c05e5..07c6e5ea2 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardglobal.h +++ b/src/modules/keyboard/keyboardwidget/keyboardglobal.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDGLOBAL_H diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index 6cc306526..572965de5 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "keyboardpreview.h" diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.h b/src/modules/keyboard/keyboardwidget/keyboardpreview.h index f09f9b5f5..1a01fe1a2 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.h +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -8,18 +8,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDPREVIEW_H diff --git a/src/modules/keyboardq/CMakeLists.txt b/src/modules/keyboardq/CMakeLists.txt index 173275cef..cc1e7e2c3 100644 --- a/src/modules/keyboardq/CMakeLists.txt +++ b/src/modules/keyboardq/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/keyboardq/KeyboardQmlViewStep.cpp b/src/modules/keyboardq/KeyboardQmlViewStep.cpp index a5c1f9435..d42ab5269 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.cpp +++ b/src/modules/keyboardq/KeyboardQmlViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "KeyboardQmlViewStep.h" diff --git a/src/modules/keyboardq/KeyboardQmlViewStep.h b/src/modules/keyboardq/KeyboardQmlViewStep.h index b1e7e15e7..4571a9a60 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.h +++ b/src/modules/keyboardq/KeyboardQmlViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KEYBOARDQMLVIEWSTEP_H diff --git a/src/modules/license/CMakeLists.txt b/src/modules/license/CMakeLists.txt index b52875da6..baaf34b43 100644 --- a/src/modules/license/CMakeLists.txt +++ b/src/modules/license/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 411032404..1a92e9ac1 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Alexandre Arnt @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LicensePage.h" diff --git a/src/modules/license/LicensePage.h b/src/modules/license/LicensePage.h index 8493825b5..73a62defa 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Alexandre Arnt @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LICENSEPAGE_H diff --git a/src/modules/license/LicenseViewStep.cpp b/src/modules/license/LicenseViewStep.cpp index 24ae5652a..aca04a1b3 100644 --- a/src/modules/license/LicenseViewStep.cpp +++ b/src/modules/license/LicenseViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LicenseViewStep.h" diff --git a/src/modules/license/LicenseViewStep.h b/src/modules/license/LicenseViewStep.h index 3aef1f7f3..15e345221 100644 --- a/src/modules/license/LicenseViewStep.h +++ b/src/modules/license/LicenseViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LICENSEPAGEPLUGIN_H diff --git a/src/modules/license/LicenseWidget.cpp b/src/modules/license/LicenseWidget.cpp index a5f6d688a..b2e66515d 100644 --- a/src/modules/license/LicenseWidget.cpp +++ b/src/modules/license/LicenseWidget.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Alexandre Arnt @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LicenseWidget.h" diff --git a/src/modules/license/LicenseWidget.h b/src/modules/license/LicenseWidget.h index 08aa031c5..2d810e80a 100644 --- a/src/modules/license/LicenseWidget.h +++ b/src/modules/license/LicenseWidget.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2015 Alexandre Arnt @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LICENSE_LICENSEWIDGET_H diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 1e0531c6b..3802f92b2 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index ae4f772ad..37857cc71 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index cbebf9844..a7ae0ccaf 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LOCALE_CONFIG_H diff --git a/src/modules/locale/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index a3b0a4d2c..efa85c536 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LCLocaleDialog.h" diff --git a/src/modules/locale/LCLocaleDialog.h b/src/modules/locale/LCLocaleDialog.h index 389c98ba6..2d1869a62 100644 --- a/src/modules/locale/LCLocaleDialog.h +++ b/src/modules/locale/LCLocaleDialog.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LCLOCALEDIALOG_H diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index 41f315f0b..c208dc02d 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LocaleConfiguration.h" diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index de3da1d74..acd80953c 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LOCALECONFIGURATION_H diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index d4ad6854e..7a6ed8b15 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LocalePage.h" diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 57dbfe540..c8b80e906 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LOCALEPAGE_H diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 34f4d783b..2145ad201 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LocaleViewStep.h" diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 735e5d2ce..fd9c00796 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LOCALEVIEWSTEP_H diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index 2d90a6609..675cca8af 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2015 Rohan Garg * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetTimezoneJob.h" diff --git a/src/modules/locale/SetTimezoneJob.h b/src/modules/locale/SetTimezoneJob.h index b4e04edf2..d51171256 100644 --- a/src/modules/locale/SetTimezoneJob.h +++ b/src/modules/locale/SetTimezoneJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SETTIMEZONEJOB_H diff --git a/src/modules/locale/Tests.cpp b/src/modules/locale/Tests.cpp index 021140b60..6fe9d5662 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index 1d1c1f806..54aa1afd5 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "TimeZoneImage.h" diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.h b/src/modules/locale/timezonewidget/TimeZoneImage.h index 6c77303a5..c36f4e2f7 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.h +++ b/src/modules/locale/timezonewidget/TimeZoneImage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TIMEZONEIMAGE_H diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index b2c0efc5b..9ad9f2d3f 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "locale/TimeZone.h" diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index dc95429de..3a2911597 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TIMEZONEWIDGET_H diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 021f4a454..8f0edcd17 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Anke Boersma # SPDX-FileCopyrightText: 2015 Philip Müller @@ -10,18 +10,8 @@ # SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import re diff --git a/src/modules/localeq/CMakeLists.txt b/src/modules/localeq/CMakeLists.txt index 28ba76e0e..55c16091c 100644 --- a/src/modules/localeq/CMakeLists.txt +++ b/src/modules/localeq/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index 6531e59a2..6139d3a45 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 20182020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "LocaleQmlViewStep.h" diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index 261c1cfc2..ca70ca5d9 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LOCALE_QMLVIEWSTEP_H diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index 3a2041bc0..845f16ea3 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import QtQuick 2.10 diff --git a/src/modules/localeq/Offline.qml b/src/modules/localeq/Offline.qml index 72170711d..8823a388a 100644 --- a/src/modules/localeq/Offline.qml +++ b/src/modules/localeq/Offline.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import QtQuick 2.10 diff --git a/src/modules/localeq/i18n.qml b/src/modules/localeq/i18n.qml index 06f871b28..63cad8bf5 100644 --- a/src/modules/localeq/i18n.qml +++ b/src/modules/localeq/i18n.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.ui 1.0 diff --git a/src/modules/localeq/localeq.qml b/src/modules/localeq/localeq.qml index f862e2d08..dbaa09034 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.core 1.0 diff --git a/src/modules/luksbootkeyfile/CMakeLists.txt b/src/modules/luksbootkeyfile/CMakeLists.txt index 620caee7e..1782e7e0e 100644 --- a/src/modules/luksbootkeyfile/CMakeLists.txt +++ b/src/modules/luksbootkeyfile/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp index 63b5d753d..9bd2f66da 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h index 780f90883..d78a7ecdc 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/luksopenswaphookcfg/main.py b/src/modules/luksopenswaphookcfg/main.py index 96dfea83b..ec09a631b 100644 --- a/src/modules/luksopenswaphookcfg/main.py +++ b/src/modules/luksopenswaphookcfg/main.py @@ -1,25 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2016 Teo Mrnjavac # SPDX-FileCopyrightText: 2017 Alf Gaida # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares import os.path diff --git a/src/modules/machineid/CMakeLists.txt b/src/modules/machineid/CMakeLists.txt index eb2551d51..360c0cc8a 100644 --- a/src/modules/machineid/CMakeLists.txt +++ b/src/modules/machineid/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp index d70b0fed4..302e8c308 100644 --- a/src/modules/machineid/MachineIdJob.cpp +++ b/src/modules/machineid/MachineIdJob.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Kevin Kofler * SPDX-FileCopyrightText: 2016 Philip Müller @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "MachineIdJob.h" diff --git a/src/modules/machineid/MachineIdJob.h b/src/modules/machineid/MachineIdJob.h index 91d091b16..b58d2f4dd 100644 --- a/src/modules/machineid/MachineIdJob.h +++ b/src/modules/machineid/MachineIdJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef MACHINEIDJOB_H diff --git a/src/modules/machineid/Tests.cpp b/src/modules/machineid/Tests.cpp index af2dcee3f..45f0e6954 100644 --- a/src/modules/machineid/Tests.cpp +++ b/src/modules/machineid/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "MachineIdJob.h" diff --git a/src/modules/machineid/Workers.cpp b/src/modules/machineid/Workers.cpp index 67910ce9a..79d075c86 100644 --- a/src/modules/machineid/Workers.cpp +++ b/src/modules/machineid/Workers.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Kevin Kofler * SPDX-FileCopyrightText: 2016 Philip Müller @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Workers.h" diff --git a/src/modules/machineid/Workers.h b/src/modules/machineid/Workers.h index 8e6926760..51c9d526d 100644 --- a/src/modules/machineid/Workers.h +++ b/src/modules/machineid/Workers.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WORKERS_H diff --git a/src/modules/mkinitfs/main.py b/src/modules/mkinitfs/main.py index cc9d80a37..e3e6e176a 100644 --- a/src/modules/mkinitfs/main.py +++ b/src/modules/mkinitfs/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014-2015 Philip Müller # SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares from libcalamares.utils import target_env_call diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index caa5ea828..01c0650bf 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Aurélien Gâteau # SPDX-FileCopyrightText: 2017 Alf Gaida @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Kevin Kofler # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import tempfile import subprocess diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 588ca1f82..4500a314f 100644 --- a/src/modules/netinstall/CMakeLists.txt +++ b/src/modules/netinstall/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/netinstall/Config.cpp b/src/modules/netinstall/Config.cpp index 8383b51af..ddbb36fcc 100644 --- a/src/modules/netinstall/Config.cpp +++ b/src/modules/netinstall/Config.cpp @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/netinstall/Config.h b/src/modules/netinstall/Config.h index a7e979827..56cbd784b 100644 --- a/src/modules/netinstall/Config.h +++ b/src/modules/netinstall/Config.h @@ -5,18 +5,8 @@ * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef NETINSTALL_CONFIG_H diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 309adc490..75175a941 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "NetInstallPage.h" diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index c680360d4..167f9807f 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -5,18 +5,8 @@ * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef NETINSTALLPAGE_H diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index 3b82ff5e0..beb295c32 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -5,18 +5,8 @@ * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "NetInstallViewStep.h" diff --git a/src/modules/netinstall/NetInstallViewStep.h b/src/modules/netinstall/NetInstallViewStep.h index 44299632c..cd79e7a4a 100644 --- a/src/modules/netinstall/NetInstallViewStep.h +++ b/src/modules/netinstall/NetInstallViewStep.h @@ -4,18 +4,8 @@ * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef NETINSTALLVIEWSTEP_H diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp index b5e6103c8..beb094d2d 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Kyle Robbertze * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageModel.h" diff --git a/src/modules/netinstall/PackageModel.h b/src/modules/netinstall/PackageModel.h index 35bc11354..998f42c38 100644 --- a/src/modules/netinstall/PackageModel.h +++ b/src/modules/netinstall/PackageModel.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Kyle Robbertze * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGEMODEL_H diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp index 32fcf4296..b30cdf915 100644 --- a/src/modules/netinstall/PackageTreeItem.cpp +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Kyle Robbertze * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageTreeItem.h" diff --git a/src/modules/netinstall/PackageTreeItem.h b/src/modules/netinstall/PackageTreeItem.h index 5df703a29..c04b9a21d 100644 --- a/src/modules/netinstall/PackageTreeItem.h +++ b/src/modules/netinstall/PackageTreeItem.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Kyle Robbertze * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGETREEITEM_H diff --git a/src/modules/netinstall/Tests.cpp b/src/modules/netinstall/Tests.cpp index 1ffc72f3f..569d47d15 100644 --- a/src/modules/netinstall/Tests.cpp +++ b/src/modules/netinstall/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageModel.h" diff --git a/src/modules/networkcfg/main.py b/src/modules/networkcfg/main.py index 2db819945..608cfd288 100644 --- a/src/modules/networkcfg/main.py +++ b/src/modules/networkcfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Philip Müller # SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import shutil diff --git a/src/modules/notesqml/CMakeLists.txt b/src/modules/notesqml/CMakeLists.txt index c656bebf6..a5edc7d04 100644 --- a/src/modules/notesqml/CMakeLists.txt +++ b/src/modules/notesqml/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/notesqml/NotesQmlViewStep.cpp b/src/modules/notesqml/NotesQmlViewStep.cpp index 4d0430e95..9f57eb615 100644 --- a/src/modules/notesqml/NotesQmlViewStep.cpp +++ b/src/modules/notesqml/NotesQmlViewStep.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Anke Boersma diff --git a/src/modules/notesqml/NotesQmlViewStep.h b/src/modules/notesqml/NotesQmlViewStep.h index 8545b47b9..10f249a88 100644 --- a/src/modules/notesqml/NotesQmlViewStep.h +++ b/src/modules/notesqml/NotesQmlViewStep.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Anke Boersma diff --git a/src/modules/notesqml/examples/notesqml.qml.example b/src/modules/notesqml/examples/notesqml.qml.example index b3094f447..782ae404e 100644 --- a/src/modules/notesqml/examples/notesqml.qml.example +++ b/src/modules/notesqml/examples/notesqml.qml.example @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-FileCopyrightText: 2020 Adriaan de Groot diff --git a/src/modules/notesqml/notesqml.qml b/src/modules/notesqml/notesqml.qml index 7be5cffa9..7805f27fa 100644 --- a/src/modules/notesqml/notesqml.qml +++ b/src/modules/notesqml/notesqml.qml @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * Copyright 2020, Anke Boersma * Copyright 2020, Adriaan de Groot diff --git a/src/modules/oemid/CMakeLists.txt b/src/modules/oemid/CMakeLists.txt index 7db23bc30..68a1b653e 100644 --- a/src/modules/oemid/CMakeLists.txt +++ b/src/modules/oemid/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/oemid/IDJob.cpp b/src/modules/oemid/IDJob.cpp index 19ad85cc9..ccda86057 100644 --- a/src/modules/oemid/IDJob.cpp +++ b/src/modules/oemid/IDJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "IDJob.h" diff --git a/src/modules/oemid/IDJob.h b/src/modules/oemid/IDJob.h index dd8bd5e24..17d97b4ee 100644 --- a/src/modules/oemid/IDJob.h +++ b/src/modules/oemid/IDJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef IDJOB_H diff --git a/src/modules/oemid/OEMViewStep.cpp b/src/modules/oemid/OEMViewStep.cpp index 85de722dc..7405c6e3a 100644 --- a/src/modules/oemid/OEMViewStep.cpp +++ b/src/modules/oemid/OEMViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "OEMViewStep.h" diff --git a/src/modules/oemid/OEMViewStep.h b/src/modules/oemid/OEMViewStep.h index 342c62d60..c07cb7971 100644 --- a/src/modules/oemid/OEMViewStep.h +++ b/src/modules/oemid/OEMViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef OEMVIEWSTEP_H diff --git a/src/modules/openrcdmcryptcfg/main.py b/src/modules/openrcdmcryptcfg/main.py index 83b3a4c40..8eb169867 100644 --- a/src/modules/openrcdmcryptcfg/main.py +++ b/src/modules/openrcdmcryptcfg/main.py @@ -1,24 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2017 Ghiunhan Mamut # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os.path diff --git a/src/modules/packagechooser/CMakeLists.txt b/src/modules/packagechooser/CMakeLists.txt index 539db4f73..ad9cc8527 100644 --- a/src/modules/packagechooser/CMakeLists.txt +++ b/src/modules/packagechooser/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/packagechooser/ItemAppData.cpp b/src/modules/packagechooser/ItemAppData.cpp index 4adebb5c3..dd1eb1fb7 100644 --- a/src/modules/packagechooser/ItemAppData.cpp +++ b/src/modules/packagechooser/ItemAppData.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /** @brief Loading items from AppData XML files. diff --git a/src/modules/packagechooser/ItemAppData.h b/src/modules/packagechooser/ItemAppData.h index c811ae4d5..92d81220d 100644 --- a/src/modules/packagechooser/ItemAppData.h +++ b/src/modules/packagechooser/ItemAppData.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef ITEMAPPDATA_H diff --git a/src/modules/packagechooser/ItemAppStream.cpp b/src/modules/packagechooser/ItemAppStream.cpp index e397f8a15..787db0b3f 100644 --- a/src/modules/packagechooser/ItemAppStream.cpp +++ b/src/modules/packagechooser/ItemAppStream.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /** @brief Loading items from AppData XML files. diff --git a/src/modules/packagechooser/ItemAppStream.h b/src/modules/packagechooser/ItemAppStream.h index cbfccdc90..9fa3608c3 100644 --- a/src/modules/packagechooser/ItemAppStream.h +++ b/src/modules/packagechooser/ItemAppStream.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef ITEMAPPSTREAM_H diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp index ac59f929c..0d5df8177 100644 --- a/src/modules/packagechooser/PackageChooserPage.cpp +++ b/src/modules/packagechooser/PackageChooserPage.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageChooserPage.h" diff --git a/src/modules/packagechooser/PackageChooserPage.h b/src/modules/packagechooser/PackageChooserPage.h index a5ce6d2e5..4f485c890 100644 --- a/src/modules/packagechooser/PackageChooserPage.h +++ b/src/modules/packagechooser/PackageChooserPage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGECHOOSERPAGE_H diff --git a/src/modules/packagechooser/PackageChooserViewStep.cpp b/src/modules/packagechooser/PackageChooserViewStep.cpp index fb64727f7..f162c074b 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.cpp +++ b/src/modules/packagechooser/PackageChooserViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageChooserViewStep.h" diff --git a/src/modules/packagechooser/PackageChooserViewStep.h b/src/modules/packagechooser/PackageChooserViewStep.h index f74abe376..2a10ce270 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.h +++ b/src/modules/packagechooser/PackageChooserViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGECHOOSERVIEWSTEP_H diff --git a/src/modules/packagechooser/PackageModel.cpp b/src/modules/packagechooser/PackageModel.cpp index dd8903fc9..1072b8b3b 100644 --- a/src/modules/packagechooser/PackageModel.cpp +++ b/src/modules/packagechooser/PackageModel.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PackageModel.h" diff --git a/src/modules/packagechooser/PackageModel.h b/src/modules/packagechooser/PackageModel.h index 2dff3834a..b8fc9a4ce 100644 --- a/src/modules/packagechooser/PackageModel.h +++ b/src/modules/packagechooser/PackageModel.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGEMODEL_H diff --git a/src/modules/packagechooser/Tests.cpp b/src/modules/packagechooser/Tests.cpp index 0e9968814..c303f0488 100644 --- a/src/modules/packagechooser/Tests.cpp +++ b/src/modules/packagechooser/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/packagechooser/Tests.h b/src/modules/packagechooser/Tests.h index 716f930e3..34ac2f682 100644 --- a/src/modules/packagechooser/Tests.h +++ b/src/modules/packagechooser/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PACKAGECHOOSERTESTS_H diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 42cf3a4bd..9d912da72 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Pier Luigi Fiorini # SPDX-FileCopyrightText: 2015-2017 Teo Mrnjavac @@ -11,18 +11,8 @@ # SPDX-FileCopyrightText: 2018 Philip Müller # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import abc from string import Template diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 5c5d6a6cb..f3ffcb9c7 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/partition/core/BootLoaderModel.cpp b/src/modules/partition/core/BootLoaderModel.cpp index 13ce2a379..f9743291f 100644 --- a/src/modules/partition/core/BootLoaderModel.cpp +++ b/src/modules/partition/core/BootLoaderModel.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/BootLoaderModel.h" diff --git a/src/modules/partition/core/BootLoaderModel.h b/src/modules/partition/core/BootLoaderModel.h index 1157879ef..47e6ccb95 100644 --- a/src/modules/partition/core/BootLoaderModel.h +++ b/src/modules/partition/core/BootLoaderModel.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef BOOTLOADERMODEL_H #define BOOTLOADERMODEL_H diff --git a/src/modules/partition/core/ColorUtils.cpp b/src/modules/partition/core/ColorUtils.cpp index 9b86cdb46..fb613e240 100644 --- a/src/modules/partition/core/ColorUtils.cpp +++ b/src/modules/partition/core/ColorUtils.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/ColorUtils.h" diff --git a/src/modules/partition/core/ColorUtils.h b/src/modules/partition/core/ColorUtils.h index ab4e86481..9ebce580b 100644 --- a/src/modules/partition/core/ColorUtils.h +++ b/src/modules/partition/core/ColorUtils.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef COLORUTILS_H #define COLORUTILS_H diff --git a/src/modules/partition/core/Config.cpp b/src/modules/partition/core/Config.cpp index 00b896724..6dcad2d66 100644 --- a/src/modules/partition/core/Config.cpp +++ b/src/modules/partition/core/Config.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/partition/core/Config.h b/src/modules/partition/core/Config.h index fb2f8116c..f2ba9cf58 100644 --- a/src/modules/partition/core/Config.h +++ b/src/modules/partition/core/Config.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITION_CONFIG_H diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index dfba17523..2fce62e9d 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DeviceList.h" diff --git a/src/modules/partition/core/DeviceList.h b/src/modules/partition/core/DeviceList.h index 986c6b05f..b76a31a6b 100644 --- a/src/modules/partition/core/DeviceList.h +++ b/src/modules/partition/core/DeviceList.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DEVICELIST_H diff --git a/src/modules/partition/core/DeviceModel.cpp b/src/modules/partition/core/DeviceModel.cpp index 3e42ab029..bf5541756 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/DeviceModel.h" diff --git a/src/modules/partition/core/DeviceModel.h b/src/modules/partition/core/DeviceModel.h index a03405cb6..71918f64d 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DEVICEMODEL_H #define DEVICEMODEL_H diff --git a/src/modules/partition/core/KPMHelpers.cpp b/src/modules/partition/core/KPMHelpers.cpp index ba8238531..e9e69456d 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * Copyright 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/KPMHelpers.h" diff --git a/src/modules/partition/core/KPMHelpers.h b/src/modules/partition/core/KPMHelpers.h index 743dcc790..ad25689f3 100644 --- a/src/modules/partition/core/KPMHelpers.h +++ b/src/modules/partition/core/KPMHelpers.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef KPMHELPERS_H #define KPMHELPERS_H diff --git a/src/modules/partition/core/OsproberEntry.h b/src/modules/partition/core/OsproberEntry.h index 9313a6bb5..a358e4285 100644 --- a/src/modules/partition/core/OsproberEntry.h +++ b/src/modules/partition/core/OsproberEntry.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef OSPROBERENTRY_H diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 1d5484671..099cdf299 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * Copyright 2018-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartUtils.h" diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index a56cb8a60..f5ca0ddaa 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTUTILS_H diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index dba02318e..748df2d95 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionActions.h" diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index 63dfccb11..d86e51048 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONACTIONS_H diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 370caebfb..d78ef70c7 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac @@ -7,18 +7,8 @@ * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/PartitionCoreModule.h" diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index b75f67d75..f84bee291 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONCOREMODULE_H diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index 415fdc5c1..87aa03b66 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/PartitionInfo.h" diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 3ddbe192b..19b66180a 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONINFO_H #define PARTITIONINFO_H diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 3df9b21c2..aceda2d72 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-FileCopyrightText: 2018-2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "GlobalStorage.h" diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index 52bd96e42..79dff1697 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018-2019 Collabora Ltd * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONLAYOUT_H diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index 662e26032..9a8f4d96c 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "core/PartitionModel.h" diff --git a/src/modules/partition/core/PartitionModel.h b/src/modules/partition/core/PartitionModel.h index 9d1e40f20..f91479adc 100644 --- a/src/modules/partition/core/PartitionModel.h +++ b/src/modules/partition/core/PartitionModel.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONMODEL_H #define PARTITIONMODEL_H diff --git a/src/modules/partition/gui/BootInfoWidget.cpp b/src/modules/partition/gui/BootInfoWidget.cpp index d1df9ae33..5d9dcf8b5 100644 --- a/src/modules/partition/gui/BootInfoWidget.cpp +++ b/src/modules/partition/gui/BootInfoWidget.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/BootInfoWidget.h b/src/modules/partition/gui/BootInfoWidget.h index 5865a3b9c..6be3f6e7b 100644 --- a/src/modules/partition/gui/BootInfoWidget.h +++ b/src/modules/partition/gui/BootInfoWidget.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index b032065cf..6b4b8b659 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ChoicePage.h" diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 9aa8befed..7c364cc1f 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CHOICEPAGE_H diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index ae500c500..3b51010b8 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac @@ -7,18 +7,8 @@ * SPDX-FileCopyrightText: 2018 Caio Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreatePartitionDialog.h" diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 6991d1fa5..dc756d352 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEPARTITIONDIALOG_H diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp index 2f5984301..d0eacb725 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreateVolumeGroupDialog.h" diff --git a/src/modules/partition/gui/CreateVolumeGroupDialog.h b/src/modules/partition/gui/CreateVolumeGroupDialog.h index 3c3d5cc1b..4712a9106 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.h +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp index d7059c71e..80eacd05b 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.cpp +++ b/src/modules/partition/gui/DeviceInfoWidget.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/DeviceInfoWidget.h b/src/modules/partition/gui/DeviceInfoWidget.h index 38a0309f3..a69251be1 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.h +++ b/src/modules/partition/gui/DeviceInfoWidget.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index 633418ec3..1e66c539c 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2008-2009 Volker Lanz * SPDX-FileCopyrightText: 2014 Aurélien Gâteau @@ -9,18 +9,8 @@ * * Flags handling originally from KDE Partition Manager. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "EditExistingPartitionDialog.h" diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index 7788305fc..96cc2c4c4 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef EDITEXISTINGPARTITIONDIALOG_H diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index cf9a0c922..3ac56575b 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h index c3f7928fe..5c24d68e6 100644 --- a/src/modules/partition/gui/EncryptWidget.h +++ b/src/modules/partition/gui/EncryptWidget.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp index f9f1b9c6b..1e8a9e573 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ListPhysicalVolumeWidgetItem.h" diff --git a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h index 7d8e8faf0..6e0b1c85a 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef LISTPHYSICALVOLUMEWIDGETITEM_H diff --git a/src/modules/partition/gui/PartitionBarsView.cpp b/src/modules/partition/gui/PartitionBarsView.cpp index 6799b26f0..81f518acc 100644 --- a/src/modules/partition/gui/PartitionBarsView.cpp +++ b/src/modules/partition/gui/PartitionBarsView.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "gui/PartitionBarsView.h" diff --git a/src/modules/partition/gui/PartitionBarsView.h b/src/modules/partition/gui/PartitionBarsView.h index 1f0100ffa..4dacaaae5 100644 --- a/src/modules/partition/gui/PartitionBarsView.h +++ b/src/modules/partition/gui/PartitionBarsView.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONPREVIEW_H #define PARTITIONPREVIEW_H diff --git a/src/modules/partition/gui/PartitionDialogHelpers.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp index 8ab1f38d7..c5c35279d 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionDialogHelpers.h" diff --git a/src/modules/partition/gui/PartitionDialogHelpers.h b/src/modules/partition/gui/PartitionDialogHelpers.h index fd485a690..7761004b5 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITION_GUI_PARTITIONDIALOGHELPERS diff --git a/src/modules/partition/gui/PartitionLabelsView.cpp b/src/modules/partition/gui/PartitionLabelsView.cpp index e42e9de89..7e861d994 100644 --- a/src/modules/partition/gui/PartitionLabelsView.cpp +++ b/src/modules/partition/gui/PartitionLabelsView.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionLabelsView.h" diff --git a/src/modules/partition/gui/PartitionLabelsView.h b/src/modules/partition/gui/PartitionLabelsView.h index 45b2b3407..ac7a272ad 100644 --- a/src/modules/partition/gui/PartitionLabelsView.h +++ b/src/modules/partition/gui/PartitionLabelsView.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONLABELSVIEW_H diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 3b73f061e..b9930504f 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac @@ -8,18 +8,8 @@ * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionPage.h" diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index d23879e15..26c7dbccf 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONPAGE_H diff --git a/src/modules/partition/gui/PartitionSizeController.cpp b/src/modules/partition/gui/PartitionSizeController.cpp index aefc13992..b7757c32d 100644 --- a/src/modules/partition/gui/PartitionSizeController.cpp +++ b/src/modules/partition/gui/PartitionSizeController.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "gui/PartitionSizeController.h" diff --git a/src/modules/partition/gui/PartitionSizeController.h b/src/modules/partition/gui/PartitionSizeController.h index 1353404c5..69cf2ef21 100644 --- a/src/modules/partition/gui/PartitionSizeController.h +++ b/src/modules/partition/gui/PartitionSizeController.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONSIZECONTROLLER_H diff --git a/src/modules/partition/gui/PartitionSplitterWidget.cpp b/src/modules/partition/gui/PartitionSplitterWidget.cpp index 08543756c..93c77bb69 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.cpp +++ b/src/modules/partition/gui/PartitionSplitterWidget.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionSplitterWidget.h" diff --git a/src/modules/partition/gui/PartitionSplitterWidget.h b/src/modules/partition/gui/PartitionSplitterWidget.h index 36bd96559..474ea313e 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.h +++ b/src/modules/partition/gui/PartitionSplitterWidget.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONSPLITTERWIDGET_H diff --git a/src/modules/partition/gui/PartitionViewSelectionFilter.h b/src/modules/partition/gui/PartitionViewSelectionFilter.h index 078999f31..fc2f5bcb3 100644 --- a/src/modules/partition/gui/PartitionViewSelectionFilter.h +++ b/src/modules/partition/gui/PartitionViewSelectionFilter.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONVIEWSELECTIONFILTER_H diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 59f117b26..1b70124dd 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac @@ -7,18 +7,8 @@ * SPDX-FileCopyrightText: 2020 Anke Boersma . */ #include "gui/PartitionViewStep.h" diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index da1ec5255..6ece9a2b1 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONVIEWSTEP_H diff --git a/src/modules/partition/gui/ReplaceWidget.cpp b/src/modules/partition/gui/ReplaceWidget.cpp index 6c4d800dd..7e4fb48d6 100644 --- a/src/modules/partition/gui/ReplaceWidget.cpp +++ b/src/modules/partition/gui/ReplaceWidget.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ReplaceWidget.h" diff --git a/src/modules/partition/gui/ReplaceWidget.h b/src/modules/partition/gui/ReplaceWidget.h index e30b57bb3..5277e5626 100644 --- a/src/modules/partition/gui/ReplaceWidget.h +++ b/src/modules/partition/gui/ReplaceWidget.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef REPLACEWIDGET_H diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp index 1aae5f49b..d0103954d 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResizeVolumeGroupDialog.h" diff --git a/src/modules/partition/gui/ResizeVolumeGroupDialog.h b/src/modules/partition/gui/ResizeVolumeGroupDialog.h index af5a29ae6..7b8ecf6d6 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.h +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef RESIZEVOLUMEGROUPDIALOG_H diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index 5099484d9..cd22bb861 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ScanningDialog.h" diff --git a/src/modules/partition/gui/ScanningDialog.h b/src/modules/partition/gui/ScanningDialog.h index 25cd36227..757b94eb6 100644 --- a/src/modules/partition/gui/ScanningDialog.h +++ b/src/modules/partition/gui/ScanningDialog.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SCANNINGDIALOG_H diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp index 95aa75ac2..6277c30e5 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "VolumeGroupBaseDialog.h" diff --git a/src/modules/partition/gui/VolumeGroupBaseDialog.h b/src/modules/partition/gui/VolumeGroupBaseDialog.h index 7c7b43e48..253160d97 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.h +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef VOLUMEGROUPBASEDIALOG_H diff --git a/src/modules/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index c51a784c1..825c82ec1 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Kevin Kofler * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ClearMountsJob.h" diff --git a/src/modules/partition/jobs/ClearMountsJob.h b/src/modules/partition/jobs/ClearMountsJob.h index 7d9df270a..99a7b4844 100644 --- a/src/modules/partition/jobs/ClearMountsJob.h +++ b/src/modules/partition/jobs/ClearMountsJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CLEARMOUNTSJOB_H diff --git a/src/modules/partition/jobs/ClearTempMountsJob.cpp b/src/modules/partition/jobs/ClearTempMountsJob.cpp index 36b83f56c..2f90278fe 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.cpp +++ b/src/modules/partition/jobs/ClearTempMountsJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ClearTempMountsJob.h" diff --git a/src/modules/partition/jobs/ClearTempMountsJob.h b/src/modules/partition/jobs/ClearTempMountsJob.h index 6f29f197c..0726975c7 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.h +++ b/src/modules/partition/jobs/ClearTempMountsJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CLEARTEMPMOUNTSJOB_H diff --git a/src/modules/partition/jobs/CreatePartitionJob.cpp b/src/modules/partition/jobs/CreatePartitionJob.cpp index ac61518f8..a4fa195ee 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreatePartitionJob.h" diff --git a/src/modules/partition/jobs/CreatePartitionJob.h b/src/modules/partition/jobs/CreatePartitionJob.h index b11874fad..3d6199804 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.h +++ b/src/modules/partition/jobs/CreatePartitionJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEPARTITIONJOB_H diff --git a/src/modules/partition/jobs/CreatePartitionTableJob.cpp b/src/modules/partition/jobs/CreatePartitionTableJob.cpp index a585c094a..0913a1cfc 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionTableJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreatePartitionTableJob.h" diff --git a/src/modules/partition/jobs/CreatePartitionTableJob.h b/src/modules/partition/jobs/CreatePartitionTableJob.h index 02f23d169..ee1ba0a38 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.h +++ b/src/modules/partition/jobs/CreatePartitionTableJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEPARTITIONTABLEJOB_H diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp index 6d9c9d6e0..af9997df6 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreateVolumeGroupJob.h" diff --git a/src/modules/partition/jobs/CreateVolumeGroupJob.h b/src/modules/partition/jobs/CreateVolumeGroupJob.h index 0e73c52fa..e9682043c 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.h +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp index 3adce640c..92086015d 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DeactivateVolumeGroupJob.h" diff --git a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h index 13b60069e..a6bdd4ddb 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DEACTIVATEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/DeletePartitionJob.cpp b/src/modules/partition/jobs/DeletePartitionJob.cpp index 8a9fedce2..913fd8cd6 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.cpp +++ b/src/modules/partition/jobs/DeletePartitionJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "DeletePartitionJob.h" diff --git a/src/modules/partition/jobs/DeletePartitionJob.h b/src/modules/partition/jobs/DeletePartitionJob.h index 5a0332bf4..6d5ff1377 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.h +++ b/src/modules/partition/jobs/DeletePartitionJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef DELETEPARTITIONJOB_H diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.cpp b/src/modules/partition/jobs/FillGlobalStorageJob.cpp index a0b229d45..f26b70a97 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp +++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 2019-2020, Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "FillGlobalStorageJob.h" diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.h b/src/modules/partition/jobs/FillGlobalStorageJob.h index 823f64f2f..c1256de12 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.h +++ b/src/modules/partition/jobs/FillGlobalStorageJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef FILLGLOBALSTORAGEJOB_H diff --git a/src/modules/partition/jobs/FormatPartitionJob.cpp b/src/modules/partition/jobs/FormatPartitionJob.cpp index d12c89022..4dadacf9c 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.cpp +++ b/src/modules/partition/jobs/FormatPartitionJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "FormatPartitionJob.h" diff --git a/src/modules/partition/jobs/FormatPartitionJob.h b/src/modules/partition/jobs/FormatPartitionJob.h index f3a721187..38b2ee1a9 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.h +++ b/src/modules/partition/jobs/FormatPartitionJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef FORMATPARTITIONJOB_H diff --git a/src/modules/partition/jobs/PartitionJob.cpp b/src/modules/partition/jobs/PartitionJob.cpp index de96ef950..3bdb05ebd 100644 --- a/src/modules/partition/jobs/PartitionJob.cpp +++ b/src/modules/partition/jobs/PartitionJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionJob.h" diff --git a/src/modules/partition/jobs/PartitionJob.h b/src/modules/partition/jobs/PartitionJob.h index 66b9704a1..5222cf4d3 100644 --- a/src/modules/partition/jobs/PartitionJob.h +++ b/src/modules/partition/jobs/PartitionJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONJOB_H diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp index 7c4b2ea31..a3b5b8d73 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "RemoveVolumeGroupJob.h" diff --git a/src/modules/partition/jobs/RemoveVolumeGroupJob.h b/src/modules/partition/jobs/RemoveVolumeGroupJob.h index 06ed2ab2a..03f52135b 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.h +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef REMOVEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/ResizePartitionJob.cpp b/src/modules/partition/jobs/ResizePartitionJob.cpp index c71078dc1..87b87c1c0 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.cpp +++ b/src/modules/partition/jobs/ResizePartitionJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Andrius Štikonas * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResizePartitionJob.h" diff --git a/src/modules/partition/jobs/ResizePartitionJob.h b/src/modules/partition/jobs/ResizePartitionJob.h index f86b792fc..9e24b2d04 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.h +++ b/src/modules/partition/jobs/ResizePartitionJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef RESIZEPARTITIONJOB_H diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp index b9828ccb4..0c017877e 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResizeVolumeGroupJob.h" diff --git a/src/modules/partition/jobs/ResizeVolumeGroupJob.h b/src/modules/partition/jobs/ResizeVolumeGroupJob.h index e77098184..9e3f038c2 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.h +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef RESIZEVOLUMEGROUPJOB_H diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp index cf8aabd35..7b6101241 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2008 2010, Volker Lanz * SPDX-FileCopyrightText: 2016 Teo Mrnjavac @@ -7,18 +7,8 @@ * * Based on the SetPartFlagsJob class from KDE Partition Manager * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetPartitionFlagsJob.h" diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.h b/src/modules/partition/jobs/SetPartitionFlagsJob.h index 957c6893f..eb6d9586c 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.h +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later @@ -6,18 +6,8 @@ * Based on the SetPartFlagsJob class from KDE Partition Manager, * SPDX-FileCopyrightText: 2008 2010, Volker Lanz * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SETPARTITIONFLAGSJOB_H diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index a2b99660c..dd4e41068 100644 --- a/src/modules/partition/tests/CMakeLists.txt +++ b/src/modules/partition/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/partition/tests/ClearMountsJobTests.cpp b/src/modules/partition/tests/ClearMountsJobTests.cpp index 69d34c848..e05af4897 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.cpp +++ b/src/modules/partition/tests/ClearMountsJobTests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ClearMountsJobTests.h" diff --git a/src/modules/partition/tests/ClearMountsJobTests.h b/src/modules/partition/tests/ClearMountsJobTests.h index 27dfca8b9..4b13fdc3d 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.h +++ b/src/modules/partition/tests/ClearMountsJobTests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CLEARMOUNTSJOBTESTS_H diff --git a/src/modules/partition/tests/PartitionJobTests.cpp b/src/modules/partition/tests/PartitionJobTests.cpp index 9aa58ff58..60e72e006 100644 --- a/src/modules/partition/tests/PartitionJobTests.cpp +++ b/src/modules/partition/tests/PartitionJobTests.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-FileCopyrightText: 2017, 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PartitionJobTests.h" diff --git a/src/modules/partition/tests/PartitionJobTests.h b/src/modules/partition/tests/PartitionJobTests.h index d2f0eb16c..364213f54 100644 --- a/src/modules/partition/tests/PartitionJobTests.h +++ b/src/modules/partition/tests/PartitionJobTests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Aurélien Gâteau * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTITIONJOBTESTS_H diff --git a/src/modules/plasmalnf/CMakeLists.txt b/src/modules/plasmalnf/CMakeLists.txt index 8c1ca8c3c..15c836b5b 100644 --- a/src/modules/plasmalnf/CMakeLists.txt +++ b/src/modules/plasmalnf/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/plasmalnf/PlasmaLnfJob.cpp b/src/modules/plasmalnf/PlasmaLnfJob.cpp index b4ffadcd8..0721bcd88 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.cpp +++ b/src/modules/plasmalnf/PlasmaLnfJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PlasmaLnfJob.h" diff --git a/src/modules/plasmalnf/PlasmaLnfJob.h b/src/modules/plasmalnf/PlasmaLnfJob.h index 9462f66ac..314070c0c 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.h +++ b/src/modules/plasmalnf/PlasmaLnfJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PLASMALNFJOB_H diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index f3bcc09c8..a44620074 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PlasmaLnfPage.h" diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index 286a10418..287da8b29 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PLASMALNFPAGE_H diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index e9d1c3f61..9bda0164b 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PlasmaLnfViewStep.h" diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index c2ecf9ddd..a98ec4bf5 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PLASMALNFVIEWSTEP_H diff --git a/src/modules/plasmalnf/ThemeInfo.h b/src/modules/plasmalnf/ThemeInfo.h index 432738e17..6848fb8c3 100644 --- a/src/modules/plasmalnf/ThemeInfo.h +++ b/src/modules/plasmalnf/ThemeInfo.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PLASMALNF_THEMEINFO_H diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index 896b28772..8314544eb 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ThemeWidget.h" diff --git a/src/modules/plasmalnf/ThemeWidget.h b/src/modules/plasmalnf/ThemeWidget.h index e3574dfac..133dfc2a0 100644 --- a/src/modules/plasmalnf/ThemeWidget.h +++ b/src/modules/plasmalnf/ThemeWidget.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PLASMALNF_THEMEWIDGET_H diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index 404a4651c..c51314e7f 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2016 Artoo # SPDX-FileCopyrightText: 2017 Alf Gaida @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index afff84050..d19645089 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 7262630e0..7fe9a97ae 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -1,8 +1,7 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * */ diff --git a/src/modules/preservefiles/PreserveFiles.h b/src/modules/preservefiles/PreserveFiles.h index fdba933fa..d2b7373e2 100644 --- a/src/modules/preservefiles/PreserveFiles.h +++ b/src/modules/preservefiles/PreserveFiles.h @@ -1,8 +1,7 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * */ diff --git a/src/modules/rawfs/main.py b/src/modules/rawfs/main.py index cdce1d784..a72ffe19d 100644 --- a/src/modules/rawfs/main.py +++ b/src/modules/rawfs/main.py @@ -1,23 +1,13 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2019 Collabora Ltd # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares import os diff --git a/src/modules/removeuser/CMakeLists.txt b/src/modules/removeuser/CMakeLists.txt index 7818926c5..cf4243e7d 100644 --- a/src/modules/removeuser/CMakeLists.txt +++ b/src/modules/removeuser/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/removeuser/RemoveUserJob.cpp b/src/modules/removeuser/RemoveUserJob.cpp index 221f4f5ec..9475b9bea 100644 --- a/src/modules/removeuser/RemoveUserJob.cpp +++ b/src/modules/removeuser/RemoveUserJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Alf Gaida * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "RemoveUserJob.h" diff --git a/src/modules/removeuser/RemoveUserJob.h b/src/modules/removeuser/RemoveUserJob.h index 25c5c8e73..8f7de35e0 100644 --- a/src/modules/removeuser/RemoveUserJob.h +++ b/src/modules/removeuser/RemoveUserJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef REMOVEUSERJOB_H diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index f89369a7f..cb1ae8020 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2016 Artoo # SPDX-FileCopyrightText: 2017 Philip Müller @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares diff --git a/src/modules/services-systemd/main.py b/src/modules/services-systemd/main.py index 8932bc7e5..e3d3e20a5 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Philip Müller # SPDX-FileCopyrightText: 2014 Teo Mrnjavac @@ -9,18 +9,8 @@ # SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import libcalamares diff --git a/src/modules/shellprocess/CMakeLists.txt b/src/modules/shellprocess/CMakeLists.txt index 5804f5e35..448be0625 100644 --- a/src/modules/shellprocess/CMakeLists.txt +++ b/src/modules/shellprocess/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/shellprocess/ShellProcessJob.cpp b/src/modules/shellprocess/ShellProcessJob.cpp index bbc79934c..ab00a0bdd 100644 --- a/src/modules/shellprocess/ShellProcessJob.cpp +++ b/src/modules/shellprocess/ShellProcessJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ShellProcessJob.h" diff --git a/src/modules/shellprocess/ShellProcessJob.h b/src/modules/shellprocess/ShellProcessJob.h index 956f7b0c8..c63a7b91f 100644 --- a/src/modules/shellprocess/ShellProcessJob.h +++ b/src/modules/shellprocess/ShellProcessJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SHELLPROCESSJOB_H diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index 434520cca..77368db48 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Tests.h" diff --git a/src/modules/shellprocess/Tests.h b/src/modules/shellprocess/Tests.h index 76b05563b..cabeaada2 100644 --- a/src/modules/shellprocess/Tests.h +++ b/src/modules/shellprocess/Tests.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TESTS_H diff --git a/src/modules/summary/CMakeLists.txt b/src/modules/summary/CMakeLists.txt index 9aad8b8ac..57dc731cb 100644 --- a/src/modules/summary/CMakeLists.txt +++ b/src/modules/summary/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp index ebcde6a2c..d6917d962 100644 --- a/src/modules/summary/SummaryPage.cpp +++ b/src/modules/summary/SummaryPage.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 2019, Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SummaryPage.h" diff --git a/src/modules/summary/SummaryPage.h b/src/modules/summary/SummaryPage.h index 6d0148760..1adb67017 100644 --- a/src/modules/summary/SummaryPage.h +++ b/src/modules/summary/SummaryPage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SUMMARYPAGE_H diff --git a/src/modules/summary/SummaryViewStep.cpp b/src/modules/summary/SummaryViewStep.cpp index da0e10e1e..c5b6841ed 100644 --- a/src/modules/summary/SummaryViewStep.cpp +++ b/src/modules/summary/SummaryViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SummaryViewStep.h" diff --git a/src/modules/summary/SummaryViewStep.h b/src/modules/summary/SummaryViewStep.h index 3e23199ca..0a2933d8b 100644 --- a/src/modules/summary/SummaryViewStep.h +++ b/src/modules/summary/SummaryViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SUMMARYPAGEPLUGIN_H diff --git a/src/modules/tracking/CMakeLists.txt b/src/modules/tracking/CMakeLists.txt index 25df2b7ac..fe0b315e3 100644 --- a/src/modules/tracking/CMakeLists.txt +++ b/src/modules/tracking/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/tracking/Config.cpp b/src/modules/tracking/Config.cpp index c840d541c..f1f61edfd 100644 --- a/src/modules/tracking/Config.cpp +++ b/src/modules/tracking/Config.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/tracking/Config.h b/src/modules/tracking/Config.h index 787a92dc5..655a71410 100644 --- a/src/modules/tracking/Config.h +++ b/src/modules/tracking/Config.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TRACKING_CONFIG_H diff --git a/src/modules/tracking/Tests.cpp b/src/modules/tracking/Tests.cpp index 0fed06947..661d83273 100644 --- a/src/modules/tracking/Tests.cpp +++ b/src/modules/tracking/Tests.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index f4ee504e2..dba6000e1 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "TrackingJobs.h" diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index d87deb412..b58880f00 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TRACKING_TRACKINGJOBS_H diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 2644b0cd0..ffdb8be66 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "TrackingPage.h" diff --git a/src/modules/tracking/TrackingPage.h b/src/modules/tracking/TrackingPage.h index 7600019bd..eb843b755 100644 --- a/src/modules/tracking/TrackingPage.h +++ b/src/modules/tracking/TrackingPage.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TRACKINGPAGE_H diff --git a/src/modules/tracking/TrackingType.h b/src/modules/tracking/TrackingType.h index 15c9cc792..81af34688 100644 --- a/src/modules/tracking/TrackingType.h +++ b/src/modules/tracking/TrackingType.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TRACKINGTYPE_H diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index ce32bb2e6..7955846c3 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "TrackingViewStep.h" diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index 335fc77d0..7b27dbec6 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef TRACKINGVIEWSTEP_H diff --git a/src/modules/umount/main.py b/src/modules/umount/main.py index ea0976453..86ab1599a 100644 --- a/src/modules/umount/main.py +++ b/src/modules/umount/main.py @@ -1,25 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Aurélien Gâteau # SPDX-FileCopyrightText: 2016 Anke Boersma # SPDX-FileCopyrightText: 2018 Adriaan de Groot # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import subprocess diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index bd69125a1..d89607465 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2014 Teo Mrnjavac # SPDX-FileCopyrightText: 2014 Daniel Hillenbrand @@ -12,18 +12,8 @@ # SPDX-FileCopyrightText: 2020 Gabriel Craciunescu # SPDX-License-Identifier: GPL-3.0-or-later # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Calamares. If not, see . import os import re diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 8f5424827..5752ae67a 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index 7bce0c09f..9332c6080 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later @@ -7,18 +7,8 @@ * GPL-3.0-or-later (libpwquality is BSD-3-clause or GPL-2.0-or-later, * so we pick GPL-3.0-or-later). * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CheckPWQuality.h" diff --git a/src/modules/users/CheckPWQuality.h b/src/modules/users/CheckPWQuality.h index 80dc809fe..6d7fb56df 100644 --- a/src/modules/users/CheckPWQuality.h +++ b/src/modules/users/CheckPWQuality.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CHECKPWQUALITY_H diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 322884c0e..5ce8c8ed1 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h index 1e2a4c639..33e82cd89 100644 --- a/src/modules/users/Config.h +++ b/src/modules/users/Config.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef USERS_CONFIG_H diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 0f08b1700..24b0f36d1 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot diff --git a/src/modules/users/CreateUserJob.h b/src/modules/users/CreateUserJob.h index b5d3e9490..0a46198b9 100644 --- a/src/modules/users/CreateUserJob.h +++ b/src/modules/users/CreateUserJob.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CREATEUSERJOB_H diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index ff69c64a9..be86ad6ab 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Rohan Garg * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetHostNameJob.h" diff --git a/src/modules/users/SetHostNameJob.h b/src/modules/users/SetHostNameJob.h index 4cc29c9ac..9d44579cb 100644 --- a/src/modules/users/SetHostNameJob.h +++ b/src/modules/users/SetHostNameJob.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Rohan Garg * SPDX-FileCopyrightText: 2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SETHOSTNAMEJOB_CPP_H diff --git a/src/modules/users/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 78efd3efc..dd2fdc244 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetPasswordJob.h" diff --git a/src/modules/users/SetPasswordJob.h b/src/modules/users/SetPasswordJob.h index aa1af0417..aa75a86e1 100644 --- a/src/modules/users/SetPasswordJob.h +++ b/src/modules/users/SetPasswordJob.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef SETPASSWORDJOB_H diff --git a/src/modules/users/TestCreateUserJob.cpp b/src/modules/users/TestCreateUserJob.cpp index 93dc8967e..a801baf45 100644 --- a/src/modules/users/TestCreateUserJob.cpp +++ b/src/modules/users/TestCreateUserJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CreateUserJob.h" diff --git a/src/modules/users/TestPasswordJob.cpp b/src/modules/users/TestPasswordJob.cpp index 8677f88c2..1409e37b6 100644 --- a/src/modules/users/TestPasswordJob.cpp +++ b/src/modules/users/TestPasswordJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetPasswordJob.h" diff --git a/src/modules/users/TestSetHostNameJob.cpp b/src/modules/users/TestSetHostNameJob.cpp index 0e887a5f1..17061037f 100644 --- a/src/modules/users/TestSetHostNameJob.cpp +++ b/src/modules/users/TestSetHostNameJob.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "SetHostNameJob.h" diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index f0fc91165..c92391d21 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 3e04ff7a7..2418b319e 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -10,18 +10,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "UsersPage.h" diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 9c3998feb..f4d2c47d4 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2007 Free Software Foundation, Inc. * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac @@ -9,18 +9,8 @@ * by Roland Singer * Copyright (C) 2007 Free Software Foundation, Inc. * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef USERSPAGE_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 3b2b7152f..df823df06 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "UsersViewStep.h" diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index 6f6baf58b..a03948adf 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef USERSPAGEPLUGIN_H diff --git a/src/modules/usersq/CMakeLists.txt b/src/modules/usersq/CMakeLists.txt index 8fb0a282c..26c270bfb 100644 --- a/src/modules/usersq/CMakeLists.txt +++ b/src/modules/usersq/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/usersq/UsersQmlViewStep.cpp b/src/modules/usersq/UsersQmlViewStep.cpp index 1c011e9b6..15c542e38 100644 --- a/src/modules/usersq/UsersQmlViewStep.cpp +++ b/src/modules/usersq/UsersQmlViewStep.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2020 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "UsersQmlViewStep.h" diff --git a/src/modules/usersq/UsersQmlViewStep.h b/src/modules/usersq/UsersQmlViewStep.h index 2a3c1a6c5..b3d474e65 100644 --- a/src/modules/usersq/UsersQmlViewStep.h +++ b/src/modules/usersq/UsersQmlViewStep.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Camilo Higuita * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef USERSQMLVIEWSTEP_H diff --git a/src/modules/usersq/usersq.qml b/src/modules/usersq/usersq.qml index 64cbea85e..dcc4aa76a 100644 --- a/src/modules/usersq/usersq.qml +++ b/src/modules/usersq/usersq.qml @@ -1,21 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.core 1.0 @@ -32,7 +21,7 @@ Kirigami.ScrollablePage { width: parent.width height: parent.height - + Kirigami.Theme.backgroundColor: "#EFF0F1" Kirigami.Theme.textColor: "#1F1F1F" @@ -219,7 +208,7 @@ Kirigami.ScrollablePage { color: "#6D6D6D" } } - + CheckBox { visible: config.allowWeakPasswords @@ -256,7 +245,7 @@ Kirigami.ScrollablePage { //checked: false onToggled: config.reuseUserPasswordForRoot = !config.reuseUserPasswordForRoot } - + Label { visible: root.checked diff --git a/src/modules/webview/CMakeLists.txt b/src/modules/webview/CMakeLists.txt index 3a08f3237..8de5e690c 100644 --- a/src/modules/webview/CMakeLists.txt +++ b/src/modules/webview/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/webview/WebViewStep.cpp b/src/modules/webview/WebViewStep.cpp index 671156737..db8439775 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Rohan Garg * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "WebViewConfig.h" diff --git a/src/modules/webview/WebViewStep.h b/src/modules/webview/WebViewStep.h index 9f6658cdc..caeed07eb 100644 --- a/src/modules/webview/WebViewStep.h +++ b/src/modules/webview/WebViewStep.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015 Rohan Garg * SPDX-FileCopyrightText: 2016 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WEBVIEWPLUGIN_H diff --git a/src/modules/welcome/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index 0620627a2..a468af102 100644 --- a/src/modules/welcome/CMakeLists.txt +++ b/src/modules/welcome/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp index d9f4ca19c..d4641562a 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "Config.h" diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index b248f81c8..a3f1276a6 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WELCOME_CONFIG_H diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 0f22631d3..ddceec4a3 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2015 Anke Boersma * SPDX-FileCopyrightText: 2017-2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "WelcomePage.h" diff --git a/src/modules/welcome/WelcomePage.h b/src/modules/welcome/WelcomePage.h index 07bea6d76..04c17d25f 100644 --- a/src/modules/welcome/WelcomePage.h +++ b/src/modules/welcome/WelcomePage.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WELCOMEPAGE_H diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index 7cf5e744a..2a0d57bc4 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "WelcomeViewStep.h" diff --git a/src/modules/welcome/WelcomeViewStep.h b/src/modules/welcome/WelcomeViewStep.h index c28dc335e..16eec6d29 100644 --- a/src/modules/welcome/WelcomeViewStep.h +++ b/src/modules/welcome/WelcomeViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WELCOMEVIEWSTEP_H diff --git a/src/modules/welcome/checker/CheckerContainer.cpp b/src/modules/welcome/checker/CheckerContainer.cpp index 58c9396fa..0dcd820a3 100644 --- a/src/modules/welcome/checker/CheckerContainer.cpp +++ b/src/modules/welcome/checker/CheckerContainer.cpp @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* Based on code extracted from RequirementsChecker.cpp */ diff --git a/src/modules/welcome/checker/CheckerContainer.h b/src/modules/welcome/checker/CheckerContainer.h index 58358519f..c721f2b36 100644 --- a/src/modules/welcome/checker/CheckerContainer.h +++ b/src/modules/welcome/checker/CheckerContainer.h @@ -1,22 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-FileCopyrightText: 2017 Gabriel Craciunescu * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* Based on code extracted from RequirementsChecker.cpp */ diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp index 32d971b6d..66a9f5ed7 100644 --- a/src/modules/welcome/checker/GeneralRequirements.cpp +++ b/src/modules/welcome/checker/GeneralRequirements.cpp @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017-2018 2020, Adriaan de Groot @@ -6,18 +6,8 @@ * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "GeneralRequirements.h" diff --git a/src/modules/welcome/checker/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h index a0a302054..b6646da11 100644 --- a/src/modules/welcome/checker/GeneralRequirements.h +++ b/src/modules/welcome/checker/GeneralRequirements.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2017 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef GENERALREQUIREMENTS_H diff --git a/src/modules/welcome/checker/ResultWidget.cpp b/src/modules/welcome/checker/ResultWidget.cpp index b86cd23b0..ef3a7fdc1 100644 --- a/src/modules/welcome/checker/ResultWidget.cpp +++ b/src/modules/welcome/checker/ResultWidget.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResultWidget.h" diff --git a/src/modules/welcome/checker/ResultWidget.h b/src/modules/welcome/checker/ResultWidget.h index a56ed66e8..d77c0d9bb 100644 --- a/src/modules/welcome/checker/ResultWidget.h +++ b/src/modules/welcome/checker/ResultWidget.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CHECKER_RESULTWIDGET_H diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp index 7286dd256..1ad2c1b29 100644 --- a/src/modules/welcome/checker/ResultsListWidget.cpp +++ b/src/modules/welcome/checker/ResultsListWidget.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "ResultsListWidget.h" diff --git a/src/modules/welcome/checker/ResultsListWidget.h b/src/modules/welcome/checker/ResultsListWidget.h index a93cc2371..aa6c62258 100644 --- a/src/modules/welcome/checker/ResultsListWidget.h +++ b/src/modules/welcome/checker/ResultsListWidget.h @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef CHECKER_RESULTSLISTWIDGET_H diff --git a/src/modules/welcome/checker/partman_devices.c b/src/modules/welcome/checker/partman_devices.c index 040c584ba..7cde7a86d 100644 --- a/src/modules/welcome/checker/partman_devices.c +++ b/src/modules/welcome/checker/partman_devices.c @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later @@ -6,18 +6,8 @@ * Based on parted_devices.c, from partman-base. * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* This is third-party ancient C code. Don't format it. */ diff --git a/src/modules/welcome/checker/partman_devices.h b/src/modules/welcome/checker/partman_devices.h index 9c14cda78..14d1edc75 100644 --- a/src/modules/welcome/checker/partman_devices.h +++ b/src/modules/welcome/checker/partman_devices.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014 Teo Mrnjavac * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef PARTMAN_DEVICES_H diff --git a/src/modules/welcomeq/CMakeLists.txt b/src/modules/welcomeq/CMakeLists.txt index 8e36cd5f1..c9cafe7a8 100644 --- a/src/modules/welcomeq/CMakeLists.txt +++ b/src/modules/welcomeq/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/modules/welcomeq/Recommended.qml b/src/modules/welcomeq/Recommended.qml index cc44c44a9..1afc60950 100644 --- a/src/modules/welcomeq/Recommended.qml +++ b/src/modules/welcomeq/Recommended.qml @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* THIS COMPONENT IS UNUSED -- from the default welcomeq.qml at least */ diff --git a/src/modules/welcomeq/Requirements.qml b/src/modules/welcomeq/Requirements.qml index 415b828d8..159d88446 100644 --- a/src/modules/welcomeq/Requirements.qml +++ b/src/modules/welcomeq/Requirements.qml @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.core 1.0 diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.cpp b/src/modules/welcomeq/WelcomeQmlViewStep.cpp index e76ab3e00..bf30d9915 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.cpp +++ b/src/modules/welcomeq/WelcomeQmlViewStep.cpp @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "WelcomeQmlViewStep.h" diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.h b/src/modules/welcomeq/WelcomeQmlViewStep.h index 6dc06eef4..4c68ea2ae 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.h +++ b/src/modules/welcomeq/WelcomeQmlViewStep.h @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #ifndef WELCOME_QMLVIEWSTEP_H diff --git a/src/modules/welcomeq/about.qml b/src/modules/welcomeq/about.qml index db8a80135..21050c4ea 100644 --- a/src/modules/welcomeq/about.qml +++ b/src/modules/welcomeq/about.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.ui 1.0 diff --git a/src/modules/welcomeq/release_notes.qml b/src/modules/welcomeq/release_notes.qml index cd2ef257d..6da5bc7c9 100644 --- a/src/modules/welcomeq/release_notes.qml +++ b/src/modules/welcomeq/release_notes.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.ui 1.0 diff --git a/src/modules/welcomeq/welcomeq.qml b/src/modules/welcomeq/welcomeq.qml index e749a621c..02b5424c7 100644 --- a/src/modules/welcomeq/welcomeq.qml +++ b/src/modules/welcomeq/welcomeq.qml @@ -1,21 +1,11 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * SPDX-FileCopyrightText: 2020 Anke Boersma * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ import io.calamares.core 1.0 import io.calamares.ui 1.0 diff --git a/src/qml/calamares/CMakeLists.txt b/src/qml/calamares/CMakeLists.txt index b6c2b0048..d74e79ea0 100644 --- a/src/qml/calamares/CMakeLists.txt +++ b/src/qml/calamares/CMakeLists.txt @@ -1,4 +1,4 @@ -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause diff --git a/src/qml/calamares/slideshow/BackButton.qml b/src/qml/calamares/slideshow/BackButton.qml index 4a51f467e..4e420e064 100644 --- a/src/qml/calamares/slideshow/BackButton.qml +++ b/src/qml/calamares/slideshow/BackButton.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ NavButton { diff --git a/src/qml/calamares/slideshow/ForwardButton.qml b/src/qml/calamares/slideshow/ForwardButton.qml index 023f0e56b..7838fab3b 100644 --- a/src/qml/calamares/slideshow/ForwardButton.qml +++ b/src/qml/calamares/slideshow/ForwardButton.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ NavButton { diff --git a/src/qml/calamares/slideshow/NavButton.qml b/src/qml/calamares/slideshow/NavButton.qml index 01537d343..bdb2f402e 100644 --- a/src/qml/calamares/slideshow/NavButton.qml +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* This is a navigation (arrow) button that fades in on hover, and diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index dcfb00949..1eed2e842 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2017 Adriaan de Groot * SPDX-FileCopyrightText: 2016 The Qt Company Ltd. diff --git a/src/qml/calamares/slideshow/Slide.qml b/src/qml/calamares/slideshow/Slide.qml index 0783cc528..9cb9e7381 100644 --- a/src/qml/calamares/slideshow/Slide.qml +++ b/src/qml/calamares/slideshow/Slide.qml @@ -1,4 +1,4 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies). * SPDX-License-Identifier: LGPL-2.1-only diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml index 790471331..d5b2de7be 100644 --- a/src/qml/calamares/slideshow/SlideCounter.qml +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -1,20 +1,10 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2018 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* This control just shows a (non-translated) count of the slides From a2180936efcb8bd79eb734582bb745eafc50ec47 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 25 Aug 2020 23:44:08 +0200 Subject: [PATCH 365/399] CI: apply coding style across the entire codebase again --- lang/txload.cpp | 120 +++++++++++------- src/calamares/CalamaresApplication.cpp | 3 +- src/calamares/CalamaresWindow.h | 2 +- src/calamares/DebugWindow.cpp | 3 +- src/calamares/test_conf.cpp | 25 ++-- src/calamares/testmain.cpp | 5 +- src/libcalamares/geoip/Handler.cpp | 3 +- src/libcalamares/geoip/Handler.h | 6 +- src/libcalamares/locale/TimeZone.cpp | 7 +- src/libcalamares/modulesystem/Module.cpp | 3 +- .../modulesystem/RequirementsModel.cpp | 5 +- src/libcalamares/partition/KPMManager.cpp | 3 +- .../utils/CalamaresUtilsSystem.cpp | 8 +- src/libcalamares/utils/Tests.cpp | 3 +- src/libcalamares/utils/Traits.h | 35 +++-- src/libcalamares/utils/Variant.h | 7 +- src/libcalamaresui/ViewManager.cpp | 2 +- .../modulesystem/ModuleFactory.cpp | 15 ++- .../modulesystem/ModuleManager.cpp | 18 +-- .../modulesystem/ProcessJobModule.cpp | 2 +- .../modulesystem/PythonJobModule.cpp | 2 +- .../modulesystem/PythonQtViewModule.cpp | 2 +- src/libcalamaresui/utils/ImageRegistry.cpp | 2 +- .../viewpages/BlankViewStep.cpp | 2 +- .../viewpages/PythonQtGlobalStorageWrapper.h | 2 +- src/libcalamaresui/viewpages/PythonQtJob.h | 2 +- .../viewpages/PythonQtUtilsWrapper.h | 2 +- src/libcalamaresui/viewpages/QmlViewStep.cpp | 2 +- src/libcalamaresui/viewpages/ViewStep.cpp | 2 +- src/libcalamaresui/widgets/ClickableLabel.cpp | 2 +- .../widgets/FixedAspectRatioLabel.cpp | 2 +- .../widgets/PrettyRadioButton.h | 2 +- src/modules/preservefiles/PreserveFiles.cpp | 3 +- src/modules/tracking/Tests.cpp | 12 +- src/modules/users/SetHostNameJob.cpp | 4 +- src/modules/users/Tests.cpp | 37 +++--- src/modules/users/UsersPage.cpp | 3 +- src/modules/usersq/UsersQmlViewStep.cpp | 6 +- src/modules/usersq/UsersQmlViewStep.h | 9 +- src/modules/webview/WebViewStep.cpp | 2 +- src/modules/welcome/WelcomePage.cpp | 2 +- .../welcome/checker/GeneralRequirements.cpp | 12 +- src/modules/welcome/checker/partman_devices.h | 7 +- src/modules/welcomeq/WelcomeQmlViewStep.cpp | 6 +- 44 files changed, 234 insertions(+), 168 deletions(-) diff --git a/lang/txload.cpp b/lang/txload.cpp index 62dc13e7d..b7d14c8bf 100644 --- a/lang/txload.cpp +++ b/lang/txload.cpp @@ -26,29 +26,31 @@ #include static const char usage[] = "Usage: txload [ ...]\n" - "\n" - "Reads a .ts source file and zero or more .ts \n" - "files, and does a comparison between the translations. Source (English)\n" - "strings that are untranslated are flagged in each of the translation\n" - "files, while differences in the translations are themselves also shown.\n" - "\n" - "Outputs to stdout a human-readable list of differences between the\n" - "translations.\n"; + "\n" + "Reads a .ts source file and zero or more .ts \n" + "files, and does a comparison between the translations. Source (English)\n" + "strings that are untranslated are flagged in each of the translation\n" + "files, while differences in the translations are themselves also shown.\n" + "\n" + "Outputs to stdout a human-readable list of differences between the\n" + "translations.\n"; -bool load_file(const char* filename, QDomDocument& doc) +bool +load_file( const char* filename, QDomDocument& doc ) { - QFile file(filename); + QFile file( filename ); QString err; int err_line, err_column; - if (!file.open(QIODevice::ReadOnly)) + if ( !file.open( QIODevice::ReadOnly ) ) { qDebug() << "Could not open" << filename; return false; } - QByteArray ba( file.read(1024 * 1024) ); + QByteArray ba( file.read( 1024 * 1024 ) ); qDebug() << "Read" << ba.length() << "bytes from" << filename; - if (!doc.setContent(ba, &err, &err_line, &err_column)) { + if ( !doc.setContent( ba, &err, &err_line, &err_column ) ) + { qDebug() << "Could not read" << filename << ':' << err_line << ':' << err_column << ' ' << err; file.close(); return false; @@ -58,15 +60,20 @@ bool load_file(const char* filename, QDomDocument& doc) return true; } -QDomElement find_context(QDomDocument& doc, const QString& name) +QDomElement +find_context( QDomDocument& doc, const QString& name ) { QDomElement top = doc.documentElement(); QDomNode n = top.firstChild(); - while (!n.isNull()) { - if (n.isElement()) { + while ( !n.isNull() ) + { + if ( n.isElement() ) + { QDomElement e = n.toElement(); if ( ( e.tagName() == "context" ) && ( e.firstChildElement( "name" ).text() == name ) ) + { return e; + } } n = n.nextSibling(); } @@ -74,17 +81,22 @@ QDomElement find_context(QDomDocument& doc, const QString& name) return QDomElement(); } -QDomElement find_message(QDomElement& context, const QString& source) +QDomElement +find_message( QDomElement& context, const QString& source ) { QDomNode n = context.firstChild(); - while (!n.isNull()) { - if (n.isElement()) { + while ( !n.isNull() ) + { + if ( n.isElement() ) + { QDomElement e = n.toElement(); if ( e.tagName() == "message" ) { QString msource = e.firstChildElement( "source" ).text(); if ( msource == source ) + { return e; + } } } n = n.nextSibling(); @@ -92,11 +104,14 @@ QDomElement find_message(QDomElement& context, const QString& source) return QDomElement(); } -bool merge_into(QDomElement& origin, QDomElement& alternate) +bool +merge_into( QDomElement& origin, QDomElement& alternate ) { QDomNode n = alternate.firstChild(); - while (!n.isNull()) { - if (n.isElement()) { + while ( !n.isNull() ) + { + if ( n.isElement() ) + { QDomElement alternateMessage = n.toElement(); if ( alternateMessage.tagName() == "message" ) { @@ -119,7 +134,8 @@ bool merge_into(QDomElement& origin, QDomElement& alternate) } if ( !alternateTranslationText.isEmpty() && ( alternateTranslationText != originTranslationText ) ) { - qDebug() << "\n\n\nSource:" << alternateSourceText << "\nTL1:" << originTranslationText << "\nTL2:" << alternateTranslationText; + qDebug() << "\n\n\nSource:" << alternateSourceText << "\nTL1:" << originTranslationText + << "\nTL2:" << alternateTranslationText; } } } @@ -130,12 +146,14 @@ bool merge_into(QDomElement& origin, QDomElement& alternate) } - -bool merge_into(QDomDocument& originDocument, QDomElement& context) +bool +merge_into( QDomDocument& originDocument, QDomElement& context ) { QDomElement name = context.firstChildElement( "name" ); if ( name.isNull() ) + { return false; + } QString contextname = name.text(); QDomElement originContext = find_context( originDocument, contextname ); @@ -148,16 +166,21 @@ bool merge_into(QDomDocument& originDocument, QDomElement& context) return merge_into( originContext, context ); } -bool merge_into(QDomDocument& originDocument, QDomDocument& alternateDocument) +bool +merge_into( QDomDocument& originDocument, QDomDocument& alternateDocument ) { QDomElement top = alternateDocument.documentElement(); QDomNode n = top.firstChild(); - while (!n.isNull()) { - if (n.isElement()) { + while ( !n.isNull() ) + { + if ( n.isElement() ) + { QDomElement e = n.toElement(); if ( e.tagName() == "context" ) if ( !merge_into( originDocument, e ) ) + { return false; + } } n = n.nextSibling(); } @@ -165,39 +188,46 @@ bool merge_into(QDomDocument& originDocument, QDomDocument& alternateDocument) return true; } -int main(int argc, char** argv) +int +main( int argc, char** argv ) { - QCoreApplication a(argc, argv); + QCoreApplication a( argc, argv ); - if (argc < 2) + if ( argc < 2 ) { qWarning() << usage; return 1; } - QDomDocument originDocument("origin"); - if ( !load_file(argv[1], originDocument) ) - return 1; - - for (int i = 2; i < argc; ++i) + QDomDocument originDocument( "origin" ); + if ( !load_file( argv[ 1 ], originDocument ) ) { - QDomDocument alternateDocument("alternate"); - if ( !load_file(argv[i], alternateDocument) ) - return 1; - if ( !merge_into( originDocument, alternateDocument ) ) - return 1; + return 1; } - QString outfilename( argv[1] ); + for ( int i = 2; i < argc; ++i ) + { + QDomDocument alternateDocument( "alternate" ); + if ( !load_file( argv[ i ], alternateDocument ) ) + { + return 1; + } + if ( !merge_into( originDocument, alternateDocument ) ) + { + return 1; + } + } + + QString outfilename( argv[ 1 ] ); outfilename.append( ".new" ); - QFile outfile(outfilename); - if (!outfile.open(QIODevice::WriteOnly)) + QFile outfile( outfilename ); + if ( !outfile.open( QIODevice::WriteOnly ) ) { qDebug() << "Could not open" << outfilename; return 1; } - outfile.write( originDocument.toString(4).toUtf8() ); + outfile.write( originDocument.toString( 4 ).toUtf8() ); outfile.close(); return 0; diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 3f4bf808c..164b3ed5c 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -67,7 +67,8 @@ CalamaresApplication::init() { Logger::setupLogfile(); cDebug() << "Calamares version:" << CALAMARES_VERSION; - cDebug() << Logger::SubEntry << " languages:" << QString( CALAMARES_TRANSLATION_LANGUAGES ).replace( ";", ", " ); + cDebug() << Logger::SubEntry + << " languages:" << QString( CALAMARES_TRANSLATION_LANGUAGES ).replace( ";", ", " ); if ( !Calamares::Settings::instance() ) { diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h index 8eed50ca5..b6e63aa6b 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 { } + virtual ~CalamaresWindow() override {} public slots: /** diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index fecf71ea1..18395400a 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -184,7 +184,8 @@ DebugWindow::DebugWindow() #endif ] { QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); - Module* module = ModuleManager::instance()->moduleInstance( ModuleSystem::InstanceKey::fromString( moduleName ) ); + Module* module + = ModuleManager::instance()->moduleInstance( ModuleSystem::InstanceKey::fromString( moduleName ) ); if ( module ) { m_module = module->configurationMap(); diff --git a/src/calamares/test_conf.cpp b/src/calamares/test_conf.cpp index a1b663468..73b19aa26 100644 --- a/src/calamares/test_conf.cpp +++ b/src/calamares/test_conf.cpp @@ -14,26 +14,29 @@ #include "utils/Yaml.h" -#include #include +#include #include -#include #include +#include using std::cerr; static const char usage[] = "Usage: test_conf [-v] [-b] ...\n"; -int main(int argc, char** argv) +int +main( int argc, char** argv ) { bool verbose = false; bool bytes = false; int opt; - while ((opt = getopt(argc, argv, "vb")) != -1) { - switch (opt) { + while ( ( opt = getopt( argc, argv, "vb" ) ) != -1 ) + { + switch ( opt ) + { case 'v': verbose = true; break; @@ -52,7 +55,7 @@ int main(int argc, char** argv) return 1; } - const char* filename = argv[optind]; + const char* filename = argv[ optind ]; try { YAML::Node doc; @@ -60,10 +63,14 @@ int main(int argc, char** argv) { QFile f( filename ); if ( f.open( QFile::ReadOnly | QFile::Text ) ) + { doc = YAML::Load( f.readAll().constData() ); + } } else + { doc = YAML::LoadFile( filename ); + } if ( doc.IsNull() ) { @@ -86,12 +93,14 @@ int main(int argc, char** argv) { cerr << "Keys:\n"; for ( auto i = doc.begin(); i != doc.end(); ++i ) - cerr << i->first.as() << '\n'; + { + cerr << i->first.as< std::string >() << '\n'; + } } } catch ( YAML::Exception& e ) { - cerr << "WARNING:" << filename << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: YAML parser error " << e.what() << '\n'; return 1; } diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index 7a7967f43..c9d6f7195 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -192,7 +192,7 @@ ExecViewModule::ExecViewModule() // We don't have one, so build one -- this gives us "x@x". QVariantMap m; m.insert( "name", "x" ); - Calamares::Module::initFrom( Calamares::ModuleSystem::Descriptor::fromDescriptorData(m), "x" ); + Calamares::Module::initFrom( Calamares::ModuleSystem::Descriptor::fromDescriptorData( m ), "x" ); } ExecViewModule::~ExecViewModule() {} @@ -323,7 +323,8 @@ load_module( const ModuleConfig& moduleConfig ) cDebug() << "Module" << moduleName << "job-configuration:" << configFile; - Calamares::Module* module = Calamares::moduleFromDescriptor( Calamares::ModuleSystem::Descriptor::fromDescriptorData( descriptor ), name, configFile, moduleDirectory ); + Calamares::Module* module = Calamares::moduleFromDescriptor( + Calamares::ModuleSystem::Descriptor::fromDescriptorData( descriptor ), name, configFile, moduleDirectory ); return module; } diff --git a/src/libcalamares/geoip/Handler.cpp b/src/libcalamares/geoip/Handler.cpp index 6825fa5fe..d954b8fc0 100644 --- a/src/libcalamares/geoip/Handler.cpp +++ b/src/libcalamares/geoip/Handler.cpp @@ -67,7 +67,8 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri { cWarning() << "GeoIP style *none* does not do anything."; } - else if ( m_type == Type::Fixed && Calamares::Settings::instance() && !Calamares::Settings::instance()->debugMode() ) + else if ( m_type == Type::Fixed && Calamares::Settings::instance() + && !Calamares::Settings::instance()->debugMode() ) { cWarning() << "GeoIP style *fixed* is not recommended for production."; } diff --git a/src/libcalamares/geoip/Handler.h b/src/libcalamares/geoip/Handler.h index 03133978c..e13198b94 100644 --- a/src/libcalamares/geoip/Handler.h +++ b/src/libcalamares/geoip/Handler.h @@ -34,10 +34,10 @@ class DLLEXPORT Handler public: enum class Type { - None, // No lookup, returns empty string - JSON, // JSON-formatted data, returns extracted field + None, // No lookup, returns empty string + JSON, // JSON-formatted data, returns extracted field XML, // XML-formatted data, returns extracted field - Fixed // Returns selector string verbatim + Fixed // Returns selector string verbatim }; /** @brief An unconfigured handler; this always returns errors. */ diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index c33705682..b9dbac5ee 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -358,7 +358,9 @@ ZonesModel::find( const QString& region, const QString& zone ) const } STATICTEST const TimeZoneData* -find( double startingDistance, const ZoneVector& zones, const std::function< double( const TimeZoneData* ) >& distanceFunc ) +find( double startingDistance, + const ZoneVector& zones, + const std::function< double( const TimeZoneData* ) >& distanceFunc ) { double smallestDistance = startingDistance; const TimeZoneData* closest = nullptr; @@ -379,7 +381,8 @@ const TimeZoneData* ZonesModel::find( const std::function< double( const TimeZoneData* ) >& distanceFunc ) const { const auto* officialZone = CalamaresUtils::Locale::find( 1000000.0, m_private->m_zones, distanceFunc ); - const auto* altZone = CalamaresUtils::Locale::find( distanceFunc( officialZone ), m_private->m_altZones, distanceFunc ); + const auto* altZone + = CalamaresUtils::Locale::find( distanceFunc( officialZone ), m_private->m_altZones, distanceFunc ); // If nothing was closer than the official zone already was, altZone is // nullptr; but if there is a spot-patch, then we need to re-find diff --git a/src/libcalamares/modulesystem/Module.cpp b/src/libcalamares/modulesystem/Module.cpp index ff0b20f78..94888f240 100644 --- a/src/libcalamares/modulesystem/Module.cpp +++ b/src/libcalamares/modulesystem/Module.cpp @@ -86,8 +86,7 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c return paths; } -void -Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception +void Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception { QStringList configCandidates = moduleConfigurationCandidates( Settings::instance()->debugMode(), name(), configFileName ); diff --git a/src/libcalamares/modulesystem/RequirementsModel.cpp b/src/libcalamares/modulesystem/RequirementsModel.cpp index 5fd886864..9dfab0c8f 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.cpp +++ b/src/libcalamares/modulesystem/RequirementsModel.cpp @@ -89,9 +89,8 @@ RequirementsModel::describe() const int count = 0; for ( const auto& r : m_requirements ) { - cDebug() << Logger::SubEntry << "requirement" << count << r.name - << "satisfied?" << r.satisfied - << "mandatory?" << r.mandatory; + cDebug() << Logger::SubEntry << "requirement" << count << r.name << "satisfied?" << r.satisfied << "mandatory?" + << r.mandatory; if ( r.mandatory && !r.satisfied ) { acceptable = false; diff --git a/src/libcalamares/partition/KPMManager.cpp b/src/libcalamares/partition/KPMManager.cpp index 6c49f8102..60a129951 100644 --- a/src/libcalamares/partition/KPMManager.cpp +++ b/src/libcalamares/partition/KPMManager.cpp @@ -62,7 +62,8 @@ InternalManager::InternalManager() else { auto* backend_p = CoreBackendManager::self()->backend(); - cDebug() << Logger::SubEntry << "Backend" << Logger::Pointer(backend_p) << backend_p->id() << backend_p->version(); + cDebug() << Logger::SubEntry << "Backend" << Logger::Pointer( backend_p ) << backend_p->id() + << backend_p->version(); s_kpm_loaded = true; } } diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index ff5590506..8be7a16f9 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -187,7 +187,8 @@ System::runCommand( System::RunLocation location, ? ( static_cast< int >( std::chrono::milliseconds( timeoutSec ).count() ) ) : -1 ) ) { - cWarning() << "Process" << args.first() << "timed out after" << timeoutSec.count() << "s. Output so far:\n" << Logger::NoQuote{} << process.readAllStandardOutput(); + cWarning() << "Process" << args.first() << "timed out after" << timeoutSec.count() << "s. Output so far:\n" + << Logger::NoQuote {} << process.readAllStandardOutput(); return ProcessResult::Code::TimedOut; } @@ -195,7 +196,7 @@ System::runCommand( System::RunLocation location, if ( process.exitStatus() == QProcess::CrashExit ) { - cWarning() << "Process" << args.first() << "crashed. Output so far:\n" << Logger::NoQuote{} << output; + cWarning() << "Process" << args.first() << "crashed. Output so far:\n" << Logger::NoQuote {} << output; return ProcessResult::Code::Crashed; } @@ -204,7 +205,8 @@ System::runCommand( System::RunLocation location, bool showDebug = ( !Calamares::Settings::instance() ) || ( Calamares::Settings::instance()->debugMode() ); if ( ( r != 0 ) || showDebug ) { - cDebug() << Logger::SubEntry << "Target cmd:" << RedactedList( args ) << "output:\n" << Logger::NoQuote{} << output; + cDebug() << Logger::SubEntry << "Target cmd:" << RedactedList( args ) << "output:\n" + << Logger::NoQuote {} << output; } return ProcessResult( r, output ); } diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 644e03cf2..0d9892d76 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -412,7 +412,8 @@ LibCalamaresTests::testVariantStringListCode() m.insert( key, 17 ); QCOMPARE( getStringList( m, key ), QStringList {} ); m.insert( key, QString( "more strings" ) ); - QCOMPARE( getStringList( m, key ), QStringList { "more strings" } ); // A single string **can** be considered a stringlist! + QCOMPARE( getStringList( m, key ), + QStringList { "more strings" } ); // A single string **can** be considered a stringlist! m.insert( key, QVariant {} ); QCOMPARE( getStringList( m, key ), QStringList {} ); } diff --git a/src/libcalamares/utils/Traits.h b/src/libcalamares/utils/Traits.h index 1970aa833..8d7eda4a9 100644 --- a/src/libcalamares/utils/Traits.h +++ b/src/libcalamares/utils/Traits.h @@ -49,17 +49,30 @@ namespace CalamaresUtils */ namespace Traits { -template< class > struct sfinae_true : std::true_type{}; -} -} +template < class > +struct sfinae_true : std::true_type +{ +}; +} // namespace Traits +} // namespace CalamaresUtils -#define DECLARE_HAS_METHOD(m) \ - namespace CalamaresUtils { namespace Traits { \ - struct has_ ## m { \ - template< class T > static auto f(int) -> sfinae_true; \ - template< class T > static auto f(long) -> std::false_type; \ - template< class T > using t = decltype( f (0) ); \ - }; } } \ - template< class T > using has_ ## m = CalamaresUtils::Traits:: has_ ## m ::t; +#define DECLARE_HAS_METHOD( m ) \ + namespace CalamaresUtils \ + { \ + namespace Traits \ + { \ + struct has_##m \ + { \ + template < class T > \ + static auto f( int ) -> sfinae_true< decltype( &T::m ) >; \ + template < class T > \ + static auto f( long ) -> std::false_type; \ + template < class T > \ + using t = decltype( f< T >( 0 ) ); \ + }; \ + } \ + } \ + template < class T > \ + using has_##m = CalamaresUtils::Traits::has_##m ::t< T >; #endif diff --git a/src/libcalamares/utils/Variant.h b/src/libcalamares/utils/Variant.h index 60ff1ff01..e1261f877 100644 --- a/src/libcalamares/utils/Variant.h +++ b/src/libcalamares/utils/Variant.h @@ -38,7 +38,7 @@ DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, /** * Get an integer value from a mapping with a given key; returns @p d if no value. */ -DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d = 0); +DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d = 0 ); /** * Get an unsigned integer value from a mapping with a given key; returns @p d if no value. @@ -58,7 +58,10 @@ DLLEXPORT double getDouble( const QVariantMap& map, const QString& key, double d * Returns @p d if there is no such key or it is not a map-value. * (e.g. if @p success is false). */ -DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success, const QVariantMap& d = QVariantMap() ); +DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, + const QString& key, + bool& success, + const QVariantMap& d = QVariantMap() ); } // namespace CalamaresUtils #endif diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index efa455dea..8094e5223 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -180,7 +180,7 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail msgBox->show(); cDebug() << "Calamares will quit when the dialog closes."; - connect( msgBox, &QMessageBox::buttonClicked, [ msgBox ]( QAbstractButton* button ) { + connect( msgBox, &QMessageBox::buttonClicked, [msgBox]( QAbstractButton* button ) { if ( msgBox->buttonRole( button ) == QMessageBox::ButtonRole::YesRole ) { // TODO: host and port should be configurable diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.cpp b/src/libcalamaresui/modulesystem/ModuleFactory.cpp index 7d4dd1960..a7193d3f5 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.cpp +++ b/src/libcalamaresui/modulesystem/ModuleFactory.cpp @@ -48,7 +48,8 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto std::unique_ptr< Module > m; - if ( !moduleDescriptor.isValid() ) { + if ( !moduleDescriptor.isValid() ) + { cError() << "Bad module descriptor format" << instanceId; return nullptr; } @@ -68,7 +69,9 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto } else { - cError() << "Bad interface" << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); + cError() << "Bad interface" + << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) + << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); } } else if ( moduleDescriptor.type() == Type::Job ) @@ -91,7 +94,9 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto } else { - cError() << "Bad interface" << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); + cError() << "Bad interface" + << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) + << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); } } else @@ -101,7 +106,9 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto if ( !m ) { - cError() << "Bad module type (" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ) << ") or interface string (" << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) << ") for module " + cError() << "Bad module type (" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ) + << ") or interface string (" + << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) << ") for module " << instanceId; return nullptr; } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 9e84cf646..8c0f21f58 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -104,8 +104,9 @@ ModuleManager::doInit() if ( ok && !moduleName.isEmpty() && ( moduleName == currentDir.dirName() ) && !m_availableDescriptorsByModuleName.contains( moduleName ) ) { - auto descriptor = Calamares::ModuleSystem::Descriptor::fromDescriptorData( moduleDescriptorMap ); - descriptor.setDirectory(descriptorFileInfo.absoluteDir().absolutePath() ); + auto descriptor + = Calamares::ModuleSystem::Descriptor::fromDescriptorData( moduleDescriptorMap ); + descriptor.setDirectory( descriptorFileInfo.absoluteDir().absolutePath() ); m_availableDescriptorsByModuleName.insert( moduleName, descriptor ); } } @@ -243,11 +244,8 @@ ModuleManager::loadModules() } else { - thisModule - = Calamares::moduleFromDescriptor( descriptor, - instanceKey.id(), - configFileName, - descriptor.directory() ); + thisModule = Calamares::moduleFromDescriptor( + descriptor, instanceKey.id(), configFileName, descriptor.directory() ); if ( !thisModule ) { cError() << "Module" << instanceKey.toString() << "cannot be created from descriptor" @@ -375,8 +373,7 @@ ModuleManager::checkDependencies() for ( auto it = m_availableDescriptorsByModuleName.begin(); it != m_availableDescriptorsByModuleName.end(); ++it ) { - QStringList unmet = missingRequiredModules( it->requiredModules(), - m_availableDescriptorsByModuleName ); + QStringList unmet = missingRequiredModules( it->requiredModules(), m_availableDescriptorsByModuleName ); if ( unmet.count() > 0 ) { @@ -403,8 +400,7 @@ ModuleManager::checkModuleDependencies( const Module& m ) } bool allRequirementsFound = true; - QStringList requiredModules - = m_availableDescriptorsByModuleName[ m.name() ].requiredModules(); + QStringList requiredModules = m_availableDescriptorsByModuleName[ m.name() ].requiredModules(); for ( const QString& required : requiredModules ) { diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index 0414048ca..2671d0899 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -71,7 +71,7 @@ ProcessJobModule::ProcessJobModule() } -ProcessJobModule::~ProcessJobModule() { } +ProcessJobModule::~ProcessJobModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index 67223b655..20f8215d2 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -67,7 +67,7 @@ PythonJobModule::PythonJobModule() } -PythonJobModule::~PythonJobModule() { } +PythonJobModule::~PythonJobModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index 638fdfc79..ae2b2915f 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -179,6 +179,6 @@ PythonQtViewModule::PythonQtViewModule() { } -PythonQtViewModule::~PythonQtViewModule() { } +PythonQtViewModule::~PythonQtViewModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp index 3fdecccef..ffc65300e 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -23,7 +23,7 @@ ImageRegistry::instance() } -ImageRegistry::ImageRegistry() { } +ImageRegistry::ImageRegistry() {} QIcon diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp index 1fbeaeef0..ea51e3f02 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -53,7 +53,7 @@ BlankViewStep::BlankViewStep( const QString& title, m_widget->setLayout( layout ); } -BlankViewStep::~BlankViewStep() { } +BlankViewStep::~BlankViewStep() {} QString BlankViewStep::prettyName() const diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h index 2a8f6af99..5d1282d0f 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -31,7 +31,7 @@ class GlobalStorage : public QObject Q_OBJECT public: explicit GlobalStorage( Calamares::GlobalStorage* gs ); - virtual ~GlobalStorage() { } + virtual ~GlobalStorage() {} public slots: bool contains( const QString& key ) const; diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h index 5d591c74e..4d48921e1 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.h +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -35,7 +35,7 @@ class PythonQtJob : public Calamares::Job { Q_OBJECT public: - virtual ~PythonQtJob() { } + virtual ~PythonQtJob() {} QString prettyName() const override; QString prettyDescription() const override; diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h index e7c8c0660..e39249185 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -24,7 +24,7 @@ class Utils : public QObject Q_OBJECT public: explicit Utils( QObject* parent = nullptr ); - virtual ~Utils() { } + virtual ~Utils() {} public slots: void debug( const QString& s ) const; diff --git a/src/libcalamaresui/viewpages/QmlViewStep.cpp b/src/libcalamaresui/viewpages/QmlViewStep.cpp index 4ea20ba32..17a1ea79c 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.cpp +++ b/src/libcalamaresui/viewpages/QmlViewStep.cpp @@ -79,7 +79,7 @@ QmlViewStep::QmlViewStep( QObject* parent ) // QML Loading starts when the configuration for the module is set. } -QmlViewStep::~QmlViewStep() { } +QmlViewStep::~QmlViewStep() {} QString QmlViewStep::prettyName() const diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index e76dc915b..26c7ee778 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -22,7 +22,7 @@ ViewStep::ViewStep( QObject* parent ) } -ViewStep::~ViewStep() { } +ViewStep::~ViewStep() {} QString diff --git a/src/libcalamaresui/widgets/ClickableLabel.cpp b/src/libcalamaresui/widgets/ClickableLabel.cpp index 4d2885813..be7b142f1 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -27,7 +27,7 @@ ClickableLabel::ClickableLabel( const QString& text, QWidget* parent ) } -ClickableLabel::~ClickableLabel() { } +ClickableLabel::~ClickableLabel() {} void diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp index 1d496c27f..195aad67e 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -17,7 +17,7 @@ FixedAspectRatioLabel::FixedAspectRatioLabel( QWidget* parent ) } -FixedAspectRatioLabel::~FixedAspectRatioLabel() { } +FixedAspectRatioLabel::~FixedAspectRatioLabel() {} void diff --git a/src/libcalamaresui/widgets/PrettyRadioButton.h b/src/libcalamaresui/widgets/PrettyRadioButton.h index 67ef49ae6..6b158f353 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() { } + virtual ~PrettyRadioButton() {} /// @brief Passes @p text on to the ClickableLabel void setText( const QString& text ); diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 7fe9a97ae..8194b3221 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -202,7 +202,8 @@ PreserveFiles::setConfigurationMap( const QVariantMap& configurationMap ) { QString filename = li.toString(); if ( !filename.isEmpty() ) - m_items.append( Item { filename, filename, CalamaresUtils::Permissions( defaultPermissions ), ItemType::Path } ); + m_items.append( + Item { filename, filename, CalamaresUtils::Permissions( defaultPermissions ), ItemType::Path } ); else { cDebug() << "Empty filename for preservefiles, item" << c; diff --git a/src/modules/tracking/Tests.cpp b/src/modules/tracking/Tests.cpp index 661d83273..c3fe90ad1 100644 --- a/src/modules/tracking/Tests.cpp +++ b/src/modules/tracking/Tests.cpp @@ -8,8 +8,8 @@ #include "utils/Logger.h" -#include #include +#include class TrackingTests : public QObject { @@ -28,17 +28,17 @@ TrackingTests::TrackingTests() { } -TrackingTests::~TrackingTests() -{ -} +TrackingTests::~TrackingTests() {} -void TrackingTests::initTestCase() +void +TrackingTests::initTestCase() { Logger::setupLogLevel( Logger::LOGDEBUG ); cDebug() << "Tracking test started."; } -void TrackingTests::testEmptyConfig() +void +TrackingTests::testEmptyConfig() { Logger::setupLogLevel( Logger::LOGDEBUG ); diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index be86ad6ab..9f81ddfb5 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -16,11 +16,11 @@ #include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" -#include -#include #include #include #include +#include +#include using WriteMode = CalamaresUtils::System::WriteMode; diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index c92391d21..78fa74780 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -106,15 +106,16 @@ UserTests::testDefaultGroups() } } -void UserTests::testDefaultGroupsYAML_data() +void +UserTests::testDefaultGroupsYAML_data() { QTest::addColumn< QString >( "filename" ); - QTest::addColumn< int >("count"); - QTest::addColumn("group"); + QTest::addColumn< int >( "count" ); + QTest::addColumn< QString >( "group" ); - QTest::newRow("users.conf") << "users.conf" << 7 << "video"; - QTest::newRow("dashed list") << "tests/4-audio.conf" << 4 << "audio"; - QTest::newRow("blocked list") << "tests/3-wing.conf" << 3 << "wing"; + QTest::newRow( "users.conf" ) << "users.conf" << 7 << "video"; + QTest::newRow( "dashed list" ) << "tests/4-audio.conf" << 4 << "audio"; + QTest::newRow( "blocked list" ) << "tests/3-wing.conf" << 3 << "wing"; } void @@ -125,23 +126,23 @@ UserTests::testDefaultGroupsYAML() (void)new Calamares::JobQueue(); } - QFETCH(QString, filename); - QFETCH(int, count); - QFETCH(QString, group); + QFETCH( QString, filename ); + QFETCH( int, count ); + QFETCH( QString, group ); - QFile fi( QString("%1/%2").arg(BUILD_AS_TEST, filename) ); - QVERIFY(fi.exists()); + QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) ); + QVERIFY( fi.exists() ); bool ok = false; - const auto map = CalamaresUtils::loadYaml(fi, &ok); - QVERIFY(ok); - QVERIFY(map.count() > 0); + const auto map = CalamaresUtils::loadYaml( fi, &ok ); + QVERIFY( ok ); + QVERIFY( map.count() > 0 ); - Config c; - c.setConfigurationMap(map); + Config c; + c.setConfigurationMap( map ); - QCOMPARE( c.defaultGroups().count(), count); - QVERIFY( c.defaultGroups().contains( group ) ); + QCOMPARE( c.defaultGroups().count(), count ); + QVERIFY( c.defaultGroups().contains( group ) ); } diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 2418b319e..8059b02e1 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -45,7 +45,8 @@ static inline void labelOk( QLabel* pix, QLabel* label ) { label->clear(); - pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::StatusOk, CalamaresUtils::Original, label->size() ) ); + pix->setPixmap( + CalamaresUtils::defaultPixmap( CalamaresUtils::StatusOk, CalamaresUtils::Original, label->size() ) ); } /** @brief Sets error or ok on a label depending on @p status and @p value diff --git a/src/modules/usersq/UsersQmlViewStep.cpp b/src/modules/usersq/UsersQmlViewStep.cpp index 15c542e38..b83c66f45 100644 --- a/src/modules/usersq/UsersQmlViewStep.cpp +++ b/src/modules/usersq/UsersQmlViewStep.cpp @@ -25,8 +25,8 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersQmlViewStepFactory, registerPlugin< UsersQmlViewStep >(); ) UsersQmlViewStep::UsersQmlViewStep( QObject* parent ) -: Calamares::QmlViewStep( parent ) -, m_config( new Config(this) ) + : Calamares::QmlViewStep( parent ) + , m_config( new Config( this ) ) { connect( m_config, &Config::readyChanged, this, &UsersQmlViewStep::nextStatusChanged ); @@ -96,6 +96,6 @@ UsersQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_config->setConfigurationMap( configurationMap ); - Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last + Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last setContextProperty( "Users", m_config ); } diff --git a/src/modules/usersq/UsersQmlViewStep.h b/src/modules/usersq/UsersQmlViewStep.h index b3d474e65..33a1f5754 100644 --- a/src/modules/usersq/UsersQmlViewStep.h +++ b/src/modules/usersq/UsersQmlViewStep.h @@ -19,8 +19,8 @@ #include -#include #include "Config.h" +#include class PLUGINDLLEXPORT UsersQmlViewStep : public Calamares::QmlViewStep { @@ -44,13 +44,10 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; - QObject * getConfig() override - { - return m_config; - } + QObject* getConfig() override { return m_config; } private: - Config *m_config; + Config* m_config; Calamares::JobList m_jobs; }; diff --git a/src/modules/webview/WebViewStep.cpp b/src/modules/webview/WebViewStep.cpp index db8439775..3e3e99c21 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -8,8 +8,8 @@ * */ -#include "WebViewConfig.h" #include "WebViewStep.h" +#include "WebViewConfig.h" #include diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index ddceec4a3..aa9e9d7bb 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -39,7 +39,7 @@ WelcomePage::WelcomePage( Config* conf, QWidget* parent ) : QWidget( parent ) , ui( new Ui::WelcomePage ) - , m_checkingWidget( new CheckerContainer( *(conf->requirementsModel()), this ) ) + , m_checkingWidget( new CheckerContainer( *( conf->requirementsModel() ), this ) ) , m_languages( nullptr ) , m_conf( conf ) { diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp index 66a9f5ed7..a10585af9 100644 --- a/src/modules/welcome/checker/GeneralRequirements.cpp +++ b/src/modules/welcome/checker/GeneralRequirements.cpp @@ -146,10 +146,8 @@ GeneralRequirements::checkRequirements() { checkEntries.append( { entry, - [ req = m_requiredStorageGiB ] { - return tr( "has at least %1 GiB available drive space" ).arg( req ); - }, - [ req = m_requiredStorageGiB ] { + [req = m_requiredStorageGiB] { return tr( "has at least %1 GiB available drive space" ).arg( req ); }, + [req = m_requiredStorageGiB] { return tr( "There is not enough drive space. At least %1 GiB is required." ).arg( req ); }, enoughStorage, @@ -159,8 +157,8 @@ GeneralRequirements::checkRequirements() { checkEntries.append( { entry, - [ req = m_requiredRamGiB ] { return tr( "has at least %1 GiB working memory" ).arg( req ); }, - [ req = m_requiredRamGiB ] { + [req = m_requiredRamGiB] { return tr( "has at least %1 GiB working memory" ).arg( req ); }, + [req = m_requiredRamGiB] { return tr( "The system does not have enough working memory. At least %1 GiB is required." ) .arg( req ); }, @@ -349,7 +347,7 @@ GeneralRequirements::checkEnoughRam( qint64 requiredRam ) // Ignore the guesstimate-factor; we get an under-estimate // which is probably the usable RAM for programs. quint64 availableRam = CalamaresUtils::System::instance()->getTotalMemoryB().first; - return double(availableRam) >= double(requiredRam) * 0.95; // cast to silence 64-bit-int conversion to double + return double( availableRam ) >= double( requiredRam ) * 0.95; // cast to silence 64-bit-int conversion to double } diff --git a/src/modules/welcome/checker/partman_devices.h b/src/modules/welcome/checker/partman_devices.h index 14d1edc75..c894f6534 100644 --- a/src/modules/welcome/checker/partman_devices.h +++ b/src/modules/welcome/checker/partman_devices.h @@ -11,13 +11,14 @@ #define PARTMAN_DEVICES_H #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -int check_big_enough(long long required_space); + int check_big_enough( long long required_space ); #ifdef __cplusplus } // extern "C" #endif -#endif // PARTMAN_DEVICES_H +#endif // PARTMAN_DEVICES_H diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.cpp b/src/modules/welcomeq/WelcomeQmlViewStep.cpp index bf30d9915..af32f2992 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.cpp +++ b/src/modules/welcomeq/WelcomeQmlViewStep.cpp @@ -29,9 +29,9 @@ WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent ) , m_requirementsChecker( new GeneralRequirements( this ) ) { connect( Calamares::ModuleManager::instance(), - &Calamares::ModuleManager::requirementsComplete, - this, - &WelcomeQmlViewStep::nextStatusChanged ); + &Calamares::ModuleManager::requirementsComplete, + this, + &WelcomeQmlViewStep::nextStatusChanged ); } From 7c08f9a03316ea10f44b8fb08f3ab431da2997c5 Mon Sep 17 00:00:00 2001 From: demmm Date: Wed, 26 Aug 2020 13:32:56 +0200 Subject: [PATCH 366/399] [keyboardq] rewrite keyboard.qml no longer use extra qml files better highlighting, updated text, fewer buttons --- src/modules/keyboardq/ListItemDelegate.qml | 63 --- src/modules/keyboardq/ListViewTemplate.qml | 22 - src/modules/keyboardq/ResponsiveBase.qml | 83 ---- src/modules/keyboardq/keyboardq.qml | 486 +++++++++++++++------ src/modules/keyboardq/keyboardq.qrc | 3 - 5 files changed, 347 insertions(+), 310 deletions(-) delete mode 100644 src/modules/keyboardq/ListItemDelegate.qml delete mode 100644 src/modules/keyboardq/ListViewTemplate.qml delete mode 100644 src/modules/keyboardq/ResponsiveBase.qml diff --git a/src/modules/keyboardq/ListItemDelegate.qml b/src/modules/keyboardq/ListItemDelegate.qml deleted file mode 100644 index 2ad10144c..000000000 --- a/src/modules/keyboardq/ListItemDelegate.qml +++ /dev/null @@ -1,63 +0,0 @@ -import io.calamares.ui 1.0 - -import QtQuick 2.10 -import QtQuick.Controls 2.10 -import QtQuick.Layouts 1.3 -import org.kde.kirigami 2.7 as Kirigami - -ItemDelegate { - - id: control - - - property alias label1 : _label1 - property alias label2 : _label2 - - hoverEnabled: true - - property bool isCurrentItem: ListView.isCurrentItem - background: Rectangle { - - color: isCurrentItem || hovered ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor - opacity: isCurrentItem || hovered ? 0.8 : 0.5 - } - - width: 490 //parent.width - height: 36 - - contentItem: RowLayout { - - anchors.fill: parent - anchors.margins: Kirigami.Units.smallSpacing - - Label { - - id: _label1 - Layout.fillHeight: true - Layout.fillWidth: true - horizontalAlignment: Qt.AlignLeft - color: isCurrentItem ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor - } - - Label { - - id: _label2 - visible: text.length - Layout.fillHeight: true - Layout.maximumWidth: parent.width * 0.4 - horizontalAlignment: Qt.AlignRight - color: isCurrentItem ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor - opacity: isCurrentItem ? 1 : 0.7 - font.weight: Font.Light - } - - Kirigami.Icon { - - source: "checkmark" - Layout.preferredWidth: 22 - Layout.preferredHeight: 22 - color: Kirigami.Theme.highlightedTextColor - visible: isCurrentItem - } - } -} diff --git a/src/modules/keyboardq/ListViewTemplate.qml b/src/modules/keyboardq/ListViewTemplate.qml deleted file mode 100644 index 4564b887b..000000000 --- a/src/modules/keyboardq/ListViewTemplate.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.10 -import QtQuick.Layouts 1.3 -import org.kde.kirigami 2.7 as Kirigami - -ListView { - - id: control - - spacing: Kirigami.Units.smallSpacing - clip: true - boundsBehavior: Flickable.StopAtBounds - - Rectangle { - - z: parent.z - 1 - anchors.fill: parent - color: "#BDC3C7" - radius: 5 - opacity: 0.7 - } -} diff --git a/src/modules/keyboardq/ResponsiveBase.qml b/src/modules/keyboardq/ResponsiveBase.qml deleted file mode 100644 index 38fa15d1b..000000000 --- a/src/modules/keyboardq/ResponsiveBase.qml +++ /dev/null @@ -1,83 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.10 -import QtQuick.Layouts 1.3 -import org.kde.kirigami 2.7 as Kirigami -import QtGraphicalEffects 1.0 - -import io.calamares.ui 1.0 -import io.calamares.core 1.0 - -Page { - - id: control - width: 800 //parent.width - height: 550 //parent.height - - Kirigami.Theme.backgroundColor: "#FAFAFA" - Kirigami.Theme.textColor: "#1F1F1F" - - property string subtitle - property string message - - default property alias content : _content.data - property alias stackView: _stackView - - ColumnLayout { - - id: _content - - anchors.fill: parent - spacing: Kirigami.Units.smallSpacing * 5 - anchors.margins: Kirigami.Units.smallSpacing * 5 - anchors.bottomMargin: 20 - - Label { - - Layout.fillWidth: true - Layout.preferredHeight: Math.min(implicitHeight, 200) - horizontalAlignment: Qt.AlignHCenter - wrapMode: Text.NoWrap - elide: Text.ElideMiddle - text: control.title - color: Kirigami.Theme.textColor - font.bold: true - font.weight: Font.Bold - font.pointSize: 24 - } - - Label { - - Layout.fillWidth: true - Layout.preferredHeight: Math.min(implicitHeight, 200) - horizontalAlignment: Qt.AlignHCenter - wrapMode: Text.Wrap - elide: Text.ElideMiddle - text: control.subtitle - color: Kirigami.Theme.textColor - font.weight: Font.Light - font.pointSize: 12 - } - - Label { - - Layout.fillWidth: true - Layout.preferredHeight: Math.min(implicitHeight, 200) - horizontalAlignment: Qt.AlignHCenter - wrapMode: Text.Wrap - elide: Text.ElideMiddle - text: control.message - color: Kirigami.Theme.textColor - font.weight: Font.Light - font.pointSize: 10 - } - - StackView { - - id: _stackView - Layout.fillHeight: true - Layout.preferredWidth: parent.width - clip: true - } - - } -} diff --git a/src/modules/keyboardq/keyboardq.qml b/src/modules/keyboardq/keyboardq.qml index 613223a1c..8f8bf05d1 100644 --- a/src/modules/keyboardq/keyboardq.qml +++ b/src/modules/keyboardq/keyboardq.qml @@ -1,195 +1,403 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +import io.calamares.core 1.0 import io.calamares.ui 1.0 import QtQuick 2.10 import QtQuick.Controls 2.10 +import QtQuick.Window 2.14 import QtQuick.Layouts 1.3 + import org.kde.kirigami 2.7 as Kirigami -ResponsiveBase { +Page { + width: 800 //parent.width + height: 500 - id: control + StackView { + id: stack + anchors.fill: parent + clip: true - title: stackView.currentItem.title - subtitle: stackView.currentItem.subtitle + initialItem: Item { + Label { - stackView.initialItem: Item { + id: header + anchors.horizontalCenter: parent.horizontalCenter + text: qsTr("Keyboard Model") + color: Kirigami.Theme.textColor + font.bold: true + font.weight: Font.Bold + font.pointSize: 24 + } - id: _keyboardModelsComponet + Label { - property string title: qsTr("Keyboard Model") - property string subtitle: qsTr("Pick your preferred keyboard model or use the default one based on the detected hardware") + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: header.bottom + color: Kirigami.Theme.textColor + horizontalAlignment: Text.AlignHCenter + width: parent.width / 1.5 + wrapMode: Text.WordWrap + text: qsTr("Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.") + } - ListViewTemplate { + ListView { - id: _keyboardModelListView + id: list1 - anchors.centerIn: parent - implicitWidth: Math.min(parent.width, 500) - implicitHeight: Math.min(contentHeight, 300) - currentIndex: model.currentIndex + ScrollBar.vertical: ScrollBar { - model: config.keyboardModelsModel - - delegate: ListItemDelegate { - - id: _delegate - label1.text: model.label - onClicked: { - - _keyboardModelListView.model.currentIndex = index - control.stackView.push(_keyboardLayoutsComponent) + active: true } - } - } - - ColumnLayout{ - - spacing: 2 - anchors.verticalCenter: parent.verticalCenter - - Button { - - icon.name: "view-refresh" - width: parent.width - onClicked: control.stackView.pop() - text: qsTr("Refresh") - } - - Button { - - Layout.fillWidth: true - text: qsTr("Layouts") - icon.name: "go-next" - onClicked: control.stackView.push(_keyboardLayoutsComponent) - } - } - } - - Component { - - id: _keyboardLayoutsComponent - - Item { - - property string title: qsTr("Keyboard Layout") - property string subtitle: config.prettyStatus - - ListViewTemplate { - - id: _layoutsListView + width: parent.width / 2 + height: 250 anchors.centerIn: parent - - implicitWidth: Math.min(parent.width, 500) - implicitHeight: Math.min(contentHeight, 300) - - currentIndex: model.currentIndex - - model: config.keyboardLayoutsModel - - delegate: ListItemDelegate { - - id: _delegate - label1.text: model.label - onClicked: { - - _layoutsListView.model.currentIndex = index - _layoutsListView.positionViewAtIndex(index, ListView.Center) - control.stackView.push(_keyboardVariantsComponent) - } - } - } - - ColumnLayout{ - + anchors.verticalCenterOffset: -30 + focus: true + clip: true + boundsBehavior: Flickable.StopAtBounds spacing: 2 - anchors.verticalCenter: parent.verticalCenter - Button { + Rectangle { - Layout.fillWidth: true - icon.name: "go-previous" - text: qsTr("Models") - onClicked: control.stackView.pop() + z: parent.z - 1 + anchors.fill: parent + color: "#BDC3C7" + radius: 5 + opacity: 0.7 } - Button { - - Layout.fillWidth: true - icon.name: "go-next" - text: qsTr("Variants") - onClicked: control.stackView.push(_keyboardVariantsComponent) - } - } - } - } - - Component { - - id: _keyboardVariantsComponent - - Item { - - property string title: qsTr("Keyboard Layout") - property string subtitle: config.prettyStatus - - ListViewTemplate { - - id: _variantsListView - - anchors.centerIn: parent - - implicitWidth: Math.min(parent.width, 500) - implicitHeight: Math.min(contentHeight, 300) + model: config.keyboardModelsModel + //model: ["Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Australia", "Europe", "Indian", "Pacific"] currentIndex: model.currentIndex + delegate: ItemDelegate { - model: config.keyboardVariantsModel + hoverEnabled: true + width: parent.width + highlighted: ListView.isCurrentItem - delegate: ListItemDelegate { + RowLayout { + anchors.fill: parent + + Label { + + text: model.label // modelData + Layout.fillHeight: true + Layout.fillWidth: true + width: parent.width + height: 32 + color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor + + background: Rectangle { + + color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor + opacity: highlighted || hovered ? 0.5 : 0.3 + } + } + + Kirigami.Icon { + + source: "checkmark" + Layout.preferredWidth: 22 + Layout.preferredHeight: 22 + color: Kirigami.Theme.highlightedTextColor + visible: highlighted + } + } - id: _delegate - label1.text: model.label onClicked: { - _variantsListView.model.currentIndex = index - _variantsListView.positionViewAtIndex(index, ListView.Center) + list1.model.currentIndex = index + stack.push(layoutsList) + list1.positionViewAtIndex(index, ListView.Center) } } } + } - ColumnLayout{ + Component { + id: layoutsList - anchors.verticalCenter: parent.verticalCenter - - Button { + Item { - Layout.fillWidth: true - text: qsTr("Layouts") - icon.name: "go-previous" - onClicked: control.stackView.pop() + Label { + + id: header + anchors.horizontalCenter: parent.horizontalCenter + text: qsTr("Keyboard Layout") + color: Kirigami.Theme.textColor + font.bold: true + font.weight: Font.Bold + font.pointSize: 24 + } + + Label { + + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: header.bottom + color: Kirigami.Theme.textColor + horizontalAlignment: Text.AlignHCenter + width: parent.width / 1.5 + wrapMode: Text.WordWrap + text: config.prettyStatus + //text: qsTr("Set keyboard model or use the default one based on the detected hardware.") + } + + ListView { + + id: list2 + + ScrollBar.vertical: ScrollBar { + + active: true + } + + width: parent.width / 2 + height: 250 + anchors.centerIn: parent + anchors.verticalCenterOffset: -30 + focus: true + clip: true + boundsBehavior: Flickable.StopAtBounds + spacing: 2 + + Rectangle { + + z: parent.z - 1 + anchors.fill: parent + color: "#BDC3C7" + radius: 5 + opacity: 0.7 + } + + model: config.keyboardLayoutsModel + //model: ["Brussels", "London", "Madrid", "New York", "Melbourne", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York"] + + currentIndex: model.currentIndex + delegate: ItemDelegate { + + hoverEnabled: true + width: parent.width + highlighted: ListView.isCurrentItem + + RowLayout { + anchors.fill: parent + + Label { + + text: model.label // modelData + Layout.fillHeight: true + Layout.fillWidth: true + width: parent.width + height: 30 + color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor + + background: Rectangle { + + color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor + opacity: highlighted || hovered ? 0.5 : 0.3 + } + } + + Kirigami.Icon { + + source: "checkmark" + Layout.preferredWidth: 22 + Layout.preferredHeight: 22 + color: Kirigami.Theme.highlightedTextColor + visible: highlighted + } + } + + onClicked: { + + list2.model.currentIndex = index + stack.push(variantsList) + list2.positionViewAtIndex(index, ListView.Center) + } + } + } + + ColumnLayout { + + spacing: 2 + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -30 + anchors.left: parent.left + anchors.leftMargin: parent.width / 15 + + Button { + + icon.name: "go-previous" + text: qsTr("Models") + onClicked: stack.pop() + } + + Button { + + icon.name: "go-next" + text: qsTr("Variants") + onClicked: stack.push(variantsList) + } } } } + Component { + id: variantsList + + Item { + + Label { + + id: header + anchors.horizontalCenter: parent.horizontalCenter + text: qsTr("Keyboard Variant") + color: Kirigami.Theme.textColor + font.bold: true + font.weight: Font.Bold + font.pointSize: 24 + } + + Label { + + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: header.bottom + color: Kirigami.Theme.textColor + horizontalAlignment: Text.AlignHCenter + width: parent.width / 1.5 + wrapMode: Text.WordWrap + text: config.prettyStatus + //text: qsTr("Variant keyboard model or use the default one based on the detected hardware.") + } + + ListView { + + id: list3 + + ScrollBar.vertical: ScrollBar { + + active: true + } + + width: parent.width / 2 + height: 250 + anchors.centerIn: parent + anchors.verticalCenterOffset: -30 + focus: true + clip: true + boundsBehavior: Flickable.StopAtBounds + spacing: 2 + + Rectangle { + + z: parent.z - 1 + anchors.fill: parent + color: "#BDC3C7" + radius: 5 + opacity: 0.7 + } + + model: config.keyboardVariantsModel + //model: ["Brussels", "London", "Madrid", "New York", "Melbourne", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York"] + + currentIndex: model.currentIndex + delegate: ItemDelegate { + + hoverEnabled: true + width: parent.width + highlighted: ListView.isCurrentItem + + RowLayout { + anchors.fill: parent + + Label { + + text: model.label //modelData + Layout.fillHeight: true + Layout.fillWidth: true + width: parent.width + height: 30 + color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor + + background: Rectangle { + + color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor + opacity: highlighted || hovered ? 0.5 : 0.3 + } + } + + Kirigami.Icon { + + source: "checkmark" + Layout.preferredWidth: 22 + Layout.preferredHeight: 22 + color: Kirigami.Theme.highlightedTextColor + visible: highlighted + } + } + + onClicked: { + + list3.model.currentIndex = index + list3.positionViewAtIndex(index, ListView.Center) + } + } + } + + Button { + + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -30 + anchors.left: parent.left + anchors.leftMargin: parent.width / 15 + icon.name: "go-previous" + text: qsTr("Layouts") + onClicked: stack.pop() + } + } + } } TextField { placeholderText: qsTr("Test your keyboard") - Layout.preferredHeight: 48 - Layout.maximumWidth: 500 - Layout.fillWidth: true - Layout.alignment: Qt.AlignCenter - color: control.Kirigami.Theme.textColor + height: 48 + width: parent.width / 1.5 + horizontalAlignment: TextInput.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: parent.height / 10 + color: "#1F1F1F" background:Rectangle { z: parent.z - 1 anchors.fill: parent color: "#BDC3C7" - radius: 5 + radius: 2 opacity: 0.3 } } diff --git a/src/modules/keyboardq/keyboardq.qrc b/src/modules/keyboardq/keyboardq.qrc index b2ee36ee5..492f6e213 100644 --- a/src/modules/keyboardq/keyboardq.qrc +++ b/src/modules/keyboardq/keyboardq.qrc @@ -3,8 +3,5 @@ ../keyboard/kbd-model-map ../keyboard/images/restore.png keyboardq.qml - ListItemDelegate.qml - ListViewTemplate.qml - ResponsiveBase.qml From 0572e9cafc0fe6f6692f14f6d0e275d64f7498e2 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 26 Aug 2020 13:54:11 +0200 Subject: [PATCH 367/399] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_de.ts | 27 +- lang/calamares_pt_BR.ts | 2 +- lang/calamares_te.ts | 3922 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 3938 insertions(+), 13 deletions(-) create mode 100644 lang/calamares_te.ts diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index a70360e82..bf2c4f635 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -717,7 +717,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Set timezone to %1/%2. - + Setze Zeitzone auf %1%2. @@ -802,7 +802,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. '%1' is not allowed as username. - + '%1' ist als Benutzername nicht erlaubt. @@ -827,7 +827,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. '%1' is not allowed as hostname. - + '%1' ist als Computername nicht erlaubt. @@ -2860,7 +2860,8 @@ Ausgabe: <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Dieser Computer erfüllt einige empfohlene Bedingungen nicht für die Installation von %1.<br/> + Die Installation kann fortgesetzt werden, aber einige Funktionen könnten deaktiviert sein.</p> @@ -2971,13 +2972,15 @@ Ausgabe: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Dieser Computer erfüllt die minimalen Bedingungen nicht für die Installation von %1.<br/> + Die Installation kan nicht fortgesetzt werden.</p> <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> Setup can continue, but some features might be disabled.</p> - + <p>Dieser Computer erfüllt einige empfohlene Bedingungen nicht für die Installation von %1.<br/> + Die Installation kann fortgesetzt werden, aber einige Funktionen könnten deaktiviert sein.</p> @@ -3443,28 +3446,28 @@ Ausgabe: KDE user feedback - + KDE Benutzer-Feedback Configuring KDE user feedback. - + Konfiguriere KDE Benutzer-Feedback. Error in KDE user feedback configuration. - + Fehler bei der Konfiguration des KDE Benutzer-Feedbacks. Could not configure KDE user feedback correctly, script error %1. - + Konnte KDE Benutzer-Feedback nicht korrekt konfigurieren, Skriptfehler %1. Could not configure KDE user feedback correctly, Calamares error %1. - + Konnte KDE Benutzer-Feedback nicht korrekt konfigurieren, Calamares-Fehler %1. @@ -3511,7 +3514,7 @@ Ausgabe: <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Hier klicken, um <span style=" font-weight:600;">keinerlei Informationen </span> über Ihre Installation zu senden.</p></body></html> diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 9611c6005..7c7b65959 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -2323,7 +2323,7 @@ O instalador será fechado e todas as alterações serão perdidas. Choose a password to keep your account safe. - Escolha uma senha para mantar a sua conta segura. + Escolha uma senha para manter a sua conta segura. diff --git a/lang/calamares_te.ts b/lang/calamares_te.ts new file mode 100644 index 000000000..5ffd22999 --- /dev/null +++ b/lang/calamares_te.ts @@ -0,0 +1,3922 @@ + + + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::BlankViewStep + + + Blank Page + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Reload Stylesheet + + + + + Widget Tree + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Set up + + + + + Install + + + + + Calamares::FailJob + + + Job failed (%1) + + + + + Programmed job failure was explicitly requested. + + + + + Calamares::JobThread + + + Done + ముగించు + + + + Calamares::NamedJob + + + Example job (%1) + + + + + Calamares::ProcessJob + + + Run command '%1' in target system. + + + + + Run command '%1'. + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::QmlViewStep + + + Loading ... + + + + + QML Step <i>%1</i>. + + + + + Loading failed. + + + + + Calamares::RequirementsChecker + + + Requirements checking for module <i>%1</i> is complete. + + + + + Waiting for %n module(s). + + + + + + + + (%n second(s)) + + + + + + + + System-requirements checking is complete. + + + + + Calamares::ViewManager + + + Setup Failed + + + + + Installation Failed + + + + + Would you like to paste the install log to the web? + + + + + Error + లోపం + + + + + &Yes + + + + + + &No + + + + + &Close + + + + + Install Log Paste URL + + + + + The upload was unsuccessful. No web-paste was done. + + + + + Calamares Initialization Failed + + + + + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. + + + + + <br/>The following modules could not be loaded: + + + + + Continue with setup? + + + + + Continue with installation? + + + + + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Set up now + + + + + &Install now + + + + + Go &back + + + + + &Set up + + + + + &Install + + + + + Setup is complete. Close the setup program. + + + + + The installation is complete. Close the installer. + + + + + Cancel setup without changing the system. + + + + + Cancel installation without changing the system. + + + + + &Next + + + + + &Back + + + + + &Done + + + + + &Cancel + + + + + Cancel setup? + + + + + Cancel installation? + + + + + Do you really want to cancel the current setup process? +The setup program will quit and all changes will be lost. + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + + + + + &Next + + + + + &Cancel + + + + + %1 Setup Program + + + + + %1 Installer + + + + + CheckerContainer + + + Gathering system information... + + + + + ChoicePage + + + Form + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. + + + + + Boot loader location: + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + No Swap + + + + + Reuse Swap + + + + + Swap (no Hibernate) + + + + + Swap (with Hibernate) + + + + + Swap to file + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + Config + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + Set timezone to %1/%2. + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Network Installation. (Disabled: Incorrect configuration) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + Network Installation. (Disabled: internal error) + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + <h1>Welcome to the Calamares setup program for %1</h1> + + + + + <h1>Welcome to %1 setup</h1> + + + + + <h1>Welcome to the Calamares installer for %1</h1> + + + + + <h1>Welcome to the %1 installer</h1> + + + + + Your username is too long. + + + + + '%1' is not allowed as username. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + '%1' is not allowed as hostname. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + Si&ze: + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + &Mount Point: + + + + + Flags: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + + + + + CreateVolumeGroupJob + + + Create new volume group named %1. + + + + + Create new volume group named <strong>%1</strong>. + + + + + Creating new volume group named %1. + + + + + The installer failed to create a volume group named '%1'. + + + + + DeactivateVolumeGroupJob + + + + Deactivate volume group named %1. + + + + + Deactivate volume group named <strong>%1</strong>. + + + + + The installer failed to deactivate a volume group named %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + DeviceModel + + + %1 - %2 (%3) + device[name] - size[number] (device-node[name]) + + + + + %1 - (%2) + device[name] - (device-node[name]) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + తుడిచివేయు + + + + Warning: Formatting the partition will erase all existing data. + హెచ్చరిక : తుడిచివేయటం వలన ఈ విభజనలోని సమాచారం మొత్తం పోతుంది + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + విభజన సమాచారం ఏర్పాటు + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Setup Complete + + + + + Installation Complete + + + + + The setup of %1 is complete. + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MiB) on %4. + + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + GeneralRequirements + + + has at least %1 GiB available drive space + + + + + There is not enough drive space. At least %1 GiB is required. + + + + + has at least %1 GiB working memory + + + + + The system does not have enough working memory. At least %1 GiB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + is running the installer as an administrator (root) + + + + + The setup program is not running with administrator rights. + + + + + The installer is not running with administrator rights. + + + + + has a screen large enough to show the whole installer + + + + + The screen is too small to display the setup program. + + + + + The screen is too small to display the installer. + + + + + HostInfoJob + + + Collecting information about your machine. + + + + + IDJob + + + + + + OEM Batch Identifier + + + + + Could not create directories <code>%1</code>. + + + + + Could not open file <code>%1</code>. + + + + + Could not write to file <code>%1</code>. + + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardQmlViewStep + + + Keyboard + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + <h1>License Agreement</h1> + + + + + I accept the terms and conditions above. + + + + + Please review the End User License Agreements (EULAs). + + + + + This setup procedure will install proprietary software that is subject to licensing terms. + + + + + If you do not agree with the terms, the setup procedure cannot continue. + + + + + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + LicenseViewStep + + + License + + + + + LicenseWidget + + + URL: %1 + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + File: %1 + + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + LocaleQmlViewStep + + + Location + + + + + LocaleViewStep + + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + + + + + + + Encrypted rootfs setup error + + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could not configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + + + Map + + + Timezone: %1 + + + + + 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. + + + + + NetInstallViewStep + + + + Package selection + + + + + Office software + + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + + + + + Services + + + + + Login + + + + + Desktop + + + + + Applications + + + + + Communication + + + + + Development + + + + + Office + + + + + Multimedia + + + + + Internet + + + + + Theming + + + + + Gaming + + + + + Utilities + + + + + NotesQmlViewStep + + + Notes + + + + + OEMPage + + + Ba&tch: + + + + + <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> + + + + + <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> + + + + + OEMViewStep + + + OEM Configuration + + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + Offline + + + Timezone: %1 + + + + + To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below. + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Password is empty + + + + + PackageChooserPage + + + Form + + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + + + + PackageModel + + + Name + + + + + Description + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + మీ పేరు ఏమిటి ? + + + + Your Full Name + + + + + What name do you want to use to log in? + ప్రవేశించడానికి ఈ పేరుని ఉపయోగిస్తారు + + + + login + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Computer Name + + + + + Choose a password to keep your account safe. + మీ ఖాతా ను భద్రపరుచుకోవడానికి ఒక మంత్రమును ఎంచుకోండి + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + అదే మంత్రిని మళ్ళీ ఇక్కడ ఇవ్వండి, దానివలన మీరు పైన ఇచ్చిన దాంట్లో ఏమి అయినా దోషములు ఉంటే సరిదిద్దుకోవచ్చు. ఒక మంచి మంత్రంలో, ఒక అక్షరము, ఒక సంఖ్యా, ఒక విరామచిహ్నం, ఉండాలి. అది కనీసం ఎనిమిది అక్షరాలా పొడవు ఉండాలి. దీనిని కొన్ని వారాలు కానీ నెలలకు కానీ మార్చాలి. + + + + + Password + + + + + + Repeat Password + + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + + + Require strong passwords. + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + size[number] filesystem[name] + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + Cre&ate + + + + + &Edit + + + + + &Delete + + + + + New Volume Group + + + + + Resize Volume Group + + + + + Deactivate Volume Group + + + + + Remove Volume Group + + + + + I&nstall boot loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + EFI system partition flag not set + + + + + Option to use GPT on BIOS + + + + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + has at least one disk device available. + + + + + There are no partitions to install on. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + %1 (%2) + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Default Keyboard Model + + + + + + Default + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + No product + + + + + No description provided. + + + + + (no mount point) + + + + + Unpartitioned space or unknown partition table + + + + + Recommended + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + RemoveUserJob + + + Remove live user from target system + + + + + RemoveVolumeGroupJob + + + + Remove Volume Group named %1. + + + + + Remove Volume Group named <strong>%1</strong>. + + + + + The installer failed to remove a volume group named '%1'. + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + Requirements + + + <p>This computer does not satisfy the minimum requirements for installing %1.<br/> + Installation cannot continue.</p> + + + + + <p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/> + Setup can continue, but some features might be disabled.</p> + + + + + ResizeFSJob + + + Resize Filesystem Job + + + + + Invalid configuration + + + + + The file-system resize job has an invalid configuration and will not run. + + + + + KPMCore not Available + + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + + + + + The filesystem %1 could not be found in this system, and cannot be resized. + + + + + The device %1 could not be found in this system, and cannot be resized. + + + + + + The filesystem %1 cannot be resized. + + + + + + The device %1 cannot be resized. + + + + + The filesystem %1 must be resized, but cannot. + + + + + The device %1 must be resized, but cannot + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. + + + + + Resizing %2MiB partition %1 to %3MiB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ResizeVolumeGroupDialog + + + Resize Volume Group + + + + + ResizeVolumeGroupJob + + + + Resize volume group named %1 from %2 to %3. + + + + + Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. + + + + + The installer failed to resize a volume group named '%1'. + + + + + ResultsListDialog + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ResultsListWidget + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MiB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MiB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the setup procedure. + + + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingKUserFeedbackJob + + + KDE user feedback + + + + + Configuring KDE user feedback. + + + + + + Error in KDE user feedback configuration. + + + + + Could not configure KDE user feedback correctly, script error %1. + + + + + Could not configure KDE user feedback correctly, Calamares error %1. + + + + + TrackingMachineUpdateManagerJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>Click here to send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Tracking helps %1 to see how often it is installed, what hardware it is installed on and which applications are used. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will only be sent <b>once</b> after the installation finishes. + + + + + By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. + + + + + By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> + + + + + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + VariantModel + + + Key + + + + + Value + + + + + VolumeGroupBaseDialog + + + Create Volume Group + + + + + List of Physical Volumes + + + + + Volume Group Name: + + + + + Volume Group Type: + + + + + Physical Extent Size: + + + + + MiB + + + + + Total Size: + + + + + Used Size: + + + + + Total Sectors: + + + + + Quantity of LVs: + + + + + WelcomePage + + + Form + + + + + + Select application and system language + + + + + &About + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + &Support + + + + + Open issues and bug-tracking website + + + + + &Known issues + + + + + Open release notes website + + + + + &Release notes + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + %1 support + + + + + About %1 setup + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + WelcomeQmlViewStep + + + Welcome + + + + + WelcomeViewStep + + + Welcome + + + + + about + + + <h1>%1</h1><br/> + <strong>%2<br/> + for %3</strong><br/><br/> + Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Thanks to <a href='https://calamares.io/team/'>the Calamares team</a> + and the <a href='https://www.transifex.com/calamares/calamares/'>Calamares + translators team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + development is sponsored by <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. + + + + + Back + + + + + i18n + + + <h1>Languages</h1> </br> + The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. + + + + + <h1>Locales</h1> </br> + The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. + + + + + Back + + + + + keyboardq + + + Keyboard Model + + + + + Pick your preferred keyboard model or use the default one based on the detected hardware + + + + + Refresh + + + + + + Layouts + + + + + + Keyboard Layout + + + + + Models + + + + + Variants + + + + + Test your keyboard + + + + + localeq + + + Change + + + + + notesqml + + + <h3>%1</h3> + <p>These are example release notes.</p> + + + + + release_notes + + + <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> + + <p><b>This is bold text</b></p> + <p><i>This is italic text</i></p> + <p><u>This is underlined text</u></p> + <p><center>This text will be center-aligned.</center></p> + <p><s>This is strikethrough</s></p> + + <p>Code example: + <code>ls -l /home</code></p> + + <p><b>Lists:</b></p> + <ul> + <li>Intel CPU systems</li> + <li>AMD CPU systems</li> + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> + + + + + Back + + + + + welcomeq + + + <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> + + + + + About + + + + + Support + + + + + Known issues + + + + + Release notes + + + + + Donate + + + + From 55dca08c8cc58aadcdef08e97bd8b8dbb02c96cc Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 26 Aug 2020 13:54:12 +0200 Subject: [PATCH 368/399] i18n: [python] Automatic merge of Transifex translations --- lang/python/te/LC_MESSAGES/python.mo | Bin 0 -> 379 bytes lang/python/te/LC_MESSAGES/python.po | 339 +++++++++++++++++++++++++++ 2 files changed, 339 insertions(+) create mode 100644 lang/python/te/LC_MESSAGES/python.mo create mode 100644 lang/python/te/LC_MESSAGES/python.po diff --git a/lang/python/te/LC_MESSAGES/python.mo b/lang/python/te/LC_MESSAGES/python.mo new file mode 100644 index 0000000000000000000000000000000000000000..3efc124053cac143f1c1109c70e7d3cbac2ea62a GIT binary patch literal 379 zcmYL@-%i3X6vi=n)l09vsEHR4J!^+XN69V_harkAIJvK*jGC=o+D`C6d_AAVP80Z& zU(Pu>|GuBolkbk#k>|{F;W_qPd0IuDk#7!sY-jdLjs6h1gXs#E!dR&l!|7=JGYHb|MY#~>0-xL-y%`i&mun?cJ-GK-01jBtA-T{q(4sb}>_01*qLeE?k z4KD;_f>#V@qHKx=cQ?+}mJzbuZUbkyvT`kUL9Q#3^O9HG2uqybu%u7vZRm5-L$m2D zIT#HCipE+wp&VpiwRhme&XKz0QVnsw;l>IVzhx7M4s-3RwJ?yVT(6`m7>?eh+q-OU hptNiZFJYohWf@lWUuon15dWufSK;#*hrJ={`~oHxYV`mB literal 0 HcmV?d00001 diff --git a/lang/python/te/LC_MESSAGES/python.po b/lang/python/te/LC_MESSAGES/python.po new file mode 100644 index 000000000..5ab3e4924 --- /dev/null +++ b/lang/python/te/LC_MESSAGES/python.po @@ -0,0 +1,339 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-08-09 20:56+0200\n" +"PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Language-Team: Telugu (https://www.transifex.com/calamares/teams/20061/te/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/grubcfg/main.py:37 +msgid "Configure GRUB." +msgstr "" + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "" + +#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:205 +#: src/modules/initcpiocfg/main.py:209 +#: src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:173 +#: src/modules/initramfscfg/main.py:94 src/modules/initramfscfg/main.py:98 +#: src/modules/openrcdmcryptcfg/main.py:78 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:332 +#: src/modules/fstab/main.py:338 src/modules/localecfg/main.py:144 +#: src/modules/networkcfg/main.py:48 +msgid "Configuration Error" +msgstr "" + +#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:206 +#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:174 +#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/fstab/main.py:333 +msgid "No partitions are defined for
{!s}
to use." +msgstr "" + +#: src/modules/services-systemd/main.py:35 +msgid "Configure systemd services" +msgstr "" + +#: src/modules/services-systemd/main.py:68 +#: src/modules/services-openrc/main.py:102 +msgid "Cannot modify service" +msgstr "" + +#: src/modules/services-systemd/main.py:69 +msgid "" +"systemctl {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:72 +#: src/modules/services-systemd/main.py:76 +msgid "Cannot enable systemd service {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:74 +msgid "Cannot enable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:78 +msgid "Cannot disable systemd target {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:80 +msgid "Cannot mask systemd unit {name!s}." +msgstr "" + +#: src/modules/services-systemd/main.py:82 +msgid "" +"Unknown systemd commands {command!s} and " +"{suffix!s} for unit {name!s}." +msgstr "" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:302 +msgid "Unpacking image {}/{}, file {}/{}" +msgstr "" + +#: src/modules/unpackfs/main.py:317 +msgid "Starting to unpack {}" +msgstr "" + +#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:448 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:415 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:416 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:421 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:422 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:438 src/modules/unpackfs/main.py:442 +#: src/modules/unpackfs/main.py:462 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:439 +msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" + +#: src/modules/unpackfs/main.py:443 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:449 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:463 +msgid "The destination \"{}\" in the target system is not a directory" +msgstr "" + +#: src/modules/displaymanager/main.py:523 +msgid "Cannot write KDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:524 +msgid "KDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:585 +msgid "Cannot write LXDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:586 +msgid "LXDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:669 +msgid "Cannot write LightDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:670 +msgid "LightDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:744 +msgid "Cannot configure LightDM" +msgstr "" + +#: src/modules/displaymanager/main.py:745 +msgid "No LightDM greeter installed." +msgstr "" + +#: src/modules/displaymanager/main.py:776 +msgid "Cannot write SLIM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:777 +msgid "SLIM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:903 +msgid "No display managers selected for the displaymanager module." +msgstr "" + +#: src/modules/displaymanager/main.py:904 +msgid "" +"The displaymanagers list is empty or undefined in bothglobalstorage and " +"displaymanager.conf." +msgstr "" + +#: src/modules/displaymanager/main.py:986 +msgid "Display manager configuration was incomplete" +msgstr "" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:210 +#: src/modules/luksopenswaphookcfg/main.py:100 +#: src/modules/initramfscfg/main.py:99 src/modules/openrcdmcryptcfg/main.py:83 +#: src/modules/fstab/main.py:339 src/modules/localecfg/main.py:145 +#: src/modules/networkcfg/main.py:49 +msgid "No root mount point is given for
{!s}
to use." +msgstr "" + +#: src/modules/luksopenswaphookcfg/main.py:35 +msgid "Configuring encrypted swap." +msgstr "" + +#: src/modules/rawfs/main.py:35 +msgid "Installing data." +msgstr "" + +#: src/modules/services-openrc/main.py:38 +msgid "Configure OpenRC services" +msgstr "" + +#: src/modules/services-openrc/main.py:66 +msgid "Cannot add service {name!s} to run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:68 +msgid "Cannot remove service {name!s} from run-level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:70 +msgid "" +"Unknown service-action {arg!s} for service {name!s} in run-" +"level {level!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:103 +msgid "" +"rc-update {arg!s} call in chroot returned error code {num!s}." +msgstr "" + +#: src/modules/services-openrc/main.py:110 +msgid "Target runlevel does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:111 +msgid "" +"The path for runlevel {level!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/services-openrc/main.py:119 +msgid "Target service does not exist" +msgstr "" + +#: src/modules/services-openrc/main.py:120 +msgid "" +"The path for service {name!s} is {path!s}, which does not " +"exist." +msgstr "" + +#: src/modules/plymouthcfg/main.py:36 +msgid "Configure Plymouth theme" +msgstr "" + +#: src/modules/packages/main.py:59 src/modules/packages/main.py:68 +#: src/modules/packages/main.py:78 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:71 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/bootloader/main.py:51 +msgid "Install bootloader." +msgstr "" + +#: src/modules/hwclock/main.py:35 +msgid "Setting hardware clock." +msgstr "" + +#: src/modules/dracut/main.py:36 +msgid "Creating initramfs with dracut." +msgstr "" + +#: src/modules/dracut/main.py:58 +msgid "Failed to run dracut on the target" +msgstr "" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "" + +#: src/modules/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "" + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 +#: src/modules/dummypython/main.py:103 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/localecfg/main.py:39 +msgid "Configuring locales." +msgstr "" + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" From fd384f334d8ed6725ff818956959b61674b3c327 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 14:21:33 +0200 Subject: [PATCH 369/399] CMake: update translation lists - Add Telugu already, even though it's formally not ready yet --- CMakeLists.txt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e95dad8b..b82c116c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,13 +140,14 @@ set( CALAMARES_DESCRIPTION_SUMMARY # NOTE: update these lines by running `txstats.py`, or for full automation # `txstats.py -e`. See also # -# Total 68 languages -set( _tx_complete ca fi_FI he hr nl pt_BR sq tg tr_TR uk zh_TW ) -set( _tx_good as ast az az_AZ be cs_CZ da de es fr hi hu it_IT ja - ko lt ml pt_PT ru sk sv zh_CN ) -set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id is mr nb - pl ro sl sr sr@latin th ) -set( _tx_incomplete bn ca@valencia eo fr_CH gu ie kk kn lo lv mk ne_NP +# Total 69 languages +set( _tx_complete az az_AZ ca cs_CZ da fi_FI he hi hr ja nl pt_BR + sq sv tg tr_TR uk zh_TW ) +set( _tx_good as ast be de es fr hu it_IT ko lt ml pt_PT ru sk + zh_CN ) +set( _tx_ok ar bg bn el en_GB es_MX es_PR et eu fa gl id is mr nb + pl ro sl sr sr@latin te th ) +set( _tx_incomplete ca@valencia eo fr_CH gu ie kk kn lo lv mk ne_NP ur uz ) ### Required versions From ae14059e8b0d42dc3c12f7a9b01e2aa462729a40 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 26 Aug 2020 14:48:23 +0200 Subject: [PATCH 370/399] [webview] Config header was still misplaced - use #error to produce slightly more comprehensible build failers --- src/modules/webview/WebViewStep.cpp | 1 - src/modules/webview/WebViewStep.h | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/webview/WebViewStep.cpp b/src/modules/webview/WebViewStep.cpp index 3e3e99c21..8e7c48f1a 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -9,7 +9,6 @@ */ #include "WebViewStep.h" -#include "WebViewConfig.h" #include diff --git a/src/modules/webview/WebViewStep.h b/src/modules/webview/WebViewStep.h index caeed07eb..691672211 100644 --- a/src/modules/webview/WebViewStep.h +++ b/src/modules/webview/WebViewStep.h @@ -12,6 +12,8 @@ #ifndef WEBVIEWPLUGIN_H #define WEBVIEWPLUGIN_H +#include "WebViewConfig.h" + #include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" @@ -19,9 +21,16 @@ #include #ifdef WEBVIEW_WITH_WEBKIT -#define C_QWEBVIEW QWebView -#else -#define C_QWEBVIEW QWebEngineView +# define C_QWEBVIEW QWebView +#endif +#ifdef WEBVIEW_WITH_WEBENGINE +# ifdef C_QWEBVIEW +# error Both WEBENGINE and WEBKIT enabled +# endif +# define C_QWEBVIEW QWebEngineView +#endif +#ifndef C_QWEBVIEW +# error Neither WEBENGINE nor WEBKIT enabled #endif class C_QWEBVIEW; From 9bdb05d4ea54b489aa90535b4bea5efbfc1e5478 Mon Sep 17 00:00:00 2001 From: demmm Date: Wed, 26 Aug 2020 18:19:42 +0200 Subject: [PATCH 371/399] [localeq] rewrite Offline.qml once completed, this can be a fully functional (offline) locale selection option worldmap.png no longer needed/in use working is the stackview of the region & zones models Timezone text bar shows correct timezone currentIndex see comments on lines 65 & 139, not working update of timezone text bar can't be tested if working as long no index is connected (see lines 93 & 168) Still, already committing, since it does more then old Offline.qml, which had no function for timezone --- src/modules/localeq/Offline.qml | 191 +++++++++++++++++-- src/modules/localeq/img/worldmap.png | Bin 102062 -> 0 bytes src/modules/localeq/img/worldmap.png.license | 2 - src/modules/localeq/localeq.qrc | 1 - 4 files changed, 176 insertions(+), 18 deletions(-) delete mode 100644 src/modules/localeq/img/worldmap.png delete mode 100644 src/modules/localeq/img/worldmap.png.license diff --git a/src/modules/localeq/Offline.qml b/src/modules/localeq/Offline.qml index 8823a388a..5a0d4eb3f 100644 --- a/src/modules/localeq/Offline.qml +++ b/src/modules/localeq/Offline.qml @@ -7,6 +7,9 @@ * */ +import io.calamares.core 1.0 +import io.calamares.ui 1.0 + import QtQuick 2.10 import QtQuick.Controls 2.10 import QtQuick.Window 2.14 @@ -14,43 +17,200 @@ import QtQuick.Layouts 1.3 import org.kde.kirigami 2.7 as Kirigami -Column { - width: parent.width +Page { + width: 800 //parent.width + height: 500 - //Needs to come from localeq.conf - property var configTimezone: "America/New York" + StackView { + id: stack + anchors.fill: parent + clip: true - Rectangle { - width: parent.width - height: parent.height / 1.28 + initialItem: Item { - Image { - id: image - anchors.fill: parent - source: "img/worldmap.png" - width: parent.width + Label { + + id: region + anchors.horizontalCenter: parent.horizontalCenter + color: Kirigami.Theme.textColor + horizontalAlignment: Text.AlignCenter + text: qsTr("Select your preferred Region, or use the default one based on your current location.") + } + + ListView { + + id: list + ScrollBar.vertical: ScrollBar { + active: true + } + + width: parent.width / 2 + height: 250 + anchors.centerIn: parent + anchors.verticalCenterOffset: -30 + focus: true + clip: true + boundsBehavior: Flickable.StopAtBounds + spacing: 2 + + Rectangle { + + z: parent.z - 1 + anchors.fill: parent + color: "#BDC3C7" + radius: 5 + opacity: 0.7 + } + + // model loads, dozens of variations tried for currentIndex all fail + model: config.regionModel + currentIndex: config.currentIndex + delegate: ItemDelegate { + + hoverEnabled: true + width: parent.width + highlighted: ListView.isCurrentItem + + Label { + + text: name + Layout.fillHeight: true + Layout.fillWidth: true + width: parent.width + height: 30 + color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor + + background: Rectangle { + + color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor + opacity: highlighted || hovered ? 0.5 : 0.3 + } + } + + onClicked: { + + list.model.currentIndex = index + // correct to use config.currentTimezoneName when index is updated? + tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName) + stack.push(zoneView) + } + } + } + } + + Component { + id: zoneView + + Item { + + Label { + + id: zone + anchors.horizontalCenter: parent.horizontalCenter + color: Kirigami.Theme.textColor + text: qsTr("Select your preferred Zone within your Region.") + } + + ListView { + + id: list2 + ScrollBar.vertical: ScrollBar { + active: true + } + + width: parent.width / 2 + height: 250 + anchors.centerIn: parent + anchors.verticalCenterOffset: -30 + focus: true + clip: true + boundsBehavior: Flickable.StopAtBounds + spacing: 2 + + Rectangle { + + z: parent.z - 1 + anchors.fill: parent + color: "#BDC3C7" + radius: 5 + opacity: 0.7 + } + + // model loads, dozens of variations tried for currentIndex all fail + model: config.regionalZonesModel + currentIndex: config.currentIndex + delegate: ItemDelegate { + + hoverEnabled: true + width: parent.width + highlighted: ListView.isCurrentItem + + Label { + + text: name + Layout.fillHeight: true + Layout.fillWidth: true + width: parent.width + height: 30 + color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor + + background: Rectangle { + + color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor + opacity: highlighted || hovered ? 0.5 : 0.3 + } + } + + onClicked: { + + list2.model.currentIndex = index + list2.positionViewAtIndex(index, ListView.Center) + // correct to use config.currentTimezoneName when index is updated? + tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName) + } + } + } + + Button { + + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -30 + anchors.left: parent.left + anchors.leftMargin: parent.width / 15 + icon.name: "go-previous" + text: qsTr("Zones") + onClicked: stack.pop() + } + } } } Rectangle { + width: parent.width - height: 100 + height: 60 anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom Item { + id: location Kirigami.Theme.inherit: false Kirigami.Theme.colorSet: Kirigami.Theme.Complementary anchors.horizontalCenter: parent.horizontalCenter Rectangle { + anchors.centerIn: parent width: 300 height: 30 color: Kirigami.Theme.backgroundColor Text { - text: qsTr("Timezone: %1").arg(configTimezone) + + id: tztext + text: qsTr("Timezone: %1").arg(config.currentTimezoneName) color: Kirigami.Theme.textColor anchors.centerIn: parent } @@ -58,6 +218,7 @@ Column { } Text { + anchors.top: location.bottom anchors.topMargin: 20 padding: 10 @@ -65,7 +226,7 @@ Column { wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor - text: qsTr("To be able to select a timezone, make sure you are connected to the internet. Restart the installer after connecting. You can fine-tune Language and Locale settings below.") + text: qsTr("You can fine-tune Language and Locale settings below.") } } } diff --git a/src/modules/localeq/img/worldmap.png b/src/modules/localeq/img/worldmap.png deleted file mode 100644 index c5c181985ecb4387fa315df0d315bd1a39f24fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102062 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 K!IbG=kNQ8gy&jJM diff --git a/src/modules/localeq/img/worldmap.png.license b/src/modules/localeq/img/worldmap.png.license deleted file mode 100644 index 5f43e650d..000000000 --- a/src/modules/localeq/img/worldmap.png.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2020 demmm -SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/modules/localeq/localeq.qrc b/src/modules/localeq/localeq.qrc index 3f7c9b5e5..a3f8dec9d 100644 --- a/src/modules/localeq/localeq.qrc +++ b/src/modules/localeq/localeq.qrc @@ -9,6 +9,5 @@ img/pin.svg img/plus.png img/chevron-left-solid.svg - img/worldmap.png From c6a3e9b81669c8c15237bfba329bf0f894df5380 Mon Sep 17 00:00:00 2001 From: Asif Mahmud Shimon Date: Thu, 27 Aug 2020 11:36:55 +0600 Subject: [PATCH 372/399] Internet accessibility checking done by ping method --- src/libcalamares/network/Manager.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp index ce7f59571..57faae28c 100644 --- a/src/libcalamares/network/Manager.cpp +++ b/src/libcalamares/network/Manager.cpp @@ -149,18 +149,23 @@ Manager::hasInternet() bool Manager::checkHasInternet() { - bool hasInternet = d->nam()->networkAccessible() == QNetworkAccessManager::Accessible; - if ( !hasInternet && ( d->nam()->networkAccessible() == QNetworkAccessManager::UnknownAccessibility ) ) + d->m_hasInternet = synchronousPing( d->m_hasInternetUrl ); + +// For earlier Qt versions (< 5.15.0), set the accessibility flag to +// NotAccessible if synchronous ping has failed, so that any module +// using Qt's networkAccessible method to determine whether or not +// internet connection is actually avaialable won't get confused over +// virtualization technologies. +#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) ) + if ( !d->m_hasInternet ) { - hasInternet = synchronousPing( d->m_hasInternetUrl ); + d->nam()->setNetworkAccessible( QNetworkAccessManager::NotAccessible ); } - if ( hasInternet != d->m_hasInternet ) - { - d->m_hasInternet = hasInternet; - emit hasInternetChanged( hasInternet ); - } - return hasInternet; +#endif + + emit hasInternetChanged( d->m_hasInternet ); + return d->m_hasInternet; } void From e1ad08f9b6d0b56e365de2b473c07cbe64a3e9c5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 13:33:34 +0200 Subject: [PATCH 373/399] Changes: credits for bugfixes and translations --- CHANGES | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index d1ea088bd..6fc8b49d6 100644 --- a/CHANGES +++ b/CHANGES @@ -10,13 +10,29 @@ website will have to do for older versions. # 3.2.30 (unreleased) # This release contains contributions from (alphabetically by first name): - - No external contributors yet + - Anke Boersma + - Asif Mahmud Shimon + - Sai Kamal + +This release has two giant source-code changes that have no effect +on functionality, but do touch each and every source file: + - SPDX headers for licensing information, following the standard + set by REUSE.software ; all source files and resources have + SPDX-License-Identifier information and copyright notices. All + of the boilerplate texts have been removed. + - Calamares coding style has been mechanically applied to the entire + codebase. This was already done to most of it, but there were + some hold-outs. ## Core ## - - No core changes yet + - Network access status is deprecated in Qt 5.15's QNetworkAccessManager, + and was not useful already in some previous versions. Replace its + use in the Calamares network service by testing-it-ourself directly + via a synchronous ping. (Thanks to Asif) + - New Telugu translation. (Thanks to Sai) ## Modules ## - - No module changes yet + - *keyboardq* and *localeq* improvements. (Thanks to Anke) # 3.2.29 (2020-08-20) # From e02c21285a68a20bc5e6e03dbff14cc8deed0e4e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 13:37:45 +0200 Subject: [PATCH 374/399] i18n: remove the compiled .mo files from 'sources' --- lang/python/ar/LC_MESSAGES/python.mo | Bin 2998 -> 0 bytes lang/python/as/LC_MESSAGES/python.mo | Bin 10507 -> 0 bytes lang/python/ast/LC_MESSAGES/python.mo | Bin 5220 -> 0 bytes lang/python/az/LC_MESSAGES/python.mo | Bin 8262 -> 0 bytes lang/python/az_AZ/LC_MESSAGES/python.mo | Bin 8281 -> 0 bytes lang/python/be/LC_MESSAGES/python.mo | Bin 9786 -> 0 bytes lang/python/bg/LC_MESSAGES/python.mo | Bin 1259 -> 0 bytes lang/python/bn/LC_MESSAGES/python.mo | Bin 2333 -> 0 bytes lang/python/ca/LC_MESSAGES/python.mo | Bin 8366 -> 0 bytes lang/python/ca@valencia/LC_MESSAGES/python.mo | Bin 410 -> 0 bytes lang/python/cs_CZ/LC_MESSAGES/python.mo | Bin 8534 -> 0 bytes lang/python/da/LC_MESSAGES/python.mo | Bin 7824 -> 0 bytes lang/python/de/LC_MESSAGES/python.mo | Bin 8210 -> 0 bytes lang/python/el/LC_MESSAGES/python.mo | Bin 527 -> 0 bytes lang/python/en_GB/LC_MESSAGES/python.mo | Bin 1065 -> 0 bytes lang/python/eo/LC_MESSAGES/python.mo | Bin 1055 -> 0 bytes lang/python/es/LC_MESSAGES/python.mo | Bin 8870 -> 0 bytes lang/python/es_MX/LC_MESSAGES/python.mo | Bin 1955 -> 0 bytes lang/python/es_PR/LC_MESSAGES/python.mo | Bin 400 -> 0 bytes lang/python/et/LC_MESSAGES/python.mo | Bin 1907 -> 0 bytes lang/python/eu/LC_MESSAGES/python.mo | Bin 2518 -> 0 bytes lang/python/fa/LC_MESSAGES/python.mo | Bin 8471 -> 0 bytes lang/python/fi_FI/LC_MESSAGES/python.mo | Bin 7918 -> 0 bytes lang/python/fr/LC_MESSAGES/python.mo | Bin 8004 -> 0 bytes lang/python/fr_CH/LC_MESSAGES/python.mo | Bin 398 -> 0 bytes lang/python/gl/LC_MESSAGES/python.mo | Bin 2628 -> 0 bytes lang/python/gu/LC_MESSAGES/python.mo | Bin 381 -> 0 bytes lang/python/he/LC_MESSAGES/python.mo | Bin 9196 -> 0 bytes lang/python/hi/LC_MESSAGES/python.mo | Bin 11474 -> 0 bytes lang/python/hr/LC_MESSAGES/python.mo | Bin 8080 -> 0 bytes lang/python/hu/LC_MESSAGES/python.mo | Bin 7880 -> 0 bytes lang/python/id/LC_MESSAGES/python.mo | Bin 2376 -> 0 bytes lang/python/ie/LC_MESSAGES/python.mo | Bin 2906 -> 0 bytes lang/python/is/LC_MESSAGES/python.mo | Bin 918 -> 0 bytes lang/python/it_IT/LC_MESSAGES/python.mo | Bin 8213 -> 0 bytes lang/python/ja/LC_MESSAGES/python.mo | Bin 9156 -> 0 bytes lang/python/kk/LC_MESSAGES/python.mo | Bin 377 -> 0 bytes lang/python/kn/LC_MESSAGES/python.mo | Bin 379 -> 0 bytes lang/python/ko/LC_MESSAGES/python.mo | Bin 8279 -> 0 bytes lang/python/lo/LC_MESSAGES/python.mo | Bin 369 -> 0 bytes lang/python/lt/LC_MESSAGES/python.mo | Bin 8372 -> 0 bytes lang/python/lv/LC_MESSAGES/python.mo | Bin 415 -> 0 bytes lang/python/mk/LC_MESSAGES/python.mo | Bin 1964 -> 0 bytes lang/python/ml/LC_MESSAGES/python.mo | Bin 665 -> 0 bytes lang/python/mr/LC_MESSAGES/python.mo | Bin 380 -> 0 bytes lang/python/nb/LC_MESSAGES/python.mo | Bin 556 -> 0 bytes lang/python/ne_NP/LC_MESSAGES/python.mo | Bin 393 -> 0 bytes lang/python/nl/LC_MESSAGES/python.mo | Bin 8059 -> 0 bytes lang/python/pl/LC_MESSAGES/python.mo | Bin 5473 -> 0 bytes lang/python/pt_BR/LC_MESSAGES/python.mo | Bin 8366 -> 0 bytes lang/python/pt_PT/LC_MESSAGES/python.mo | Bin 8341 -> 0 bytes lang/python/ro/LC_MESSAGES/python.mo | Bin 1174 -> 0 bytes lang/python/ru/LC_MESSAGES/python.mo | Bin 3529 -> 0 bytes lang/python/sk/LC_MESSAGES/python.mo | Bin 6775 -> 0 bytes lang/python/sl/LC_MESSAGES/python.mo | Bin 434 -> 0 bytes lang/python/sq/LC_MESSAGES/python.mo | Bin 8088 -> 0 bytes lang/python/sr/LC_MESSAGES/python.mo | Bin 1870 -> 0 bytes lang/python/sr@latin/LC_MESSAGES/python.mo | Bin 474 -> 0 bytes lang/python/sv/LC_MESSAGES/python.mo | Bin 7891 -> 0 bytes lang/python/te/LC_MESSAGES/python.mo | Bin 379 -> 0 bytes lang/python/tg/LC_MESSAGES/python.mo | Bin 9876 -> 0 bytes lang/python/th/LC_MESSAGES/python.mo | Bin 370 -> 0 bytes lang/python/tr_TR/LC_MESSAGES/python.mo | Bin 8183 -> 0 bytes lang/python/uk/LC_MESSAGES/python.mo | Bin 10684 -> 0 bytes lang/python/ur/LC_MESSAGES/python.mo | Bin 377 -> 0 bytes lang/python/uz/LC_MESSAGES/python.mo | Bin 371 -> 0 bytes lang/python/zh_CN/LC_MESSAGES/python.mo | Bin 7379 -> 0 bytes lang/python/zh_TW/LC_MESSAGES/python.mo | Bin 7526 -> 0 bytes .../lang/ar/LC_MESSAGES/dummypythonqt.mo | Bin 1033 -> 0 bytes .../lang/as/LC_MESSAGES/dummypythonqt.mo | Bin 1207 -> 0 bytes .../lang/ast/LC_MESSAGES/dummypythonqt.mo | Bin 948 -> 0 bytes .../lang/be/LC_MESSAGES/dummypythonqt.mo | Bin 1118 -> 0 bytes .../lang/bg/LC_MESSAGES/dummypythonqt.mo | Bin 1058 -> 0 bytes .../lang/bn/LC_MESSAGES/dummypythonqt.mo | Bin 380 -> 0 bytes .../lang/ca/LC_MESSAGES/dummypythonqt.mo | Bin 914 -> 0 bytes .../ca@valencia/LC_MESSAGES/dummypythonqt.mo | Bin 410 -> 0 bytes .../lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo | Bin 1041 -> 0 bytes .../lang/da/LC_MESSAGES/dummypythonqt.mo | Bin 888 -> 0 bytes .../lang/de/LC_MESSAGES/dummypythonqt.mo | Bin 896 -> 0 bytes .../lang/el/LC_MESSAGES/dummypythonqt.mo | Bin 378 -> 0 bytes .../lang/en_GB/LC_MESSAGES/dummypythonqt.mo | Bin 933 -> 0 bytes .../lang/eo/LC_MESSAGES/dummypythonqt.mo | Bin 934 -> 0 bytes .../lang/es/LC_MESSAGES/dummypythonqt.mo | Bin 908 -> 0 bytes .../lang/es_MX/LC_MESSAGES/dummypythonqt.mo | Bin 976 -> 0 bytes .../lang/es_PR/LC_MESSAGES/dummypythonqt.mo | Bin 400 -> 0 bytes .../lang/et/LC_MESSAGES/dummypythonqt.mo | Bin 880 -> 0 bytes .../lang/eu/LC_MESSAGES/dummypythonqt.mo | Bin 885 -> 0 bytes .../lang/fa/LC_MESSAGES/dummypythonqt.mo | Bin 973 -> 0 bytes .../lang/fi_FI/LC_MESSAGES/dummypythonqt.mo | Bin 946 -> 0 bytes .../lang/fr/LC_MESSAGES/dummypythonqt.mo | Bin 936 -> 0 bytes .../lang/fr_CH/LC_MESSAGES/dummypythonqt.mo | Bin 398 -> 0 bytes .../lang/gl/LC_MESSAGES/dummypythonqt.mo | Bin 889 -> 0 bytes .../lang/gu/LC_MESSAGES/dummypythonqt.mo | Bin 381 -> 0 bytes .../lang/he/LC_MESSAGES/dummypythonqt.mo | Bin 1089 -> 0 bytes .../lang/hi/LC_MESSAGES/dummypythonqt.mo | Bin 1221 -> 0 bytes .../lang/hr/LC_MESSAGES/dummypythonqt.mo | Bin 985 -> 0 bytes .../lang/hu/LC_MESSAGES/dummypythonqt.mo | Bin 877 -> 0 bytes .../lang/id/LC_MESSAGES/dummypythonqt.mo | Bin 901 -> 0 bytes .../lang/is/LC_MESSAGES/dummypythonqt.mo | Bin 906 -> 0 bytes .../lang/it_IT/LC_MESSAGES/dummypythonqt.mo | Bin 938 -> 0 bytes .../lang/ja/LC_MESSAGES/dummypythonqt.mo | Bin 912 -> 0 bytes .../lang/kk/LC_MESSAGES/dummypythonqt.mo | Bin 377 -> 0 bytes .../lang/kn/LC_MESSAGES/dummypythonqt.mo | Bin 379 -> 0 bytes .../lang/ko/LC_MESSAGES/dummypythonqt.mo | Bin 953 -> 0 bytes .../lang/lo/LC_MESSAGES/dummypythonqt.mo | Bin 369 -> 0 bytes .../lang/lt/LC_MESSAGES/dummypythonqt.mo | Bin 1039 -> 0 bytes .../lang/lv/LC_MESSAGES/dummypythonqt.mo | Bin 415 -> 0 bytes .../lang/mk/LC_MESSAGES/dummypythonqt.mo | Bin 584 -> 0 bytes .../lang/ml/LC_MESSAGES/dummypythonqt.mo | Bin 605 -> 0 bytes .../lang/mr/LC_MESSAGES/dummypythonqt.mo | Bin 380 -> 0 bytes .../lang/nb/LC_MESSAGES/dummypythonqt.mo | Bin 390 -> 0 bytes .../lang/ne_NP/LC_MESSAGES/dummypythonqt.mo | Bin 1203 -> 0 bytes .../lang/nl/LC_MESSAGES/dummypythonqt.mo | Bin 914 -> 0 bytes .../lang/pl/LC_MESSAGES/dummypythonqt.mo | Bin 1070 -> 0 bytes .../lang/pt_BR/LC_MESSAGES/dummypythonqt.mo | Bin 925 -> 0 bytes .../lang/pt_PT/LC_MESSAGES/dummypythonqt.mo | Bin 945 -> 0 bytes .../lang/ro/LC_MESSAGES/dummypythonqt.mo | Bin 960 -> 0 bytes .../lang/ru/LC_MESSAGES/dummypythonqt.mo | Bin 876 -> 0 bytes .../lang/sk/LC_MESSAGES/dummypythonqt.mo | Bin 942 -> 0 bytes .../lang/sl/LC_MESSAGES/dummypythonqt.mo | Bin 434 -> 0 bytes .../lang/sq/LC_MESSAGES/dummypythonqt.mo | Bin 914 -> 0 bytes .../lang/sr/LC_MESSAGES/dummypythonqt.mo | Bin 1127 -> 0 bytes .../lang/sr@latin/LC_MESSAGES/dummypythonqt.mo | Bin 474 -> 0 bytes .../lang/sv/LC_MESSAGES/dummypythonqt.mo | Bin 925 -> 0 bytes .../lang/th/LC_MESSAGES/dummypythonqt.mo | Bin 370 -> 0 bytes .../lang/tr_TR/LC_MESSAGES/dummypythonqt.mo | Bin 941 -> 0 bytes .../lang/uk/LC_MESSAGES/dummypythonqt.mo | Bin 1279 -> 0 bytes .../lang/ur/LC_MESSAGES/dummypythonqt.mo | Bin 377 -> 0 bytes .../lang/uz/LC_MESSAGES/dummypythonqt.mo | Bin 371 -> 0 bytes .../lang/zh_CN/LC_MESSAGES/dummypythonqt.mo | Bin 904 -> 0 bytes .../lang/zh_TW/LC_MESSAGES/dummypythonqt.mo | Bin 924 -> 0 bytes 131 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lang/python/ar/LC_MESSAGES/python.mo delete mode 100644 lang/python/as/LC_MESSAGES/python.mo delete mode 100644 lang/python/ast/LC_MESSAGES/python.mo delete mode 100644 lang/python/az/LC_MESSAGES/python.mo delete mode 100644 lang/python/az_AZ/LC_MESSAGES/python.mo delete mode 100644 lang/python/be/LC_MESSAGES/python.mo delete mode 100644 lang/python/bg/LC_MESSAGES/python.mo delete mode 100644 lang/python/bn/LC_MESSAGES/python.mo delete mode 100644 lang/python/ca/LC_MESSAGES/python.mo delete mode 100644 lang/python/ca@valencia/LC_MESSAGES/python.mo delete mode 100644 lang/python/cs_CZ/LC_MESSAGES/python.mo delete mode 100644 lang/python/da/LC_MESSAGES/python.mo delete mode 100644 lang/python/de/LC_MESSAGES/python.mo delete mode 100644 lang/python/el/LC_MESSAGES/python.mo delete mode 100644 lang/python/en_GB/LC_MESSAGES/python.mo delete mode 100644 lang/python/eo/LC_MESSAGES/python.mo delete mode 100644 lang/python/es/LC_MESSAGES/python.mo delete mode 100644 lang/python/es_MX/LC_MESSAGES/python.mo delete mode 100644 lang/python/es_PR/LC_MESSAGES/python.mo delete mode 100644 lang/python/et/LC_MESSAGES/python.mo delete mode 100644 lang/python/eu/LC_MESSAGES/python.mo delete mode 100644 lang/python/fa/LC_MESSAGES/python.mo delete mode 100644 lang/python/fi_FI/LC_MESSAGES/python.mo delete mode 100644 lang/python/fr/LC_MESSAGES/python.mo delete mode 100644 lang/python/fr_CH/LC_MESSAGES/python.mo delete mode 100644 lang/python/gl/LC_MESSAGES/python.mo delete mode 100644 lang/python/gu/LC_MESSAGES/python.mo delete mode 100644 lang/python/he/LC_MESSAGES/python.mo delete mode 100644 lang/python/hi/LC_MESSAGES/python.mo delete mode 100644 lang/python/hr/LC_MESSAGES/python.mo delete mode 100644 lang/python/hu/LC_MESSAGES/python.mo delete mode 100644 lang/python/id/LC_MESSAGES/python.mo delete mode 100644 lang/python/ie/LC_MESSAGES/python.mo delete mode 100644 lang/python/is/LC_MESSAGES/python.mo delete mode 100644 lang/python/it_IT/LC_MESSAGES/python.mo delete mode 100644 lang/python/ja/LC_MESSAGES/python.mo delete mode 100644 lang/python/kk/LC_MESSAGES/python.mo delete mode 100644 lang/python/kn/LC_MESSAGES/python.mo delete mode 100644 lang/python/ko/LC_MESSAGES/python.mo delete mode 100644 lang/python/lo/LC_MESSAGES/python.mo delete mode 100644 lang/python/lt/LC_MESSAGES/python.mo delete mode 100644 lang/python/lv/LC_MESSAGES/python.mo delete mode 100644 lang/python/mk/LC_MESSAGES/python.mo delete mode 100644 lang/python/ml/LC_MESSAGES/python.mo delete mode 100644 lang/python/mr/LC_MESSAGES/python.mo delete mode 100644 lang/python/nb/LC_MESSAGES/python.mo delete mode 100644 lang/python/ne_NP/LC_MESSAGES/python.mo delete mode 100644 lang/python/nl/LC_MESSAGES/python.mo delete mode 100644 lang/python/pl/LC_MESSAGES/python.mo delete mode 100644 lang/python/pt_BR/LC_MESSAGES/python.mo delete mode 100644 lang/python/pt_PT/LC_MESSAGES/python.mo delete mode 100644 lang/python/ro/LC_MESSAGES/python.mo delete mode 100644 lang/python/ru/LC_MESSAGES/python.mo delete mode 100644 lang/python/sk/LC_MESSAGES/python.mo delete mode 100644 lang/python/sl/LC_MESSAGES/python.mo delete mode 100644 lang/python/sq/LC_MESSAGES/python.mo delete mode 100644 lang/python/sr/LC_MESSAGES/python.mo delete mode 100644 lang/python/sr@latin/LC_MESSAGES/python.mo delete mode 100644 lang/python/sv/LC_MESSAGES/python.mo delete mode 100644 lang/python/te/LC_MESSAGES/python.mo delete mode 100644 lang/python/tg/LC_MESSAGES/python.mo delete mode 100644 lang/python/th/LC_MESSAGES/python.mo delete mode 100644 lang/python/tr_TR/LC_MESSAGES/python.mo delete mode 100644 lang/python/uk/LC_MESSAGES/python.mo delete mode 100644 lang/python/ur/LC_MESSAGES/python.mo delete mode 100644 lang/python/uz/LC_MESSAGES/python.mo delete mode 100644 lang/python/zh_CN/LC_MESSAGES/python.mo delete mode 100644 lang/python/zh_TW/LC_MESSAGES/python.mo delete mode 100644 src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/as/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ca@valencia/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/mk/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ne_NP/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo delete mode 100644 src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo deleted file mode 100644 index 53869a8e71fa125ce158a02f7d6fe59f231a4dac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2998 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 LFiq`LBC7l^rPWpR diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo deleted file mode 100644 index d14fb29fa6c947a78f6a271306ecffe5e4d7eaa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5220 zcmbuCOKe?78OKkXQoytnN_dsm#1L##-|L(7l{iUh5q6n!~P#3fkQoKM2#0FJjRUyHS1qB2fy5RTCIp;o{XW>Z4 zf6tkjZ@$O>`{uiEKYZVhJ)S1-XL)~kkLMi&-@TVVJn!uByh-ry;3MGP`#kS4a1Q(w z=z|{zzX=`!Uj)Ah{ucZa_&0D0-21+Ad=!*<4Sojv9=I2L1^guVIyejd9{ecypKAWW z`#o=!@gykv6rk*X8I*m$06zx)4wQX=0zU%&1AH9Z^ZxSOL!jvOJScj78~hx21v~=& z8r%o&`GDs=3hoD6;MYOf_Z?8q`x*Fo@K>Phe;Ygsz6(AN9{yly*Gu3G3phSagZpH_Lnz$?1)Qxikl3NR zep6t8ze2P#U6I9I*I^0%F&DoqlG zI?Zivlh`dO;_OnPv##=!xNSQ{s@>E{9mlNIL7*~|Zdl)_?N~=?ct#G`aB>iYV%7ss4-*2t42 z%pjJ35p6g+%XNsX5s?r^1*!InT%m+)&UM-``N)zY76HmeB4cv<@}zglhM~B#=((U~ zeN>I`%2IiNT8GYIq63o-zg0>MSBZc?=X$V2J|wZJ)gAl3e>yIrnV_CS%8*}92emC3 z5F{p3k{@QvX1O=QuiGpdg~rbbous(9wpvk> zgS;z3hG19R9Jz4n2n|)qEoIBF zYFwD&(d^yNP!pE(0pdDifgW_}K$raAK}ePpe6}2bLwM zD{?hVs*9#Si)?W`tnPx|_!2Qz6qr?;UF&yu>2br}tRMTTUDlILn|GB-Q@rGi+~%f$ zXD{I1#!}FD)}$GC(Y#tYe)9D3uPv%)7gx_OojW_RYI;eUHi* zDAPKErrBK1o^0-5tM%l8IV8``Oe`-gFAmK+&}>am{&N$fR=wrl(BC>cB=8(~2=^+B-|x?-e9KMEdE>Ooi2DXp7-ZuR|4E=_P_Gvt|6E z6g<*c)KVm8T#J$ody9I`H5b+&KVxt{*{@>^8lN7jAV%Ju4kq(cyKbE+ZBoIc&Y1(% zYNttKGC2OOH_1)%KkTadtlAfMeVml!K~qAJN=D;TcQ3(I+0G2R5m~9iDN2V)eI2du zTq%@q+v(0L#qLGB8yUBCw3E3Bqlm>8bfI9t(w>H;G!qnNxJ2Nqwr1y=M|Q94ej!be zy;SV{JSNB0ifeNyF*+Na*}goSq~{33LP0wnN>NO;6!5y4nI)-AXXlqR!bV+!yE(+> z__C|PM10iKOfX&VDI1`nTt{OXoVw+SF-a~UbQ~_?1NVoM#7dHm&WCioes%lu^*6X) zF*+_iop8r<;~0`iTvF058MHW6;A)>u=`^)53f7&C9&obKdu*pPN8_?^Ms49hghYIJ zr9119B7`$eHJoy%Y;dj9d)VT-DrvXg%bu#q8f?p8sdS?|*Hmm`!U~6USOhvK=~ewi zDNV_!W$W~uI;BS~-C25kNWvbhiFU5hP?7d!BL@ArG-yG^8(nRk`*s)E+n3d{?{dMe zLv+i&YoRV>5|YtKjZOSNv2u-?^B@;iS#ZnJkQ(tL46M7erd%jDshcdR=97 z8#IdlEmze0$}}KoY;xSECmWZ_y@mPGs1?)->n})5>d5lSl|N8LfZ>MK};-88|+ zTREwKQn2jKl^EN(i$nP-cKzyjvv&QBrV=i0pqr+jH!9YF-rdpRzRJf^;K#r=crW+|a0vVtcsn>akj)zf zPw{*LlyiO$6na-dS^p*|{Jaawx?65WM&P}moO=WmJ{(Za^L0?p^C~EOya9d^{42Nz zyy=6MwFMjp9|osEk;}{A1K=Cr2zdQ18NCNVS$_@`ewv`j^PAv3;1BZgHaN!fo8U9x zJ-252&x40~egQlI{uVqAZbP`+!5BOTz6?GKz5@#Vvm8?R^g)(b-vWisE1;a?El`2? zB9t#(XIcBfXLP`>ED%pZ}{I4Jt~0x0``1(fsr5d1Xw8YpuA8@L&~ zpG9I<`$4g{r$Mos6x;#62y!&*HBjdN9y|s90~ERwyxa@cK+)HaK!&U(Q0V;N}4m)ORm+;a9K=1t~zgbQ;?Y}n6zh+Fiui(B*{HZGUw=tlD^i+4BkTjVUV z6MdsDi%{FSFbC`X`IG2TY)0&%xVG`*eca*`n06L>LDXvO8}~DDY%gf8u}Ww=`=UxI zZP+?-)Vz+Sx5O95hRu6b(VnN=Kvil{7$z!mk~9h&TRBk_MoQ+W`5^UKQMNKtaVt(7 zzmjbca)#Udx@TT?LeUoE<(jeH%~JFKOFyAfl4XuH)`A)SKV$nnD_M_ehhY83kK zDYco%#dID&e7s)~s_J@9K|Gst?A*0X%0#~*vD3$nuDxTgHK=hhRqIgx&QV8BojHhx zI?pE>PH^f_aq75dsMSacy4@XRjuV(c z94VgBjs7tg^+npR#{I9o5MOjwy!7ibyV7t&CPxnD5AhBGHRHm(9qCG%l&!;V-0*Zu z`8v?kjyP|R&!`z4v#=8S4bMp&>u~D(E!AixwJ=c6g;Ol=eS?cP)cgf&LZe}vAw<D@;{QV_1k$We!`7OGy}dv1;f_9d6hu>!_;)-pwy@otfNQ}vumf<7hOioEj~g~bpxQqM7KHwez`-DO2-jKFrV zkeu{bBXahMP{xMkmzYl)XLL=F?2+#0b@|H8r(Km5wW0| zVYO{A39+y3_IB%(1i4lE?7UsA&7LT;z6MTfLo;xanJ}vN`&QXH?IcD$H67VAB8>{( zT<1LoZ3aXFnJME`lUZuP{Ie{z!gBKAB1*3u6}34rR81~4PJ!Ng+$YZy3dx!*iIyYO z9!4!|a+S_wPRpaQ?#fg2Om%G{Q*ia;hc4gwT~nkwaNfcPK_YL!_Yzb*4-x z#MVjfLMKnTGRxSVscweUOwFwjA^Ti2vlcTO?Em%8EcL%tiw~K5cizl0SDPW3-sdEKaLcceZCtwl+0J zA(AqjXFe+j%p@dHQ3)l=iAP9Ht-#K0*>%(Zkpo_6ih!E`zj%4b?VtAH6X){x4MA$BtPG}8e6Td>Xn#~4m~)~j?LMaiR}I#Zq!Et}56{fZ zlqoNQ*sVIVvUr%XLi+@zcsOBMJiK#c-Q_BPbt}2wJ+(Vi%W~q(&AMh&_$o3 zW|tQdt?J}5<$B8tv^Y&YrJ7FUdbYc97n3zYtEjI_)pm=WDGb_|>uRcf+4GkdVpp}V zv@f-<1Q|!((xN&aUcH!lzE(l|^7%yO;6r(fV>XaUybtDFAJzjy#wy%U&AK*k5;iRQ z8s%QS$VA?%czL1ewpv0o;Bk4u(@oH^jS!|>&vz+_@~)?M6DDP&x$KMWiWadbhHJ|U zcGXpJ`*IMsuSD%Da>}km*IU+MTGtb|Y52LOb+X;^0voPaw*i+;U2{>1G)&li;A0_W z>s%%{=qc_NLUZe$TUSm3D|O|!ulRLQRETcurNxaT-Y07a6470X(vBdr3bCt4QBPI3 zM7b?Jx3uW#LgJ=MyrzkHrFboKPaj+Q>G2*7ufP3d$JAtwvA~$)O9$1z9vh2XEAM=A zjhc6ao<5f9R;Q`*+n1YjX`J><$PM~*o~8=ZSWRR_k5x?UB_-C}e%`G{Sh~0hN)<&; z>CE6`jRE0}$rvT+7z{1=aVKuOCZ`n737YB&o*qPYtZg zkQiFsiPar)F=_TZ(fH~`RueltK*A{TlQ67~V49U%s#vHu`D-UQBo&&Y?Q!iwzBvs0OeR$mHQ?JIRgT5iP^ zc2hD2xtWeL$>i0$Gb^6#J&|ZmNA4^#JLpFADXi*0vxy1aMqur6Y4W-j(Bng<+Y{ri zq*TIA%k{Em@0usSmn*M9oW8!3RPxiCG$JA?!ufd}Nfwku-+xqJx0V*Ey!tD4zP-`u zrJV%j^crZkN9?pOkuyXGEMF(Ft9?EwEv?@AL3a(EUVUYGVT#m) zJT!5_)3~CF^(+|+EgJhgK!dIMyrgx4-!Pm_G#)aUIhbJ*9$ESS~d=fkF#p3gm_-|qMX;kI;bX^|{LYe^8I z*^?@z1@EgmO&RE4Z#vC2ywb=opeXENs4(63^F$yi60?$!FiL%3nfPUzP>EZ4ETXt^ z=P-ZzM92Zz5}hGOXiXYc{8N3Le-eV}g9~8M|c<;oeuT1OrspBZ2bo|lIHRN diff --git a/lang/python/az_AZ/LC_MESSAGES/python.mo b/lang/python/az_AZ/LC_MESSAGES/python.mo deleted file mode 100644 index 7ecad241f71e5663e7d04d3dd363cd7ac4419684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8281 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 diff --git a/lang/python/be/LC_MESSAGES/python.mo b/lang/python/be/LC_MESSAGES/python.mo deleted file mode 100644 index 0f786f5e73881c057802b9516a624d671bfbbd1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9786 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 diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo deleted file mode 100644 index 6f3e1574037cbd649e248fe754432fa5a481be0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1259 zcmaJHxJ_h(+b<&A`w``$ajb$1dH)tG}G;{Ebh)WJJSL&CPE}8 zo-y%Y^y0~Q0JITN@T#}z*~H)APw<(R@+nU8^qG0*eV^yuxAXgK<4XhUBya(^51ayC z1A6@c&Hz7wbHJ~y^B-^<&~U^sn!)X08|;G5gO|Vyzo=!*~GBg4@9#!6-G31K1i!GmZf#fck2{M)zG^{lzexBZWCR6>%~h<)y6 z9zQXLxsWsnNP)VKsK-RQ9`U(HBF^d;d*V$=UJO(D`W=eK;>cw}=%Tt3Nj4?jsK_M} zEz*>f5sXs#lrhf2sB}PnJ9}G-es}yBkqu~p1zws zLj&aQ!1$fv(c6h}R)}J0jtI}so4rL(nAyl7iLp_0oRxfCWA;dYI|#Y`Z~orF71_-U7K+UCq5B zW@=^`4IR>33_Ke9l#}F?lm+2f*38UIT55TJlFg>wD70J}(2&MVSQ16TYPIdF87t>m zsl>?e$iU8*X3}<|FXEDMbU0VQCrCCctwKP3-bLIg8Ve@7C$fWP$4;KMnq;v#z}+a1 zf50IfIbUu!>X4k57z>Iq4a~tP4uwN_p?VbEtzD$H?M`xXv72O4T?s?IQ)_CyvVh-J zwV{@Y`mC1KC$(I8t`9m=dw}VKsg?Q4Lgj_}uGaUa>PM+wsSSM(v9D^a@)Z1qAaxnZ zWo-wPp?NTELzQd3s*FC?)W)u|{}6llW(sho&FW<5E?86EoAJsZFc$Ob-p?+k|6vUZgUQjh?D*Wi4&|1q8G90ssI2 diff --git a/lang/python/bn/LC_MESSAGES/python.mo b/lang/python/bn/LC_MESSAGES/python.mo deleted file mode 100644 index 7faa09a2c0131e9cb69fb3bba3dd92224ad746b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2333 zcmb7ETW{P%7#*PHvOtlz2#Jd{=~FA}wRe*xo6SW^LJ|Tbjnbq%p=#D1Zwy|0WzRN= zR*M8eR0t3+jVdluRFOJS8d21TUL=(M10QuVH7RU4QS zQ1*TZOP#^WXTlloYqDEib9Wm88wVCfzFQE2H6o!IET(qNrJCsLJ z7*T0MJ3+e%k0P05K>(X(=y>irjd^t0vpJaz1J`S`BPP5spi|PXcgE?=;_?JMGaF8| z5GVJJ$u#qP@QIMNgBG(tqF$3VI6d9zo+i_t?|VUmwp-MNmG+H`WG-w6LSD33Bs|HB z!};*gma>Rbhr6E4#YH9~t%#3xRO0eU@x{DIE(jR{p$-Iex@0+MN(#lANe08R5-5$e z#!lDlbkAuc^-Q98J+P^(Q(E=J%HQgU5-vpHhujv%tYci{Q4HlZx-dTZ?)c0Uy*Raa zVfOrdVUf4ONEmZ*!*h&@b|W^H!Wu0soHrKvWl#DTZ!y7Zv}~0I4XbKcL$qYo`Ul>y z@GHE>Vqq*rEQoz3!l*_oR+Uxj7I%j#1J(dz{f=EJ4OU&twwc2!{1U>{t89RdI54U> zLxY2?jz8Bbm9g)y4wc-h&C2!4r6J3z^jl-+KwXwhL8Fak8B3fsYjlDK4d#3F%!&}L zxMrHGtE)vJg?KJsE81bx#I&&{S`(WBF0om*tT#($JuuG}=4R)n4r)>=S_KS^-~n=3 zZy{O1*M!;fnHLOWSXmTvF}l1oZB!5JB$dk}V=BPhqD?hgt$U&;vqtMdVZq0w`o?q^ zHRBo$T521QmWQc+96b}zzEN5_J6yXUwm(5UnkF|@Ot@`fv!!UVON7DEM!NlFnq0?I z0?W?)@?0ODuPOiAFzKc@wulml$a`tBkK0|P1G2G4Feu+jlO0@as0*-M(N_EFUT${a zNt6MeZmPtt;Yi=7$sO%~RNwI)2&af-ijq|pBrgs`exYSJ>A&`J=YoC()#|X{*v~N z8fZEBy-2D8_#WrYJEl|^RPf0@!0TTck;he2sYU&tA<5KGlgiKj;Ss=rI)%`q?}y^d b-(Tpvj|2UY&|<$;4Um)gUxu%v-u1r#1vW$E diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo deleted file mode 100644 index 69051c4425fe566a8e2277c19284e7bf16a79c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8366 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 diff --git a/lang/python/ca@valencia/LC_MESSAGES/python.mo b/lang/python/ca@valencia/LC_MESSAGES/python.mo deleted file mode 100644 index ab2697f1ec2ad9316c51d2e1498f989f360f1a33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 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 diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo deleted file mode 100644 index e202699104276c7de0d6d88729fc8f5e37384f79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7824 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 AD*ylh diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo deleted file mode 100644 index d2ab2f33796606a1d1749770709f2e1e2fdecedc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8870 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 diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo deleted file mode 100644 index 86619f9ff2c261365807b91a045a463883d461b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1955 zcmbW1&u<$=6vqczC^f&MA~+y46+~StUGLhdinD1DC2^5eyGfHY>J3eH$M&SVGt16w z5>xfYg$oBHxWIpb!~t>RpFl!_e}O-N?|66PxQ3?fNY9^rZ|2RsH=g(YS~&kb!FUVu zKIA9JyY~A9{9qh|?}20RL-0HBBk&jS3ixNKpL>yzx1l@WB`_%UP4F6Y23r3gK2=T#X@EtG$zs25PfgeD>_!1#)&;eIK2HpUFEcHJ?8|T8yMf^+P0`zsT z1@4vn23&^z8+aZ32dslvE)?tTg7&D_;t zMaAxCZno3w{^yAsd6JB2IyNK3aG>@ZWX7TmPwB%)q${;yaZFPdK43$x8=D48%3H$s(sa@FqE zhO->z_z&G(&XR!cq)ZAuqD~*zAF4WaM#iK%@Vuj=qlU4Ehyg#gJ9r_BS;8`|Jp*6u zwS512)8qP!{(Y}r>v#K|Y0AxpUt3qwaEVaIDRMFV*m!Bogj}WJh-I3awR^j_-1c;x zJ#D}3y5A+C1IRW^8*an5bb^B8T=Q+s wHHu`WRzl_!f)8O2zA5Z~d2vx|R-lQ}rJ*3JeQCnp0RGdkE#Wc*zccV!e^`-n2LJ#7 diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo deleted file mode 100644 index bc59b5fe47cf4561c00fdb21c09ce8761abba066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1907 zcma)*&u<$=6vr1@D45?rN-M$PMG)0)v)*;6Al)d3lDObDZmiUexK)$g@p|IjneEPO zeyHk=0~|SU;EE6jE}ZD82P8`zxN_$o0EvI0-|^Z>+~AUtoeKKq@6 z^%mp<$d8Z)gY`9d5&Q=H5c~oB2>czq1pYnN-+8_~V+nj0_M2n<9(Wb{ebC1L z1lssNKpX!rcm=$0#&LXb6}0;XJP&>k_HoBA;2iXeFF4L+FaT{F2kYRsWBoVqJ?Q^{ zwvIC|mU+DoHlVwpJ^vm!4}Jw!!Joke@K4YKopa^B58A$Lfk?x79a4e30>=o=>`}e+U`{`zNO4WJXMA61;~Xpd8BSAW z&-Ux&D&$(*EGMZ`b-o&^LK&L&UQ?umL1ttYEF*3;P;+?A=ltaQ)^ zXlRN?Ag>)B8n+d>TRhhofPgyJS8rYayh&Tl%{#4)+m%h8soc129gE2QtcbPSRRL8x z8}26G6*k6QV}=K`=r=xf{Uz7GMh!ps`05oOtFq3tal1K_I$=iT0kv5qG;J6zi#%Ph zQPy0M3d9^bErD)mB^u$1Lodj>JuTlD=; z8Xh-ZtV9QaN!*7#4l*Qa_`dP7gbBG!VV~uio0YrW8}8DPpS`NbbGIo& z72#t9w6rbEVV(hTQ|Tl{&Jy>A%2OSX%toqSSzM;_?@CqD+zK^n%N1w*`bcwIyO`+{fx`Xj+Wd?0U2YO5-g18{f7!5?eQy3Pp(P*C9x17+^y4zVgt#22J zi{0^~y(GvC9}OSXou|$C{@lLZ4ihm;B8C?*;6_B4zOhBp@NwV1U28vXKALsx*sWPj zDqnC`6j8A~yFJrh&uGk)V}}g}BI0FvCgGz`H|y~>d1`BXs-i>diGpVKdn$!57>fms Sra=!Mqn}73qJ;HrPo4k~IWF@6 diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo deleted file mode 100644 index 6ec9f5277ce928ae017aaca55c6c5927f1abeaed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2518 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 diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo deleted file mode 100644 index a063ac8ce03b08231482f0194287c8b9d331bc5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmYL@!A`d~`@Ie38RvRgD-mSBQVlqk|b(+V(UNN;l%x<1hEIcs z5SHP5F`2!1b6zTK(bQxjMfaP`pjc7xq8Xa=Pf>f&h*?gdL;PDr0z|st6MA)hL7cp2 zCbJF8IEpzdD2z3i$r_rAO4x6%b0*UkG}qRahGJY*RoiMNjacz*J5dErSk4Njxxv=? z4ek(fncY5&O_L~y!z;E@u#vhbYaiRbK diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo deleted file mode 100644 index d70c91133d008dd016bf89e7bc75dd23fc949527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 zcmbuAJ8T?97{><)uj3t_1)whphBMCI!wJNkvBcqXA`?5d>`Rn_g7NO$-6Xp+%g$`< zQxs9r)6gLy%1BV9h!ly+^r>hgKvdADpyEG!yT0=s!3nH1_uF}Vv-ACD=6`n%ANrc% zc^Tz(l%G)EKnWkh51wDZ*T7%FW8h!lTi}}yGxiR+2)g=Z@HqGt_yYJN_!4+Kum297 zMEx%4=9zh95Vr=pc`WF@`wch`-U4U9yI>7GdT20y6Z{nQ9nh`$XYezu=}+(|>MM^i z_93Xj1@L?DBk+&BKJz$Z@1ZWiSHW*{-UJV$ej7Xi{+9EVCkE^O1U!ZIFTl6Ko8U5d z2YeSSKgn1f+yq^oUxGdG7D(W+5@T2b}@nHW-HPoZFn zOjCeC4)%>PZ3wVE0VE!wz(mxd>zH1u!6PHDC$$( zw>>QQlHRK9Z!uQHboClrR>tx$q?r4cF{!B(EmCz!D^YapYo98sG@1^IJ_HRl%EY0o zN6a+}v@qlZ7CX{dHloqL4BDsBy~mx?#b!}A5lA>e@>wb(s4(;f`^7S3L@0bK0_y05 zY)=#;3N<4gq@k#=^+fx^7?*z`3YDkIzD|`z&Q+Q!TMf;ogK4%QB7J2-slC=ookq6y z-nq3W7H24gf+P)zD7Jk<2B``}M=Ina6>VwT>xO!ZhsNpz`$${`V+mH=F|V-mDsq_& zzHa(B2NCuUNne6G-g4kw5Q)JdZ_s*k@oe+V5?xr@*j!#aSK1Jjst9*SrmJMYZVw?*A_f#&>0>|Uvfp|p0%-QRIA(D+ZF4AWk>8Fm8k0TkViZbrfLyms~7`%h|UdjJiYr~ zySosqIgym69pR3$OE2ciSro^`l|zT)tc}g@aC9eEcs4HcI-F&0bk>^5l{?^`)$s&< zpQmsP9Q$T&8fZ*a(Y~*Fc!i6YwS#wKV1Ei*o;jaj2gPL8n0e-d1m#va9_RMLh&(f$ z;`kVz20R$3ng7K(k5ts-G8Y<7Jt}o(mOidD!i*D>W14991}t*VT65!ca>bcvjz~)* zmRTJ!%qAtm%49V$&Kz}If@bEI*{K+uqp|dGwsyZG*d;C%GE1SCyGig%?>6x$>NPZaj@5&&V(PzBV@prABXg?qIrtB{x=TMNv8&Jr5@d zS|*FP>HIZV@Jbs8Gb`i@9&2GC(-Z~i92WdjHXe9lj#Jbl;RBEeNFRlS-rijkui%9# zQ8U3IIA0>;{umLgUCjW+HL(0?1Z6}pU3*ck+^UlT=Zz5oCK diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo deleted file mode 100644 index cdd79d657a53de8330d232f84dea1b0850f1c258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9196 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 I61~g%FZYfA>Hq)$ diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo deleted file mode 100644 index 8b12ae6dcc5a26193270026013bc989f3e606943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11474 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 diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo deleted file mode 100644 index 60592e1b5fe95af68a175fe61e319d3c7fecfd53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7880 zcmbuDO^h5z6~~(-BxDl;2_!%uN!ehsCOf-pC;rHKZL(h5v16~jtep>}h@^J9W~M#; zG3oBv^^E06+(29~C=v=%grz9L0!tv193Z#B2MZ366G2J@91sX3Ksf-)h2N|0p3hx- zfs%Xv?yjm=@4MdHckjCCC5Lf<=QBLBH#m+4pS_76#_vApI8T7T&vD{r$JxyLDtIsW zGWam~I`~QO&)_5A4Yy>t3zT^uoC3cG-VOc=+ztK_{4DsuhaBf~;5_&sSj*qP34Vh$B2fO0H348z)Ib%@hy#&hsAA`crRZ#Z51AY|z8z^!+w`F|n07afJgCft1pwNE}ybt^t zxCeY2+yvfzyW{KtcY&gp0DK614V(tw0)^g^?79Go-!wqc|2IIf^CeK$ zUj;?)e+Sv>Y(m-MZ@a*!!9`Hc|2`<|-vZ^le}m#*_pq3)&Q4JHTL5=}%b?Kx4!8}x z3O)k953<#n#<|7Lhe6R(0E)an1P_64gQ8Cb^CC|L6uZ0x3cX*05>GcGjL7pKKO)~e zC~_Nc5BN3k1@Pw}Tb!LRzXW~>6nnl3ihS>ZW$-?X>49GbMZUj)cYwFyd{2P)g2Jx> z<@{Gc+{3wnXO2h4ERV=4ej(#Ao`-pE;^`lXmt8!#uJvs>k2GP=1MCo8?&T5LiXnE8 zQOdynO6(Ow^d&mJmFJ5*Gd$u`GWKU+b&sn$gqt0r)7?Cn$Hswt6nhfxc8IJZw+yk< zP9E{!?L0C>=cFh*2q8%i&Z9hpjr9Z6@7&B&49x40YVDBtpW>O%UhS{=_KiGZ8}Tpk zO&OTU+L17_c}Z++$80%r&Azx?YBpS*8g*93)lJE{*(v*7m9_6HFI44P97U;$P1=k@ z<0=!!QLJQ*IvX|vc1$`Msic*pCMc)=|3hlOc2y8H!&EgQkKYQ1Sq2(9PQBENLPwS~ z!{mjgPHHd`R=jF6)^=)Mhat>r*Hwv$SG=+?sRIL-Dvea!3`@RQF>q+XGN11$2pM(E ztJcy33r;@adWl~4jmpGxRf?WWsxp}i>bce?i%ljR*i$g`Uv1jZL4i){UDleRcRj{} z$n`3%LOTV!u?eCTL>$&xC60n?YHc<4aGj$E76uKWDxPl&;@O&G&unB-ruyp=J9+HL z+9&pVgE}a#>dfcgjCy?O$^BTU`+lNf!ln5_>ZEUG(Qn~|X-%ay6Cg-;OW_2$rh0q4 zu&Q!;ZcvU}jkKWKJ5kn{&`uIa$*OJ)&Uu(G)q8a)a)Ma(K;YBQt4ek%| zE&;Xb!Mq#maxs?*Uj z+xx!|;th57oO4KHVS*vT)L}0kE6D`M)N!R|Y*Z_1s+z{JP@~EMwvv?6DDo54(B(SZ zaCDNAYK+@Qk~qzoS1=))vsma`(hP-w@&ci;`RuvP&LPkDMG4J@^}ftfXzfULfLbPv z`H^-_-20X@(OV@1$cDPRL_S2JDcBwOzGa*QxYaG@pwbHj%Y!;AiN}phq9iSuGhUK9 zeSvU|MFWAb{<;N8mBM2;J;KHDsK{Ze8XJrn_q1$hNooBKk>IMnDW}*|(yiz_Ur~4r zS)=J2yZ1WDnX`MWD2)@i1`o+e&o*MSPn0q{CI1umX(kz6o8;xUG7VUVO4Rt4@v^7|%S@>)<7tF{ZFRRgOOoV9?AiS~YR$eZv%UpRYD+UT>1q_$ z2V-l}IcZXBo|=x`RnbP7Xs%B>r?N`~N6+q~As@-7i+nshD+V$Ngzc?o-5(401xkJ+ zD0FD=L+lx2;3#f6r$(%sC?CI+wI*n!Erkm-!@_EiU5?UP)sL37pFlz4O%w5h9x^F8 z1+gHGm#3(K`am)ZsX{(BH2KKh<%PuE8(0p`??qW%F;%r(!qnBC&PLet%gNjFX^(>90l)#)su)i%38SgUD_pV3n&-m z1q7bkRZITf(~LDhuCt_Bsd#7l=HzHw2ox%rg!3%0M8MoNNE1(UcS|@_NWi4|K@)dn z$FQl!3$)rSA!-xOqLgNvRo%2Eu#V8c%W9xAxI~O0xp{3%j_gfZVOdqOi^X1G{k0}# zCc%ChFD@N%OHY|NLHRRkac=(T+~Wt;QwNt$9yxJ*Y{@jDI4vzCRnIN$Z&s7isc1%x zEuJVXnH5j=lnzks&ZzCv+jfpCDQBvUDylBw;}(>u3K)tXaV#}-Gz^&ZU*kg#6R!q>cIUGH3W zZA~7f>CA?EhU<}w>QNhlJ$g$~lC;&bNjq=&Y3E|%(Lm5Y=wA2Gxm5N#m&48l-^mtt zn}~W|5Oprd3g@^9ly7Pj`MvHTX-9sQt*K6tGF7#x-R@k_Zs^GoYxNa#-Ag!x9$Wp+ zrL@NO%W!GWNW8jm`I~V;TrR1GU(UDP}d5Cr)p*j&3*V;bJrU|RYg=EXL zLvLnn!s}BLW++=WOoL{mU61@s$U-7hZ6%$HxZgU>53&#GR`iwWKM>zZ(3=juKC@us z7&BYl7g=tEitaUes?rp_m6A4jYx&A~-!K1iKC32^3uAsqlBz9KBG%|y~~JLVaxa{p6XnT3GBM5k8bXDL!)y&!hYvs8XF>4 z)SyheZTy*TlQgI5-f82vubi(NCa#?Cqa<13v_|ut3t@}vU?uWX=dcdA-WIb)sbYLh z-!PefJ$r7lnBmX{>BuRPO@)#S|E4CzCf3I$RJC>GJO{g{RbZ+r?p*e@qy+mHj&8$L zP9mBeGQV#cLql36&8kD)BWZ=f>Mxv%X52 zt)8!ljrt>4jBVOp-RW((P9U$fBX7etaLgiqpUQ3+nt%jx^O!tNZ=G~AL+4F*rSnEx z+^f*giu6Br(TD?j+^D{k9xLJx!_&4Y!<&okJwsjd?z3l^5X(xVRryWt@Av?6ksO$Y-+K2x`?9s#aZ=S>PvQV2m9TJP&w zZKUBVK}?ZOB#;?!m2OJe0=mO#^7trA+0D$gbh8R3!GFrZCiN2uZ9( zu`t{b_JsH7qUVM#{a(3NsH`BqPJ=m2j@~K8n=*k4O%AJ_oN^=y$c?FwTJkRMn%&@V zi9-POSf#gGvwrM9BX0}|SWPw|ljib_c7|f4^*TdzT>LRSFUo4BJ*h@AK7W$P^G+67 zwn0>#OQITT&%s7fRLEcFxX%LJUZY2B`Y@bMpr-({+SOEVL{Eqw*J~HW1Nv>V&UOxr VZPRGDNu`Xocf+}E+u>^8`42$Q1%m(p diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo deleted file mode 100644 index 2a6c5294182d69ae0a5b8a723e78baa83cd5f2cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376 zcma)+&u<$=6vqczewp9p=KaM4~)Iz^>lY@9E=bo~%K2YvxQ3;qB;5B@gl{|R0| z{~qYpSvXP5+XCG>7Igc51ulc%gA3q2um+wzS=jG_*U{etozK667C!w268fJ!%-9_G zDflM%Em#JB9rgbn_0K%Q*eQ%R!56{n;B%k>UA&)xr@^m50)GV0f_Fi;{)tB!y9ky+ zw@)8*>wFHL0lxty_zUBgTq^Zrx^0Wh{>(N_aQKqNXw)kt!gq#Q4X7@ws`G#btl|50fT2%9BI4UNg7J z*TRrXu-KEvvZ);XhtYu?-QVtt9v>D3sX)Lfg3m({eud$$e=u2wjEF?n3ZHs9CEFKc zi*Yt%?PrmwuJ;ZlT=_ErR@^nOu&XL|krca| zA?`tp^Fz=#kR7k-d)Gv2aLMbmeQ9;$(&aU}wzjj|+`3ZQ5s6N%*D`_hy$`d%cx_#$ z()O0OBW_AJ$7^sa>U6%g_^wx5@@ntVVy*u6g@qcP(k3_7Yo}b9h{MS`eZ-a3!=Jtj z>HR_eDZ&qen9B&B#uv}IWtK2Y1sMYJ+JeV*YAPR>(nzjozHe<}>ecFCFsN9!uI!0D zH@Dj55s!H)Ox0qRsh+RZ-dU_lzgjM}nys}-h>Mk4X;mvL6kHo7@ZE|%TSb*gwM^YU zPmQoESKI5}(!|bf)f1_=hGO$^_;p(9NW1T8oupsdjQzw<=U9+;dOvUF) zZMnoQ^N>2yaEgTr!jTAZBgZ%UfI)^EP#oH{CF<@NR<81nV>VL1X}^x%)?H(^G3D`0 zwNXbzSxhO9lS~DyodpmlKa1r^kSffbYsmYMpy~0E_@MAYVZHoaVJ&2*sO@4L1(?eZ zTZar6N>eC!uGGcO+~|q~TbFFxMN5f@Q*DHCS9@P>s#9WvThi4D2uy!Ri%51!;<#@+$%6#N!Eh4zU@7`qG(foH&V@GRH@&w-zV&w)RHPlNZt zSHR!Fm%-!5@^wywFQQ!op9kLsUjpmktKf$qt@A1PEcg}p4EP;*2K*5`3;qGpzNa3| z*O>(0M0*{i@w-L;*WgoVe-8#Y<4@o++G8hjehdzw{R=n=vd0)30j9u9;3jwl`~oCD ze*;f~4?qqMJf7172hm;x$u0q306zlh{GWm3|2H7T^XFpxPmtm;P-5&NI0$;+B3K1K z0BM~sK|0^PV*CMk8trpWD-|{!usOjbcst zp0}61<}<*KBynw1y{Ai;Yn7e7AsGX*QKFd48Oh7Ln|nqTHUeWfYEhoruaaZq75bN*-^wyuou6x0O8@=V znv%$spbK2jZi%d3uh)wlU@wRY+98&y1| zd10NmW`wq(aIvZJDIrXxF2a0-Ms*`ahP*W?q8gvmPMQ!7rjnm;I+xg5rLwiPRYuil ztLk#Q?8i|B)gmGU%T^qw*~&<@dS$qxWaUC>VQyi%bC%(9wS>}iQp1Ox1Wr1+?J7wq zlpce22xFz2xVbjtjdtv4tGYDaw1$kpml_}4P;SrF8dtKk9OBxC-b`#FTjM&(ns#Dj zjOTwR&TBq6!G|x5l~8({sBcO*l3NHtUtQ~xG!vs%d8m5y?63vH}}vTE`Y4X{ql^YvGabo!S(JJj?Y>#dNgx)$gNqT}xQssB8g}IGXHt2@^VSLA!VT z_bGH=|MQ&u`m#(44|=kvYywr(qmNlvI{=mrk?Upm90Up99YMow(d;(pTA_$xx5Xi{ zneBZ*H?!XT!r2w`Ktd1wJZ}dDG+$92rlZ+VHg~_4wkPCzI+N!yJT#HHy6Q}j@D*nL zjWfy3wD?HYh4%JLSjexu>}V@}0v1zzCHBOZL+LZEg+fB$cxtm0^++y0J$=uWsc_HE d^Tl07vY}*=()qo|wULhWcNJydR)Ru<{|4sJQ4jzC diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo deleted file mode 100644 index b56cd6fbc416f5e95077fc73f1878b18f13b753d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 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 Hfzt~86r2T~ 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 diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo deleted file mode 100644 index b15abd450a8deb0799083f3f81881fec92d42570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8279 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 a%Z-&KjEt?Ept}AWT|es4|F+M2r1cB2z-TrA diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo deleted file mode 100644 index 5f976d9ce8765647927d2ea356e71c1066a4699c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8372 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 GPJRIf0&*At diff --git a/lang/python/mk/LC_MESSAGES/python.mo b/lang/python/mk/LC_MESSAGES/python.mo deleted file mode 100644 index 1680c8dc179d93695bfc46dd429eddb3ad39ee6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1964 zcmb_c&u<$=6ds^JF)e6zNbwlvU48R_jeZ{C~l&Ak0~|9WB1 zR}AAh*gn`Nu;*ca!rY+87<&;o2HXz}fCqpd0AB^J4E-O6@pS0l9mZdJoUxaYHwByo zeh75?zXAS)oZG-7@Z&vXW-ujR)NQ!Vyp)I40s&)2k?F1 z-lqrg77+9d^z0d!8%SY=e8$+bLqwT;Af4@nJpn_Be7K&lX|9yE)YPga+ucOatZXmX znffTOlt?S+o$lXFL zOJmtR2lIV|f&bu*eV%rRhZc62)Bcwnz*a5s9W1A+>Zu zc0r6Xh6xnwup5aYyXT7Am!C`Y1+aOw&^rfmbUvWDsp*qb?^Wqsb^c84^r^zU=;*|H zb<>ui_indsyoL^_Fn8LU7Z;`5FK30EfK zRwn_~d19radGu0WG>ekniu09ZwD3+R(N?RN%c$7Y@$n;$c>+YL-9-<)hTyTIX^K!Q z$rT-1u(o4@QfX;vsc2m(*%HfcZ>h;64tilq7Q0Mo-1pxsm*U0J;X=JuuWsGCT=Wam zT3MlR+Djc=$BJcJLhq%Tq~-!ojIfonjT7F)R-P->5{Xw;O&vw`19H z=N!?UAO3wFr!7dUM^MJi{FJ?PJ?%TqAbDdXtAW-ah&*sTTS>1&L0{(5blY(|=%^3L x{Jgmp%IQN#x4^fSU2_6n17$D!9`0pAYVW~cSg!F^kgq$H4u55j{vNk!)<1s+OwIrR diff --git a/lang/python/ml/LC_MESSAGES/python.mo b/lang/python/ml/LC_MESSAGES/python.mo deleted file mode 100644 index 60415346e48265a9f8b92a6582ad1cbcfc83f27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmYLFO>Yx15M915d*A?94(8Shyt@e%O*aJ5h6F`4Gzy_-oQ<ZI5C{Rs zUbt|eCxrNtS3&~HKS371gz>g&M|$&S#_##-@1^tm9>h7o6~GeU0$?5B;xXVdfE@D- z`1u*ndj-4WTu(Y zEMb9=>Fw)o!xixJbVgE&N0j6->Vtj0;e0+1v^#)J>2{EaJWQN`NUA~& zCKcAB=w>aMD!=q^N?>sD$oK>ZV4C9obV_4#M>~3l2!_ zlRnLiW}fE#oS%KSyiPn9o-5C(=f=}0^o;zn?`v~&P-@MG%z?~SWGSsvMsu7F$4|q@ z7%$_+>umml7P2-LNa6~$BBO2LNM<-j>6|R&r)oT8B0zH7W5EMqAz^(SFn)V?&AiaF z(8X31l4Md;94EpG*eKlI0Mw3Cy4&r#V1;&SE%)8rR5TZ*sDzb{g10!@W9&Ylm8Bh& z%#!$+H0UxkHX5V`l6}=a0?0kkx)e$eaJ~`NNr>LEDG85v&8xMvB-XiEDP3?JzAHGy k;#9#VJKGyj@Kc7DO>Y*MY&ygeKF>;IyS|Lx6_sI7Lo+tm<&oBVZ|1{+A z7Rox&wxkzwD{8QTw=((@NJkeXy#iw!t#YzDIeUBZW=^i=>ko^|3x5s0HjXZB-IVln zS6jN#Iq_GQbPb=IA%?yd4ssGPo>G=kHX)qlqw!0I^4|&T=*9?TTj8|HNtVPyGBz$J zLRL|nWJLtyVw6n)-BX!fSA|I9Sd!yW%o8cIsGN+eEah2R3Jz?PKwPm2jHBy>C!9yG zj_yihB~|ZmF1i8H<>W$}J=Bd*2Yiaw=V2k(WohrH^NwOvyYo|n%(;i zr7AFVuB0v-RpSzh#{FwJC#vvQ?aqjno@>)t{OIpYJBy~|_j7ij$cq`_hg1LWA;I7& Jw_7lQ_X`j#n(Y7p diff --git a/lang/python/ne_NP/LC_MESSAGES/python.mo b/lang/python/ne_NP/LC_MESSAGES/python.mo deleted file mode 100644 index 1d91bbdddb08eafa1dbf60303e890f96357707f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmYL@Pfx-y7{)Pr>d~`@ns|U{X@^Ef$qop^5Cs;TTumJ>qh@QDwg`R@zn-7P4ik8i zU*7+DpWpMdpN7|o=fZR4IrZFlYK5MeA9j7LcMeL7{)Eht@scdSSg94qNq_L%e~R%U zp1+P~Q#6N48%HKKmrL@v$t_7W$0(VRIef|bh75%Rjyo)PAS@)Tivz}Q@2;5_dJ!t$ zh#W`?qU3lAl_(@`?qdr#*UnXzQ@Y)5+s+7Owf{e5&t?yO)(ng&g{!gQ(!j};aT0PYG1Kn+JH2?qr diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo deleted file mode 100644 index 4c862621f9ae4faf66ff3b5c949f294f5d7781db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8059 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 diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo deleted file mode 100644 index a27bbf671ae34c2f1fdd94ad094e8a21cfaf3db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8366 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 diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo deleted file mode 100644 index 3844e22d8ea8beacddfb59637432558bbd6ee318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1174 zcmaJ=&2G~`5H_X!$egHv6GDqbDqCe^yRB&I;+FoTC_rhHrj?4gY@AK9#oo2N>!vB? zfOrLvIPe4;VaUmvRrr=?;^oz5g758ES|-7yNH3Po{Er4sYOL5WR4LW`gHkm741|T zTeZ#SW`iaoRd_>oSsSlpU5T5*M`nE!H|Rdo8oWjn_0hEJ&0)8K-Ff7>{>y#D9z`GfISKOo|_EAH` zgloCgQ!0_Zpt+DR5-S|QQN4VUe+tS=BnU| za%ggpz%3L#P)-sN#urf7BdMe+*lw=l%IP^>szXy;<)LW9Pw-Kt#nefkK1zjIkFu0R zcwMBi^bt>TQwB2&Xt)h59t7T!>syw^OP=d4dh_pby)^B6w!L5) zPeiMj#tsV=+yC!CQgZn9ogSqgRWzc-^bOq^KaP}*Es9t^!NbU3v!jLQ#^L5g^88Ga zkMBQ4&mCYWN+T9C4lR!Ma^fCsB(HHM*3KW-u+KGk6YwX=AwiPq0nZ`?@ea%=O{wt* DkhND_ diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo deleted file mode 100644 index c26778b42e95e02654a2d7f49d1b091de1204fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3529 zcmb_eU2GIp6dn~(Rz(HGKh%p_?27wW3c|MA3biFw3$-nnNHCf1+-*m8XErl;S!yA+ zPc=Evqqw(GE+?n0&!Zy4x$>y7T?>XN+ z=R4=#*+15-_(s9=0)89tTXCPF1c846>G|S*MR^DKCGaWW@4&Ude}InzS3aO9&jQy2 zp8-aJ&jCAuuK+dR^T5-<^}vh3b-*IEL3S9l5mrE;<_zwEx9FY9J22vhB16KnVfPW&_o4|t@Uwg>oTlcV{ z)M5M=8#+kme<=IQ(quodGRkm@xJ zq>@q%NY^#^(SvlQPV^2570@f#T0uFa?vO?H25Ck55f|0B^iXZ-L0a;monG=Id4Dw8cmNPGQ?M@%v7%1^+nWQz86(yU> zj%33PxrnUnyqc|E(+yo%Y9?h@Pp3@?!)emuNDL%pLzdSOq-LqfoCqr&s-6b1FqxGz z{8)361p-w)x_rmAtPGM818htvTIz_%g-O%-a@ zglTZ*TUO22)uUuVt+WP~E;DDyG_tBCbgC34_n5FK4Vh|jrty?c)lZ@J%~^}L49ixb zH%c*Q^RUuwnMrQj6i_KjR$o`2q#dwlgw@px6Nv@2pwh!L=3%m|inKg?XPmvNG&i`& zo7N%p-;&-6E4^IEBnDMW%Tv5b)ag)I>61d2iqABY+l)GuAJJ{0^q~}Z6J9sxRhtbT zQ}!8XHbcmY_#FmCKCqw-!cCzv{W8^$c~XQrwa|WU*-$Ocx_7p{yK{Ft+uz>P+qrj7 zpoeEoON6@Y0bL92$_?0|J~Pe&-Frhl{IE_wp|@4R9*XW@v1oit0xKm`#9GtH*XTd$~%sP`8&Q|VC=Lct+IX7T&#XZijK7+xuGw;m0 zW9|fVMLMZMtXKktsaC-2~p2I%6l z>Plyop;ZAp1A0D0mTP^S?ndsUVM zH9#vawZ#x?MfWVuBnm-2P;@82R3^ug{~7GXKPLJNBDwRyM~umXQJw#?Uqk1D z)W2A62W+&w+PB#*FW@~l#8Gii$`mV|OU+HKiRlHzKS!O5K67SkRvYzLBvFV2MzY@+ zS{D=~E_^QeH7Oqhx=ZC1NaqMO9mNqlgDvQAOri6!8Qi`j$rvWkz*4;eeaxL7WdqO+ UTeCmzdg{)}faxSol)nA{15``BQ~&?~ diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo deleted file mode 100644 index ce3bab491cc55b6d7e18ec3e8532d00de737be10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6775 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 KQM2ChPJRITM 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 Lsv|`Rb>;s6>l_m3 diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo deleted file mode 100644 index 377bfcbaa708126fa77af9451be5fe192a1488c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 zcmai!OKclO7{>=F1d>;G_d=2~)>;V4;Uk499n)vAit?xW& z@DuP&@FHmaUICv2Z-E5<3jPjX_rWpje>%X}+u#Gx`ak@5VmAQxV1EX*@@4QC zcnx&G`(QWNagebtumBE#CGaiqM=%5a0lo@80Ihw;6O17|dkWKzXE7m)hpiiF#KYEx z5bXgohLqW3t&d>&1p=_TCIx#sjnBKEjOG=AsX~$Z%MP5)LKP+-zs5Bel zo-azIL#hWgUOY=)l~)9Hp1aV=Mm*oQ%JmwRp_Mp<&1j%BPediId76#eYOH3v0%)BK z|F6m^K5vZzp%+4VmWq4JOS73EX_5_1?bv4|Is~IKQkYFMsg{Bwm6IYCJUvIkwgtXQ zg3et?vk4h~DvH_}Ejg!!RA^kDCI*Ja22Kpq>EX$#(NiZ=lcE+%?To96S8@jH73EBa zc}h*3awf&RXKkF1xE6WJx!Ly}x7TrxQP#~LIr@%^k@}b`?MzD^D4*+4=4r|gXTuT? zXv(X4zg(hzP*e& zUeHIyIWCpZg_-FQr*~J+hAIo`3jq%#)I-2_G-ecSb^4Re1_(@m3X% z^ii@bbO(pCZlRE+t}e1m_fR35r4Ps@sAGS;klPXU7mnIxY~l82T{?e0F@cWT1Dh;t zay@-1X1+CB%`eP4H7}a=<|T6*OLNz3nN1vQG#fbl#vc7_e{Ms!VIs&@$ZSK@h?PEv z;%ak+neR-L7~il8HxpNpbztsNbJ;|&z7FMOW-ePt2pq@ThTmnI0HhH!KOp=~NSDn9 znak#ixoW=Le|oR+ed}*{ud%kz^Im(D1&6i(q;&^Q5e(cwq{v1~#~C+Q5NI1!L4%Oh zdc0kS^2V+;60)MW4e@_CPI4Qzwz!=j&Cg)HYVJ5T^|+!4y|i&w(X*sN8$anPl0xCO zO>yZ+4vK3JwLVtb*XW(Rt>@iaOBxSHJKkG&7JmT$?XIrk5IM#<>^2|QhwLJA%S1@# xE36)V3laTyl`Wrp8n^FrVm8tDR=4e&Gn@A6l6QqRY~hiZ8#a9WE~5B5^AA8r=(hj> diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo deleted file mode 100644 index b9ce140b0634b42dbefe00b7169c268cc193c453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 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 diff --git a/lang/python/tg/LC_MESSAGES/python.mo b/lang/python/tg/LC_MESSAGES/python.mo deleted file mode 100644 index fc92ff37eb9c67f51543be108be8e4b339430473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9876 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 L9*S}UA9?-cu#Es=RZ9$b_ymQt&-MK7t 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 diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo deleted file mode 100644 index ac41fe04de33c9aa7546ef0dbe19b2f23858e36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7379 zcmbuDZ*Ual9mm%{ttG9sYOA%j@`%MIHJ1wk6+=KI1WP55hM-RCOuM<;OP1X2p1XU5 zYnqt^O-LYts31XtCJ-b=lVEKzBphk$^i5xMd{d?~o#~9@?cQZNQ>Sm*v3=9;?|F9j z{v<)$?y&jX?mo}&`8~gX&-3t?J8nKM;d&DHH*q)JC`mFna5Mhk`pV}e>HFaAE}sKe z;rTrH4e<)djKRoYCw|n40tct0p10k0KW=Ofp>%NgDb&5gXQ4A!P~*o z649<2Y{c^}kmh*?BzeCBssD!{>GKIl{cimtYy_?ZY2K9}>7jr$pMH?$GX;_!*T8Rq ze+4&yE50O2_k(rd!(awO!5Tb& z2tEhi_hm7D2e=i_L*Op(k6=Bx8pbUHP4HRpH24$nA0Wwp29qQ`V<5UnM?sSFI!N>Q z2xQ<&7^U+DN!kp456@Tc5WEFOBmEjc@}CYq3ig9!m*0R@;5C;k@RFWuTqdht2{vq~tn{slKl zpL3tc??K$;AMaX?A2;Eq+(u|}9{}9ua2>B@NL6Vgy`-xqq=%JFMktVohhlQN8#%z~X1iwX02 z(p{@nc%2ljppU1_f7R(T4HT2jHea=brhb}YF+HqClAd)ubqyt^@52;}Z5A=~*mbSe zZm0;Ir?%D?I)X*isNxA1ZFW5SSsDq`f2y$EJGL)9VtzERIto>()_te2CmZ){frtF( zU2#Qgto3GX=6z|1CJ}^IE3;aa7$)L(@q)m$RIZPzwJ=v+I2JOJam$mN8yXe5BCF_N*WqjQzCO^rs$2#Gk4KH(`?ZMztNHKUA0bvdjUxp%G-xmF|q z)ll}E&X>{m@o%1eanG%84h<=fR$ zsU#i!@(3+<>Rt_FErtT88aXTTuPABx0bwFkqe{qvKdIc3z1lyicHL+z%&iJ(w_rANsiMenKYLZW_$#?hF(H+&g*++X_q_CR z*9iv8@>LREHsE&MNJ>qMd~UKRqLtbzvAC6F2#kd0`4VEAb*r@{syE9~6A~y3Wz>Pf zxT&B@Q^AEJ_AM9(y9TN^G*^sBtAxl??qo`1R@%{7=4ogq;&I)exNJ^RF+u4{7>0sv zL7RfjNR$hS%P4hxo8XzvU))KKyW~_YNp%4b+`xTl&mJW>196HnH$r|TMbZ{M}Eq*0-84b+=0 zYB;bZ(P9Rg^lDbpuq)80>{F>vU@NxT)vT&=&7*yK-9 z2Fpt7x7XL@Cc37gvILtT3#k`qO2#n*OWAJ)v52VJ1{@J&!&Iz|dz!Wd*5}&MXc5H- z)M0ZGhJUKr`exPgHLhlStdfQ(cJI-^Hr|}O&I(Jmb3Cf8OC1{C*i~Uk6JvY9zAR(B9@RiH% z>$L}Foq+?{R4Q}evXuMmA5|851~aKC$vH9VynEcf*z1f8+K0w+2Ne6zsNHiecQj${ zRAbpmOwU~^{K~gv*ZJ&j#+GlvcM1ic#e;|fNj$jc5BI@6EC|I(U-!L#^hnRl zEu0zlUV8@**D!@byc0*UFp8+@-t_FaGk8V>C^yXHS$kwcNU-}(+vgA4y*>8iu&_+# z-MP%%8@YDb`BTU@XXI^r*|dx;V4p=tZj1T2q2fNAn6a8>+qbFZA^7oEYW3Q6>I zH=qUWisM$CD9CD)!*HTFObDL{brv;PB6f@0h^mzrAR`xqMqZg=&f90Q^G7lhhwa&; zq<)bvory8~^aHK2M8R^IHn1@gzGk1~|?f6LogZS*! zRTR_N?suk`t6grI*y`1ne{lsP|#YO<6k z7Nz(iEAq6W$eSF_q+ZI*jpTAgXq_2*86xzd%mwtcQ^$)oS@z2VOKsN+$|M9XypR$Oa-*y; zi%GAAt}grFY-Y3@l zVq7TiEgFUUc;?%I6cMJ$EvOhj``)yD)!Qm`T(|S=&|>X;@l0I2WLzyt7PyiU0$E! zy*rA`;0#Jq{v3I7(s4qzm5r@p4vliE!w8jwBLI- sJAbfvb55~Baf$}Mk)6qLECERGyk2};?i@OYl@xE?UDaqeRIQNy10#;7v;Y7A diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo deleted file mode 100644 index 3bf723b474065bf31e3991f5914b10a9a0dd03e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7526 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 diff --git a/src/modules/dummypythonqt/lang/as/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/as/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 8192eb723d126ea41fb552102d2849b9111f035b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1207 zcmb7DO-~a+7#{14ZCG@EXvv z4O{@e0fWF#;2iJ=xCHzKE&}~02+4qlz^lMRfI|O$l8~q1lcxx|3Vsg00p0+Qf))53 z_(~rk2#EzD1ZD!$0XYLr_jy`dbJXW8IycQq+)Y9glF6o^9v6buIIRXD9dCMGn-m=1-mAK$iP@;mhg-stn zA%!ql;$>+}R*Xd+3McSwTF8w}1Zo-R&KdYDdZxk%B17pypC*X9qiYdSeQ}d%(H0@+rtVu9jr^)5VmQyTCJqi$(<@+ zNtOf8EHjsR44F)c7-6PUsf=YZVGbo`CTH^db6Uw%Vl40__t9UwfdM36k!HhXjz2=n zbruRPv-gV=#_+zME>-2Bk@w3%#qn!49WFU?uTPsYktn#$kh#W05PI0M--uO_O^?u> zV|LJ|16gVfjUOI3@_rp=^YjF60TNQm$y;b;Z#7aj+>u@tv z)K$?B6}{9sdT($K9nPPj#P2PbHe=JK>UE&(S9_s)UsSXmdm@=`AolES#ilhK71!^m zo^BA$#rbvSuW{Axj=qJe1LRnJ?tRV2iaInMN@5zU0;9ju!^8s~e_Oi)|KHiV9`it! Uc&CTF4i@cVMTkO*PW)T_18YnDY5)KL diff --git a/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index bbe53ce956e46d3062e498c72fa2b7c9e145949c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmaiy&2G~`5XToNAdEQB16&ZAa%n19JI)~rEnc1)TvAFP&V7rRkK_cWj@&T#ZXXFO* z1*sw5kZZ^<Z5cJ8zbRoHO0;DH)|VWkP+-Fwp4>VU_V zZVc%@*G4EAK)=&{(Rmiaez>!{vGvl~;knY5_Dmv%^l6b88mR!B{ubTghoXw1Ys~Th z8g;)({RZ`$;5P!lb-#|y*<{AjNHb|tW|ad#Zaj-I#%t8;P2a=J-ip)P z=!Iv;^WD1BRnl^a+bVP1x8+mo_N=`p5G)w8a(iz^a%x9))H&)@K+pbAiYJX1Fj{#FObf*&#$NATUHVN-ml zWp3>8Q2{wi0na&LWdRwJ;!Sb^RGze`;zdSWF$0JK*^WS O@pEBrrlEK{tEoQ$K@{!) diff --git a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 2a7ecc372f48d28bb36e268d93b0a2eb66209172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmb7C%}*0S6dx78N<8R6FPc0K5*pp^ZpEf9-6Ed`1u0NCcyihf?ZSREJF}KXGyxJk zpmH#BLofaTgh2d2^yqc==*7Q5ubzBc1cK?s+5PSBy*Kao-kZ(*xX|*N;5v=CjL0Ke z5zi6P`hYlx_=xC0d_$Z?{6t(r{6<_vTsTHZ3OSD4dYq7l$mh|wPY{wpeu{hrc?UVt zeMgRTzmO-9&$JMNlEy+g!7#zlk#!2aXwH*SvuKX9ddP1@!T;1cfCS_^x0N%7PH#OKf6;Ft4#=2CHV?#qQtPp0bkK{I{}fb)Mz;4 z6@b$^H{kITlJmV8RusxmNtt3kw>;N?TuKIrqNhMl8hZMghATEqxlr;xb-7K2=Ns_Av5L%x zeBgVtkZ~!m2s?0Sv2wfYP|HpfJtuoTDwamATMqDlDS1X61A3WF{eWB4g^r34Rc@$i ztyW8jsJb=H<|3_Hq&9V^&$ud3#nq&yrF6Bx)Oc)UXk_5Y8cl(B2M_skNE94&9&urlX%Vllxm4vokUq3N522VSav3lGQuo zDAE5)OjC=t8hKgs=Aryn{2-2XvCV$ZjENPxA&CWU#JgfduFEfSGhErfwLs)sxgj^@ zw%kJgEO*e_#b+DBg>X@Bgp1)4T1!ptV*7i>hKwAW*W5 diff --git a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index cbd832bc7d09138f9d3045ebdab3d1f4115e3da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmb7?&u`N(6vqt=5J7O55L`ICaoT_+O@*p1qlo?JroqO#uIxIT)=M*zxQg9&72>c7 z2{9pY;>ZESA222=3W8m^y8i$d{sF|16VDxVfF=-DKKZ`){GOj}`P1OQQ-b3-avmum zCy~d99v$Qq@)j9JJ|ZWOFUUFM8*&yIJVZzabp&-2xr3ZW|MOu&R#3m9o;z8 zk9rYx3pGS-qhd*KU@AeE4D7l6|1q@mK9B0iIK-?8i*wXtp@p81RMrJVObF^TSmg;! z)uX5dg_f-Hcu~R)?pb6q49a&gYl!?YyBx6Ql4Lbfs7p}PNz~C$M$@C#F(F*&+nhqu~Nn)k0pz7hpieOL9%se*FqY^ zV^FTrL@=4VU79wt`+2(6Dof0KT;`P^_Fc$&f$VS81VmZT#-wU z!Je5Lj$tSV&d8WS)HAiKcKT06J@0N|;8pjLYO4>bquQX}sBP$ObhnUAwcCBN7uPnR ziE|Gy?;ZLbwW9-QZTG6wYjhr>^YfKix}BcybT{-Wpx&$Y5K%9GSpeJi^P&IleoOgl d529Y^6X`9q|7UCP?-u$d@c26#wcUHc-vMnd~`@G4TM=WxG9)x}*odVu&IQR_;p~%9?h!*ui!xIEsD~HOF{HyU193C8PDk0SXimfmfUGkn!NPN0$Uv1EkR26zHRmmY&sx2Vw4ZM&>EGMh}ZE{Pptr`r|c z4Y=|yAaUcs8*t&yeD&)i}@F?IXG+-ANq z3(ODZCi926$NXjPGP9S2Xt6G`R?J)G4#z()3(;i#&3c3N;T0k7v(B^D{#Djx);Fwd znKqs(I21D{;pzJt_v&+Atut$&X$-qtIHb(y$U1bDg`BL#l;FUWuwLc)1bP!UGJ4m+ z3p4aZCsXk|o;4@VjSduz_Z=0YKcWkqoK_b2aTgBzP}`E}hKFVd7AH1>4+Q%rI#RVquA`#} znvJj}!=?;d5H_Q5=~085w}sZpeu>&<=u8>GIv%McFW^Z|i7L>pra7w2k4^scalOVe zTXb6SHOW3<9zh2kW~gCd9!X%%(Wq0T=B$fjX+MlugD?nf;LC!a}sjJ z)#122l6k5N1_~+xAwzIzV?6iYPpSpy^Eok4){%wed})ZSi>+ec#Q$9uPECobfHJU@ Le*eZ7Hm#U{IEw(O diff --git a/src/modules/dummypythonqt/lang/ca@valencia/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ca@valencia/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index b22984ed705f55012f798124e85046c99ba1cee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmYk0Ur)j?6vZ+6)JLCvxF$Y8v~=AAnI%g^9EK>e;N;ml%Bb1er7eH_AbveRi=7(q zB){~wJty~kot}KQypB9)o(s>h=gQM4^1S-bYkxMLy;7s!Megu;f#3w*mSEY36oluq$XY-E$cciagEVL*GBhM4w%hKxp+ffst@ zs#x&@mbPC95Zo+O9*v>TwIR!%5~vya;Ma$@I5U2>`VkgvG0!o@Gy2uBBBvvVm7 wPE@WJQWXrMH|h4>8T{Lb(sFHhiAUO0mVv5&t~L()@H@tB1?Mr)P9L?t0X>>_EC2ui diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index c83734ac0d2be4665669786134194103e34f8d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmZuvJ#Q015IrD(I7C4TkPyYBAhHE}A0{%Ckpv;l1qv-us(0>bMAIew`)5N zqNAjRCRKg_6%8O!IT9T|fs&eOZy&YSBi>*dkaUCS{`f-A=H$lVn0q}Y+N)0jql z2Eqo-BvbxwutcUuak|<8%Sf4rq89PG2h-I^4G-=?zm{2vTN#bXlE@N#d!F`9=}*nT zVCm;L_&&HWISCvd;Q}ou56{5?570U1Lt)^Y^Sy0eJvIM diff --git a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 1e836027f46bbfe1aa5887ffee5fc481e37b31cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmZva!EVz)5Qeu8({+JI*0gu5t)Xib`9WwxMS>_QcuN-nDioq!Ho` zxbg_R1DrYZ3ApkMoH;RWN-I@e`Sb7Do!=hs&hN*IUj>hQ%nN3~JYc>s_4v*_WPUKq z%o%f^`NKS8{xVOQ#|uKVSXWp_%m=3So!t^*mGu{E9WUG#;yLRh)+em1thKMh%9iuN zse(hXI1exHcloKV^G-d}0fST6-%&#>LXJEsns_MDdzB-Mtb^{PEN9T4(b$@Og12@U zij6|2C!Dn;uB{$voE{QZVlc)VoII^P@I^N+hfv$H^A8@|A$T?O34Ho2`pzC>N^&cc zN9eq^CV_ruW4rUF2S>ew!>zq{!2wp*k=*sU&gAP!?&ZKH5cK!t0e;lAM|Krq0?kI; zl5tbUEr^>*ytdll5$q^Wa^RHlg(B+`@Ts+gE_d3ad0D$&agxa=yfJcss!X7(jP_$# z9urkQiK6Lr8dCiVJ;Kv4wPlp5LY2y)kBA*UYBn0JILcJC66|j6_OAXW4jaLSHH3z% zm{nXR;VDH`p|n|tbgZ05YQG-kWdfNB`o+YlLT*}D z@?M(iJoN46I?Ny2%LbO(5U;EUqG!O&F1vxFc{`MtWmsV05l9yo=kvcIBp*~LwhMg% w)z5EG>il|BNZx(J)p>H-Tx*!xJwy^+Btk%U!^?R&oVU_NGI*UM9}xG&KOpM)vH$=8 diff --git a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 9af7a66146284920a510df9841d0ffd13f0524f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmZ{iL2uJA6vqt=5Sciz1G{i|yR8BzO%G*c>S46qRJO6MEj!~TuZ>4yN47&(A-(}u zz6(g)I3PX)5}$!HCth0E1S(d3d4Bf$+m7@9zOnY6QM*k%AV$PG@s6n42jVXAk=Q1_ z5O;_l#3u2RxKC_cW2{NBMlmH`689+odY!R=;x~%by6ZQVx=o6eE}-~?;yy)^EE<(E zO4-^ny?o!IUUkl!)yN(woWbdl7-QyBW}R@Qg&eIFQ-p~&&?)nL4*j`HwK{e1Opkrm z&Sd6`gO0Zl|x16 zm=|d~`@ns|U{>2?ofE!jlGg%CwHxN@({uvB;3OT5+6?#*d?E zf>+7%Wwv-mOQ^MRWNr(&CilC-l1y`q(gj(9q-y#8!#kMxn4_Ea2&l!cL>Qb hlqfBCMwDctO=US&_1|dYaESlgxU2AGj9G7pI=_d1YFGdO diff --git a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 283b865e97553203f4f88898a8e258136e264cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933 zcmdUt!E)0u5QYsD7z|u`fD4E1Eg6sEB&T{;|37*+ILFJVIjRF7gSn_7%C0d_!u; zcjON86M2aILLMNS*BqyXzK;G2@)ohW-`Cf=dpFj)r|7Nj1$wJ{jo#`6dX%gTB@Twp z#yY%s-@=jY^QN8YfnWmaYn($th^M)FFKM=tN4MvBZ#JN+wKc zE=34YuYb_n8^B~RJ{capa>uNa%8-%HcuKbCnI^Fe!Htf{n7!v#Lw2ZPAv7C7iv&#) zv><4PLHlt7%{`>rkXTWn3u>eaVV`O#pf8Jp3k}a!Ve~hASt)6xC@C+zM3&E=*raXD zA+kB18;Kb$Ll}sx;5vueso;jCaKJ^D%CZi%+?Yy-zQ0&3JY#F}89TR`{Dc;?q>5?Z zU=Hm!8;w@rGx26`+poK$;b?Gq0)f|X`%)Mtu=8bwpJv#(@vDMz(SanVN;A_vjdw}= za-Xd>V~Pw!B2#QAg!Yu1i`GL})pDa^u4qAar7H0XM70Wax7mU9uv-(b)rFwmasQW} F=nvV|27Lek diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index ad243b6ea8e11ff9bf37c9b07d77a68fc3771728..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmZ{iPjAyO7{(0@5CJYbfItYnyKUOsG(A*RMiFJp(Ad9jD?8)1ZtFF%qu5zjAx>O4 zaOKGNfcqrA1t&fLTsiTiojQpPE5AH>9l!5uThEXAxz7yaHh2PB;4b(Cit!cP2j9RV z_zv!XU*IA510I0+Ym8N)OVAJCEx3pH=XJ(bpueF-{PYH6kD$xY$Iu8GLEl1=G8tIP z5VE;xID6m1SFz8V#Y}^=9MS%^Xv?^S$U5P2ONq2r^dg^h*b;hpT9>+jt-qnS!*D#$i%d=gvVX^yF^7=chd0Kw8@IG4e8x`*38VY>^Q#J z;bcga za!}<#g$Gp%Dq&DtE@ODx!aCl{gtoD8CJSjR&m1-Ma6rw0ky@S7vmvI^Y4F13PLz~+ zzEaeyAzk-#Tp4dkk%Sc4RHBwMv^a1swW05iMx&A|>Z_hSEp<%dcSI}_kxA=2Bw4>w zE>{Cz8h^>#+1!aPjvAE8-kQ-)YHV?w;tWonIzNqt(yP=Nh|Ee?f79CFwTpE{tDekw zq&udobU&n8Te;arLz2d8#(5@UzG1Qi7p>DtXzP_#nts+7H7(RBSX%Yit~n7iryNdv zA_}93voD5l^;A^Bi7u=HSDDPfR`D8%xbHyeo%Z4{)^rl`=+wB7bfosE;Y?Aoif(=CN0ObwIRAP^1JfldCN`qiZ&;@=2QqPd zy~p=tVU^Jlb(UA2FF$S3UTb@2ee;F4Ept;i-nIkP<4;Bd%VQIf*V*LT@=%pAd{sCZ zQMD4*cv$6Ojlyaa*6&x)ybWO;j|-t~Dx4`ITty+%2c`ETOzOc17s6vHvWRwap_Lud z;?TL=MnNzhk9}9hs=hq(6O#prNJSUC`Ox2eKZ|TJJlpaJ>?O?P@`KBoD=`6m~V9S6gv__mEi5iJqZc6oOJgF%Bk9 zOJYqWP9;kC?92Pk*H5VxWo4X{LK#1+o)cHL@y}IQ3(1i2e~Ad;Zn}y7pWM__3GNQH F@*76d{_Fq% diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 54ca848026b74fbc6d355e4a3aa542d0eea1502c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 976 zcmZva&2rN)5XS`+I+)=A2e`n@_LdANj&leZmjL}pq0rDYO*7m;aW;;EEqN@tX<&E* zxWNPP0NmjU2i}5b;KGFyYnLW7P>p~7YbEWjKK94er4NkSGI4|G5toR!MBY9Vmx(V# ziTF-jBz_XtiQmLE;_4a3>ZE1T_rwe03faHTGIob_`5dhwy-%9w>5|?g)uijB??}m| zXyn4kWJ|~9{C|OZ`99C*BWs{=3VS*(3#n>R(lp6 z>p_KWL^60ut5(=QvwexveTxa}jqwyu8kPp=v!_m1Aa@%U2`730M$C*4uivmvswWs& zzCGl9OpVmahtAr@leLE}=(oE2+q+MlE+#s)ylp}`T#+3NyMk-a`@lu%8Ge%@|5;Jd%MfLuqVnVtm(~PNx-{r;;N)$|Jaeh(s(> zG_ECIl-~Fczsn+dSxP z@y23Zo^6CFZ>c~Jr3!s$45XcJ*@q&R(}}WFM0`u9G2OgM3ez-et8m_7=n86Jvx{TwK&31!5D9uX;`6~p}YQUMqN9e5xndQnLu8CV%eU1488J`%4WprQh# x5Z^wnuzvAk6ejxLfzdM+p-!J|8Jj21bDk`mSMNM0v=%!$8HAw>=r*a|{s5Kr88!d_ diff --git a/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index db715902348caf2e7dd713d887f23f45a8bdd8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmYL@&riZI6vr`o+R?LzXW{{(rRxr4mh6By%%aFLCRbBO88utGw4LA|;=kwLVuuNQ zlTY4zdB48Dmlr=hr!&WuGR|% zhE<#`lf|o-@kVKj=B5;D^w5?D<%)urE>On5M7M(;ndKA$pNtR*5E%gpC<$+UC+~&H zvSlSlIcGJ6Wy7Q}Tj-}P*H%F$3N?WK*4oBUjCZ@;&}t@)*zoB8z wqgWPdEo4a{{1Eo&o5JCjmsYK26`Cns8w#>HlqL$s@SjF~3D*&j!Px8l0aRvk0{{R3 diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index cdb2466fa84ca8e127a9762d324b14318cb28f02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmZva&u-H|5XKiMAY5^&#GeC)sf0u;SUZkH6gkQvv?(fWNZPtRvq`3jTYJ~?j+;h^ zH{i;nv;v7+4u}Wf$}@0ALSpPfBUN4bm(Sy!Z+7g=&!vS=g4bQ<2@^7l%txkJpPBp2 z7iNX|#@u6mF^`zv%tL1Bh7dK@Rn{@{jw$MVzbV8s)*q}zojr2*v zl`ZAs6v3fbxCk$Q@9D|hiEDm-#s z5e87L_%-QQrC$TT8u<0+6<*G^vLwSyX&WmtSpXe1x2dr01@)7k8_=kMdY z6=%(8K9BpDrrapuDS2tEBHe(&SY;NexgT!G`aG{V>JT&8)&nz)^eBLOKcdS%13+?m zah|DIZkR0Luc^~Aw9RS*E^eDE8kU>juQnX9&wu{^Y3RmyoZH!%&J%9MQgotXoDTxc z&S&Q_x?(GyouyVm66xWx2+PcQ+I%9eY=nhh>>+~D|LV_OWpN&d3r`ur>?_6CFX!Pe Dfn)w$ diff --git a/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 43448bf58ba8c76c552c0dbcc0761cd7e22338a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 885 zcmZva&2AGh5XTJ^5L>~aLU2K7Dse~v?`9(rm8~L_rYRI!nzo^5oa}VtX4hW)L7F1o zfGh6;Pk?v>PCNr=BqU~A)Jmn+{`T*&XY8>(KNsdcGiuj~d&Gd4Cq5BX`$F6#z7jR! z8*zj9McgHR6L*M(ON_Nh>!f4iEpdzN@0S^SK>CBUTIUbxebV_WjNK-ENcx2I87YMv zH*#TQvbhuU^nZ+WF+IH|# z4@1_?{!;%fgctIo$OAGY53#UVc>^wQ*u+8r>o%u6h#6n z!oKqewXt)hO`>QzorbPjMDF8ZIMPKl61gaZK^r-Wuu-$oXvGows2*&tZ}!g46NinU ztCd4VdCW>m)Zw9v%3Mgb45P6y7G3+zV2v-G`Bhu(qv1U@(y3Hg0!u^bPP0q^ebCRn z5jkJerl8wY<*{ko&1E?0wrdI&+Yr~619nmgFhpad2+zN6E)<2JdApgf!$WTfj`PS3q=;NZ z+K3*XkW0uuGKzdbE+9XUYsfF;Dl&YEkPPY=>PzG?as}gWrwPfT{zScuYMmkECTb4# zI%*wt9`!XUS_T7C35I0oAUvAS;Y#;;R==47!JDwWz)IXRF_Ma@NP^F$WHk=eAcS1x z`z&vuP?_+^zC; zZM4eFV?GPHv=myTl}@EHwpC@;n6Wswm_Pnb+e{fVflypvf2{_7fa2@QYIw{Q<4~@% zP;xc#s5ncr$9ejwDi3L1l!J;ZY7S&et~zSdfhsc!UKBEq&IX~6e_1pJp`1vM!@+W5 zRKO(IW8((tw|kvGw*=yMakt-&yCz9KqwXY|kZi{v<9!Tv`)!Ed#(VJ&E_$7KC*C{0 zIheZ9>-5_u>2;C~T@tN0ZRu(wq}M&DwUumYd;H;FCmK&KNwg!``tOl|w)gR_d6;n6 U3M8BT_V-uqUN_m+T?{VUZ(6-i`v3p{ diff --git a/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index fcc562306b363bf93a2a5ceb06c7680a0f436c98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmZuv&2AGh5H?UiECQq+-~!TwQzGzgHixKe38J(K3h7VUZhHkMaS}Icdu4k`Bg7jZ zapDc~3<%D9;4OHDo;fj_{z=f$e*1aG^LfVB{9a!AM$m2}9wTDJUBnkeVLuS}5I+%R z#4p4h#0laN;t%2>V)+^&b>s^2SHuUz1N2X>6H-DZHwd|p^c49Ca(Ko&$Q$TOWRxrn zB}F<}I(0Apw{TVTd9#SDf#Orx-DEwU_~=>3TxLOXYuSjyP#f6Dq?|!_=Ehp>I(Vmh zK3Pvhe}Y*h^3U#};M0A_QxcE)6-o>X3;4M!w|yvNgGIq3-2=;JHiA!|N!REj-gmS; zpoiR8p;ZLkwe`;0+a??~_x9U6+uj~ewQ+RIj>Lez$wrpOIs&h|L-+VcQE2D}b3B4t zHLTOHM#DOUwJ2P9Rz>qRnRPTaOxc7vZ6fFhDK&JmBMfC3yp(2gwthX5OeB6^%U92f z(_WxhjWT>N8gnKiXbGi+9YYxx2~&d#l*i7cHVT62bn3gJiWu_a;)tNn5+<49HgG7m zL9JS?hrv+1Z?%Jpx7FTiUfwzMtKPa+jw|eSmf~d`KXyTyFrikVKW4^q*Eonime7_q5+7Zq3)ePkt8lt(loga35LQ+_a*$a8 zyKa_$S3(M(oK6QuXc3#RBvar7c9lpiaG-qBNyKEr7)YTqRwCQ^JWcbt$>(R2RcKW{ spUh-Fzk2ulWD@6dOaiR{1^=INp63G=;R1gh5XTn?AP#6!fRHFA6^UT)e2!#U7ZNazjRFaA5+^n5yRp6DZui*Ti(?Q4 zJuNRl#~VPMg14aH3211jm~#|IN+MSGyZ_Ga%fm66G2j?L-+8uiM3UM)u&pl}3R>!OFLPnLDU6&5nIRtymO+Q4d&Wn<`!-B7D7 z2QPHbXU$Z`Z^&zootfQ}INEWTv+fWth@@d@fj)QPv=3!iGFfn6_rQv=jo|$U)-ie? zW5?GLzK6z2ts>|&nlBsATd>#K-dWpxv-1)WmDm_iJ*aW844Z?Ri1q8XTl7S=98zn(N3#O z$kdN@w(_XVSf>PPP|&6EE{ZIIwm}sSVSeabZlfR=jYhsJ)5|^{mT^HWQb9@4296?Z zP_0yIVbC|hg151@(KIaGcW-93HwLPlZ%V5D$g1=$3c8ZC*e1E0^k{ z;Vl*GM5;jq^`3OoT}IG1UMDS#NO@bEjP6Lht^^pz?Ha$Oim1-PRxF}-A8#7@RIEuKl?ye;q@&$OIlC&dEoGk&al9Di=S ViLnHFm;bE+>*v-_q=QKv{R5Z!4I%&l diff --git a/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 17561fc31c40f96ed747da1063e3c579c36a8e8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmYL@!A`d~`@Ie38RvfUm?U4jW>t3;6oDp#|%OIg$IHoJ>O-^17QS=?d* zfAVE!GV^Et-}AGdj?;OIe`A*(5 zlf{-59HpF96k^R~wt?=l5%!zwlF7UW-Ho-ip%^z!)3=&QBi4M^&s2poRPol;(i?i6KaekRo&W#< diff --git a/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 33cbe602c081d24e8fdf55e36dd0345ce0003ed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmZ{i&u`N(6vqt=(1JLy1CtPkH;F^5;iT!IDyb?|x^610tn0dpBW~)Z8HpX)?k^$! z1FrlL{SV-Xdf*S>&fmb93%sPGLsPNx@i)(Y-`KI=kDaYg1lwKYG15iuAs>;neMash zUyvN~4cSJ1BD=^h10ElaPJX@2IKoH|itQ?OQ8-g8B^O=cs7Q z8m15o$<``d_jm9u-RJFeqy~ad;q;jGd1Pax4Krg6G1r;}9EMWC!8nfR(4L!-6sHDW z%DzqNQRu(JtUYpVwioj0nc)fPj`#*A4u=}>F&n3CNNs~`!3)_3&F0#J_a8`G$qViq z+8odxS2~o!gLbX{s&>?XUZZo?Jb7((cp{adEgggd`eGbt+Lazy?GxJJlQ8wr17^4f z#e!R+ZjrhraEqQ>-Y;OYj+r*JtC-LcGg5i*M(X9_X_{TeNfC_kKxmh<*n=a6{~s~| zxsfr6_8ezAo!TZfheJNIeHlAGi&)GQ*N#Dtc8Y~U$#sIr$y=>vt8w)ou3fO|QW!39 z{ds~LG<;^9Bx0ecfInhNb5lL<9@6qvUb@tfE7}mg9E2k9pxh75dY>Kyk=2gIibeEL zsu)jEBw47d#R{xmt2qICRdDkai=2xQyDS3`a>DG@NX&(1GY$z;6PEUD!=>7IJd~`@G4TM=((N9|TCxYkg%CwHxN@&cSxR=>P1^;05MR${v8xIE z$(NbQ%%AyxuCKm3UKgGl&zFSSu%#!`WBuGdOW{q%OHsL&&$>SmEN2Y=WcnUHfVy3{F(8*HRS>qEG2g kIT;iUO3TLZ5>K?LECW^ljW!O4@ZZK=1-CKK-Vk+u0S{(tx&QzG diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index e6061d7c42a54b21cc2d92d28722f8c8b67f7f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcma)4O;1xn6n!dcd`4qf=*GomA%W=os;1(rMG=aid=#jxowh^Y!}rm=nOYj-&ZP?p zMMFYZ7&X8z&|l!z-E-w{FfLtrri~!lg_E8+_s+fNyxYlq>+jptuucP)ff8^QcnPTW z5jY2Y0)~Lkz!~5>a0&PcTm<@$X<8OM4E_o{2F@eDbwbl};3@D0@C&dD-UJVTzkuh! zKfsW5)^Y4ewZ3k8u%AMt<~*rR#wg-VT9{#F9+=34WU?VB%z6HX0vHZWecA*rL!t5U?EGm zup|`1%Gh?+u{>@K>$B6dg~Na7n6^G1N0LXFtX0S8lCMdt9xy-3QN?44;4=THG--?+ z_Nh-{VxtgM;;J9jTpB6+@?c7rJgygmM#2JPGEPF=Z&dH3B7Y-C-7r5CQ9e%&4GvO7 zR}dhxhv^R4tsZN*kayA>TfDm(Xs*<-HPYqi<_KQ+4IghS589^jq_%RlAp& e_8%RuF;zR=Ix<&JGqZQgE9iI9-E_b6z<&WTt#B~_ diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 9c22e2c82aa2380165da15bb995ca9cc21eaf546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcmbtT&ubGw6dtuIM!Zzei-+m0RX527jA3iU+NN4i%M9Vj4xzg6KiP zgZ1D|oT!MX2ugdYNB;;x=0DJLPky^87E48_kNx)B_vU@?y?G?xdwZ4%Y(H=er~n6n zhd^vAz#(82=m)+62Y{czQD7Z70`%@8Bo7_{-vq7!hv9$QO-K{`1AH9J_Yfk$kHM$F z>)447;Lw9a(*3%jvA(tr^8bQfcsQln4t+@u+Q&(=?XVl7QS?nDU1t#;N4s`x6Xzq38An$81kWQ+dqd;iyVY4Rug E1=zC*^#A|> diff --git a/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 6d12c7ddc65d935234fb183ac6678b505653ed0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmZ{iJ#*7A7{?71I1DTufPvxZK(7V-7Pz$M)P<6!TUZQhat&kqf??c6t)QByE!116FHm#eThuw!52$D< z+If6qXiOZ3C+|zx%g=c+A6WuU`>?%E8Z@>sQkv*YK|+-xZ3-2 zn)*<3y|U$%EUye+$@k{(x!BBgqO=uC!c|PPkUp%7o)oZ_HEGPgyn%%{kL_*|M~_9O zVOBWRpXIpGT!!KzQOd#Ieq9zvmR%X#MX+C30^f%i%Td3UBrTku>sIy$ysjysDU4?U%dX>5ufJE^(dqT)CK{CioK zz)Lb3YN|A6C;sleoK1ckO6BOPV0w zfGZEcTL9vg0}sHRXW-lu<3vgkbhO`&$1`J(?fJF5^ofz&CLR+V;vVslaPoz?Pkbd- zi66vW;y3Y#xF8-9%hwpIkX|F*CEgMb$evzj>4Ftw8^QYzteu;I>>=Oj z^Anj{Wpo7XMsv6EvIQrtqvM@}*WQsFnjHDQja8q&C}PVyCIYX0z>nlR<#PC@Kp8=~ z6jpdx=3xcGauimdmPoukVUc%op=~PAL!aGuA5o{Ma7P%4{ zRujabje=k_8u{qb)u}x9dnOBdA{Cj)r45jhY)~$hDq)Zm!J4i73x87^Xt$8uSv8TZ#2Ioh@FyjB{I^%AB`!&-9g!BdB&2E((nxDZF-C|^>Aj|dbtMkVSQD@N*%(rn#Wr47^dF_i(WXM;PkWWh3WT+)Dl5bz~5cK6EpGI zu0T{8=~4UC4cj84$6Z7%y1^~Jn57P)1KJ6)*5toc=N=y#^8vUv5EF#V=>9;=n&A&~ C1NGkk diff --git a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index faf378083497e7696cd213b594325fb1e0c1b4e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmZ{i&2G~`5XToNAdI*KiC#DioLa%!aSmzZ5JYKH6xz@<3E|2l-Z(On{X9wL(3#tbRwou->Y>Z_ zVmX@9s0Zv)??8%K&x(}wCt^(|g{1-d?AmS@inMUC;He&h!MO?G{Rh^`^r;wG-U|6Z zWJYQgKxcRFaQ8(M2F-4-b^OZdid1Kow@oBN{ydKi@9O}Z&N1(bce2Rg`)EY~m9k&u zeuev0@GF5|dsHTKj?h@%&rq2dtQkL;5<#N^cWaw=> z?N+;aaYWxOJ9}DLp=fLKl=g1Lnf1~brK-bdf|(Jv@w$J&YZv2+rN$!TO*PV?R8au6 zp|s~a4M2uYC(bjB`GL+7x?q(qT+{IDuxvKUb%*uDFvrQNIADlb?*5CV!q5>{#gZ$V vPuD!Q%MN2XEglj7UniI9hpLOUlmravjwb6SUB!y>NQ8>e;uNVGs7U?-MhpJb diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index b2f98c8d37a5e113d01aa8d42d65fe9874760175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmZ{iF>ljA6vq!JAPg)WU}1P2kQ(4(J41+EWhiZmLYp>CLdD3%xj5I_caiUzG@`6b ztgJ|UgH8yLm^|<;SXo(En0QW5D^=miKmYIDy?6I~em|C%-ZQf6#66-%+$7!+g?%P& z6JLl`;yZDJ_(j|${t$PFQpQrOIrWD4ymj*Q+% zcxL)#wh^oFh@w{5h1CNkCtZ|d)*HzMnKZ2|(1Qz?%TS~ZW(OXcK3Fle0la?0+Nn8| zA@b&cAIQ`yqXTHKZ)~qWZNNdJ({1kUIvqJSDe{($)PO(9BFlRw0H?jjJMxt(a`>h| z89>GJtK6?}zY2aO@M{k}GG|9v&A%a@ zbxRlXPx)zPk5nxBCO?JYG*yfHrJKk&#tae_{l8@{v=TKM%Rfj&0dnE4|N3jzC^Ay? I%cxWS0>&!Wv-7td>;GeA`4gjdjkrgI#0}yDQMNC{P2ww2 zCB75aiC@GW;y1BMtSm9sB(0HtBwi7>sQ!70u{!C}<@ve|(z{fzlintMK^l-6QnJh% zSs0aUd0sBwSE*N?^GZ3g0a{LAZ(9sx;!b;J+5q0YXZ_q9%LsXI z$d6=hmC*t8H#*NYo^;`;yMNHzeeUeb%;d;-Y^;X-aS>Y{ngE>sF5j0Ys`T(pfii$b z-EVTg!Tl!qjlgf+uTyijg+(6bLfb^3$pbhLCo)$C9@=@w9nfSXqDYxXaVk{eMkZZ< zP%hUZw~h8R6;{srYJdRZcrUV~^Xax1ZY7;f>_*>~k` zBboEAj?7T$IDpnb;o`&r%=U8nNs)_$Z<#!$JJ;E)wC%a8-YcafXz71E-C VZ=e6OI*{!wMcSYmsYuL{^arlg35);$ diff --git a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 4d131a0f822551962261a6c2bd50591b63394b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmb7?&ubGw6vs!ciYp@Ypa%uVi?rxuvk_w1kV8#VN$rocU3+%2nIxO;?kqbK(;z}O zs|dB=L0S<= zzyeMKt3YDgz!~5JFa&%7P60oF^T1Ew958qUp)B}e@HTK4I1BOTqX=CA{}uct@V~$( zx(mnpy6fPJ5Kn*yNzb4JL5K$W;okcMjFNL6Pcoy}XKg$?Nh{1vK_n!VErC5I1g$e% z;~^evd0q#XJF>z3S&1ijC4~yEV=qG0W%SSNg2USLk_E_WutSuPb_9k;9y*=EiLBb& zu*oY}(2g+i{RgNV@+Pw-DOJe=3x&gd6PHH|w?}Uk@j`KKzBDtf&9Q)ol1z!ZQzbWB zbwMm{Vy!$w=GZ+a(U37JnTa!LBTI}7F|ydmn8wJ}G?+F?g(Ox;ec@8cLlawck=0tB zgQsboN_s8P-GDN`-h!(k7NeetCul%@CKw)SNErxI*W2xON+!!VHMW$pxu@IIr5+8L z&?RVuo=K;(hTf$5ur^hiD(-)gkxFX??n~ywNjd=>Rk9_i2QGE|9JU)Y6invtSmR`5 zzb@IT#zIo`ZC-W!x`{_Bj@&z^iJMd_yRDGAWSoZ{+@~M(LXkIexIfINa~j%Rf2X47 zDtg%O2BhL;6~9vPClzh}`TMH7t>O(8uS4$p%KP0%PmtB%Rie9T| q4c7Ya22s&7)m>H5*58eFVB-xHy->^D{``Ub=Fa1fJ1Z}H{qh@!K_->} diff --git a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index bd70c813096aceb16cc663bbf8465dcd71c2a6cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmYL@!A`d~`@HSqw^VY@w$x}-6P#SlaqtlZbKl(p?{v%6UIJ$yZ%#jPgr zCtqeJGk@m)IY0aEIGs2y99NE0$Bm;^=(uysTUXnggA%RYd1hg{h85RFC`nN=8qY?L zFz$XJB0gwSA0VUzJ@8mr( zneSN6A?2*1XvV%+u|?gjwY8xbH%-&Gnn@!zeBaMhg)>&NifL}Jbq<3A-yaZM6u9Tj zr}Ow2l=OXXtfb}ALi$;|1eWhDu1hB55M^7Y4Y$#2I)U(b*S^|t4YADBTF9KD@J-l5 jN{WiYOUj*QB}|mA3`Mg38%-1p(SI9td~`@9y~yF=ynfeEx`nFF&jiSxN@(%WvT48o3;o(h_C0f*wqC7 zM>DmD5;D}R6~pOxG8;d| zcoi>Slf?^Kibfj;b6d&+9(JXLOf!tq1uVs1f)Ra;DI=8hjyX6)9g$wjWK}$ z2@yP)KtR$GO+;g&kwi2l;qHIn(X;7p6VIM}+md3C$^Q16xAVT4x0Cm?xoM5yIE!3I zV#s-91@T82xq$2;t;l!e9P%5vg8V@)Bh4oW38S{5=8(t8MT~!(B;*F_FVt(OmrfCK z6;(y`eSN5pP$y8)QX7~`FeFX&u<<^FGr!K${+BMWSsq3PX`E$LjD(~zC%|Gt&=iA7 z?m$n@vI-C_$TYV{B;4n5m2_v!#588LkRz+(Cd-dWmL;(?JI0BhO#%4GW0zI%ZOPh! zQ#=lW7K8y$pOL7;r&vNN{Yhn3SQW+8{GpXFm zrGygW1_YwR$|!qc`W~f+N@hSPsD~9jr08MLLx$ddGl(NFNQG2l4z)#wO70j?*_-v= z&sH}U;C7bdweXZ_-EGWNo5?%3aIcVWwNp8~E+xjOWxxP;7`34_EoD|1nwHP!Rq1bR zPO=#_!7VL8Gt{CE6PiSa&_cmrSl6bx))pA*ABr6Qqpk)6-Q1SU#@Y&5EMBr1sbw?N zv^yY?rjB5;^I@!4X+O;KkD6qT60s9JY1%0R+T*5dRB6C84@5ILhh~&s?pS!kcD5FZ zPQ3%_)6QT=fOzvu?wg{wx!Y(E_rVbxnM;=K`X z{bQxP<8JRmb#B*v_o=$J;VqQC&D9oibeBfc99^hy|6l&WsauQg@{+s!Rt2xL3kTkR gD*9G*UvGP*S->2xv{L!950#x)-t(_@TdlGF0z;ogAOHXW diff --git a/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 61b880bb726cf628303d08f583fae7986774c24c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmYL@!A=4(5QZ^&>d~`@9z1At=yngdmT*8^3=w35EBCsTrDnI?w1eP-_R)8Q3)DHyazl6-lIGgJh_R2$W)qg zD@z5rlC_{yY3bDlvGIbj-EP-KCym!@weJ?TW`(R|EuHcVgWa<@ih7(?mR*zCWR@Pk zi*N|T#-$Z_kd<*#l z@)GhlWRwi-EUxI1iJ?1MFW@fk^L&1?0+RP&XOq==WTU4IGns~%Yt7mmS}KLLEROq7 z?VFC0I|d%Bx=mIi(dc5<6!{~%CwQ-BctXMs|A!Kfg$Df0Kf^ZUvgY8zeN_j|`r3!* zFGw|2`@CW3Mw9OGR0}12sIII&S$R~3z4C5tV|&Zm<%voSt?0IB(uY}F(@^wa5-}kcpwVHe<|cR=uG6`3UVc@Jr?e~^swrgKhq<~iqfUK@ zj8%=Yltpx1r7^yuOa`tF?k~V_8_Y(03J+F!-?<05_t1)bOgh=3ya`+1y}|b z{L>^@3ZR&aPHHR$^M(Ja;bDz|2BrcmxC})fW(x}z*<#r~)1z5j7hTgo5K50nFFXF+ z%#;yaL;d)@<`RPmz63vhCt{{;QcE&zc=Y8>R~Qa4MyAL~opF`Xi2fBht*=SQ1oTq| Xtzi>m@hHWHQ~Br!$F++ShvWJixDz3B diff --git a/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index cdb444be01e74d2c19a8a37d66317e71e93d73cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmYL@QBT4!6ooPRv`3$PxFkv-TH4Np%#wv54nqW4aPnS988xF@+A{Em`1kxRcACIR zzVzJm+}!hXdGXzFI&)k(t{vx&J4da+A>8MKd+W?mu`WJEYSCncmO>j@CPmmCi7QsA<9BqG&7l8p~qcjP*O1P;yGG~O4d8*iCe+IC$xvCk7y65&uDNASu0FLE8bvBCR#IgQf)8nr zH5ufU7w0?8b2KjW)-X`z-)O@7KK$FTt!^j@Lkg`H)Rr_uN?`y5TpXIAGXtP*@H>64 F@e2W)aufgn diff --git a/src/modules/dummypythonqt/lang/mk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/mk/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index bad77684e145e2a80450640ec7fe278c89d01796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmYL`&2AGh5XYCV11r%(&m1NPqE_JSdIeGBus{fD6_L;oLeIDxcWbh1uWYAjAA}1M zZ@>wuQdK^l!B4=mFq??>Fa0#0k>@{S`S14KF9GTf@(_87+(Sl4txw1Ugd_J6jeNfq z1m_sHkml_m*v9w_BbL{yy)fOV2TH8q{fHllq80QDnJu6cjbLK*XOTHFoRdRgtkjCZ zq}PAj+aJK;VESQr@GhK+N*hPUHkWhqdYM}?(+tAN0hx+ZS@)1P+zAFrOxuJegtmbu zjCLN!sBpxsBQwL5Ex6N$!I&E-6-=dd`qVBYJTKQ3^S|(_GTLcXa#^%8UA}lyJ9p4X zoaona+xrlbd z@o+r2c{OdtVP7jJ6mEN7;d7igb5T`rsk)GzaASo_KhE|@=jL8L>R1>uP??@fl{4rZ zNq4;|gK`m0ilyNN+0&-93{JOUa+ngWGp6EI^}b+zeqKi${5`75t*>}yqX~g)UX($AZ(H_B4HE4 zC=Oc>1C%?Y+K{QDLTA)S6~jKwsHWnKD(J!9Y}+Nz=)!Pqc)~rY(x;EA4WHn=NEb9^ zWXfnB!wCH=B!`_-V+tMn{&KnWOmzT1Vdq{Vb3dsJR59%v9MXOi1kKRTGk@0|4MzRz zw}xKe_M|XO;2l>5KEkkb;};p_q7BI@RhpU3o9Q8GUHht|PM9Knk;pk0X$-9yH`|NG zkZ0~VTPT{5L#c8dgDC1&ccM0I%Fd2}MhC*(w(HpPi!FcI^#$1S2PRv7v*jOK{@i|; kEkE1xyIp^(<0bm8>gIRt+tgLWg|BvfiKF#0#t#kWKdW5IyZ`_I diff --git a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 48aca7e96ad98d080b6209f2c53afd6f0b08f171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmYL@u};G<5Qd9j^2p3^NDQsOb)2CJt}?VGMHPfbC3H8bn;Io{WV@t12(QPp;DFTr z(x&mF@LCuvwPKJ>W>1sH z1lGywb+LRwE7548LmQ+6Kwz@1e97~F>wLW!*seJbx0S0#SpnPSlJI{D5LF6Gc#Cx5Ff!O@jZMN zr<%Z@d^z`=|L5}Jv*mQ=xN_V$&K-A-MxkTshW9QuJ4Yp2z4FY$WCJU%jZl)JWH5Rf zJjQ4hFP|rixwqt%(iUbW7aJJva|5ZO$V(Qm zGMVpL&LQQjq-d^m&2zyd8mhPQ`>R0howb#r7}s^(wVFvIw*1h|REaZIu##zRuyw}< z2fp7USgvu$n@wi%$usHt-bhKyrG@mPa%L<)SX>oM$Ue$;OdD>amvju_X|H*;_&S!6D&vVaRyf+@^&DwVNJkKY>0n_Y>~;nCdg!d5bs==VLzJq+5cVH3$0 zq*-&BP7%Z&HK!`2YX_ diff --git a/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 95b99b007caab2b1dcdb7068c41e72b152d39c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmaKq!EVz)5QY~hAdHYu4+8Tlph2jodI zF-m0=vbkw^`o2b^vd*jJ%nB$R!Oo`WVd_(4op6PP46PLj!l5?MDza=0ov|Bewd3HG z?)hvrmGL{uT43i^_a%<@9OkS$zzdW#EiKUFE?oAZl=UYc9O@oeF}4xB|G+v%4>5Lp zz0dd2SgBP6ot4#%m6vVUZ}0A{Z@>0-G1tcNEt|+be^DfscXb3_XPfWhkt{X5B^*Xj ztA=$R)_7Qluoi{OkE&$erm&88jZiifPMZi?2nUEF&oPB3Cx1rIlT66ek9GF+ak$Y{?H-grEwvkHe6*>HOv(QnW>!X>PwWKTi$!6u^mb%Zkg=sW#XcC8oIo{OGaeJft$eKd>olplDY) z@aBM264_*)HdcLOmnDiz;Xq|^>FMI*GVGSOcUCtyGTSVci8j_%zgqgbEc>Efe(TQYWyZlir7#YH^rX zI$`PVVGvOs<~1jx}^X^P8-S_j>yj_6({eHnJ*;rWs8%1IY_5Yemt~CXEmTaf7u7M#Ir>LXLA^Oo0b3Kq!W z70#0l>ha?v!J80a?-Z#>KL~q=KC}|q`u3?aPDNhy9q~Uga2)!Ps)Qy}dN6ZL2SjMf MdxsvrKfKL<0e|T$+yDRo diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 5ef78795bdea73708f469fd19e431b16bb58dbe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmZ{i!EVz)5QY~hAdEn$2RP8f^p>b>97k#t92F^T)2h(WGcz4b2x@n4d z1Fk#-ZvbZwJONjZoH=u1oV2M_m6bpLp7qSm*!q7hE_^1q?jlP_gxp6yA;tQNJV3r7 zCFBQk5BY;ULH;6-k;NN?)KSZ*4ta|_!uaP+LRL|Kqdr7kx<$xS)RlAHMtzQPjEW`G zg{cHXvM>wh_dEDh%z3-mX@TNn*xzM+o>nljj=9`|+IR3$ z_bX&074bXFS|(TC9tl1^a6BW?h+k8Q+rk1~?%LNCD9Vy)!(-hC%O*C24-96glC!(mKo6PYL zYSo}lgBlI$5Y)n;u~Nn5?K10VWSFukbJ~Qkor`qDjpWaYiUuaAVU9nAMx04(kInL7 z&Mk-1x?yJ`EkkMKTxLVxACJcsSDYmV{In8l>BlT(k{ND&hvn9~XE6-~|NbrbiAX1Eo*c+#bb-JLvzqO2|XBi`NM8&~BhDL%WLp1TBV4 z2Zj)I$->M%|KGq_+2{3gr45RYVSk4WcveHtI_3%sl3UAC4nu8VtB`U6y@?xXweR4W z9@NNYCgRt4YK2_dJraC;;CN1=5uX!@%fbSFZtivs%CKZw@K_JPvWX4h-FwnA`k2R# zb`yHUjTKsj&}(l#Z$It8QKx^<-FxBnd9ID4yEYXGeNv>BMmhwqw@3T@M3gafi#Z-b zqaHMA(4avRf<_pu-LK>Dc9?ZEGECWwIc-Adiy9c$px2cum3VWX9cqzwEou6k+sC9@(%vkPP zhtW1&yEs=?8*)QCD%OcmX$Wfr;m-RGVOq=UWrblG-PT6pbge`B?F~T*tvqr1<6$@9tjBtj)KBB%$Z@pAj0bn*(F^})%2#|^nY?{&yOV?%nxUu UF}ItW8`}RiW~xfW+o_=b0B8;kJOBUy diff --git a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index b07421664053639ea5225582e2223e486bb4d280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmZ{iL2uJA6vqP$(1PHw10clV?ZA`>+$2S+x{PdeTL*)UbzQeJZtAw)5<9Y;brs{v zi7VfMj{u*5Z^38a%!%g~b<(t1`T3t``)@y6@AtyoHwW8Y@jrars1r=gMT*9+jgV@f{kE*hjv+3!AKiwN)0*FnhqHBrGm{e&&SXjo1ql@2HweT z#o5SsdV;GKolCPvoQ)0)E1b@dUE#!Gt^q%D<#YwCtv5OFSaw0vv5w)>XQ!p)F-r~E z?vW#=G?yZVR%7FR<4qHen(c$_y$^1i6;c_ps|UPC*2{q=9T|h$+9Pdt%B_cNQo~}X zhEa_~RT9-8s>V_Md5F#3q1up+qC#iXNEO36rM*(w`_fYiuP`6fEDFWzK~8yANoBtJ z!fsYauNaj0UZlfl9z$E^RB$T58yZvSI0#0gQN`H3d7qtGXOPm2=2S5q81(3%8iutf zP%`k{-R<4x#WkZ!=x#`1n85VL1?F$qnF)%Fa57t1>gykeZVRgb diff --git a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 931086b0db46652dca51febbb503f3591ff9fad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmZ{i&rj4q6vwNg#!b9%FdjTS4iYxnZKnca*)FWG7!+h#7VblL*sZkF&CJvV!Uawe zNjMo#9{dl`h(BT^o;^+f0TXZj4_-TMDzh#qmmyWLaA7HkVh&4wt3!p_f+7`L zR5aEnn-LAdf*(hvyIHII=;X}=f6uHl8o5wQqzovBp_Wo@=~`B&(m3U+QP=8AE=+h!Xtuh@pN+93`2IQT6pBvamU zea0L+(`BR9m@q5cj~fARx-hmHsMBk@Ad*})Oau+hnOH>91>Wv1r8hhdz0w=vw~6g} z1O^8oEA0V~5SRcPP>$=8=bRiBz2U6vI_x5GV0*h~DUsnkTF5_(=h@j&S6A{z&g>8J zr~B9!$DGV8de~tC9BgneKb|x68-1+br!V!F(>JEy;?}W#m+t8!{Y`(?N09F5<8&w8 m#qUA3l^%fppub`|@9kmFL;X=7rn~7r=ufCTLi7HApW{uCp;HL4&7mfdr+;oHR@KWTLZW1x%KB2G;5z} zLpv#xI$}np9(MoZl1bQO??nh3Ny>GgjH%UL4PquDJ5cfFi?SA`%0Y(LLOYzr9-Kxh zXCbT%jY+iUIHS?XHbr64=NCnu6R?QI3@bVYGqh8!RBEoHLub`G*ga@o|D$VHtZgL? zm)P4l!R8IWFisLNA=e=ovQ%^9zw5MU{aROis?Sr}l!59AIq;y~6=v3@2RgLcQI@iZ zwp1G94a=kqwZFCw)2+WE;TgE#`%r=9Wst?rg)NLw{@>B257nt?!-q8#xiisHk-r61 z4_>aWTjWsXlS`Zrsq&D`#_QCuygblJI=Rdl;AKN!gl2M;%M2#pBQ?xslV+2>NQ6=t l4w}bHr1ek8rb0Fol8!P8&aX?|P}p!Id8l%gPOi$S`wPJ?3-JH| diff --git a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 763803202404af79ecc72eb7f55aa033b2cf0cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmYL@Ur)j?6vZ+6v`3$PxDT2@w6q<+yg7JMJ8n0>{pU_wKD`j*7MV6sbkSIhqM=awQqWz5Yw@ zIf7XpgyC)EphT* zxy;r)6DSdU#b8>fjgUE)P+wYG8iw(9yKP#{rO6j!*G$z4r@Y`Ru7$zYEg9?+(xKQC zxZ#b4qv+I?Hi_3)(h6x&@>RMLR_rV;3!cj^q)V=iu;F_$K*4FQI<*iQMKV?MTxJY{ zkK7)MGBAY~7i-N6G*EhF7|8O^ny}r4!#AwU8%jtRQg{FYZscHnXX(kdV88#5+Ai{4 J)M|9S+Akr8cU=Gg diff --git a/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index b7daa29f5b951a768760b8a76981ecf17db4ca16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmZ{iy>1gh5XTn?AP!LwBxoom5=A1|JD(*?bioKGalquuNldB~tnJC&+IPE`-8GIu zG}N>_MP2}E7rX@xFF->>#hi^237OIT?!PlTvtOF;^K+jW*>&PR(IRdVpNPV~5Vwf0 z#3J#HxIz3R?h(IVKqf3;Awl}JEE*0-Zz{i>~^*wZWG!@`|mF z(eS$J=&n?81j}vd&d(WvJ@K09z=)J@Xp_-9t9;_xYIy~w!|I}fg(`$gD<0eFjnDoz z3LqHtrxAJz@h*Y5hpOAd9)gMm)cQ_dbj+khe72d&zRt#HO8&oVW)!l`5sc4l;%NIB Q)BZF#?HOuON}F`dAF)9N$p8QV diff --git a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 5c8099cd45786b22eb6659fb293da37e0c29520b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmb7D&rcIU6kZiI)_CC{G4b#?NFciHZZ!=q6y--TC_f5R&Q9B*UECkd&eTH01oYs= ziw6@!q9(>apg}7YrCv<9PX7Uqo;`c=+a*FY9Pnko`R2WO-+ON++3%elFErR`;3AL% z&H~SX(3-$G;1kdb>;h+ipFkJz3pfvS9@DfGxDUJw+ygGa?>(Vu)8G+sC-^yd82k=w zfPa8zz+D}h21#Vcu_CM?^p~B27tVPyj1H5>YcxB_^4y8T6OzfQAeRflN}Lw`fX1q> zyF%F&S@ykINw@ucTpM-l!hK|QYyX@s*t|9`c}2^W`5{V#Z9(|tp~rCwWyPrBlAkBR zR)j?lA8FaZU*ZL+PZae99thj_EXod#-Wk4?p@q!c{KU+3Y>rp_K`={chOW0PWkpztM6Fhf%doP& z$d^N5qQD&HvVe<(ghV8ghLJK8B1rVbrY5E`2bVPCMr_pgB=<1fN(IwPzAO_JhuPi$ z70N6ST&C~l#`XS#ys*_G5A=*z@Qb!rvZz0A%l$De5kXiuBb1 z+S{gky-TK%PMg%zL*drwPMap(AcK$&e<+>&b2ON~7H%VjF=!gJy1FMpj?o8=2~DzZ zAf~BTs--qnozzDAiF&QJ)Q+mFZB^IQ8`WyBAqa=s>+Q#?-rfikx5DLXdo2<+;UW#H zCPC3eS_@8C>@BizwvKwOxTZGLXVpZpDD#VIbfd$Oifl&>Fw|bxhI)@m4fP?K@kkZ+ d$Ix)YP1U0IOV#-QI}p@66uyW0s2b64@Ebfd~`@F;POJOLwawxKI@p3{j*3h)2$^2htzV~)Nw@};Yee@xE2YrGr)j)sY@*HcK`BQB2SD84{o05q%R^^&Q+`hSQ z-*sTp8IF2`M{g*L+&I#=shX1OMQX`7=itQyGL&zsWXP>>l0!&Yov@IwI{`?L&3uTw!?-ESJlgGeTSSBHwFCJ`WO+iMcS+1`bgh zgp}4gQxn_N4o9T|TV_>hzDE+{ggbQ6-9Fjl(gY1}1^|6FRyaIyjUho$11V~(S#qkE6G-l~;T6X2llr80NMDdHkiI4* z%Sof9jD~FLbU1lmqn^w2s{67C3Wu=0A-b6RG%{A$fq?>z5g9_S)UZ4#iV?I&wqL4k z3u|T9XG^(E-q5NUc5Zf0;&9hu#X5bwz)7E_0eb9((>^#`dJ^!U?1B*^6T#betgXuf zOe|kb`5tN`OBF$TacO<=c?^5;&hF~gOK%6OQd_=hGMVycgUs+w8G+Z{;yZXKorfY~ozNmp7c)zd`uut|NP zeS-^+X|uZXs%${##XBg92zG~w5?a272Z5s=R);R z^H?QiDpeMNOL>xJ1m@6d=L0QrzEbLf&RA6^L({6y!)doQt6-)D;oQ8(Vg+h6sgl^* zzjabznqn?gN|iGHtO1X(s4zb(7P>^LmUUMx0;=&RC}cLn;`7TURrBAB+kh>jwF1V+ Y6o5is90dMZodYSs@o|Q9i&Q*+00E;2(*OVf diff --git a/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 502e4d130fa5d8c7edb67958d1ffc560b12b0634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmYL@zfQw25XOsO^2p5KfdK?p#~G^NszWI$s-QF~p}R@l#3->N`%24$@OnH84oK}M z{d9M_@BaLppMCd&P68K!%fM;iHqa^Q2+g|?JI_IxvmdHJn5|)@oY&R}nvEw<)d5(kag{_&tlGXuug(?3&DH^Yr*8 z??+@}4Jw0>f3@L0sy(u{mf8$yQAy_&j^6SqBu8I&YNH&arm$;mNr4{{=qSA(@=~0OVa1tkRd*_R6AL$7( zGr-E+kvU5RQnyRRf5BhCz>I{%b5b=@RqH?c^|enS%ZfTTG}v^Xo$Ghtiz!lD_BjUD1};T zy0P3g@FH$FWF-{Mee{|k=XQ4m@9!AiBSDv65Q)n|13u=$Z3k>vYgBMAZh&T~_Tj@v zQd99BZyLJZqPtva5lbIxODh{o&nvK7sqd_Bz0B2lFII+Dbw{-5a?;T>h<(V_wrHKd z7dD2jGQ)i+6}>X`O4KWZSMt5NheaH@O{NVE6q7n+CRRSI@<=F_LN)0cu6P7bqt=FW^kJ< zWD!$by9Q&mTPhaIo@>#X`Cks|asg_C}^&D9yuox{#N! z2wq`6M_zL&pdr***K8#FA)7Qv_KAhV!O3C7^l$(o`zGYby_KjWvYo~Dh69HzW5JYx z84fUdhU_rBs1dc9lr&U&Utn E5A~cErT_o{ diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 6b860e05cb0ac98cfb2de597e4f68abba9babcca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmaJ=OHUI~7`-ZLtT8bx)P;+WL=9DEI#ZG0z*MnjPc7GP&~y{0**Md8SH{ir)0(^n0B1eZ9^7*4_1l;cN%?19@O4 z@DPYk6W9g31A2ikzz*O$uow6N>;bwrG1d=Gg0F67>^gWi;*VPxy9WLW-UmM1#n=IG z7JL|70++#$z>u^K$J*=ZT?ehARkeK8(KakplD7v%S>98oY zyl+t=cTt<<3vR5@&Nz}=ls3$M%}i@%KbdLE95`a&B*q;fwS3@sqT)zDu;@w{xRfpV zf#d{Feo5A6_x|t<1%v;PU%?a6+>K>mgi2@qRZvLaXlA;-jb9xVWm>_dR>>X zvpdIc=mo!;DmWFV>I7V*Bt#;WHjI8V6_!)U#KhRd$l8xIbt94WJ;^;R*QjB8$#2M1 zt%4bYR46%t;L^UFAJqod`r=V@JkUnGfljXrq2m#T9$C zRw(SgLHhO8?)B&(nPl5!(4j-rii|ik*FuAO5Sw%oJuulwkg+MfCZHjk`r`1HyJ64} z{sX#o>$kr_88Z8lFf{)%{4K!>Ml4tjGxqUy{wI=uRN-f1zxMu^XPbSLj3=ZmI+h$v zF!fA*Qm@of`xU6?aUy!E-he-<4{BMhsFi4uq6bJINzt9?u3AFw9!2-j_#R;s9xJH7 zMqRx{^%Yvt(^9U!9zCA66n95=P-+tVWB27Are3TwYN~g%`k2~}ud`|S-;jjsr|fR>X(;F4YL~EjL!Uc$H0Ybo6ym8)0ywa$QJOGKk)#JN(F? hH7KoG!z(=1rnU@J^EcW!9KnAZ_Y_>kK>H(f@(VKbYBc}= diff --git a/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 4e1a2c34a7068a78550cbd77f3592b484199e0e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmYL@u};G<5Qd9j^2p5KfdK@r;|x{mszWI$s-QF~X?HihriR3hY=@S-2d~Go;DFTr z(x&7$XRq3c%c`e z@>=9TQV=D_%VrH9_-5x^WjUq${l4prP*!f?(9Lv7Gf{|A7_iiNgQZ~*^cbxhdW&Y$ zS$xXLx&az%*eAd};0(k+4#&DbU{6DQ@d!fa z!J1%oJPekAy#p2`tpTYBLev$9?fDpZ`kqJiN(OUQ#}gy8$b1tbsi>++955-V%kYc{ z@jxvI8aUrj6~QMI9u`FtWqq%7AF?i?|8}Q6R-aO=iV78WfD)EHiQ!WRZkt%k%B=%u zMG;HdkPd$I80AAT%Swt2mB};EucgNGsoMgs?DD;{T(;U4YKUfferswy4Js@LnL(zU%A zHm3_%CF;|FhD=%tq|!|7d_R!v4dM@8F{}JQlAWpFo37#)mA9` z?LHj4{fRyUHMi!QTkFxAPkXD+;$HbV{}e@QAAdbx?{r3UdwX~3J*4a{ZASA8(dJ^b zu+d6fei1Fcidysj&H~z9d$+r?6K#L)Xxn|$?z6ZW(!#eJaC#><-hslg6TMv7`|x#t IXBGP7A2L@X(*OVf diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index f13ff2d5fd45d65ec6884e3352102ece429c9782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmZva%}*0S6u?(SjjLWb=*7cugXrvbE2(u6BbH(ikOC_naoP^;;_ghdGqqG>Qv8Sp zOpGxSB}SqVgBpW35%BDPVPb@(J>k)K@@>~ZBE0Nx-@Nac$$W2Yc&dQx2aW+2a1eM1 z1hNPm2EG8zz&GFk@C!H!`~i*tjk^>j2D$}w1-J?X{vW%;y5FD=f!(wxoTGsb;ys{G zgHD5nlDa^u0;bXsnw$T9unP9MH}G^IMoVa*m!zqqfh8o7MS)x@1j$h}%01Lsbloya zm1Ul@0f{d1w5B8+J97=Pnw0;d!!|7qNm@{>Jl&xZ+_pgQ$sNNQ3d*wefnz+41Sty> z-MpowJU&J<5_f0uF!hAZnTb*ziJp!NNi>`s9O~}Bqz=*o_ayEUIXjEb7jptz+(c@s z9}m*&c2I*miKHfqMvNFXqS%NbBWfD);}H0aw z88ups)^jsKl4W?-W;qkZ)3)5)vWe=m)Ra^7h=aSh=fY*P zLfsVYMjHy3?U6QBSzWBGRi^yuPwO*x|2>zVmD|eN#Qngr`8d`-&#iua0j~9_ihpma zIzQ=8ECh+Q<(K}GN&ms)jg^UQRsQ?e)wk3B$GO_O*=@nFrBbUr_n$3<+t_(3jDbLy QUVSyc{$^=oWd`2PU#CPf6951J From 8b4ae1d687bf98abd6126720c9cb9166f6cde1b1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 13:38:45 +0200 Subject: [PATCH 375/399] i18n: Don't compile the Python translations as part of fetching TX --- ci/txpull.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/txpull.sh b/ci/txpull.sh index 8c3a824cc..f68814560 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -126,7 +126,7 @@ for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do # Convert PO files to MO files for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE - msgfmt -o ${POFILE%.po}.mo $POFILE + # msgfmt -o ${POFILE%.po}.mo $POFILE done git add --verbose ${MODULE_DIR}/lang/* git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true @@ -136,7 +136,7 @@ done for POFILE in $(find lang -name "python.po") ; do sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE - msgfmt -o ${POFILE%.po}.mo $POFILE + # msgfmt -o ${POFILE%.po}.mo $POFILE done git add --verbose lang/python* git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true From 23bfcb755ebb495a29abe75437dfb07bb6e71fe5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 13:54:08 +0200 Subject: [PATCH 376/399] i18n: pick up the translations CMake module just once --- src/CMakeLists.txt | 7 ++++--- src/calamares/CMakeLists.txt | 1 - src/modules/CMakeLists.txt | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e35a894cd..5ce5349fb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,11 +3,12 @@ # SPDX-FileCopyrightText: 2020 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -include( CalamaresAddPlugin ) -include( CalamaresAddModuleSubdirectory ) -include( CalamaresAddLibrary ) include( CalamaresAddBrandingSubdirectory ) +include( CalamaresAddLibrary ) +include( CalamaresAddModuleSubdirectory ) +include( CalamaresAddPlugin ) include( CalamaresAddTest ) +include( CalamaresAddTranslations ) # library add_subdirectory( libcalamares ) diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index 6d4eceb8a..604760f3a 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -37,7 +37,6 @@ include_directories( ) # Translations -include( CalamaresAddTranslations ) add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) add_executable( calamares_bin ${calamaresSources} calamares.qrc ${trans_outfile} ) diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index 8836c74ea..c7bd2755a 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -73,7 +73,6 @@ foreach( _category ${_use_categories} ) endif() endforeach() -include( CalamaresAddTranslations ) add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) # TODO:3.3: Use FindPython3 From 242d5c6499cd6e76dc0f721c5692fff69d9b017f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 13:59:23 +0200 Subject: [PATCH 377/399] i18n: install Python translations from a sensible place - put the installation code in lang/ rather than among the modules - remove useless indirection through CMake macro --- CMakeModules/CalamaresAddTranslations.cmake | 16 ---------------- lang/CMakeLists.txt | 8 ++++++++ src/modules/CMakeLists.txt | 2 -- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 4d2fa265c..f53426e18 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -48,22 +48,6 @@ macro(add_calamares_translations language) ) endmacro() -# Internal macro for Python translations -# -# Translations of the Python modules that don't have their own -# lang/ subdirectories -- these are collected in top-level -# lang/python//LC_MESSAGES/python.mo -macro(add_calamares_python_translations language) - set( CALAMARES_LANGUAGES "" ) - list( APPEND CALAMARES_LANGUAGES ${ARGV} ) - - install_calamares_gettext_translations( python - SOURCE_DIR ${CMAKE_SOURCE_DIR}/lang/python - FILENAME python.mo - RENAME calamares-python.mo - ) -endmacro() - # Installs a directory containing language-code-labeled subdirectories with # gettext data into the appropriate system directory. Allows renaming the # .mo files during install to avoid namespace clashes. diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index 790d6098a..8658653ab 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -5,8 +5,16 @@ # ### +include( CalamaresAddTranslations ) + find_package(Qt5 COMPONENTS Xml) if( Qt5Xml_FOUND ) add_executable(txload txload.cpp) target_link_libraries(txload Qt5::Xml) endif() + +install_calamares_gettext_translations( python + SOURCE_DIR ${CMAKE_SOURCE_DIR}/lang/python + FILENAME python.mo + RENAME calamares-python.mo +) diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index c7bd2755a..8e8c67848 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -73,8 +73,6 @@ foreach( _category ${_use_categories} ) endif() endforeach() -add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) - # TODO:3.3: Use FindPython3 if ( BUILD_TESTING AND BUILD_SCHEMA_TESTING AND PYTHONINTERP_FOUND AND PYTHON_EXECUTABLE ) # The tests for each config file are independent of whether the From 3529659629037a6246cb681b38c2ffea859a59a6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 15:21:23 +0200 Subject: [PATCH 378/399] i18n: compile the gettext translations at build time - need gettext to build translations (TODO: find_program) - compile the .mo files from .po as part of the build, writing to the build-directory only --- CMakeModules/CalamaresAddTranslations.cmake | 32 ++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index f53426e18..ed09d98f9 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -78,31 +78,37 @@ function( install_calamares_gettext_translations ) if( NOT TRANSLATION_RENAME ) set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" ) endif() + string( REGEX REPLACE ".mo$" ".po" TRANSLATION_SOURCE_FILENAME "${TRANSLATION_FILENAME}" ) message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}") message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}") + set( TARGET_NAME calamares-gettext-translations-${NAME} ) + if( NOT TARGET "${TARGET_NAME}" ) + add_custom_target( "${TARGET_NAME}" ALL ) + endif() + set( TRANSLATION_NAME "${NAME}" ) - set( INSTALLED_TRANSLATIONS "" ) foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global - set( lang_mo "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_FILENAME}" ) + string( MAKE_C_IDENTIFIER "${TARGET_NAME}-${lang}" TARGET_SUBNAME ) + + set( lang_po "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_SOURCE_FILENAME}" ) + set( lang_mo "${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/${TRANSLATION_RENAME}" ) if( lang STREQUAL "en" ) message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" ) - else( EXISTS ${lang_mo} ) - list( APPEND INSTALLED_LANGUAGES "${lang}" ) + else() + add_custom_command( + OUTPUT ${lang_mo} + COMMAND msgfmt + ARGS -o ${lang_mo} ${lang_po} + MAIN_DEPENDENCY ${lang_po} + ) + add_custom_target( "${TARGET_SUBNAME}" DEPENDS ${lang_mo} ) + add_dependencies( "${TARGET_NAME}" "${TARGET_SUBNAME}" ) install( FILES ${lang_mo} DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${lang}/LC_MESSAGES/ - RENAME ${TRANSLATION_RENAME} ) - # TODO: make translations available in build dir too, for - # translation when running calamares -d from builddir. - set(_build_lc ${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/) - file(COPY ${lang_mo} DESTINATION ${_build_lc}) - if (NOT TRANSLATION_FILENAME STREQUAL TRANSLATION_RENAME) - file(RENAME ${_build_lc}${TRANSLATION_FILENAME} ${_build_lc}${TRANSLATION_RENAME}) - endif() - endif() endforeach() endfunction() From 49e925ef472c0ce4e29a073f88b5e008fd8881c2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 15:34:17 +0200 Subject: [PATCH 379/399] i18n: untangle translations in the executable - there's no need for a macro that is going to be used once, especially if there's only one place it can be called. - expand it in place and remove it from the installed CMake module --- CMakeModules/CalamaresAddTranslations.cmake | 36 ----------------- src/calamares/CMakeLists.txt | 44 +++++++++++++++++++-- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index ed09d98f9..3556c7eda 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -12,42 +12,6 @@ include( CMakeParseArguments ) -# Internal macro for adding the C++ / Qt translations to the -# build and install tree. Should be called only once, from -# src/calamares/CMakeLists.txt. -macro(add_calamares_translations language) - list( APPEND CALAMARES_LANGUAGES ${ARGV} ) - - set( calamares_i18n_qrc_content "" ) - - # calamares and qt language files - foreach( lang ${CALAMARES_LANGUAGES} ) - foreach( tlsource "calamares_${lang}" "tz_${lang}" ) - if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}${tlsource}.qm\n" ) - list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) - endif() - endforeach() - endforeach() - - set( trans_file calamares_i18n ) - set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) - set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) - - configure_file( ${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY ) - - qt5_add_translation(QM_FILES ${TS_FILES}) - - # Run the resource compiler (rcc_options should already be set) - add_custom_command( - OUTPUT ${trans_outfile} - COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} - MAIN_DEPENDENCY ${trans_infile} - DEPENDS ${QM_FILES} - ) -endmacro() - # Installs a directory containing language-code-labeled subdirectories with # gettext data into the appropriate system directory. Allows renaming the # .mo files during install to avoid namespace clashes. diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index 604760f3a..ff7c90bcc 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -4,8 +4,6 @@ # SPDX-License-Identifier: BSD-2-Clause # -# "calamares_bin" is the main application, not to be confused with -# the target "calamares" which is the non-GUI library part. set( calamaresSources main.cpp CalamaresApplication.cpp @@ -36,9 +34,44 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) -# Translations -add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) +### TRANSLATIONS +# +# +set( TS_FILES "" ) +set( calamares_i18n_qrc_content "" ) +# calamares and qt language files +foreach( lang ${CALAMARES_LANGUAGES} ) + foreach( tlsource "calamares_${lang}" "tz_${lang}" ) + if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) + set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}${tlsource}.qm\n" ) + list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) + endif() + endforeach() +endforeach() + +set( trans_file calamares_i18n ) +set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) +set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) + +configure_file( ${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY ) + +qt5_add_translation(QM_FILES ${TS_FILES}) + +# Run the resource compiler (rcc_options should already be set) +add_custom_command( + OUTPUT ${trans_outfile} + COMMAND "${Qt5Core_RCC_EXECUTABLE}" + ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} + MAIN_DEPENDENCY ${trans_infile} + DEPENDS ${QM_FILES} +) + +### EXECUTABLE +# +# "calamares_bin" is the main application, not to be confused with +# the target "calamares" which is the non-GUI library part. +# add_executable( calamares_bin ${calamaresSources} calamares.qrc ${trans_outfile} ) target_include_directories( calamares_bin PRIVATE ${CMAKE_SOURCE_DIR} ) set_target_properties(calamares_bin @@ -81,6 +114,9 @@ install( FILES ${CMAKE_SOURCE_DIR}/data/images/squid.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps ) +### TESTS +# +# if( BUILD_TESTING ) # Don't install, these are just for enable_testing add_executable( loadmodule testmain.cpp ) From 85d90383170dd760bcc543df1cd2589e73d61541 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 16:34:31 +0200 Subject: [PATCH 380/399] REUSE: remove special case for .mo files --- .reuse/dep5 | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.reuse/dep5 b/.reuse/dep5 index 6ed0da149..a2b9cf8c3 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -83,17 +83,3 @@ Copyright: 2020 Calamares authors and translators Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.po License: GPL-3.0-or-later Copyright: 2020 Calamares authors and translators - -### FIXME ISSUES -# -# The .mo files are build artifacts -# -# FIXME: these shouldn't be in the source repo at all -# -Files: lang/python/*/LC_MESSAGES/python.mo -License: GPL-3.0-or-later -Copyright: 2020 Calamares authors and translators - -Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.mo -License: GPL-3.0-or-later -Copyright: 2020 Calamares authors and translators From 392b4d33a09cd7bddbcdaaba05e8ac73cd9d1ac3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 27 Aug 2020 16:39:44 +0200 Subject: [PATCH 381/399] i18n: create the lang// directories in the build as-needed --- CMakeModules/CalamaresAddTranslations.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 3556c7eda..be5ce201d 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -57,10 +57,12 @@ function( install_calamares_gettext_translations ) string( MAKE_C_IDENTIFIER "${TARGET_NAME}-${lang}" TARGET_SUBNAME ) set( lang_po "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_SOURCE_FILENAME}" ) - set( lang_mo "${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/${TRANSLATION_RENAME}" ) + set( lang_mo_dir "${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES" ) + set( lang_mo "${lang_mo_dir}/${TRANSLATION_RENAME}" ) if( lang STREQUAL "en" ) message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" ) else() + make_directory( ${lang_mo_dir} ) add_custom_command( OUTPUT ${lang_mo} COMMAND msgfmt From 6b6267e3a417a9442aaaea7a0a45146bd36c45c6 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 00:49:23 +0200 Subject: [PATCH 382/399] i18n: check for gettext rather than just calling msgfmt - *secretly* this is already done in the KF5 i18n modules, so the resizefs was already requiring FindGettext. - we don't actually use the gettext modules' CMake macros, so explain why in the module. --- CMakeModules/CalamaresAddTranslations.cmake | 28 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index be5ce201d..56953187c 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -12,6 +12,15 @@ include( CMakeParseArguments ) +# The Gettext module is still old-fashioned, ALLCAPS variables +find_package( Gettext ) +set_package_properties( GETTEXT PROPERTIES + DESCRIPTION "GNU gettext (translation) tools." + URL "https://www.gnu.org/software/gettext/" + PURPOSE "Gettext is used in the translation of Python modules." + TYPE REQUIRED +) + # Installs a directory containing language-code-labeled subdirectories with # gettext data into the appropriate system directory. Allows renaming the # .mo files during install to avoid namespace clashes. @@ -44,8 +53,13 @@ function( install_calamares_gettext_translations ) endif() string( REGEX REPLACE ".mo$" ".po" TRANSLATION_SOURCE_FILENAME "${TRANSLATION_FILENAME}" ) - message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}") - message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}") + if ( GETTEXT_FOUND AND GETTEXT_MSGFMT_EXECUTABLE ) + message( STATUS "Installing gettext translations for ${TRANSLATION_NAME}") + message( STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}") + else() + message( WARNING "Gettext translations requested for ${TRANSLATION_NAME}, but gettext was not found." ) + return() + endif() set( TARGET_NAME calamares-gettext-translations-${NAME} ) if( NOT TARGET "${TARGET_NAME}" ) @@ -62,10 +76,18 @@ function( install_calamares_gettext_translations ) if( lang STREQUAL "en" ) message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" ) else() + # We **don't** use the gettext macro's here because the source + # structure doesn't match: we are calling this once per language + # for all of Calamares's languages, while the gettext module + # expects it to be called once, for a given language source-dir. + # + # Using any of the gettext macros just gets us multiple rules + # for python.gmo, and it wants to use msgmerge, besides, which + # doesn't fit our Transifex workflow. make_directory( ${lang_mo_dir} ) add_custom_command( OUTPUT ${lang_mo} - COMMAND msgfmt + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS -o ${lang_mo} ${lang_po} MAIN_DEPENDENCY ${lang_po} ) From e87ce5a43397bf23a1537b2d7bd9e05634824772 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 13:12:12 +0200 Subject: [PATCH 383/399] Changes: mention Urdu revival --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 6fc8b49d6..5476b42a4 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,7 @@ website will have to do for older versions. This release contains contributions from (alphabetically by first name): - Anke Boersma - Asif Mahmud Shimon + - Manzoor Ahmed Munawar - Sai Kamal This release has two giant source-code changes that have no effect @@ -30,6 +31,7 @@ on functionality, but do touch each and every source file: use in the Calamares network service by testing-it-ourself directly via a synchronous ping. (Thanks to Asif) - New Telugu translation. (Thanks to Sai) + - Urdu translation started. (Thanks to Manzoor) ## Modules ## - *keyboardq* and *localeq* improvements. (Thanks to Anke) From 9afe7a37111a1f8c356817ee83546c85c4803820 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 14:24:06 +0200 Subject: [PATCH 384/399] [libcalamares] Document JobQueue signals --- src/libcalamares/JobQueue.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index 23977b78f..4faf9d420 100644 --- a/src/libcalamares/JobQueue.h +++ b/src/libcalamares/JobQueue.h @@ -60,8 +60,26 @@ public: bool isRunning() const { return !m_finished; } signals: + /** @brief Report progress of the whole queue, with a status message + * + * The @p percent is a value between 0.0 and 1.0 (100%) of the + * overall queue progress (not of the current job), while + * @p prettyName is the status message from the job -- often + * just the name of the job, but some jobs include more information. + */ void progress( qreal percent, const QString& prettyName ); + /** @brief Indicate that the queue is empty, after calling start() + * + * Emitted when the queue empties. The queue may also emit + * failed(), if something went wrong, but finished() is always + * the last one. + */ void finished(); + /** @brief A job in the queue failed. + * + * Contains the (already-translated) text from the job describing + * the failure. + */ void failed( const QString& message, const QString& details ); private: From b37a675657874c3bf20ae9f88dba0f68e8bc4172 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 14:39:32 +0200 Subject: [PATCH 385/399] [libcalamares] Reimplement JobQueue::queueChanged - switch to QStringList as parameter, since consumers (that is, the debug dialog, which is what this is for) are interested just in the **names** of the jobs. - to allow mutex locking in const methods, mark them mutable. --- src/calamares/DebugWindow.cpp | 13 ++++--------- src/libcalamares/JobQueue.cpp | 26 ++++++++++++++++++++++---- src/libcalamares/JobQueue.h | 8 ++++++++ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index 9e2bdc501..f9d6b9614 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -102,14 +102,8 @@ DebugWindow::DebugWindow() // JobQueue page m_ui->jobQueueText->setReadOnly( true ); - connect( JobQueue::instance(), &JobQueue::queueChanged, this, [this]( const JobList& jobs ) { - QStringList text; - for ( const auto& job : jobs ) - { - text.append( job->prettyName() ); - } - - m_ui->jobQueueText->setText( text.join( '\n' ) ); + connect( JobQueue::instance(), &JobQueue::queueChanged, this, [this]( const QStringList& jobs ) { + m_ui->jobQueueText->setText( jobs.join( '\n' ) ); } ); // Modules page @@ -193,7 +187,8 @@ DebugWindow::DebugWindow() #endif ] { QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); - Module* module = ModuleManager::instance()->moduleInstance( ModuleSystem::InstanceKey::fromString( moduleName ) ); + Module* module + = ModuleManager::instance()->moduleInstance( ModuleSystem::InstanceKey::fromString( moduleName ) ); if ( module ) { m_module = module->configurationMap(); diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 64c73434e..f02170075 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -151,6 +151,24 @@ public: QMetaObject::invokeMethod( m_queue, "finish", Qt::QueuedConnection ); } + /** @brief The names of the queued (not running!) jobs. + */ + QStringList queuedJobs() const + { + QMutexLocker qlock( &m_enqueMutex ); + QStringList l; + l.reserve( m_queuedJobs->count() ); + for ( const auto& j : *m_queuedJobs ) + { + l << j.job->prettyName(); + } + return l; + } + +private: + /* This is called **only** from run(), while m_runMutex is + * already locked, so we can use the m_runningJobs member safely. + */ void emitProgress( qreal percentage ) const { percentage = qBound( 0.0, percentage, 1.0 ); @@ -172,10 +190,8 @@ public: m_queue, "progress", Qt::QueuedConnection, Q_ARG( qreal, progress ), Q_ARG( QString, message ) ); } - -private: - QMutex m_runMutex; - QMutex m_enqueMutex; + mutable QMutex m_runMutex; + mutable QMutex m_enqueMutex; std::unique_ptr< WeightedJobList > m_runningJobs = std::make_unique< WeightedJobList >(); std::unique_ptr< WeightedJobList > m_queuedJobs = std::make_unique< WeightedJobList >(); @@ -242,6 +258,7 @@ JobQueue::enqueue( int moduleWeight, const JobList& jobs ) { Q_ASSERT( !m_thread->isRunning() ); m_thread->enqueue( moduleWeight, jobs ); + emit queueChanged( m_thread->queuedJobs() ); } void @@ -249,6 +266,7 @@ JobQueue::finish() { m_finished = true; emit finished(); + emit queueChanged( m_thread->queuedJobs() ); } GlobalStorage* diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index 4faf9d420..b36d89f26 100644 --- a/src/libcalamares/JobQueue.h +++ b/src/libcalamares/JobQueue.h @@ -82,6 +82,14 @@ signals: */ void failed( const QString& message, const QString& details ); + /** @brief Reports the names of jobs in the queue. + * + * When jobs are added via enqueue(), or when the queue otherwise + * changes, the **names** of the jobs are reported. This is + * primarily for debugging purposes. + */ + void queueChanged( const QStringList& jobNames ); + private: void finish(); From 3ae545c8b101c2cb84b6c42455225f1352e3b942 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 18:18:22 +0200 Subject: [PATCH 386/399] REUSE: qmldir file format doesn't leave space for license information --- src/qml/calamares/slideshow/qmldir | 3 --- src/qml/calamares/slideshow/qmldir.license | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 src/qml/calamares/slideshow/qmldir.license diff --git a/src/qml/calamares/slideshow/qmldir b/src/qml/calamares/slideshow/qmldir index 8b68d1143..7b964b831 100644 --- a/src/qml/calamares/slideshow/qmldir +++ b/src/qml/calamares/slideshow/qmldir @@ -1,6 +1,3 @@ -/* SPDX-FileCopyrightText: no - SPDX-License-Identifier: CC0-1.0 -*/ module calamares.slideshow Presentation 1.0 Presentation.qml diff --git a/src/qml/calamares/slideshow/qmldir.license b/src/qml/calamares/slideshow/qmldir.license new file mode 100644 index 000000000..d2da9cf5b --- /dev/null +++ b/src/qml/calamares/slideshow/qmldir.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: no +SPDX-License-Identifier: CC0-1.0 From d584a96335bc5564aec9be7a82fec00dc1f7c530 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 22:19:26 +0200 Subject: [PATCH 387/399] [users] Improve naming of widget --- src/modules/users/UsersPage.cpp | 10 +++++----- src/modules/users/page_usersetup.ui | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 8059b02e1..9141ebb4c 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -87,8 +87,8 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); ui->checkBoxReusePassword->setChecked( m_config->reuseUserPasswordForRoot() ); - ui->checkBoxValidatePassword->setVisible( m_config->permitWeakPasswords() ); - ui->checkBoxValidatePassword->setChecked( m_config->requireStrongPasswords() ); + ui->checkBoxRequireStrongPassword->setVisible( m_config->permitWeakPasswords() ); + ui->checkBoxRequireStrongPassword->setChecked( m_config->requireStrongPasswords() ); // Connect signals and slots ui->textBoxUserPassword->setText( config->userPassword() ); @@ -107,7 +107,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( config, &Config::rootPasswordSecondaryChanged, ui->textBoxVerifiedRootPassword, &QLineEdit::setText ); connect( config, &Config::rootPasswordStatusChanged, this, &UsersPage::reportRootPasswordStatus ); - connect( ui->checkBoxValidatePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + connect( ui->checkBoxRequireStrongPassword, &QCheckBox::stateChanged, this, [this]( int checked ) { m_config->setRequireStrongPasswords( checked != Qt::Unchecked ); } ); @@ -138,10 +138,10 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) if ( m_config->permitWeakPasswords() ) { - connect( ui->checkBoxValidatePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + connect( ui->checkBoxRequireStrongPassword, &QCheckBox::stateChanged, this, [this]( int checked ) { m_config->setRequireStrongPasswords( checked != Qt::Unchecked ); } ); - connect( config, &Config::requireStrongPasswordsChanged, ui->checkBoxValidatePassword, &QCheckBox::setChecked ); + connect( config, &Config::requireStrongPasswordsChanged, ui->checkBoxRequireStrongPassword, &QCheckBox::setChecked ); } CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ) diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index e03526a11..ba1c0bc7d 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -450,7 +450,7 @@ SPDX-License-Identifier: GPL-3.0-or-later - + When this box is checked, password-strength checking is done and you will not be able to use a weak password. From 15b5ef467e96356fa0db3c44a2f0aa28e6f813d7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 22:23:36 +0200 Subject: [PATCH 388/399] [users] Hook up strong- and reuse- password checkboxes - setup the visibility and initial checked-state of the reuse-user- password-for-root near where it gets connected; do similar for the require-strong-password - squash the lambda slot into the regular slot: no sense in connecting twice to the same signal with the same receiver. - only connect config->ui once - only connect at all if the setting is visible (e.g. when weak passwords are allowed for the require-strong checkbox, or when root's password will be written for the reuse-password) --- src/modules/users/UsersPage.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9141ebb4c..220b0fa07 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -84,12 +84,6 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) { ui->setupUi( this ); - ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); - ui->checkBoxReusePassword->setChecked( m_config->reuseUserPasswordForRoot() ); - - ui->checkBoxRequireStrongPassword->setVisible( m_config->permitWeakPasswords() ); - ui->checkBoxRequireStrongPassword->setChecked( m_config->requireStrongPasswords() ); - // Connect signals and slots ui->textBoxUserPassword->setText( config->userPassword() ); connect( ui->textBoxUserPassword, &QLineEdit::textChanged, config, &Config::setUserPassword ); @@ -107,10 +101,6 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( config, &Config::rootPasswordSecondaryChanged, ui->textBoxVerifiedRootPassword, &QLineEdit::setText ); connect( config, &Config::rootPasswordStatusChanged, this, &UsersPage::reportRootPasswordStatus ); - connect( ui->checkBoxRequireStrongPassword, &QCheckBox::stateChanged, this, [this]( int checked ) { - m_config->setRequireStrongPasswords( checked != Qt::Unchecked ); - } ); - connect( ui->textBoxFullName, &QLineEdit::textEdited, config, &Config::setFullName ); connect( config, &Config::fullNameChanged, this, &UsersPage::onFullNameTextEdited ); @@ -127,21 +117,23 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) } ); connect( config, &Config::autoLoginChanged, ui->checkBoxDoAutoLogin, &QCheckBox::setChecked ); + ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); + ui->checkBoxReusePassword->setChecked( m_config->reuseUserPasswordForRoot() ); if ( m_config->writeRootPassword() ) { - connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { - m_config->setReuseUserPasswordForRoot( checked != Qt::Unchecked ); - } ); connect( config, &Config::reuseUserPasswordForRootChanged, ui->checkBoxReusePassword, &QCheckBox::setChecked ); connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, &UsersPage::onReuseUserPasswordChanged ); } + ui->checkBoxRequireStrongPassword->setVisible( m_config->permitWeakPasswords() ); + ui->checkBoxRequireStrongPassword->setChecked( m_config->requireStrongPasswords() ); if ( m_config->permitWeakPasswords() ) { connect( ui->checkBoxRequireStrongPassword, &QCheckBox::stateChanged, this, [this]( int checked ) { m_config->setRequireStrongPasswords( checked != Qt::Unchecked ); } ); - connect( config, &Config::requireStrongPasswordsChanged, ui->checkBoxRequireStrongPassword, &QCheckBox::setChecked ); + connect( + config, &Config::requireStrongPasswordsChanged, ui->checkBoxRequireStrongPassword, &QCheckBox::setChecked ); } CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ) @@ -241,6 +233,8 @@ UsersPage::reportUserPasswordStatus( int validity, const QString& message ) void UsersPage::onReuseUserPasswordChanged( const int checked ) { + // Pass the change on to config + m_config->setReuseUserPasswordForRoot( checked != Qt::Unchecked ); /* When "reuse" is checked, hide the fields for explicitly * entering the root password. However, if we're going to * disable the root password anyway, hide them all regardless of From d7dc48d201ed7d50b94606764d270d75c4ddc84a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 23:07:54 +0200 Subject: [PATCH 389/399] [users] Add now-obvious missed initialization - start the checkbox off in the state from config --- src/modules/users/UsersPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 220b0fa07..6ea03f8ef 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -112,6 +112,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent ) connect( config, &Config::loginNameChanged, ui->textBoxLoginName, &QLineEdit::setText ); connect( config, &Config::loginNameStatusChanged, this, &UsersPage::reportLoginNameStatus ); + ui->checkBoxDoAutoLogin->setChecked( m_config->doAutoLogin() ); connect( ui->checkBoxDoAutoLogin, &QCheckBox::stateChanged, this, [this]( int checked ) { m_config->setAutoLogin( checked != Qt::Unchecked ); } ); From ec0b68084f7dabc3e4e9eef4fdae44453562b484 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 28 Aug 2020 23:20:02 +0200 Subject: [PATCH 390/399] [users] Refactor setting GS - both changing the autologin and changing the user (login) name affect global storage, and both may need to change the autologin username; split it into a free function. - the fullname change was bypassing the login in changing the login name, **but** then it needs a back-workaround to keep the "custom" setting off (when custom is off, auto-fill username and hostname is active). - after loading the config, fill GS already. - when finalizing GS, get the autologin settings again. --- src/modules/users/Config.cpp | 60 +++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp index 5ce8c8ed1..d0f573286 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp @@ -30,6 +30,30 @@ static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); static constexpr const int HOSTNAME_MIN_LENGTH = 2; static constexpr const int HOSTNAME_MAX_LENGTH = 63; +static void +updateGSAutoLogin( bool doAutoLogin, const QString& login ) +{ + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + + if ( doAutoLogin && !login.isEmpty() ) + { + gs->insert( "autologinUser", login ); + } + else + { + gs->remove( "autologinUser" ); + } + + if ( login.isEmpty() ) + { + gs->remove( "username" ); + } + else + { + gs->insert( "username", login ); + } +} + const NamedEnumTable< HostNameAction >& hostNameActionNames() { @@ -110,15 +134,7 @@ Config::setLoginName( const QString& login ) { if ( login != m_loginName ) { - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - if ( login.isEmpty() ) - { - gs->remove( "username" ); - } - else - { - gs->insert( "username", login ); - } + updateGSAutoLogin( doAutoLogin(), login ); m_customLoginName = !login.isEmpty(); m_loginName = login; @@ -330,9 +346,9 @@ Config::setFullName( const QString& name ) QString login = makeLoginNameSuggestion( cleanParts ); if ( !login.isEmpty() && login != m_loginName ) { - m_loginName = login; - emit loginNameChanged( login ); - emit loginNameStatusChanged( loginNameStatus() ); + setLoginName( login ); + // It's **still** not custom, though setLoginName() sets that + m_customLoginName = false; } } if ( !m_customHostName ) @@ -340,9 +356,9 @@ Config::setFullName( const QString& name ) QString hostname = makeHostnameSuggestion( cleanParts ); if ( !hostname.isEmpty() && hostname != m_hostName ) { - m_hostName = hostname; - emit hostNameChanged( hostname ); - emit hostNameStatusChanged( hostNameStatus() ); + setHostName( hostname ); + // Still not custom + m_customHostName = false; } } } @@ -353,15 +369,7 @@ Config::setAutoLogin( bool b ) { if ( b != m_doAutoLogin ) { - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - if ( b ) - { - gs->insert( "autologinUser", loginName() ); - } - else - { - gs->remove( "autologinUser" ); - } + updateGSAutoLogin( b, loginName() ); m_doAutoLogin = b; emit autoLoginChanged( b ); } @@ -700,14 +708,16 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) } std::sort( m_passwordChecks.begin(), m_passwordChecks.end() ); + updateGSAutoLogin( doAutoLogin(), loginName() ); checkReady(); } void Config::finalizeGlobalStorage() const { - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + updateGSAutoLogin( doAutoLogin(), loginName() ); + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); if ( writeRootPassword() ) { gs->insert( "reuseRootPassword", reuseUserPasswordForRoot() ); From df0180fc12fd2fae6a6568ecf9795b04224af845 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 1 Sep 2020 17:09:07 +0200 Subject: [PATCH 391/399] i18n: Tajik timezone translations FIXES #1504 --- lang/tz_tg.ts | 2620 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2620 insertions(+) create mode 100644 lang/tz_tg.ts diff --git a/lang/tz_tg.ts b/lang/tz_tg.ts new file mode 100644 index 000000000..77e075619 --- /dev/null +++ b/lang/tz_tg.ts @@ -0,0 +1,2620 @@ + + + + + + QObject + + + Africa + tz_regions + Африка + + + + America + tz_regions + Америка + + + + Antarctica + tz_regions + Антарктида + + + + Arctic + tz_regions + Арктика + + + + Asia + tz_regions + Осиё + + + + Atlantic + tz_regions + Уқёнуси Атлантикӣ + + + + Australia + tz_regions + Австралия + + + + Europe + tz_regions + Аврупо + + + + Indian + tz_regions + Ҳиндӣ + + + + Pacific + tz_regions + Уқёнуси Ором + + + + Abidjan + tz_names + Абиҷон + + + + Accra + tz_names + Аккра + + + + Adak + tz_names + Адак + + + + Addis Ababa + tz_names + Аддис-Абаба + + + + Adelaide + tz_names + Аделаида + + + + Aden + tz_names + Аден + + + + Algiers + tz_names + Алҷазоир + + + + Almaty + tz_names + Алмаато + + + + Amman + tz_names + Уммон + + + + Amsterdam + tz_names + Амстердам + + + + Anadyr + tz_names + Анадир + + + + Anchorage + tz_names + Анкориҷ + + + + Andorra + tz_names + Андорра + + + + Anguilla + tz_names + Ангвелла + + + + Antananarivo + tz_names + Антананариву + + + + Antigua + tz_names + Антигуа + + + + Apia + tz_names + Апиа + + + + Aqtau + tz_names + Актау + + + + Aqtobe + tz_names + Актобе + + + + Araguaina + tz_names + Арагуаина + + + + Argentina/Buenos Aires + tz_names + Аргентина/Буэнос-Айрес + + + + Argentina/Catamarca + tz_names + Аргентина/Катамарка + + + + Argentina/Cordoba + tz_names + Аргентина/Кордоба + + + + Argentina/Jujuy + tz_names + Аргентина/Ҷуҷуй + + + + Argentina/La Rioja + tz_names + Аргентина/Ла Риоха + + + + Argentina/Mendoza + tz_names + Аргентина/Мендоза + + + + Argentina/Rio Gallegos + tz_names + Аргентина/Рио Галегос + + + + Argentina/Salta + tz_names + Аргентина/Салта + + + + Argentina/San Juan + tz_names + Аргентина/Сан Ҷуан + + + + Argentina/San Luis + tz_names + Аргентина/Сан Луис + + + + Argentina/Tucuman + tz_names + Аргентина/Тукуман + + + + Argentina/Ushuaia + tz_names + Аргентина/Ушуайя + + + + Aruba + tz_names + Аруба + + + + Ashgabat + tz_names + Ашқобод + + + + Asmara + tz_names + Асмэра + + + + Astrakhan + tz_names + Астрахан + + + + Asuncion + tz_names + Асунсон + + + + Athens + tz_names + Афина + + + + Atikokan + tz_names + Атикокак + + + + Atyrau + tz_names + Атирау + + + + Auckland + tz_names + Окленд + + + + Azores + tz_names + Азор + + + + Baghdad + tz_names + Бағдод + + + + Bahia + tz_names + Баҳя + + + + Bahia Banderas + tz_names + Баҳя Бандерас + + + + Bahrain + tz_names + Баҳрайн + + + + Baku + tz_names + Боку + + + + Bamako + tz_names + Бомако + + + + Bangkok + tz_names + Бангкок + + + + Bangui + tz_names + Банги + + + + Banjul + tz_names + Банжул + + + + Barbados + tz_names + Барбадос + + + + Barnaul + tz_names + Барнаул + + + + Beirut + tz_names + Бейрут + + + + Belem + tz_names + Белем + + + + Belgrade + tz_names + Белград + + + + Belize + tz_names + Белиз + + + + Berlin + tz_names + Берлин + + + + Bermuda + tz_names + Бермуда + + + + Bishkek + tz_names + Бишкек + + + + Bissau + tz_names + Бисау + + + + Blanc-Sablon + tz_names + Бланк-Саблон + + + + Blantyre + tz_names + Блантайр + + + + Boa Vista + tz_names + Боа-Виста + + + + Bogota + tz_names + Богота + + + + Boise + tz_names + Бойсе + + + + Bougainville + tz_names + Бугенвил + + + + Bratislava + tz_names + Братислава + + + + Brazzaville + tz_names + Браззавил + + + + Brisbane + tz_names + Брисбен + + + + Broken Hill + tz_names + Брокен-Хилл + + + + Brunei + tz_names + Бруней + + + + Brussels + tz_names + Брюссел + + + + Bucharest + tz_names + Бухарест + + + + Budapest + tz_names + Будапешт + + + + Bujumbura + tz_names + Буҷумбура + + + + Busingen + tz_names + Бусинген + + + + Cairo + tz_names + Қоҳира + + + + Cambridge Bay + tz_names + Кеймбриҷ-Бей + + + + Campo Grande + tz_names + Кампо-Граде + + + + Canary + tz_names + Канарӣ + + + + Cancun + tz_names + Канкун + + + + Cape Verde + tz_names + Кабо-Верде + + + + Caracas + tz_names + Каракас + + + + Casablanca + tz_names + Касабланка + + + + Casey + tz_names + Кейси + + + + Cayenne + tz_names + Кайенна + + + + Cayman + tz_names + Кайман + + + + Ceuta + tz_names + Сеута + + + + Chagos + tz_names + Чагос + + + + Chatham + tz_names + Чатам + + + + Chicago + tz_names + Чикаго + + + + Chihuahua + tz_names + Чихуахуа + + + + Chisinau + tz_names + Кишинев + + + + Chita + tz_names + Чита + + + + Choibalsan + tz_names + Чойбалсан + + + + Christmas + tz_names + Крисмас + + + + Chuuk + tz_names + Чуук + + + + Cocos + tz_names + Кокос + + + + Colombo + tz_names + Коломбо + + + + Comoro + tz_names + Коморо + + + + Conakry + tz_names + Конакри + + + + Copenhagen + tz_names + Копенгаген + + + + Costa Rica + tz_names + Коста-Рика + + + + Creston + tz_names + Крестон + + + + Cuiaba + tz_names + Куяба + + + + Curacao + tz_names + Кюрасао + + + + Currie + tz_names + Керри + + + + Dakar + tz_names + Дакар + + + + Damascus + tz_names + Димишқ + + + + Danmarkshavn + tz_names + Данмарксҳавн + + + + Dar es Salaam + tz_names + Даруссалам + + + + Darwin + tz_names + Дарвин + + + + Davis + tz_names + Дейвис + + + + Dawson + tz_names + Доусон + + + + Dawson Creek + tz_names + Доусон-Крик + + + + Denver + tz_names + Денвер + + + + Detroit + tz_names + Детройт + + + + Dhaka + tz_names + Дакка + + + + Dili + tz_names + Дили + + + + Djibouti + tz_names + Ҷибути + + + + Dominica + tz_names + Доминика + + + + Douala + tz_names + Доуала + + + + Dubai + tz_names + Дубай + + + + Dublin + tz_names + Дублин + + + + DumontDUrville + tz_names + Дюмон д’Юрвил + + + + Dushanbe + tz_names + Душанбе + + + + Easter + tz_names + Писҳо + + + + Edmonton + tz_names + Эдмонтон + + + + Efate + tz_names + Эфате + + + + Eirunepe + tz_names + Эйрунепе + + + + El Aaiun + tz_names + Эл-Аюн + + + + El Salvador + tz_names + Ал-Салвадор + + + + Enderbury + tz_names + Эндербери + + + + Eucla + tz_names + Юкла + + + + Fakaofo + tz_names + Факаофо + + + + Famagusta + tz_names + Фамагуста + + + + Faroe + tz_names + Фарер + + + + Fiji + tz_names + Фиҷи + + + + Fort Nelson + tz_names + Форт Нелсон + + + + Fortaleza + tz_names + Форталеза + + + + Freetown + tz_names + Фритаун + + + + Funafuti + tz_names + Фунафути + + + + Gaborone + tz_names + Габороне + + + + Galapagos + tz_names + Галапагос + + + + Gambier + tz_names + Гамбир + + + + Gaza + tz_names + Газа + + + + Gibraltar + tz_names + Гибралтар + + + + Glace Bay + tz_names + Глас Бэй + + + + Godthab + tz_names + Готхоб + + + + Goose Bay + tz_names + Гус-Бэй + + + + Grand Turk + tz_names + Гранд Турк + + + + Grenada + tz_names + Гренада + + + + Guadalcanal + tz_names + Гуадалканал + + + + Guadeloupe + tz_names + Гваделупа + + + + Guam + tz_names + Гуам + + + + Guatemala + tz_names + Гватемала + + + + Guayaquil + tz_names + Гуаякил + + + + Guernsey + tz_names + Гернси + + + + Guyana + tz_names + Гайана + + + + Halifax + tz_names + Галифакс + + + + Harare + tz_names + Хараре + + + + Havana + tz_names + Гавана + + + + Hebron + tz_names + Ҳеврон + + + + Helsinki + tz_names + Ҳелсинки + + + + Hermosillo + tz_names + Ҳермосилло + + + + Ho Chi Minh + tz_names + Ҳошимин + + + + Hobart + tz_names + Ҳобарт + + + + Hong Kong + tz_names + Ҳонгконг + + + + Honolulu + tz_names + Гонолулу + + + + Hovd + tz_names + Ҳовд + + + + Indiana/Indianapolis + tz_names + Индиана/Индианаполис + + + + Indiana/Knox + tz_names + Индиана/Кнокс + + + + Indiana/Marengo + tz_names + Индиана/Маренго + + + + Indiana/Petersburg + tz_names + Индиана/Питерсберг + + + + Indiana/Tell City + tz_names + Индиана/Телл Сити + + + + Indiana/Vevay + tz_names + Индиана/Вивэй + + + + Indiana/Vincennes + tz_names + Индиана/Винсенс + + + + Indiana/Winamac + tz_names + Индиана/Винамак + + + + Inuvik + tz_names + Инувик + + + + Iqaluit + tz_names + Икалуит + + + + Irkutsk + tz_names + Иркутск + + + + Isle of Man + tz_names + Ҷазираи Мэн + + + + Istanbul + tz_names + Стамбул + + + + Jakarta + tz_names + Ҷакарта + + + + Jamaica + tz_names + Ҷомайка + + + + Jayapura + tz_names + Ҷайапура + + + + Jersey + tz_names + Ҷерси + + + + Jerusalem + tz_names + Байтулмуқаддас + + + + Johannesburg + tz_names + Йоханнесбург + + + + Juba + tz_names + Ҷуба + + + + Juneau + tz_names + Ҷуно + + + + Kabul + tz_names + Кобул + + + + Kaliningrad + tz_names + Калининград + + + + Kamchatka + tz_names + Камчатка + + + + Kampala + tz_names + Кампала + + + + Karachi + tz_names + Қарочӣ + + + + Kathmandu + tz_names + Катманду + + + + Kentucky/Louisville + tz_names + Кентуки/Луисвилл + + + + Kentucky/Monticello + tz_names + Кентуки/Монтиселло + + + + Kerguelen + tz_names + Кергелен + + + + Khandyga + tz_names + Хандига + + + + Khartoum + tz_names + Хартум + + + + Kiev + tz_names + Киев + + + + Kigali + tz_names + Кигали + + + + Kinshasa + tz_names + Киншаса + + + + Kiritimati + tz_names + Киритимати + + + + Kirov + tz_names + Киров + + + + Kolkata + tz_names + Калкута + + + + Kosrae + tz_names + Косра + + + + Kralendijk + tz_names + Кралендейк + + + + Krasnoyarsk + tz_names + Красноярск + + + + Kuala Lumpur + tz_names + Куала-Лумпур + + + + Kuching + tz_names + Кучинг + + + + Kuwait + tz_names + Қувайт + + + + Kwajalein + tz_names + Кваҷалейн + + + + La Paz + tz_names + Ла-Пас + + + + Lagos + tz_names + Лагос + + + + Libreville + tz_names + Либревил + + + + Lima + tz_names + Лима + + + + Lindeman + tz_names + Линдерман + + + + Lisbon + tz_names + Лиссабон + + + + Ljubljana + tz_names + Любляна + + + + Lome + tz_names + Ломе + + + + London + tz_names + Лондон + + + + Longyearbyen + tz_names + Лонгйир + + + + Lord Howe + tz_names + Лорд-Хау + + + + Los Angeles + tz_names + Лос-Анҷелес + + + + Lower Princes + tz_names + Лоуэр-Принс + + + + Luanda + tz_names + Луанда + + + + Lubumbashi + tz_names + Лубумбаши + + + + Lusaka + tz_names + Лусака + + + + Luxembourg + tz_names + Люксембург + + + + Macau + tz_names + Макау + + + + Maceio + tz_names + Масейо + + + + Macquarie + tz_names + Макгвайр + + + + Madeira + tz_names + Мадейра + + + + Madrid + tz_names + Мадрид + + + + Magadan + tz_names + Магадан + + + + Mahe + tz_names + Маэ + + + + Majuro + tz_names + Маҷуро + + + + Makassar + tz_names + Макассар + + + + Malabo + tz_names + Малабо + + + + Maldives + tz_names + Малдив + + + + Malta + tz_names + Малта + + + + Managua + tz_names + Манагуа + + + + Manaus + tz_names + Манаус + + + + Manila + tz_names + Манила + + + + Maputo + tz_names + Мапуту + + + + Mariehamn + tz_names + Мариехамн + + + + Marigot + tz_names + Маригот + + + + Marquesas + tz_names + Маркизас + + + + Martinique + tz_names + Мартиника + + + + Maseru + tz_names + Масеру + + + + Matamoros + tz_names + Матаморос + + + + Mauritius + tz_names + Маврикий + + + + Mawson + tz_names + Маусон + + + + Mayotte + tz_names + Майотта + + + + Mazatlan + tz_names + Масатлан + + + + Mbabane + tz_names + Мбабане + + + + McMurdo + tz_names + Мак-Мердо + + + + Melbourne + tz_names + Мелбурн + + + + Menominee + tz_names + Меномини + + + + Merida + tz_names + Мерида + + + + Metlakatla + tz_names + Метлакатла + + + + Mexico City + tz_names + Мехико + + + + Midway + tz_names + Мидуэй + + + + Minsk + tz_names + Минск + + + + Miquelon + tz_names + Микелон + + + + Mogadishu + tz_names + Могадишо + + + + Monaco + tz_names + Монако + + + + Moncton + tz_names + Монктон + + + + Monrovia + tz_names + Монровия + + + + Monterrey + tz_names + Монтеррей + + + + Montevideo + tz_names + Монтевидео + + + + Montserrat + tz_names + Монтсеррат + + + + Moscow + tz_names + Москав + + + + Muscat + tz_names + Масқат + + + + Nairobi + tz_names + Найроби + + + + Nassau + tz_names + Нассау + + + + Nauru + tz_names + Новурӯ + + + + Ndjamena + tz_names + Нҷамена + + + + New York + tz_names + Штати Ню-Йорк + + + + Niamey + tz_names + Ниамей + + + + Nicosia + tz_names + Никосия + + + + Nipigon + tz_names + Нипигон + + + + Niue + tz_names + Нива + + + + Nome + tz_names + Ном + + + + Norfolk + tz_names + Норфолк + + + + Noronha + tz_names + Нороня + + + + North Dakota/Beulah + tz_names + Дакотаи Шимолӣ/Бойла + + + + North Dakota/Center + tz_names + Дакотаи Шимолӣ/Марказ + + + + North Dakota/New Salem + tz_names + Дакотаи Шимолӣ/Ню Сейлем + + + + Nouakchott + tz_names + Нуакшот + + + + Noumea + tz_names + Нумеа + + + + Novokuznetsk + tz_names + Новокузнетск + + + + Novosibirsk + tz_names + Новосибирск + + + + Ojinaga + tz_names + Оҷинага + + + + Omsk + tz_names + Омск + + + + Oral + tz_names + Орал + + + + Oslo + tz_names + Осло + + + + Ouagadougou + tz_names + Уагадугу + + + + Pago Pago + tz_names + Паго-Паго + + + + Palau + tz_names + Палаув + + + + Palmer + tz_names + Палмер + + + + Panama + tz_names + Панама + + + + Pangnirtung + tz_names + Пангниртунг + + + + Paramaribo + tz_names + Парамарибо + + + + Paris + tz_names + Париж + + + + Perth + tz_names + Перт + + + + Phnom Penh + tz_names + Пномпен + + + + Phoenix + tz_names + Феникс + + + + Pitcairn + tz_names + Питкоирн + + + + Podgorica + tz_names + Подгоритса + + + + Pohnpei + tz_names + Понпеи + + + + Pontianak + tz_names + Понтианак + + + + Port Moresby + tz_names + Порт-Морсби + + + + Port of Spain + tz_names + Порт-оф-Спейн + + + + Port-au-Prince + tz_names + Порт-о-Пренс + + + + Porto Velho + tz_names + Порту-Велю + + + + Porto-Novo + tz_names + Порто-Ново + + + + Prague + tz_names + Прага + + + + Puerto Rico + tz_names + Пуэрто-Рико + + + + Punta Arenas + tz_names + Пунта Аренас + + + + Pyongyang + tz_names + Пхенян + + + + Qatar + tz_names + Қатар + + + + Qostanay + tz_names + Костанай + + + + Qyzylorda + tz_names + Қизилорда + + + + Rainy River + tz_names + Рейни Ривер + + + + Rankin Inlet + tz_names + Ранкин-Инлет + + + + Rarotonga + tz_names + Раротонга + + + + Recife + tz_names + Ресиф + + + + Regina + tz_names + Регина + + + + Resolute + tz_names + Резолют + + + + Reunion + tz_names + Реюнон + + + + Reykjavik + tz_names + Рейкявик + + + + Riga + tz_names + Рига + + + + Rio Branco + tz_names + Риу-Бранку + + + + Riyadh + tz_names + Арриёз + + + + Rome + tz_names + Рим + + + + Rothera + tz_names + Ротера + + + + Saipan + tz_names + Сайпан + + + + Sakhalin + tz_names + Сахалин + + + + Samara + tz_names + Самара + + + + Samarkand + tz_names + Самарқанд + + + + San Marino + tz_names + Сан-Марино + + + + Santarem + tz_names + Сантарем + + + + Santiago + tz_names + Сантяго + + + + Santo Domingo + tz_names + Санто-Доминго + + + + Sao Paulo + tz_names + Сан-Паулу + + + + Sao Tome + tz_names + Сан-Томе + + + + Sarajevo + tz_names + Сараево + + + + Saratov + tz_names + Саратов + + + + Scoresbysund + tz_names + Скорсбисунд + + + + Seoul + tz_names + Сеул + + + + Shanghai + tz_names + Шанхай + + + + Simferopol + tz_names + Симферопол + + + + Singapore + tz_names + Сингапур + + + + Sitka + tz_names + Ситка + + + + Skopje + tz_names + Скопе + + + + Sofia + tz_names + София + + + + South Georgia + tz_names + Ҷорҷияи Ҷанубӣ + + + + Srednekolymsk + tz_names + Среднеколимск + + + + St Barthelemy + tz_names + Сент-Бартелми + + + + St Helena + tz_names + Сент-Ҳелена + + + + St Johns + tz_names + Сент-Ҷонс + + + + St Kitts + tz_names + Сент-Китс + + + + St Lucia + tz_names + Сент-Люсиа + + + + St Thomas + tz_names + Сент-Томас + + + + St Vincent + tz_names + Сент-Винсент + + + + Stanley + tz_names + Стэнли + + + + Stockholm + tz_names + Стокголм + + + + Swift Current + tz_names + Свифт Каррент + + + + Sydney + tz_names + Сидней + + + + Syowa + tz_names + Сева + + + + Tahiti + tz_names + Таити + + + + Taipei + tz_names + Тайбэй + + + + Tallinn + tz_names + Таллин + + + + Tarawa + tz_names + Тарава + + + + Tashkent + tz_names + Тошкент + + + + Tbilisi + tz_names + Тбилиси + + + + Tegucigalpa + tz_names + Тегусигалпа + + + + Tehran + tz_names + Теҳрон + + + + Thimphu + tz_names + Тхимпху + + + + Thule + tz_names + Фула + + + + Thunder Bay + tz_names + Тандер-Бей + + + + Tijuana + tz_names + Тихуана + + + + Tirane + tz_names + Тирана + + + + Tokyo + tz_names + Токио + + + + Tomsk + tz_names + Томск + + + + Tongatapu + tz_names + Тонгатапу + + + + Toronto + tz_names + Торонто + + + + Tortola + tz_names + Тортола + + + + Tripoli + tz_names + Триполи + + + + Troll + tz_names + Тролл + + + + Tunis + tz_names + Тунис + + + + Ulaanbaatar + tz_names + Улон-Ботур + + + + Ulyanovsk + tz_names + Уляновск + + + + Urumqi + tz_names + Урумчи + + + + Ust-Nera + tz_names + Уст-Нера + + + + Uzhgorod + tz_names + Ужгород + + + + Vaduz + tz_names + Вадуз + + + + Vancouver + tz_names + Ванкувер + + + + Vatican + tz_names + Ватикан + + + + Vienna + tz_names + Вена + + + + Vientiane + tz_names + Вентян + + + + Vilnius + tz_names + Вилнюс + + + + Vladivostok + tz_names + Владивосток + + + + Volgograd + tz_names + Волгоград + + + + Vostok + tz_names + Восток + + + + Wake + tz_names + Вэйк + + + + Wallis + tz_names + Уоллис + + + + Warsaw + tz_names + Варшава + + + + Whitehorse + tz_names + Уайтхорс + + + + Windhoek + tz_names + Виндхук + + + + Winnipeg + tz_names + Виннипег + + + + Yakutat + tz_names + Якутат + + + + Yakutsk + tz_names + Якутск + + + + Yangon + tz_names + Янгон + + + + Yekaterinburg + tz_names + Екатеринбург + + + + Yellowknife + tz_names + Йеллоунайф + + + + Yerevan + tz_names + Ереван + + + + Zagreb + tz_names + Загреб + + + + Zaporozhye + tz_names + Запорожие + + + + Zurich + tz_names + Тсурих + + + From d5eaacf67a6194f9324c15a316f346654296c4f4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 2 Sep 2020 11:56:51 +0200 Subject: [PATCH 392/399] i18n: used wrong list of languages FIXES #1505 --- src/calamares/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index ff7c90bcc..94abb9f54 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -41,7 +41,7 @@ set( TS_FILES "" ) set( calamares_i18n_qrc_content "" ) # calamares and qt language files -foreach( lang ${CALAMARES_LANGUAGES} ) +foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) foreach( tlsource "calamares_${lang}" "tz_${lang}" ) if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" ) set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}${tlsource}.qm\n" ) From 5ed57331d67cfad1acc131e5793c096b9b56ec85 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 15:03:22 +0200 Subject: [PATCH 393/399] i18n: Update timezone translations SEE #1506 --- CHANGES | 2 + lang/tz_ru.ts | 2620 +++++++++++++++++++++++++++++++++++++++++++++++++ lang/tz_tg.ts | 2 +- 3 files changed, 2623 insertions(+), 1 deletion(-) create mode 100644 lang/tz_ru.ts diff --git a/CHANGES b/CHANGES index 0f6dd7de1..7508354c9 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ This release contains contributions from (alphabetically by first name): - Asif Mahmud Shimon - Manzoor Ahmed Munawar - Sai Kamal + - Victor Ibragimov This release has two giant source-code changes that have no effect on functionality, but do touch each and every source file: @@ -32,6 +33,7 @@ on functionality, but do touch each and every source file: via a synchronous ping. (Thanks to Asif) - New Telugu translation. (Thanks to Sai) - Urdu translation started. (Thanks to Manzoor) + - Timezones translated in Tajik and Russian. (Thanks to Victor) ## Modules ## - *keyboardq* and *localeq* improvements. (Thanks to Anke) diff --git a/lang/tz_ru.ts b/lang/tz_ru.ts new file mode 100644 index 000000000..4c60096b5 --- /dev/null +++ b/lang/tz_ru.ts @@ -0,0 +1,2620 @@ + + + + + + QObject + + + Africa + tz_regions + Африка + + + + America + tz_regions + Америка + + + + Antarctica + tz_regions + Антарктида + + + + Arctic + tz_regions + Северный Ледовитый океан + + + + Asia + tz_regions + Азия + + + + Atlantic + tz_regions + Атлантика + + + + Australia + tz_regions + Австралия + + + + Europe + tz_regions + Европа + + + + Indian + tz_regions + Индийский океан + + + + Pacific + tz_regions + Тихоокеанское время + + + + Abidjan + tz_names + Абиджан + + + + Accra + tz_names + Аккра + + + + Adak + tz_names + Адак + + + + Addis Ababa + tz_names + Аддис-Абеба + + + + Adelaide + tz_names + Аделаида + + + + Aden + tz_names + Аден + + + + Algiers + tz_names + Алжир + + + + Almaty + tz_names + Алма-Ата + + + + Amman + tz_names + Амман + + + + Amsterdam + tz_names + Амстердам + + + + Anadyr + tz_names + Анадырь + + + + Anchorage + tz_names + Анкоридж + + + + Andorra + tz_names + Андорра + + + + Anguilla + tz_names + Ангилья + + + + Antananarivo + tz_names + Антананариву + + + + Antigua + tz_names + Антигуа + + + + Apia + tz_names + Апиа + + + + Aqtau + tz_names + Актау + + + + Aqtobe + tz_names + Актобе + + + + Araguaina + tz_names + Арагуаина + + + + Argentina/Buenos Aires + tz_names + Аргентина/Буэнос-Айрес + + + + Argentina/Catamarca + tz_names + Аргентина/Катамарка + + + + Argentina/Cordoba + tz_names + Аргентина/Кордова + + + + Argentina/Jujuy + tz_names + Аргентина/Жужуй + + + + Argentina/La Rioja + tz_names + Аргентина/Ла-Риоха + + + + Argentina/Mendoza + tz_names + Аргентина/Мендоса + + + + Argentina/Rio Gallegos + tz_names + Аргентина/Рио-Гальегос + + + + Argentina/Salta + tz_names + Аргентина/Сальта + + + + Argentina/San Juan + tz_names + Аргентина/Сан-Хуан + + + + Argentina/San Luis + tz_names + Аргентина/Сан-Луис + + + + Argentina/Tucuman + tz_names + Аргентина/Тукуман + + + + Argentina/Ushuaia + tz_names + Аргентина/Ушуая + + + + Aruba + tz_names + Аруба + + + + Ashgabat + tz_names + Ашхабад + + + + Asmara + tz_names + Асмэра + + + + Astrakhan + tz_names + Астрахань + + + + Asuncion + tz_names + Асунсьон + + + + Athens + tz_names + Афины + + + + Atikokan + tz_names + Атикокан + + + + Atyrau + tz_names + Атырау + + + + Auckland + tz_names + Окленд + + + + Azores + tz_names + Азорские острова + + + + Baghdad + tz_names + Багдад + + + + Bahia + tz_names + Баия + + + + Bahia Banderas + tz_names + Баия-де-Бандерас + + + + Bahrain + tz_names + Бахрейн + + + + Baku + tz_names + Баку + + + + Bamako + tz_names + Бамако + + + + Bangkok + tz_names + Бангкок + + + + Bangui + tz_names + Банги + + + + Banjul + tz_names + Банжул + + + + Barbados + tz_names + Барбадос + + + + Barnaul + tz_names + Барнаул + + + + Beirut + tz_names + Бейрут + + + + Belem + tz_names + Белен + + + + Belgrade + tz_names + Белград + + + + Belize + tz_names + Белиз + + + + Berlin + tz_names + Берлин + + + + Bermuda + tz_names + Бермуды + + + + Bishkek + tz_names + Бишкек + + + + Bissau + tz_names + Бисау + + + + Blanc-Sablon + tz_names + Бланк-Саблон + + + + Blantyre + tz_names + Блантир + + + + Boa Vista + tz_names + Боа-Виста + + + + Bogota + tz_names + Богота + + + + Boise + tz_names + Бойсе + + + + Bougainville + tz_names + Бугенвиль + + + + Bratislava + tz_names + Братислава + + + + Brazzaville + tz_names + Браззавиль + + + + Brisbane + tz_names + Брисбен + + + + Broken Hill + tz_names + Брокен-Хилл + + + + Brunei + tz_names + Бруней + + + + Brussels + tz_names + Брюссель + + + + Bucharest + tz_names + Бухарест + + + + Budapest + tz_names + Будапешт + + + + Bujumbura + tz_names + Бужумбура + + + + Busingen + tz_names + Бюзинген + + + + Cairo + tz_names + Каир + + + + Cambridge Bay + tz_names + Кеймбридж-Бей + + + + Campo Grande + tz_names + Кампу-Гранде + + + + Canary + tz_names + Канары + + + + Cancun + tz_names + Канкун + + + + Cape Verde + tz_names + Кабо-Верде + + + + Caracas + tz_names + Каракас + + + + Casablanca + tz_names + Касабланка + + + + Casey + tz_names + Кейси + + + + Cayenne + tz_names + Кайенна + + + + Cayman + tz_names + Кайман + + + + Ceuta + tz_names + Сеута + + + + Chagos + tz_names + Чагос + + + + Chatham + tz_names + Чатем + + + + Chicago + tz_names + Чикаго + + + + Chihuahua + tz_names + Чиуауа + + + + Chisinau + tz_names + Кишинев + + + + Chita + tz_names + Чита + + + + Choibalsan + tz_names + Чойбалсан + + + + Christmas + tz_names + о. Рождества + + + + Chuuk + tz_names + Чуук + + + + Cocos + tz_names + Кокосовые острова + + + + Colombo + tz_names + Коломбо + + + + Comoro + tz_names + Коморские острова + + + + Conakry + tz_names + Конакри + + + + Copenhagen + tz_names + Копенгаген + + + + Costa Rica + tz_names + Коста-Рика + + + + Creston + tz_names + Крестон + + + + Cuiaba + tz_names + Куяба + + + + Curacao + tz_names + Кюрасао + + + + Currie + tz_names + Курри + + + + Dakar + tz_names + Дакар + + + + Damascus + tz_names + Дамаск + + + + Danmarkshavn + tz_names + Денмаркшавн + + + + Dar es Salaam + tz_names + Дар-эс-Салам + + + + Darwin + tz_names + Дарвин + + + + Davis + tz_names + Дейвис + + + + Dawson + tz_names + Доусон + + + + Dawson Creek + tz_names + Доусон-Крик + + + + Denver + tz_names + Денвер + + + + Detroit + tz_names + Детройт + + + + Dhaka + tz_names + Дакка + + + + Dili + tz_names + Дили + + + + Djibouti + tz_names + Джибути + + + + Dominica + tz_names + Доминика + + + + Douala + tz_names + Дуала + + + + Dubai + tz_names + Дубай + + + + Dublin + tz_names + Дублин + + + + DumontDUrville + tz_names + Дюмон д’Юрвиль + + + + Dushanbe + tz_names + Душанбе + + + + Easter + tz_names + Остров Пасхи + + + + Edmonton + tz_names + Эдмонтон + + + + Efate + tz_names + Эфате + + + + Eirunepe + tz_names + Эйрунепе + + + + El Aaiun + tz_names + Эль-Аюн + + + + El Salvador + tz_names + Сальвадор + + + + Enderbury + tz_names + Эндербери + + + + Eucla + tz_names + Юкла + + + + Fakaofo + tz_names + Факаофо + + + + Famagusta + tz_names + Фамагуста + + + + Faroe + tz_names + Фаэро + + + + Fiji + tz_names + Фиджи + + + + Fort Nelson + tz_names + Форт Нельсон + + + + Fortaleza + tz_names + Форталеза + + + + Freetown + tz_names + Фритаун + + + + Funafuti + tz_names + Фунафути + + + + Gaborone + tz_names + Габороне + + + + Galapagos + tz_names + Галапагос + + + + Gambier + tz_names + Гамбье + + + + Gaza + tz_names + Газа + + + + Gibraltar + tz_names + Гибралтар + + + + Glace Bay + tz_names + Глейс-Бей + + + + Godthab + tz_names + Готхоб + + + + Goose Bay + tz_names + Гус-Бей + + + + Grand Turk + tz_names + Гранд-Терк + + + + Grenada + tz_names + Гренада + + + + Guadalcanal + tz_names + Гуадалканал + + + + Guadeloupe + tz_names + Гваделупа + + + + Guam + tz_names + Гуам + + + + Guatemala + tz_names + Гватемала + + + + Guayaquil + tz_names + Гуаякиль + + + + Guernsey + tz_names + Гернси + + + + Guyana + tz_names + Гайана + + + + Halifax + tz_names + Галифакс + + + + Harare + tz_names + Хараре + + + + Havana + tz_names + Гавана + + + + Hebron + tz_names + Хеврон + + + + Helsinki + tz_names + Хельсинки + + + + Hermosillo + tz_names + Эрмосильо + + + + Ho Chi Minh + tz_names + Хошимин + + + + Hobart + tz_names + Хобарт + + + + Hong Kong + tz_names + Гонконг + + + + Honolulu + tz_names + Гонолулу + + + + Hovd + tz_names + Ховд + + + + Indiana/Indianapolis + tz_names + Индиана/Индианаполис + + + + Indiana/Knox + tz_names + Индиана/Нокс + + + + Indiana/Marengo + tz_names + Индиана/Маренго + + + + Indiana/Petersburg + tz_names + Индиана/Петербург + + + + Indiana/Tell City + tz_names + Индиана/Телл-Сити + + + + Indiana/Vevay + tz_names + Индиана/Вивей + + + + Indiana/Vincennes + tz_names + Индиана/Винсеннс + + + + Indiana/Winamac + tz_names + Индиана/Винамак + + + + Inuvik + tz_names + Инувик + + + + Iqaluit + tz_names + Икалуит + + + + Irkutsk + tz_names + Иркутск + + + + Isle of Man + tz_names + о. Мэн + + + + Istanbul + tz_names + Стамбул + + + + Jakarta + tz_names + Джакарта + + + + Jamaica + tz_names + Ямайка + + + + Jayapura + tz_names + Джаяпура + + + + Jersey + tz_names + Джерси + + + + Jerusalem + tz_names + Иерусалим + + + + Johannesburg + tz_names + Йоханнесбург + + + + Juba + tz_names + Джуба + + + + Juneau + tz_names + Джуно + + + + Kabul + tz_names + Кабул + + + + Kaliningrad + tz_names + Калининград + + + + Kamchatka + tz_names + Камчатка + + + + Kampala + tz_names + Кампала + + + + Karachi + tz_names + Карачи + + + + Kathmandu + tz_names + Катманду + + + + Kentucky/Louisville + tz_names + Кентукки/Луисвилль + + + + Kentucky/Monticello + tz_names + Кентуки/Монтицелло + + + + Kerguelen + tz_names + Кергелен + + + + Khandyga + tz_names + Хандыга + + + + Khartoum + tz_names + Хартум + + + + Kiev + tz_names + Киев + + + + Kigali + tz_names + Кигали + + + + Kinshasa + tz_names + Киншаса + + + + Kiritimati + tz_names + Киритимати + + + + Kirov + tz_names + Киров + + + + Kolkata + tz_names + Колката + + + + Kosrae + tz_names + Косрае + + + + Kralendijk + tz_names + Кралендейк + + + + Krasnoyarsk + tz_names + Красноярск + + + + Kuala Lumpur + tz_names + Куала-Лумпур + + + + Kuching + tz_names + Кучинг + + + + Kuwait + tz_names + Кувейт + + + + Kwajalein + tz_names + Квайалейн + + + + La Paz + tz_names + Ла-Пас + + + + Lagos + tz_names + Лагос + + + + Libreville + tz_names + Либревиль + + + + Lima + tz_names + Лима + + + + Lindeman + tz_names + Линдеман + + + + Lisbon + tz_names + Лисабон + + + + Ljubljana + tz_names + Любляна + + + + Lome + tz_names + Ломе + + + + London + tz_names + Лондон + + + + Longyearbyen + tz_names + Лонгйербиен + + + + Lord Howe + tz_names + Лорд-Хау + + + + Los Angeles + tz_names + Лос-Анджелес + + + + Lower Princes + tz_names + Лоуэр-Принс + + + + Luanda + tz_names + Луанда + + + + Lubumbashi + tz_names + Лубумбаши + + + + Lusaka + tz_names + Лусака + + + + Luxembourg + tz_names + Люксембург + + + + Macau + tz_names + Макао + + + + Maceio + tz_names + Масейо + + + + Macquarie + tz_names + Маккуори + + + + Madeira + tz_names + Мадейра + + + + Madrid + tz_names + Мадрид + + + + Magadan + tz_names + Магадан + + + + Mahe + tz_names + Маэ + + + + Majuro + tz_names + Маджуро + + + + Makassar + tz_names + Макассар + + + + Malabo + tz_names + Малабо + + + + Maldives + tz_names + Мальдивы + + + + Malta + tz_names + Мальта + + + + Managua + tz_names + Манагуа + + + + Manaus + tz_names + Манаус + + + + Manila + tz_names + Манила + + + + Maputo + tz_names + Мапуту + + + + Mariehamn + tz_names + Мариехамн + + + + Marigot + tz_names + Мариго + + + + Marquesas + tz_names + Маркизские острова + + + + Martinique + tz_names + Мартиника + + + + Maseru + tz_names + Масеру + + + + Matamoros + tz_names + Матаморос + + + + Mauritius + tz_names + Маврикий + + + + Mawson + tz_names + Моусон + + + + Mayotte + tz_names + Майотта + + + + Mazatlan + tz_names + Масатлан + + + + Mbabane + tz_names + Мбабане + + + + McMurdo + tz_names + Мак-Мёрдо + + + + Melbourne + tz_names + Мельбурн + + + + Menominee + tz_names + Меномини + + + + Merida + tz_names + Мерида + + + + Metlakatla + tz_names + Метлакатла + + + + Mexico City + tz_names + Мехико + + + + Midway + tz_names + Мидуэй + + + + Minsk + tz_names + Минск + + + + Miquelon + tz_names + Микелон + + + + Mogadishu + tz_names + Могадишо + + + + Monaco + tz_names + Монако + + + + Moncton + tz_names + Монктон + + + + Monrovia + tz_names + Монровия + + + + Monterrey + tz_names + Монтеррей + + + + Montevideo + tz_names + Монтевидео + + + + Montserrat + tz_names + Монтсеррат + + + + Moscow + tz_names + Москва + + + + Muscat + tz_names + Маскат + + + + Nairobi + tz_names + Найроби + + + + Nassau + tz_names + Нассау + + + + Nauru + tz_names + Науру + + + + Ndjamena + tz_names + Нджамена + + + + New York + tz_names + Нью-Йорк + + + + Niamey + tz_names + Ниамей + + + + Nicosia + tz_names + Никосия + + + + Nipigon + tz_names + Нипигон + + + + Niue + tz_names + Ниуэ + + + + Nome + tz_names + Ном + + + + Norfolk + tz_names + Норфолк + + + + Noronha + tz_names + Норонха + + + + North Dakota/Beulah + tz_names + Северная Дакота/Бьюла + + + + North Dakota/Center + tz_names + Северная Дакота/Центр + + + + North Dakota/New Salem + tz_names + Северная Дакота/Нью-Салем + + + + Nouakchott + tz_names + Нуакшот + + + + Noumea + tz_names + Нумеа + + + + Novokuznetsk + tz_names + Новокузнецк + + + + Novosibirsk + tz_names + Новосибирск + + + + Ojinaga + tz_names + Охинага + + + + Omsk + tz_names + Омск + + + + Oral + tz_names + Уральск + + + + Oslo + tz_names + Осло + + + + Ouagadougou + tz_names + Уагадугу + + + + Pago Pago + tz_names + Паго-Паго + + + + Palau + tz_names + Палау + + + + Palmer + tz_names + Палмер + + + + Panama + tz_names + Панама + + + + Pangnirtung + tz_names + Пангниртанг + + + + Paramaribo + tz_names + Парамарибо + + + + Paris + tz_names + Париж + + + + Perth + tz_names + Перт + + + + Phnom Penh + tz_names + Пномпень + + + + Phoenix + tz_names + Феникс + + + + Pitcairn + tz_names + Питкэрн + + + + Podgorica + tz_names + Подгорица + + + + Pohnpei + tz_names + Понпеи + + + + Pontianak + tz_names + Понтианак + + + + Port Moresby + tz_names + Порт-Морсби + + + + Port of Spain + tz_names + Порт-оф-Спейн + + + + Port-au-Prince + tz_names + Порт-о-Пренс + + + + Porto Velho + tz_names + Порту-Велью + + + + Porto-Novo + tz_names + Порто-Ново + + + + Prague + tz_names + Прага + + + + Puerto Rico + tz_names + Пуэрто-Рико + + + + Punta Arenas + tz_names + Пунта-Аренас + + + + Pyongyang + tz_names + Пхеньян + + + + Qatar + tz_names + Катар + + + + Qostanay + tz_names + Костанай + + + + Qyzylorda + tz_names + Кызылорда + + + + Rainy River + tz_names + Рейни Ривер + + + + Rankin Inlet + tz_names + Раротонга + + + + Rarotonga + tz_names + Раротонга + + + + Recife + tz_names + Ресифи + + + + Regina + tz_names + Реджайна + + + + Resolute + tz_names + Резолют + + + + Reunion + tz_names + Реюньон + + + + Reykjavik + tz_names + Рейкьявик + + + + Riga + tz_names + Рига + + + + Rio Branco + tz_names + Риу-Бранку + + + + Riyadh + tz_names + Эр-Рияд + + + + Rome + tz_names + Рим + + + + Rothera + tz_names + Ротера + + + + Saipan + tz_names + Сайпан + + + + Sakhalin + tz_names + Сахалин + + + + Samara + tz_names + Самара + + + + Samarkand + tz_names + Самарканд + + + + San Marino + tz_names + Сан-Марино + + + + Santarem + tz_names + Сантарен + + + + Santiago + tz_names + Сантьяго + + + + Santo Domingo + tz_names + Санто-Доминго + + + + Sao Paulo + tz_names + Сан-Паулу + + + + Sao Tome + tz_names + Сан-Томе + + + + Sarajevo + tz_names + Сараево + + + + Saratov + tz_names + Саратов + + + + Scoresbysund + tz_names + Скоресбисунд + + + + Seoul + tz_names + Сеул + + + + Shanghai + tz_names + Шанхай + + + + Simferopol + tz_names + Симферополь + + + + Singapore + tz_names + Сингапур + + + + Sitka + tz_names + Ситка + + + + Skopje + tz_names + Скопье + + + + Sofia + tz_names + София + + + + South Georgia + tz_names + Южная Георгия + + + + Srednekolymsk + tz_names + Среднеколымск + + + + St Barthelemy + tz_names + Сен-Бартельми + + + + St Helena + tz_names + о. Святой Елены + + + + St Johns + tz_names + Сент-Джонс + + + + St Kitts + tz_names + Сент-Китс + + + + St Lucia + tz_names + Сент-Люсия + + + + St Thomas + tz_names + Сент-Томас + + + + St Vincent + tz_names + Сент-Винсент + + + + Stanley + tz_names + Стэнли + + + + Stockholm + tz_names + Стокгольм + + + + Swift Current + tz_names + Свифт-Керрент + + + + Sydney + tz_names + Сидней + + + + Syowa + tz_names + Сёва + + + + Tahiti + tz_names + Таити + + + + Taipei + tz_names + Тайбэй + + + + Tallinn + tz_names + Таллин + + + + Tarawa + tz_names + Тарава + + + + Tashkent + tz_names + Ташкент + + + + Tbilisi + tz_names + Тбилиси + + + + Tegucigalpa + tz_names + Тегусигальпа + + + + Tehran + tz_names + Тегеран + + + + Thimphu + tz_names + Тхимпху + + + + Thule + tz_names + Туле + + + + Thunder Bay + tz_names + Тандер-Бей + + + + Tijuana + tz_names + Тихуана + + + + Tirane + tz_names + Тирана + + + + Tokyo + tz_names + Токио + + + + Tomsk + tz_names + Томск + + + + Tongatapu + tz_names + Тонгатапу + + + + Toronto + tz_names + Торонто + + + + Tortola + tz_names + Тортола + + + + Tripoli + tz_names + Триполи + + + + Troll + tz_names + Тролл + + + + Tunis + tz_names + Тунис + + + + Ulaanbaatar + tz_names + Улан-Батор + + + + Ulyanovsk + tz_names + Ульяновск + + + + Urumqi + tz_names + Урумчи + + + + Ust-Nera + tz_names + Усть-Нера + + + + Uzhgorod + tz_names + Ужгород + + + + Vaduz + tz_names + Вадуц + + + + Vancouver + tz_names + Ванкувер + + + + Vatican + tz_names + Ватикан + + + + Vienna + tz_names + Вена + + + + Vientiane + tz_names + Вьентьян + + + + Vilnius + tz_names + Вильнюс + + + + Vladivostok + tz_names + Владивосток + + + + Volgograd + tz_names + Волгоград + + + + Vostok + tz_names + Восток + + + + Wake + tz_names + Уэйк + + + + Wallis + tz_names + Уоллис + + + + Warsaw + tz_names + Варшава + + + + Whitehorse + tz_names + Уайтхорс + + + + Windhoek + tz_names + Виндхук + + + + Winnipeg + tz_names + Виннипег + + + + Yakutat + tz_names + Якутат + + + + Yakutsk + tz_names + Якутск + + + + Yangon + tz_names + Янгон + + + + Yekaterinburg + tz_names + Екатеринбург + + + + Yellowknife + tz_names + Йеллоунайф + + + + Yerevan + tz_names + Ереван + + + + Zagreb + tz_names + Загреб + + + + Zaporozhye + tz_names + Запорожье + + + + Zurich + tz_names + Цюрих + + + diff --git a/lang/tz_tg.ts b/lang/tz_tg.ts index 77e075619..4c3fe86b7 100644 --- a/lang/tz_tg.ts +++ b/lang/tz_tg.ts @@ -58,7 +58,7 @@ Indian tz_regions - Ҳиндӣ + Уқёнуси Ҳинд
From 32649f78eae77e38c4278adc8bc96821c8927470 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 15:39:04 +0200 Subject: [PATCH 394/399] [libcalamares] Restore finish() slot to job queue FIXES #1507 --- src/libcalamares/JobQueue.cpp | 1 + src/libcalamares/JobQueue.h | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 172d59714..17ea6a141 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -135,6 +135,7 @@ public: { emitProgress( 1.0 ); } + m_runningJobs->clear(); QMetaObject::invokeMethod( m_queue, "finish", Qt::QueuedConnection ); } diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index 518217000..5c4c6c35f 100644 --- a/src/libcalamares/JobQueue.h +++ b/src/libcalamares/JobQueue.h @@ -77,9 +77,15 @@ signals: */ void queueChanged( const QStringList& jobNames ); -private: +public slots: + /** @brief Implementation detail + * + * This is a private implementation detail for the job thread, + * which should not be called by other core. + */ void finish(); +private: static JobQueue* s_instance; JobThread* m_thread; From d94b9caba5531500c9e716702db535211c339cff Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 16:11:35 +0200 Subject: [PATCH 395/399] [libcalamaresui] Less mutex shenanigans --- src/libcalamaresui/viewpages/Slideshow.cpp | 14 +++++++++----- src/libcalamaresui/viewpages/Slideshow.h | 3 +++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/libcalamaresui/viewpages/Slideshow.cpp b/src/libcalamaresui/viewpages/Slideshow.cpp index 13f0a3e51..268843421 100644 --- a/src/libcalamaresui/viewpages/Slideshow.cpp +++ b/src/libcalamaresui/viewpages/Slideshow.cpp @@ -117,11 +117,8 @@ SlideshowQML::loadQmlV2Complete() { // We're alreay visible! Must have been slow QML loading, and we // passed onActivate already. changeSlideShowState() locks - // the same mutex: we could set up a workaround to call - // changeSlideShowState() later after destruction of l. - // - l.unlock(); - changeSlideShowState( Slideshow::Start ); + // the same mutex: call changeSlideShowState() after l is dead. + QTimer::singleShot( 0, this, &SlideshowQML::startSlideShow ); } } } @@ -142,6 +139,13 @@ SlideshowQML::loadQmlV2Complete() } } +void +SlideshowQML::startSlideShow() +{ + changeSlideShowState( Slideshow::Start ); +} + + /* * Applies V1 and V2 QML activation / deactivation: * - V1 loads the QML in @p widget on activation. Sets root object property diff --git a/src/libcalamaresui/viewpages/Slideshow.h b/src/libcalamaresui/viewpages/Slideshow.h index 732734755..4432eed7b 100644 --- a/src/libcalamaresui/viewpages/Slideshow.h +++ b/src/libcalamaresui/viewpages/Slideshow.h @@ -100,6 +100,9 @@ public slots: void loadQmlV2Complete(); void loadQmlV2(); ///< Loads the slideshow QML (from branding) for API version 2 + /// Implementation detail + void startSlideShow(); + private: QQuickWidget* m_qmlShow; QQmlComponent* m_qmlComponent; From e0ba5a6ba2c2b2ba846308ccc2d7f4b8c293feb4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 20:15:28 +0200 Subject: [PATCH 396/399] [libcalamares] Convenience functions for localeConf GS entry --- src/libcalamares/CMakeLists.txt | 1 + src/libcalamares/locale/Global.cpp | 78 ++++++++++++++++++++++++++++ src/libcalamares/locale/Global.h | 82 ++++++++++++++++++++++++++++++ src/libcalamares/locale/Tests.cpp | 71 ++++++++++++++++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 src/libcalamares/locale/Global.cpp create mode 100644 src/libcalamares/locale/Global.h diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 849896446..be5b252f0 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -39,6 +39,7 @@ set( libSources geoip/Handler.cpp # Locale-data service + locale/Global.cpp locale/Label.cpp locale/LabelModel.cpp locale/Lookup.cpp diff --git a/src/libcalamares/locale/Global.cpp b/src/libcalamares/locale/Global.cpp new file mode 100644 index 000000000..a23a10478 --- /dev/null +++ b/src/libcalamares/locale/Global.cpp @@ -0,0 +1,78 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ +#include "Global.h" + +#include "GlobalStorage.h" +#include "utils/Logger.h" + +namespace CalamaresUtils +{ +namespace Locale +{ + +static const char gsKey[] = "localeConf"; + +template < typename T > +void +insertGS( const QMap< QString, T >& values, QVariantMap& localeConf ) +{ + for ( auto it = values.constBegin(); it != values.constEnd(); ++it ) + { + localeConf.insert( it.key(), it.value() ); + } +} + +void +insertGS( Calamares::GlobalStorage& gs, const QMap< QString, QString >& values, InsertMode mode ) +{ + QVariantMap localeConf = mode == InsertMode::Overwrite ? QVariantMap() : gs.value( gsKey ).toMap(); + insertGS( values, localeConf ); + gs.insert( gsKey, localeConf ); +} + +void +insertGS( Calamares::GlobalStorage& gs, const QVariantMap& values, InsertMode mode ) +{ + QVariantMap localeConf = mode == InsertMode::Overwrite ? QVariantMap() : gs.value( gsKey ).toMap(); + insertGS( values, localeConf ); + gs.insert( gsKey, localeConf ); +} + +void +insertGS( Calamares::GlobalStorage& gs, const QString& key, const QString& value ) +{ + QVariantMap localeConf = gs.value( gsKey ).toMap(); + localeConf.insert( key, value ); + gs.insert( gsKey, localeConf ); +} + +void +removeGS( Calamares::GlobalStorage& gs, const QString& key ) +{ + if ( gs.contains( gsKey ) ) + { + QVariantMap localeConf = gs.value( gsKey ).toMap(); + if ( localeConf.contains( key ) ) + { + localeConf.remove( key ); + gs.insert( gsKey, localeConf ); + } + } +} + +void +clearGS( Calamares::GlobalStorage& gs ) +{ + gs.remove( gsKey ); +} + + +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/Global.h b/src/libcalamares/locale/Global.h new file mode 100644 index 000000000..56f09ce4c --- /dev/null +++ b/src/libcalamares/locale/Global.h @@ -0,0 +1,82 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ + +/** @file GlobalStorage management for Locale settings + * + * The *localeConf* key in Global Storage is semi-structured, + * and there are multiple modules that write to it (and some that + * read from it). Functions in this file provide access to + * that semi-structured data. + */ + +#ifndef LOCALE_GLOBAL_H +#define LOCALE_GLOBAL_H + +#include "DllMacro.h" + +#include +#include +#include + +namespace Calamares +{ +class GlobalStorage; +} + +namespace CalamaresUtils +{ +namespace Locale +{ + +/** @brief Selector for methods that insert multiple values. + * + * When inserting, use @c Overwrite to remove all keys not in the collection + * of values being inserted; use @c Merge to preserve whatever is + * already in Global Storage but not mentioned in the collection. + */ +enum class InsertMode +{ + Overwrite, + Merge +}; + +/** @brief Insert the given @p values into the *localeConf* map in @p gs + * + * @param gs The Global Storage to write to + * @param values The collection of keys and values to write to @p gs + * @param mode Indicates whether the *localeConf* key is cleared first + * + * The keys in the collection @p values should be first-level keys + * in *localeConf*, e.g. "LANG" or "LC_TIME". No effort is made to + * enforce this. + */ +DLLEXPORT void +insertGS( Calamares::GlobalStorage& gs, const QVariantMap& values, InsertMode mode = InsertMode::Merge ); +/** @brief Insert the given @p values into the *localeConf* map in @p gs + * + * Alternate way of providing the keys and values. + */ +DLLEXPORT void insertGS( Calamares::GlobalStorage& gs, + const QMap< QString, QString >& values, + InsertMode mode = InsertMode::Merge ); +/** @brief Write a single @p key and @p value to the *localeConf* map + */ +DLLEXPORT void insertGS( Calamares::GlobalStorage& gs, const QString& key, const QString& value ); +/** @brief Remove a single @p key from the *localeConf* map + */ +DLLEXPORT void removeGS( Calamares::GlobalStorage& gs, const QString& key ); +/** @brief Remove the *localeConf* map from Global Storage + */ +DLLEXPORT void clearGS( Calamares::GlobalStorage& gs ); + +} // namespace Locale +} // namespace CalamaresUtils + +#endif diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 6e0140e79..b701ce849 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -8,11 +8,13 @@ * */ +#include "locale/Global.h" #include "locale/LabelModel.h" #include "locale/TimeZone.h" #include "locale/TranslatableConfiguration.h" #include "CalamaresVersion.h" +#include "GlobalStorage.h" #include "utils/Logger.h" #include @@ -45,6 +47,9 @@ private Q_SLOTS: void testLocationLookup_data(); void testLocationLookup(); void testLocationLookup2(); + + // Global Storage updates + void testGSUpdates(); }; LocaleTests::LocaleTests() {} @@ -446,6 +451,72 @@ LocaleTests::testLocationLookup2() QCOMPARE( trunc( altzone->latitude() * 1000.0 ), -29466 ); } +void +LocaleTests::testGSUpdates() +{ + Calamares::GlobalStorage gs; + + const QString gsKey( "localeConf" ); + + QCOMPARE( gs.value( gsKey ), QVariant() ); + + // Insert one + { + CalamaresUtils::Locale::insertGS( gs, "LANG", "en_US" ); + auto map = gs.value( gsKey ).toMap(); + QCOMPARE( map.count(), 1 ); + QCOMPARE( map.value( "LANG" ).toString(), QString( "en_US" ) ); + } + + // Overwrite one + { + CalamaresUtils::Locale::insertGS( gs, "LANG", "nl_BE" ); + auto map = gs.value( gsKey ).toMap(); + QCOMPARE( map.count(), 1 ); + QCOMPARE( map.value( "LANG" ).toString(), QString( "nl_BE" ) ); + } + + // Insert a second value + { + CalamaresUtils::Locale::insertGS( gs, "LC_TIME", "UTC" ); + auto map = gs.value( gsKey ).toMap(); + QCOMPARE( map.count(), 2 ); + QCOMPARE( map.value( "LANG" ).toString(), QString( "nl_BE" ) ); + QCOMPARE( map.value( "LC_TIME" ).toString(), QString( "UTC" ) ); + } + + // Overwrite parts + { + QMap< QString, QString > kv; + kv.insert( "LANG", "en_SU" ); + kv.insert( "LC_CURRENCY", "rbl" ); + + // Overwrite one, add one + CalamaresUtils::Locale::insertGS( gs, kv, CalamaresUtils::Locale::InsertMode::Merge ); + auto map = gs.value( gsKey ).toMap(); + QCOMPARE( map.count(), 3 ); + QCOMPARE( map.value( "LANG" ).toString(), QString( "en_SU" ) ); + QCOMPARE( map.value( "LC_TIME" ).toString(), QString( "UTC" ) ); // unchanged + QCOMPARE( map.value( "LC_CURRENCY" ).toString(), QString( "rbl" ) ); + } + + // Overwrite with clear + { + QMap< QString, QString > kv; + kv.insert( "LANG", "en_US" ); + kv.insert( "LC_CURRENCY", "peso" ); + + // Overwrite one, add one + CalamaresUtils::Locale::insertGS( gs, kv, CalamaresUtils::Locale::InsertMode::Overwrite ); + auto map = gs.value( gsKey ).toMap(); + QCOMPARE( map.count(), 2 ); // the rest were cleared + QCOMPARE( map.value( "LANG" ).toString(), QString( "en_US" ) ); + QVERIFY( !map.contains( "LC_TIME" ) ); + QCOMPARE( map.value( "LC_TIME" ).toString(), QString() ); // removed + QCOMPARE( map.value( "LC_CURRENCY" ).toString(), QString( "peso" ) ); + } +} + QTEST_GUILESS_MAIN( LocaleTests ) From 634a53d27a14dd23bf38a120413fa86618b641e2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 20:20:05 +0200 Subject: [PATCH 397/399] [locale] Use new convenience function for updating localeConf --- src/modules/locale/Config.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 37857cc71..1417e5b89 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -14,6 +14,7 @@ #include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" +#include "locale/Global.h" #include "locale/Label.h" #include "modulesystem/ModuleManager.h" #include "network/Manager.h" @@ -167,13 +168,7 @@ updateGSLocation( Calamares::GlobalStorage* gs, const CalamaresUtils::Locale::Ti static void updateGSLocale( Calamares::GlobalStorage* gs, const LocaleConfiguration& locale ) { - auto map = locale.toMap(); - QVariantMap vm; - for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) - { - vm.insert( it.key(), it.value() ); - } - gs->insert( "localeConf", vm ); + CalamaresUtils::Locale::insertGS( *gs, locale.toMap(), CalamaresUtils::Locale::InsertMode::Overwrite ); } Config::Config( QObject* parent ) From 466e08a8baad120e4aa285770a0c71155c0d9ac7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 20:33:22 +0200 Subject: [PATCH 398/399] [welcome] Set some localeConf values from the welcome page --- CHANGES | 5 +++++ src/modules/welcome/Config.cpp | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 7508354c9..c44b3b84a 100644 --- a/CHANGES +++ b/CHANGES @@ -39,6 +39,11 @@ on functionality, but do touch each and every source file: - *keyboardq* and *localeq* improvements. (Thanks to Anke) - *users* module did not set up autologin properly. This is yet another regression left over from 3.2.28. (Reported by Phil and pcrepix, #1498) + - *welcome* module now sets the *LANG* key in the locale configuration + (which is shared with the *locale* module and consumed by the + *localecfg* module). This makes it feasible to drop the *locale* + module and still set the installed system's language to the language + selected in Calamares. (Reported by FerenOS) # 3.2.29 (2020-08-20) # diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp index d4641562a..72e1cfc3b 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -10,8 +10,11 @@ #include "Config.h" #include "Branding.h" +#include "GlobalStorage.h" +#include "JobQueue.h" #include "Settings.h" #include "geoip/Handler.h" +#include "locale/Global.h" #include "locale/Lookup.h" #include "modulesystem/ModuleManager.h" #include "utils/Logger.h" @@ -186,7 +189,12 @@ Config::setLocaleIndex( int index ) QLocale::setDefault( selectedLocale ); CalamaresUtils::installTranslator( selectedLocale, Calamares::Branding::instance()->translationsDirectory() ); - + if ( Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() ) + { + CalamaresUtils::Locale::insertGS( *Calamares::JobQueue::instance()->globalStorage(), + QStringLiteral( "LANG" ), + CalamaresUtils::translatorLocaleName() ); + } emit localeIndexChanged( m_localeIndex ); } From 67efa8b4bb6ad988e42b65a01e82a8e98ad74b3c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 3 Sep 2020 20:45:04 +0200 Subject: [PATCH 399/399] Changes: pre-release housekeeping --- CHANGES | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index c44b3b84a..94b28b40f 100644 --- a/CHANGES +++ b/CHANGES @@ -7,7 +7,7 @@ contributors are listed. Note that Calamares does not have a historical changelog -- this log starts with version 3.2.0. The release notes on the website will have to do for older versions. -# 3.2.30 (unreleased) # +# 3.2.30 (2020-09-03) # This release contains contributions from (alphabetically by first name): - Anke Boersma diff --git a/CMakeLists.txt b/CMakeLists.txt index b82c116c5..120d8ecd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ project( CALAMARES VERSION 3.2.30 LANGUAGES C CXX ) -set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development +set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development ### OPTIONS #