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/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 000000000..a2b9cf8c3 --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,85 @@ +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 diff --git a/.travis.yml b/.travis.yml index bded09831..a9fcbb28b 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/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp index 77e95e649..284870e06 100644 --- a/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp +++ b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h index b9c5d588f..19fdaa082 100644 --- a/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h +++ b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp index a13a45a27..3af326193 100644 --- a/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp +++ b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h index 82b759283..64b5c267f 100644 --- a/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h +++ b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp index cd8fadcce..52eb60d37 100644 --- a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp +++ b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ @@ -1119,7 +1119,7 @@ void KDSingleApplicationGuard::Private::poll() { } } -#include "moc_kdsingleapplicationguard.cpp" +// #include "moc_kdsingleapplicationguard.cpp" #ifdef KDTOOLSCORE_UNITTESTS diff --git a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h index 8ac411a68..8e7c7b498 100644 --- a/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h +++ b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp index d3405e82f..f886189c3 100644 --- a/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp +++ b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h index 37ca5857e..5086ddd71 100644 --- a/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h +++ b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp b/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp index 35b52d419..f2b0a4dd9 100644 --- a/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp +++ b/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/kdsingleapplicationguard/pimpl_ptr.h b/3rdparty/kdsingleapplicationguard/pimpl_ptr.h index 41b33b582..b8b4786ba 100644 --- a/3rdparty/kdsingleapplicationguard/pimpl_ptr.h +++ b/3rdparty/kdsingleapplicationguard/pimpl_ptr.h @@ -1,6 +1,6 @@ /* + * SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB. * SPDX-License-Identifier: LGPL-2.0-only - * License-Filename: LICENSES/LGPLv2-KDAB * * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. */ diff --git a/3rdparty/waitingspinnerwidget.cpp b/3rdparty/waitingspinnerwidget.cpp index 45c689019..98931a6ad 100644 --- a/3rdparty/waitingspinnerwidget.cpp +++ b/3rdparty/waitingspinnerwidget.cpp @@ -1,6 +1,8 @@ /* + * SPDX-FileCopyrightText: 2012-2014 Alexander Turkin + * SPDX-FileCopyrightText: 2014 William Hallatt + * SPDX-FileCopyrightText: 2015 Jacob Dawid * SPDX-License-Identifier: MIT - * License-Filename: LICENSES/MIT-QtWaitingSpinner */ /* Original Work Copyright (c) 2012-2014 Alexander Turkin diff --git a/3rdparty/waitingspinnerwidget.h b/3rdparty/waitingspinnerwidget.h index b3e8df9a0..c8c6b9687 100644 --- a/3rdparty/waitingspinnerwidget.h +++ b/3rdparty/waitingspinnerwidget.h @@ -1,11 +1,14 @@ /* + * SPDX-FileCopyrightText: 2012-2014 Alexander Turkin + * SPDX-FileCopyrightText: 2014 William Hallatt + * SPDX-FileCopyrightText: 2015 Jacob Dawid * SPDX-License-Identifier: MIT - * License-Filename: LICENSES/MIT-QtWaitingSpinner */ /* Original Work Copyright (c) 2012-2014 Alexander Turkin Modified 2014 by William Hallatt Modified 2015 by Jacob Dawid + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to 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 d7510976a..94b28b40f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,18 +1,133 @@ + + 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 website will have to do for older versions. -# 3.2.28 (unreleased) # +# 3.2.30 (2020-09-03) # This release contains contributions from (alphabetically by first name): - - No external contributors yet + - Anke Boersma + - 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: + - 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) + - Urdu translation started. (Thanks to Manzoor) + - Timezones translated in Tajik and Russian. (Thanks to Victor) ## Modules ## - - No module changes yet + - *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) # + +This release contains contributions from (alphabetically by first name): + - Asif Mahmud Shimon (new contributor! hi!) + +## Core ## + - Edge case in extracting string-lists from YAML, reported and fixed + by Asif (#1491). + - Progress reporting is now more flexible. Modules can have a weight + assigned to them in the descriptor; module instances can have a weight + assigned which overrides the module descriptor. When jobs are run + for a module instance, the jobs report progress pro-rated by the + module's weight. Or in other words, it is now possible to tweak + the amount of the overall progress bar that different modules fill. + The default settings give unpackfs a weight of 12. (#1176) + +## Modules ## + - The *users* module did not read the *defaultGroups* correctly. + Fixed by the string-lists change mentioned above. + + + # 3.2.28.3 (2020-08-18) # + +Another hotfix, for more issues reported by Marco Obaid. Users +were not having a password set (#1489) + + +# 3.2.28.2 (2020-08-12) # + +A second hotfix, for autologin support -- the autologin group was not +created in the target system before assigning the user to it. Reported +by Marco Obaid. + + +# 3.2.28.1 (2020-08-10) # + +This is a hotfix release for #1482 and #1483, where no user was +created during installation and a chmod was failing (resulting in +a failed installation). Reported by Jonathan Riddell. + +With incidental improvements in SPDX tagging (code licensing) +and some new icon options for the welcomeq and localeq modules. + + +# 3.2.28 (2020-08-09) # + +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. The Tajik language has quickly reached + 100% completion. Thanks Victor! + - Welcome to [Interlingue](https://en.wikipedia.org/wiki/Interlingue). + 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. + 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 + - 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 *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 7e049ca97..120d8ecd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,20 +1,15 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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. # -# SPDX-License-Identifier: GPL-3.0-or-later -# License-Filename: LICENSE +# Individual files may have different licenses (like the CMake +# infrastructure, which is BSD-2-Clause licensed). Check the SPDX +# identifiers in each file. # ### # @@ -46,7 +41,7 @@ # TODO:3.3: Require CMake 3.12 cmake_minimum_required( VERSION 3.3 FATAL_ERROR ) project( CALAMARES - VERSION 3.2.27 + VERSION 3.2.30 LANGUAGES C CXX ) set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development @@ -140,20 +135,19 @@ 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 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 ) -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 +# 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 @@ -286,14 +280,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 ) @@ -355,23 +341,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 @@ -419,30 +415,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.") @@ -453,7 +441,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." ) @@ -464,14 +451,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 @@ -536,7 +515,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}" ) @@ -657,6 +640,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 diff --git a/CMakeModules/BoostPython3.cmake b/CMakeModules/BoostPython3.cmake index 021c1947a..bd1d24e0e 100644 --- a/CMakeModules/BoostPython3.cmake +++ b/CMakeModules/BoostPython3.cmake @@ -1,3 +1,17 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Aurélien Gâteau +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-FileCopyrightText: 2019 Kevin Kofler +# SPDX-License-Identifier: BSD-2-Clause +# +### +# +# Handles the mess that Boost::Python is before CMake 3.16 and +# Boost 1.70 or so. +# +### +# # On Ubuntu 14.04, the libboost-python1.54-dev package comes with one library # for each Python version: # libboost_python-py27.so @@ -68,7 +82,7 @@ macro( find_boost_python3 boost_version python_version found_var ) endif() set( ${found_var} ${_fbp_found} ) - + # This is superfluous, but allows proper reporting in the features list if ( _fbp_found ) find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} ) diff --git a/CMakeModules/CMakeColors.cmake b/CMakeModules/CMakeColors.cmake index 97739627d..073c24de6 100644 --- a/CMakeModules/CMakeColors.cmake +++ b/CMakeModules/CMakeColors.cmake @@ -1,3 +1,14 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2014 Kevin Kofler +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +### +# +# Defines a handful of strings that, with normal xterm handling, +# will change colors in the output, so it's nicer to read. if(NOT WIN32) set(_use_color ON) if("0" STREQUAL "$ENV{CLICOLOR}") diff --git a/CMakeModules/CMakeDateStamp.cmake b/CMakeModules/CMakeDateStamp.cmake index 0b6a3896f..15482100f 100644 --- a/CMakeModules/CMakeDateStamp.cmake +++ b/CMakeModules/CMakeDateStamp.cmake @@ -1,3 +1,11 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-License-Identifier: BSD-2-Clause +# +### +# +# Find today's date, for versioning purposes. find_program(DATE_EXECUTABLE NAMES date) mark_as_advanced(DATE_EXECUTABLE) diff --git a/CMakeModules/CMakeVersionSource.cmake b/CMakeModules/CMakeVersionSource.cmake index 826546807..295fffa5d 100644 --- a/CMakeModules/CMakeVersionSource.cmake +++ b/CMakeModules/CMakeVersionSource.cmake @@ -1,3 +1,10 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-License-Identifier: BSD-2-Clause +# +### +# # Try to identify the current development source version. set(CMAKE_VERSION_SOURCE "") if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD) diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index 70fcd9279..062ad6706 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,20 +1,11 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index 88978e751..0cbad7424 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -1,20 +1,11 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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 # ### # @@ -62,10 +53,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 +70,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/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index 86f0b8f4c..87f8547f8 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -1,20 +1,11 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 66536eda7..55865999c 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -1,20 +1,11 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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 # ### # @@ -41,6 +32,7 @@ # [NO_CONFIG] # [SHARED_LIB] # [EMERGENCY] +# [WEIGHT w] # ) # # Function parameters: @@ -63,6 +55,9 @@ # - EMERGENCY # If this is set, the module is marked as an *emergency* module in the # descriptor. See *Emergency Modules* in the module documentation. +# - WEIGHT +# If this is set, writes an explicit weight into the module.desc; +# module weights are used in progress reporting. # include( CMakeParseArguments ) @@ -73,7 +68,7 @@ function( calamares_add_plugin ) # parse arguments ( name needs to be saved before passing ARGN into the macro ) set( NAME ${ARGV0} ) set( options NO_CONFIG NO_INSTALL SHARED_LIB EMERGENCY ) - set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES ) + set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES WEIGHT ) set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES ) cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) set( PLUGIN_NAME ${NAME} ) @@ -181,19 +176,31 @@ function( calamares_add_plugin ) if ( PLUGIN_NO_CONFIG ) file( APPEND ${_file} "noconfig: true\n" ) endif() + if ( PLUGIN_WEIGHT ) + file( APPEND ${_file} "weight: ${PLUGIN_WEIGHT}\n" ) + endif() endif() if ( NOT PLUGIN_NO_INSTALL ) 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() diff --git a/CMakeModules/CalamaresAddTest.cmake b/CMakeModules/CalamaresAddTest.cmake index 4dd673745..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 - === # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index bb15fb122..56953187c 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 - === # -# Calamares is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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 # ### # @@ -22,104 +12,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( calamares_i18n_qrc_content "\n" ) - - # 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" ) - 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( 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} - ) - - # 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} - MAIN_DEPENDENCY ${trans_infile} - DEPENDS ${QM_FILES} - ) -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() +# 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 @@ -151,31 +51,52 @@ 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}") + 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}" ) + 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_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( EXISTS ${lang_mo} ) - list( APPEND INSTALLED_LANGUAGES "${lang}" ) + 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 ${GETTEXT_MSGFMT_EXECUTABLE} + 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() diff --git a/CMakeModules/CalamaresAutomoc.cmake b/CMakeModules/CalamaresAutomoc.cmake index 3de586ad2..c7dbd72bf 100644 --- a/CMakeModules/CalamaresAutomoc.cmake +++ b/CMakeModules/CalamaresAutomoc.cmake @@ -1,34 +1,35 @@ -# === This file is part of Calamares - === +# === 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. +# SPDX-FileCopyrightText: 2019 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Calamares is Free Software: see the License-Identifier above. # -# 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 # ### # -# 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 +46,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() diff --git a/CMakeModules/FindCrypt.cmake b/CMakeModules/FindCrypt.cmake index d17d70178..94f8a4510 100644 --- a/CMakeModules/FindCrypt.cmake +++ b/CMakeModules/FindCrypt.cmake @@ -1,3 +1,11 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +### +# # - Find libcrypt # Find the libcrypt includes and the libcrypt libraries # This module defines diff --git a/CMakeModules/FindLIBPARTED.cmake b/CMakeModules/FindLIBPARTED.cmake index 97e7d9758..494271003 100644 --- a/CMakeModules/FindLIBPARTED.cmake +++ b/CMakeModules/FindLIBPARTED.cmake @@ -1,4 +1,5 @@ -# Copyright (C) 2008,2010,2011 by Volker Lanz +# SPDX-FileCopyrightText: 2008,2010,2011 by Volker Lanz +# SPDX-License-Identifier: BSD-2-Clause # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -44,7 +45,7 @@ else (LIBPARTED_FS_RESIZE_LIBRARY) set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY}) endif (LIBPARTED_FS_RESIZE_LIBRARY) -# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so +# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so # undo that unset(CMAKE_C_FLAGS) diff --git a/CMakeModules/FindLibPWQuality.cmake b/CMakeModules/FindLibPWQuality.cmake index 84136f5ad..2a9943f3d 100644 --- a/CMakeModules/FindLibPWQuality.cmake +++ b/CMakeModules/FindLibPWQuality.cmake @@ -1,3 +1,10 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2018 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +### +# # Locate libpwquality # https://github.com/libpwquality/libpwquality # @@ -6,10 +13,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 diff --git a/CMakeModules/FindPythonQt.cmake b/CMakeModules/FindPythonQt.cmake index 519e1c93e..81208a86e 100644 --- a/CMakeModules/FindPythonQt.cmake +++ b/CMakeModules/FindPythonQt.cmake @@ -1,3 +1,11 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2016 Teo Mrnjavac +# SPDX-FileCopyrightText: 2017 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +### +# # Find PythonQt # # Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES diff --git a/CMakeModules/FindYAMLCPP.cmake b/CMakeModules/FindYAMLCPP.cmake index 395c794bb..0752c7bd7 100644 --- a/CMakeModules/FindYAMLCPP.cmake +++ b/CMakeModules/FindYAMLCPP.cmake @@ -1,3 +1,11 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2014 Teo Mrnjavac +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# +### +# # Locate yaml-cpp # # This module defines diff --git a/CMakeModules/IncludeKPMCore.cmake b/CMakeModules/IncludeKPMCore.cmake deleted file mode 100644 index 4b4b8b3f2..000000000 --- a/CMakeModules/IncludeKPMCore.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# Shared CMake core for finding KPMCore -# -# This is wrapped into a CMake include file because there's a bunch of -# pre-requisites that need searching for before looking for KPMCore. -# If you just do find_package( KPMCore ) without finding the things -# it links against first, you get CMake errors. -# -# -find_package(ECM 5.10.0 REQUIRED NO_MODULE) -set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) - -include(KDEInstallDirs) -include(GenerateExportHeader) -find_package( KF5 REQUIRED CoreAddons ) -find_package( KF5 REQUIRED Config I18n Service WidgetsAddons ) - -find_package( KPMcore 3.2 REQUIRED ) 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/LICENSES/BSD2 b/LICENSES/BSD-2-Clause.txt similarity index 100% rename from LICENSES/BSD2 rename to LICENSES/BSD-2-Clause.txt diff --git a/LICENSES/BSD3-SameGame b/LICENSES/BSD3-SameGame deleted file mode 100644 index 9aefc27c5..000000000 --- a/LICENSES/BSD3-SameGame +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * 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. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** 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 -** OWNER 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." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 000000000..3f92dfc5f --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,324 @@ +Creative Commons Attribution 4.0 International Creative Commons Corporation +("Creative Commons") is not a law firm and does not provide legal services +or legal advice. Distribution of Creative Commons public licenses does not +create a lawyer-client or other relationship. Creative Commons makes its licenses +and related information available on an "as-is" basis. Creative Commons gives +no warranties regarding its licenses, any material licensed under their terms +and conditions, or any related information. Creative Commons disclaims all +liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions +that creators and other rights holders may use to share original works of +authorship and other material subject to copyright and certain other rights +specified in the public license below. The following considerations are for +informational purposes only, are not exhaustive, and do not form part of our +licenses. + +Considerations for licensors: Our public licenses are intended for use by +those authorized to give the public permission to use material in ways otherwise +restricted by copyright and certain other rights. Our licenses are irrevocable. +Licensors should read and understand the terms and conditions of the license +they choose before applying it. Licensors should also secure all rights necessary +before applying our licenses so that the public can reuse the material as +expected. Licensors should clearly mark any material not subject to the license. +This includes other CC-licensed material, or material used under an exception +or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors + +Considerations for the public: By using one of our public licenses, a licensor +grants the public permission to use the licensed material under specified +terms and conditions. If the licensor's permission is not necessary for any +reason–for example, because of any applicable exception or limitation to copyright–then +that use is not regulated by the license. Our licenses grant only permissions +under copyright and certain other rights that a licensor has authority to +grant. Use of the licensed material may still be restricted for other reasons, +including because others have copyright or other rights in the material. A +licensor may make special requests, such as asking that all changes be marked +or described. Although not required by our licenses, you are encouraged to +respect those requests where reasonable. More considerations for the public +: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution +4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to +be bound by the terms and conditions of this Creative Commons Attribution +4.0 International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. + +a. Adapted Material means material subject to Copyright and Similar Rights +that is derived from or based upon the Licensed Material and in which the +Licensed Material is translated, altered, arranged, transformed, or otherwise +modified in a manner requiring permission under the Copyright and Similar +Rights held by the Licensor. For purposes of this Public License, where the +Licensed Material is a musical work, performance, or sound recording, Adapted +Material is always produced where the Licensed Material is synched in timed +relation with a moving image. + +b. Adapter's License means the license You apply to Your Copyright and Similar +Rights in Your contributions to Adapted Material in accordance with the terms +and conditions of this Public License. + +c. Copyright and Similar Rights means copyright and/or similar rights closely +related to copyright including, without limitation, performance, broadcast, +sound recording, and Sui Generis Database Rights, without regard to how the +rights are labeled or categorized. For purposes of this Public License, the +rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +d. Effective Technological Measures means those measures that, in the absence +of proper authority, may not be circumvented under laws fulfilling obligations +under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, +and/or similar international agreements. + +e. Exceptions and Limitations means fair use, fair dealing, and/or any other +exception or limitation to Copyright and Similar Rights that applies to Your +use of the Licensed Material. + +f. Licensed Material means the artistic or literary work, database, or other +material to which the Licensor applied this Public License. + +g. Licensed Rights means the rights granted to You subject to the terms and +conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license. + +h. Licensor means the individual(s) or entity(ies) granting rights under this +Public License. + +i. Share means to provide material to the public by any means or process that +requires permission under the Licensed Rights, such as reproduction, public +display, public performance, distribution, dissemination, communication, or +importation, and to make material available to the public including in ways +that members of the public may access the material from a place and at a time +individually chosen by them. + +j. Sui Generis Database Rights means rights other than copyright resulting +from Directive 96/9/EC of the European Parliament and of the Council of 11 +March 1996 on the legal protection of databases, as amended and/or succeeded, +as well as other essentially equivalent rights anywhere in the world. + +k. You means the individual or entity exercising the Licensed Rights under +this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + +1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, +irrevocable license to exercise the Licensed Rights in the Licensed Material +to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + +2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions +and Limitations apply to Your use, this Public License does not apply, and +You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + +4. Media and formats; technical modifications allowed. The Licensor authorizes +You to exercise the Licensed Rights in all media and formats whether now known +or hereafter created, and to make technical modifications necessary to do +so. The Licensor waives and/or agrees not to assert any right or authority +to forbid You from making technical modifications necessary to exercise the +Licensed Rights, including technical modifications necessary to circumvent +Effective Technological Measures. For purposes of this Public License, simply +making modifications authorized by this Section 2(a)(4) never produces Adapted +Material. + + 5. Downstream recipients. + +A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed +Material automatically receives an offer from the Licensor to exercise the +Licensed Rights under the terms and conditions of this Public License. + +B. No downstream restrictions. You may not offer or impose any additional +or different terms or conditions on, or apply any Effective Technological +Measures to, the Licensed Material if doing so restricts exercise of the Licensed +Rights by any recipient of the Licensed Material. + +6. No endorsement. Nothing in this Public License constitutes or may be construed +as permission to assert or imply that You are, or that Your use of the Licensed +Material is, connected with, or sponsored, endorsed, or granted official status +by, the Licensor or others designated to receive attribution as provided in +Section 3(a)(1)(A)(i). + + b. Other rights. + +1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar personality +rights; however, to the extent possible, the Licensor waives and/or agrees +not to assert any such rights held by the Licensor to the limited extent necessary +to allow You to exercise the Licensed Rights, but not otherwise. + +2. Patent and trademark rights are not licensed under this Public License. + +3. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or through +a collecting society under any voluntary or waivable statutory or compulsory +licensing scheme. In all other cases the Licensor expressly reserves any right +to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following +conditions. + + a. Attribution. + +1. If You Share the Licensed Material (including in modified form), You must: + +A. retain the following if it is supplied by the Licensor with the Licensed +Material: + +i. identification of the creator(s) of the Licensed Material and any others +designated to receive attribution, in any reasonable manner requested by the +Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + +v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + +B. indicate if You modified the Licensed Material and retain an indication +of any previous modifications; and + +C. indicate the Licensed Material is licensed under this Public License, and +include the text of, or the URI or hyperlink to, this Public License. + +2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed Material. +For example, it may be reasonable to satisfy the conditions by providing a +URI or hyperlink to a resource that includes the required information. + +3. If requested by the Licensor, You must remove any of the information required +by Section 3(a)(1)(A) to the extent reasonably practicable. + +4. If You Share Adapted Material You produce, the Adapter's License You apply +must not prevent recipients of the Adapted Material from complying with this +Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to +Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database; + +b. if You include all or a substantial portion of the database contents in +a database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual contents) +is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or +a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. Unless otherwise separately undertaken by the Licensor, to the extent possible, +the Licensor offers the Licensed Material as-is and as-available, and makes +no representations or warranties of any kind concerning the Licensed Material, +whether express, implied, statutory, or other. This includes, without limitation, +warranties of title, merchantability, fitness for a particular purpose, non-infringement, +absence of latent or other defects, accuracy, or the presence or absence of +errors, whether or not known or discoverable. Where disclaimers of warranties +are not allowed in full or in part, this disclaimer may not apply to You. + +b. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or otherwise +for any direct, special, indirect, incidental, consequential, punitive, exemplary, +or other losses, costs, expenses, or damages arising out of this Public License +or use of the Licensed Material, even if the Licensor has been advised of +the possibility of such losses, costs, expenses, or damages. Where a limitation +of liability is not allowed in full or in part, this limitation may not apply +to You. + +c. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most closely +approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section +6(a), it reinstates: + +1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + +c. For the avoidance of doubt, this Section 6(b) does not affect any right +the Licensor may have to seek remedies for Your violations of this Public +License. + +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License. + +Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not +be interpreted to, reduce, limit, restrict, or impose conditions on any use +of the Licensed Material that could lawfully be made without permission under +this Public License. + +b. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent necessary +to make it enforceable. If the provision cannot be reformed, it shall be severed +from this Public License without affecting the enforceability of the remaining +terms and conditions. + +c. No term or condition of this Public License will be waived and no failure +to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation +upon, or waiver of, any privileges and immunities that apply to the Licensor +or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative +Commons may elect to apply one of its public licenses to material it publishes +and in those instances will be considered the "Licensor." The text of the +Creative Commons public licenses is dedicated to the public domain under the +CC0 Public Domain Dedication. Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark "Creative Commons" +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, understandings, +or agreements concerning use of licensed material. For the avoidance of doubt, +this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 000000000..a343ccd43 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,119 @@ +Creative Commons Legal Code + +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION +OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive +Copyright and Related Rights (defined below) upon the creator and subsequent +owner(s) (each and all, an "owner") of an original work of authorship and/or +a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later claims +of infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute +to the Commons to promote the ideal of a free culture and the further production +of creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or +her Copyright and Related Rights in the Work and the meaning and intended +legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or likeness +depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data +in a Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal protection +of databases, and under any national implementation thereof, including any +amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time extensions), +(iii) in any current or future medium and for any number of copies, and (iv) +for any purpose whatsoever, including without limitation commercial, advertising +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of Affirmer's +heirs and successors, fully intending that such Waiver shall not be subject +to revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so +judged Affirmer hereby grants to each affected person a royalty-free, non +transferable, non sublicensable, non exclusive, irrevocable and unconditional +license to exercise Affirmer's Copyright and Related Rights in the Work (i) +in all territories worldwide, (ii) for the maximum duration provided by applicable +law or treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional purposes +(the "License"). The License shall be deemed effective as of the date CC0 +was applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder of +the License, and in such case Affirmer hereby affirms that he or she will +not (i) exercise any of his or her remaining Copyright and Related Rights +in the Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express Statement +of Purpose. + + 4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, +licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness +for a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not discoverable, +all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons +that may apply to the Work or any use thereof, including without limitation +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims +responsibility for obtaining any necessary consents, permissions or other +rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or +use of the Work. diff --git a/LICENSE b/LICENSES/GPL-3.0-or-later.txt similarity index 100% rename from LICENSE rename to LICENSES/GPL-3.0-or-later.txt diff --git a/LICENSES/GPLv2+-libpwquality b/LICENSES/GPLv2+-libpwquality deleted file mode 100644 index 5d1984656..000000000 --- a/LICENSES/GPLv2+-libpwquality +++ /dev/null @@ -1,383 +0,0 @@ -Unless otherwise *explicitly* stated the following text describes the -licensed conditions under which the contents of this libpwquality release -may be distributed: - -------------------------------------------------------------------------- -Redistribution and use in source and binary forms of libpwquality, with -or without modification, are permitted provided that the following -conditions are met: - -1. Redistributions of source code must retain any existing copyright - notice, and this entire permission notice in its entirety, - including the disclaimer of warranties. - -2. Redistributions in binary form must reproduce all prior and current - copyright notices, this list of conditions, and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - -3. The name of any author may not be used to endorse or promote - products derived from this software without their specific prior - written permission. - -ALTERNATIVELY, this product may be distributed under the terms of the -GNU General Public License version 2 or later, in which case the provisions -of the GNU GPL are required INSTEAD OF the above restrictions. - -THIS SOFTWARE IS PROVIDED ``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 AUTHOR(S) 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. - -The full text of the GNU GENERAL PUBLIC LICENSE Version 2 is included -below. - -------------------------------------------------------------------------- - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 2 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, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/LICENSES/GPLv3+-ImageRegistry b/LICENSES/GPLv3+-ImageRegistry deleted file mode 100644 index 362e89766..000000000 --- a/LICENSES/GPLv3+-ImageRegistry +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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 . -*/ diff --git a/LICENSES/LGPLv2-KDAB b/LICENSES/LGPL-2.0-only.txt similarity index 100% rename from LICENSES/LGPLv2-KDAB rename to LICENSES/LGPL-2.0-only.txt diff --git a/LICENSES/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt new file mode 100644 index 000000000..130dffb31 --- /dev/null +++ b/LICENSES/LGPL-2.1-only.txt @@ -0,0 +1,467 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. + +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts as the +successor of the GNU Library Public License, version 2, hence the version +number 2.1.] + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public Licenses are intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. + +This license, the Lesser General Public License, applies to some specially +designated software packages--typically libraries--of the Free Software Foundation +and other authors who decide to use it. You can use it too, but we suggest +you first think carefully about whether this license or the ordinary General +Public License is the better strategy to use in any particular case, based +on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. +Our General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish); that you receive source code or can get it if you want it; that you +can change the software and use pieces of it in new free programs; and that +you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors +to deny you these rights or to ask you to surrender these rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for +a fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link +other code with the library, you must provide complete object files to the +recipients, so that they can relink them with the library after making changes +to the library and recompiling it. And you must show them these terms so they +know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, +and (2) we offer you this license, which gives you legal permission to copy, +distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no +warranty for the free library. Also, if the library is modified by someone +else and passed on, the recipients should know that what they have is not +the original version, so that the original author's reputation will not be +affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free +program. We wish to make sure that a company cannot effectively restrict the +users of a free program by obtaining a restrictive license from a patent holder. +Therefore, we insist that any patent license obtained for a version of the +library must be consistent with the full freedom of use specified in this +license. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License. This license, the GNU Lesser General Public License, +applies to certain designated libraries, and is quite different from the ordinary +General Public License. We use this license for certain libraries in order +to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared +library, the combination of the two is legally speaking a combined work, a +derivative of the original library. The ordinary General Public License therefore +permits such linking only if the entire combination fits its criteria of freedom. +The Lesser General Public License permits more lax criteria for linking other +code with the library. + +We call this license the "Lesser" General Public License because it does Less +to protect the user's freedom than the ordinary General Public License. It +also provides other free software developers Less of an advantage over competing +non-free programs. These disadvantages are the reason we use the ordinary +General Public License for many libraries. However, the Lesser license provides +advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the +widest possible use of a certain library, so that it becomes a de-facto standard. +To achieve this, non-free programs must be allowed to use the library. A more +frequent case is that a free library does the same job as widely used non-free +libraries. In this case, there is little to gain by limiting the free library +to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs +enables a greater number of people to use a large body of free software. For +example, permission to use the GNU C Library in non-free programs enables +many more people to use the whole GNU operating system, as well as its variant, +the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' +freedom, it does ensure that the user of a program that is linked with the +Library has the freedom and the wherewithal to run that program using a modified +version of the Library. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code derived +from the library, whereas the latter must be combined with the library in +order to run. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library or other program +which contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Lesser General +Public License (also called "this License"). Each licensee is addressed as +"you". + +A "library" means a collection of software functions and/or data prepared +so as to be conveniently linked with application programs (which use some +of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means either +the Library or any derivative work under copyright law: that is to say, a +work containing the Library or a portion of it, either verbatim or with modifications +and/or translated straightforwardly into another language. (Hereinafter, translation +is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications +to it. For a library, complete source code means all the source code for all +modules it contains, plus any associated interface definition files, plus +the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is covered +only if its contents constitute a work based on the Library (independent of +the use of the Library in a tool for writing it). Whether that is true depends +on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and disclaimer +of warranty; keep intact all the notices that refer to this License and to +the absence of any warranty; and distribute a copy of this License along with +the Library. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + + a) The modified work must itself be a software library. + +b) You must cause the files modified to carry prominent notices stating that +you changed the files and the date of any change. + +c) You must cause the whole of the work to be licensed at no charge to all +third parties under the terms of this License. + +d) If a facility in the modified Library refers to a function or a table of +data to be supplied by an application program that uses the facility, other +than as an argument passed when the facility is invoked, then you must make +a good faith effort to ensure that, in the event an application does not supply +such function or table, the facility still operates, and performs whatever +part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose +that is entirely well-defined independent of the application. Therefore, Subsection +2d requires that any application-supplied function or table used by this function +must be optional: if the application does not supply it, the square root function +must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may opt to apply the terms of the ordinary GNU General Public License +instead of this License to a given copy of the Library. To do this, you must +alter all the notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to this License. +(If a newer version than version 2 of the ordinary GNU General Public License +has appeared, then you can specify that version instead if you wish.) Do not +make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, +so the ordinary GNU General Public License applies to all subsequent copies +and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of +it, under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete corresponding +machine-readable source code, which must be distributed under the terms of +Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated +place, then offering equivalent access to copy the source code from the same +place satisfies the requirement to distribute the source code, even though +third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with it, +is called a "work that uses the Library". Such a work, in isolation, is not +a derivative work of the Library, and therefore falls outside the scope of +this License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that +is part of the Library, the object code for the work may be a derivative work +of the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not precisely +defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute +the object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are linked +directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work +that uses the Library" with the Library to produce a work containing portions +of the Library, and distribute that work under terms of your choice, provided +that the terms permit modification of the work for the customer's own use +and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library +is used in it and that the Library and its use are covered by this License. +You must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library among +them, as well as a reference directing the user to the copy of this License. +Also, you must do one of these things: + +a) Accompany the work with the complete corresponding machine-readable source +code for the Library including whatever changes were used in the work (which +must be distributed under Sections 1 and 2 above); and, if the work is an +executable linked with the Library, with the complete machine-readable "work +that uses the Library", as object code and/or source code, so that the user +can modify the Library and then relink to produce a modified executable containing +the modified Library. (It is understood that the user who changes the contents +of definitions files in the Library will not necessarily be able to recompile +the application to use the modified definitions.) + +b) Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (1) uses at run time a copy of the library +already present on the user's computer system, rather than copying library +functions into the executable, and (2) will operate properly with a modified +version of the library, if the user installs one, as long as the modified +version is interface-compatible with the version that the work was made with. + +c) Accompany the work with a written offer, valid for at least three years, +to give the same user the materials specified in Subsection 6a, above, for +a charge no more than the cost of performing this distribution. + +d) If distribution of the work is made by offering access to copy from a designated +place, offer equivalent access to copy the above specified materials from +the same place. + +e) Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must +include any data and utility programs needed for reproducing the executable +from it. However, as a special exception, the materials to be distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating system. +Such a contradiction means you cannot use both them and the Library together +in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side +in a single library together with other library facilities not covered by +this License, and distribute such a combined library, provided that the separate +distribution of the work based on the Library and of the other library facilities +is otherwise permitted, and provided that you do these two things: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities. This must be distributed +under the terms of the Sections above. + +b) Give prominent notice with the combined library of the fact that part of +it is a work based on the Library, and explaining where to find the accompanying +uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not +have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Library or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Library +(or any work based on the Library), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), +the recipient automatically receives a license from the original licensor +to copy, distribute, link with or modify the Library subject to these terms +and conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Library at all. For example, if a +patent license would not permit royalty-free redistribution of the Library +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Library under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of +the Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Library does not specify a license version number, you may choose any version +ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the author +to ask for permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make exceptions +for this. Our decision will be guided by the two goals of preserving the free +status of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General Public +License). + +To apply these terms, attach the following notices to the library. It is safest +to attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the "copyright" +line and a pointer to where the full notice is found. + +< one line to give the library's name and an idea of what it does. > + +Copyright (C) < year > < name of author > + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) +any later version. + +This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. + +You should have received a copy of the GNU Lesser General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 51 +Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information +on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the library, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in + +the library `Frob' (a library for tweaking knobs) written + +by James Random Hacker. + +< signature of Ty Coon > , 1 April 1990 + +Ty Coon, President of Vice + +That's all there is to it! diff --git a/LICENSES/LGPL-3.0-or-later.txt b/LICENSES/LGPL-3.0-or-later.txt new file mode 100644 index 000000000..bd405afbe --- /dev/null +++ b/LICENSES/LGPL-3.0-or-later.txt @@ -0,0 +1,163 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms +and conditions of version 3 of the GNU General Public License, supplemented +by the additional permissions listed below. + + 0. Additional Definitions. + + + +As used herein, "this License" refers to version 3 of the GNU Lesser General +Public License, and the "GNU GPL" refers to version 3 of the GNU General Public +License. + + + +"The Library" refers to a covered work governed by this License, other than +an Application or a Combined Work as defined below. + + + +An "Application" is any work that makes use of an interface provided by the +Library, but which is not otherwise based on the Library. Defining a subclass +of a class defined by the Library is deemed a mode of using an interface provided +by the Library. + + + +A "Combined Work" is a work produced by combining or linking an Application +with the Library. The particular version of the Library with which the Combined +Work was made is also called the "Linked Version". + + + +The "Minimal Corresponding Source" for a Combined Work means the Corresponding +Source for the Combined Work, excluding any source code for portions of the +Combined Work that, considered in isolation, are based on the Application, +and not on the Linked Version. + + + +The "Corresponding Application Code" for a Combined Work means the object +code and/or source code for the Application, including any data and utility +programs needed for reproducing the Combined Work from the Application, but +excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License without +being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a facility +refers to a function or data to be supplied by an Application that uses the +facility (other than as an argument passed when the facility is invoked), +then you may convey a copy of the modified version: + +a) under this License, provided that you make a good faith effort to ensure +that, in the event an Application does not supply the function or data, the +facility still operates, and performs whatever part of its purpose remains +meaningful, or + +b) under the GNU GPL, with none of the additional permissions of this License +applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from a header +file that is part of the Library. You may convey such object code under terms +of your choice, provided that, if the incorporated material is not limited +to numerical parameters, data structure layouts and accessors, or small macros, +inline functions and templates (ten or fewer lines in length), you do both +of the following: + +a) Give prominent notice with each copy of the object code that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license document. + + 4. Combined Works. + +You may convey a Combined Work under terms of your choice that, taken together, +effectively do not restrict modification of the portions of the Library contained +in the Combined Work and reverse engineering for debugging such modifications, +if you also do each of the following: + +a) Give prominent notice with each copy of the Combined Work that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during execution, include +the copyright notice for the Library among these notices, as well as a reference +directing the user to the copies of the GNU GPL and this license document. + + d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this License, +and the Corresponding Application Code in a form suitable for, and under terms +that permit, the user to recombine or relink the Application with a modified +version of the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (a) uses at run time a copy of the Library +already present on the user's computer system, and (b) will operate properly +with a modified version of the Library that is interface-compatible with the +Linked Version. + +e) Provide Installation Information, but only if you would otherwise be required +to provide such information under section 6 of the GNU GPL, and only to the +extent that such information is necessary to install and execute a modified +version of the Combined Work produced by recombining or relinking the Application +with a modified version of the Linked Version. (If you use option 4d0, the +Installation Information must accompany the Minimal Corresponding Source and +Corresponding Application Code. If you use option 4d1, you must provide the +Installation Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + + 5. Combined Libraries. + +You may place library facilities that are a work based on the Library side +by side in a single library together with other library facilities that are +not Applications and are not covered by this License, and convey such a combined +library under terms of your choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities, conveyed under the +terms of this License. + +b) Give prominent notice with the combined library that part of it is a work +based on the Library, and explaining where to find the accompanying uncombined +form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you +received it specifies that a certain numbered version of the GNU Lesser General +Public License "or any later version" applies to it, you have the option of +following the terms and conditions either of that published version or of +any later version published by the Free Software Foundation. If the Library +as you received it does not specify a version number of the GNU Lesser General +Public License, you may choose any version of the GNU Lesser General Public +License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether +future versions of the GNU Lesser General Public License shall apply, that +proxy's public statement of acceptance of any version is permanent authorization +for you to choose that version for the Library. diff --git a/LICENSES/LGPLv2.1-Presentation b/LICENSES/LGPLv2.1-Presentation deleted file mode 100644 index 1bb6461eb..000000000 --- a/LICENSES/LGPLv2.1-Presentation +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QML Presentation System. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QML Presentation System. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - diff --git a/LICENSES/LGPLv2.1-Presentation-Exception b/LICENSES/LGPLv2.1-Presentation-Exception deleted file mode 100644 index 7e2e30ff9..000000000 --- a/LICENSES/LGPLv2.1-Presentation-Exception +++ /dev/null @@ -1,22 +0,0 @@ -Digia Qt LGPL Exception version 1.1 - -As an additional permission to the GNU Lesser General Public License version -2.1, the object code form of a "work that uses the Library" may incorporate -material from a header file that is part of the Library. You may distribute -such object code under terms of your choice, provided that: - (i) the header files of the Library have not been modified; and - (ii) the incorporated material is limited to numerical parameters, data - structure layouts, accessors, macros, inline functions and - templates; and - (iii) you comply with the terms of Section 6 of the GNU Lesser General - Public License version 2.1. - -Moreover, you may apply this exception to a modified version of the Library, -provided that such modification does not involve copying material from the -Library into the modified Library's header files unless such material is -limited to (i) numerical parameters; (ii) data structure layouts; -(iii) accessors; and (iv) small macros, templates and inline functions of -five lines or less in length. - -Furthermore, you are not required to apply this additional permission to a -modified version of the Library. diff --git a/LICENSES/LGPLv3-Breeze b/LICENSES/LGPLv3-Breeze deleted file mode 100644 index 63d73657c..000000000 --- a/LICENSES/LGPLv3-Breeze +++ /dev/null @@ -1,209 +0,0 @@ -The Breeze Icon Theme in icons/ - - Copyright (C) 2014 Uri Herrera and others - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . - -Clarification: - - The GNU Lesser General Public License or LGPL is written for - software libraries in the first place. We expressly want the LGPL to - be valid for this artwork library too. - - KDE Breeze theme icons is a special kind of software library, it is an - artwork library, it's elements can be used in a Graphical User Interface, or - GUI. - - Source code, for this library means: - - where they exist, SVG; - - otherwise, if applicable, the multi-layered formats xcf or psd, or - otherwise png. - - The LGPL in some sections obliges you to make the files carry - notices. With images this is in some cases impossible or hardly useful. - - With this library a notice is placed at a prominent place in the directory - containing the elements. You may follow this practice. - - The exception in section 5 of the GNU Lesser General Public License covers - the use of elements of this art library in a GUI. - - https://vdesign.kde.org/ - ------ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/LICENSES/MIT-QtWaitingSpinner b/LICENSES/MIT-QtWaitingSpinner deleted file mode 100644 index c85c97aeb..000000000 --- a/LICENSES/MIT-QtWaitingSpinner +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Original Work Copyright (c) 2012-2015 Alexander Turkin -Modified 2014 by William Hallatt - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 000000000..204b93da4 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,19 @@ +MIT License Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 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/calamares.desktop b/calamares.desktop index 78c943ddb..82c94485e 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 diff --git a/ci/AppImage.md b/ci/AppImage.md deleted file mode 100644 index 7fa51a8bc..000000000 --- a/ci/AppImage.md +++ /dev/null @@ -1,45 +0,0 @@ -# AppImage building for Calamares - -> It is possible to build Calamares as an AppImage (perhaps other -> containerized formats as well). This might make sense for -> OEM phase-1 deployments in environments where Calamares is -> not using the native toolkit. - -## AppImage tools - -You will need - - [`linuxdeploy-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy/releases) - - [`linuxdeploy-plugin-qt-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases) - - [`linuxdeploy-plugin-conda.sh`](https://github.com/linuxdeploy/linuxdeploy-plugin-conda) - -These tools should run -- they are bundled as AppImages after all -- on -any modern Linux system. The [AppImage packaging documentation](https://docs.appimage.org/packaging-guide/) -explains how the whole tooling works. - -If the tools are not present, the build script (see below) will download them, -but you should save them for later. - -## AppImage build - -From the **source** directory, run `ci/AppImage.sh`: - - Use `--tools-dir` to copy the tools from a local cache rather than - downloading them again. - - Run it with `--cmake-args` for special CMake handling. - - Use `--skip-build` to avoid rebuilding Calamares all the time. - - Use `--config-dir` to copy in Calamares configuration files (e.g. - *settings.conf* and the module configuration files) from a given - directory. - -The build process will: - - copy (or download) the AppImage tools into a fresh build directory - - configure and build Calamares with suitable settings - - modifies the standard `.desktop` file to be AppImage-compatible - - builds the image with the AppImage tools - -## AppImage caveats - -The resulting AppImage, `Calamares-x86_64.AppImage`, can be run as if it is -a regular Calamares executable. For internal reasons it always passes the -`-X` flag; any other command-line flags are passed in unchanged. Internally, -`XDG_*_DIRS` are used to get Calamares to find the resources inside the AppImage -rather than in the host system. diff --git a/ci/AppImage.sh b/ci/AppImage.sh index 1bb067b1e..116023c53 100755 --- a/ci/AppImage.sh +++ b/ci/AppImage.sh @@ -1,9 +1,8 @@ #! /bin/sh # +# SPDX-FileCopyrightText: 2019 Adriaan de Groot # SPDX-License-Identifier: BSD-2-Clause # -# 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: diff --git a/ci/HACKING.md b/ci/HACKING.md deleted file mode 100644 index f1c8b750b..000000000 --- a/ci/HACKING.md +++ /dev/null @@ -1 +0,0 @@ -This has moved [to the wiki](https://github.com/calamares/calamares/wiki/Develop-Code). diff --git a/ci/RELEASE.md b/ci/RELEASE.md index 524a67a65..3bb6b1b9e 100644 --- a/ci/RELEASE.md +++ b/ci/RELEASE.md @@ -1,21 +1,18 @@ # 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 +22,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 +34,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 +55,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 +87,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. + diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh index 69aaec0be..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 @@ -78,7 +81,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 +98,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,20 +109,20 @@ 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 # # 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 @@ -139,7 +142,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 # 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 44f9fe91f..d2ce360bb 100755 --- a/ci/calamaresstyle +++ b/ci/calamaresstyle @@ -1,7 +1,16 @@ #!/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 +# Requires astyle >= 2.04 and clang-format-7 -8 or -9 +# +# Clang-format-10 is **not** supported, since it changes a default +# that re-introduces a space into empty function bodies; this +# can be turned off with a style setting, but that breaks +# older format versions which don't recognize the setting. # # You can pass in directory names, in which case the files # in that directory (NOT below it) are processed. @@ -38,8 +47,10 @@ done style_some() { - $AS --options=$(dirname $0)/astylerc --quiet "$@" - $CF -i -style=file "$@" + if test -n "$*" ; then + $AS --options=$(dirname $0)/astylerc --quiet "$@" + $CF -i -style=file "$@" + fi } if test "x$any_dirs" = "xyes" ; then 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 aefaca6f8..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 # @@ -24,7 +27,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" 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 9ce8f0c30..cedae6682 100644 --- a/ci/txcheck.sh +++ b/ci/txcheck.sh @@ -1,10 +1,10 @@ #! /bin/sh ### LICENSE -# === This file is part of Calamares - === +# === 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. @@ -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 '/ === +# === 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. @@ -64,7 +64,7 @@ tx pull --force --source --all # so clean them up after pulling. # drop_language() { - rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts + rm -rf lang/python/"$1" lang/calamares_"$1".ts grep -v "\\[$1]" calamares.desktop > calamares.desktop.new mv calamares.desktop.new calamares.desktop } @@ -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 diff --git a/ci/txpush.sh b/ci/txpush.sh index 00d8d401b..363a234e8 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -1,11 +1,11 @@ #!/bin/sh ### LICENSE -# === This file is part of Calamares - === +# === 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 139ebe523..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. # @@ -8,25 +11,137 @@ # Run it with a -v command-line option to get extra output on # actual translation percentages. import sys +import argparse -def get_tx_credentials(): +class TXError(Exception): + pass + + +class TransifexGetter(object): """ - Gets the API token out of the user's .transifexrc (this is supposed - to be secure). + 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. """ - 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) + def __init__(self): + token = self.get_tx_credentials() + if token is None: + raise TXError("Could not get Transifex API token") - return parser.get("https://www.transifex.com", "password") - except IOError as e: - return None + 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") -def output_langs(all_langs, label, filterfunc): + 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 + + +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))) + + +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 + + +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 = [] + 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 + + 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)) + print("# CMakeLists.txt updated") + + +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. @@ -42,12 +157,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(token, 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 @@ -56,12 +172,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. @@ -71,13 +181,11 @@ def get_tx_stats(token, 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 = [] - - j = r.json() - languages = j["stats"] - 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 @@ -91,23 +199,35 @@ def get_tx_stats(token, 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 main(): - verbose = (sys.argv[-1] == "-v") - cred = get_tx_credentials() - if cred: - return get_tx_stats(cred, verbose) - else: - print("! Could not find API token in ~/.transifexrc") - return 1 + 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() + 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)) + return 1; return 0 if __name__ == "__main__": 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/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..a73ca38a9 100644 --- a/data/completion/bash/calamares +++ b/data/completion/bash/calamares @@ -1,19 +1,10 @@ -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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 +# 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 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 diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index efc6d6188..8658653ab 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,25 +1,20 @@ -# === This file is part of Calamares - === +# === 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 # ### +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/lang/calamares_ar.ts b/lang/calamares_ar.ts index 2e3960701..460235640 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 المثبت @@ -517,134 +517,134 @@ The installer will quit and all changes will be lost. نموذج - + 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. - + + <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 @@ -1228,7 +1258,8 @@ The installer will quit and all changes will be lost. أكّد عبارة المرور - + + Please enter the same passphrase in both boxes. @@ -1236,37 +1267,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 +1548,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 +1610,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 +1711,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 +1738,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location الموقع @@ -1784,7 +1800,12 @@ The installer will quit and all changes will be lost. 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. @@ -1945,247 +1966,247 @@ The installer will quit and all changes will be lost. 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 @@ -2519,117 +2540,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... جاري جمع معلومات عن النظام... - + 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 +2698,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 +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. @@ -3422,28 +3443,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 +3472,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 +3552,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 +3570,7 @@ Output: UsersViewStep - + Users المستخدمين @@ -3792,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 @@ -3812,44 +3803,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 +3848,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..ad9c8a89a 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. - + ভৰ্টিকৰন বিফল | @@ -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 ইনস্তলাৰ @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. ৰূপ - + Select storage de&vice: স্তোৰেজ ডিভাইচ চয়ণ কৰক (&v): - - - - + + + + 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 কৰা হ'ব আৰু %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. + সময় অঞ্চলৰ সিদ্ধান্ত কৰক %`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) @@ -742,7 +742,7 @@ The installer will quit and all changes will be lost. Network Installation. (Disabled: internal error) - + নেটৱৰ্ক ইনস্তলেচন। (নিস্ক্ৰিয়: ভিতৰুৱা দোষ) @@ -777,22 +777,62 @@ 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> + + + + Your username is too long. + আপোনাৰ ইউজাৰ নাম বহুত দীঘল। + + + + '%1' is not allowed as username. + '%1'ক ব্যৱহাৰকাৰীৰ নাম হিচাপে ব্যৱহাৰ কৰা অবধ্য | + + + + 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. + '%1'ক আয়োজকৰ নাম হিচাপে ব্যৱহাৰ কৰা অবধ্য | + + + + Only letters, numbers, underscore and hyphen are allowed. + কেৱল বৰ্ণ, সংখ্যা, underscore আৰু hyphenৰ হে মাত্ৰ অনুমতি আছে। @@ -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 @@ -1221,7 +1251,8 @@ The installer will quit and all changes will be lost. পাছফ্ৰেছ নিশ্ৱিত কৰক - + + Please enter the same passphrase in both boxes. অনুগ্ৰহ কৰি দুয়োটা বাকচত একে পাছফ্ৰেছ প্রবিষ্ট কৰক। @@ -1229,37 +1260,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 +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/%2 চেট্ কৰক। @@ -1572,32 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location অৱস্থান @@ -1753,7 +1769,7 @@ The installer will quit and all changes will be lost. Could not configure LUKS key file on partition %1. - + %1 বিভাজনত LUKS কি ফাইল কনফিগাৰ কৰিব পৰা নগ'ল। @@ -1777,11 +1793,18 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + সময় অঞ্চল: %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. - + অনুগ্ৰহ কৰি নিজৰ প্রিয় স্থান নক্সাখ্নত বাছক জাতে ইস্নস্তালাৰটোৱে অপোনাক থলী + আৰু সময় অঞ্চলৰ ছেটিংছ আপোৰ বাবে মিলাই দায়ক | আপোনি পৰামৰ্শমূলক ছেটিংছবোৰক তলত অনুকূলিত কৰিব পাৰে | নক্সাখ্নত পৈন্তেৰদালক টানি অনুসন্ধান কৰিব | + আৰু +/- বুটামেৰে যোম in/out কৰক বা মাউছৰ সচৰোলৰও ব্যবহাৰ কৰিব পাৰে | @@ -1795,92 +1818,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 - + সঁজুলি @@ -1888,7 +1911,7 @@ The installer will quit and all changes will be lost. Notes - + টোকা @@ -1927,258 +1950,258 @@ 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. - + সময় অঞ্চল বাছিবলৈ, ইণ্টাৰনেটত সংশ্লিষ্ট কৰি ৰাখিব | সংশ্লিষ্ট কৰি ইন্স্তালাৰটো পুনৰাৰম্ভ কৰক | আপোনি ভাসা অৰু থলীৰ ছেটিংছবোৰ তলত অনুকূলিত কৰিব পাৰে | PWQ - + Password is too short পাছৱৰ্ড বহুত ছুটি - + Password is too long পাছৱৰ্ড বহুত দীঘল - + Password is too weak পাছৱৰ্ড বহুত দুৰ্বল - + 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 পাছৱৰ্ডকেইটাৰ মাজত কেৱল lower/upper caseৰ পাৰ্থক্য আছে - + 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টাতকৈ কম uppercaseৰ বৰ্ণ আছে - + The password contains too few uppercase letters পাছৱৰ্ডটোত বহুত কম সংখ্যাক কম uppercaseৰ বৰ্ণ আছে - + The password contains less than %1 lowercase letters পাছৱৰ্ডটোত %1টাতকৈ কম lowercaseৰ বৰ্ণ আছে - + The password contains too few lowercase letters পাছৱৰ্ডটোত বহুত কম সংখ্যাক কম lowercaseৰ বৰ্ণ আছে - + The password contains less than %1 non-alphanumeric characters পাছৱৰ্ডটোত %1টাতকৈ কম non-alphanumeric বৰ্ণ আছে - + The password contains too few non-alphanumeric characters পাছৱৰ্ডটোত বহুত কম সংখ্যাক কম non-alphanumeric বৰ্ণ আছে - + The password is shorter than %1 characters পাছৱৰ্ডটোত %1টা বৰ্ণতকৈ ছুটি - + The password is too short পাছৱৰ্ডটো বহুত ছুটি - + 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 পাছৱৰ্ডটো অভিধানৰ পৰীক্ষণত বিফল হ'ল - + Unknown setting - %1 অজ্ঞাত ছেটিংস - %1 - + Unknown setting অজ্ঞাত ছেটিংস - + 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 গভীৰ বিফলতা - + Unknown error অজ্ঞাত ক্ৰুটি - + Password is empty খালী পাছৱৰ্ড @@ -2512,119 +2535,119 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... চিছটেম তথ্য সংগ্ৰহ কৰা হৈ আছে। - + 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. - + %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 ফ্লেগ ছেট কৰা হোৱা নাই। ফ্লেগ্ ছেট কৰিবলৈ উভতি যাওক আৰু বিভাজন সলনি কৰক। আপুনি ফ্লেগ ছেট নকৰাকৈ অগ্ৰসৰ হ'ব পাৰে কিন্তু ইয়াৰ ফলত চিছটেম বিফল হ'ব পাৰে। - 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. - + 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. + + + 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 +2693,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. কন্ফিগাৰ কৰা গোটেই ফাইল জমা ৰাখিব নোৱৰি। @@ -2837,7 +2860,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/>স্থাপন প্ৰক্ৰিয়া অবিৰত ৰাখিব পাৰিব, কিন্তু কিছুমান সুবিধা নিষ্ক্রিয় হৈ থাকিব। @@ -2948,13 +2971,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/>স্থাপন প্ৰক্ৰিয়া অবিৰত ৰাখিব পাৰিব, কিন্তু কিছুমান সুবিধা নিষ্ক্রিয় হৈ থাকিব। @@ -3163,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 ডিৰেক্টৰিত কিবোৰ্ড কনফিগাৰেচন লিখাত বিফল হ'ল। @@ -3418,57 +3442,57 @@ 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 ব্যৱহাৰকৰ্তাৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, কেলামাৰেচ ক্ৰুটি %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. মেচিনৰ প্ৰতিক্ৰিয়া ঠাকভাৱে কন্ফিগাৰ কৰিব পৰা নগ'ল, কেলামাৰেচ ক্ৰুটি %1। @@ -3488,7 +3512,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> @@ -3503,17 +3527,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লৈ তথ্য পঠাব। @@ -3527,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. - আপোনাৰ ব্যৱহাৰকাৰী নাম 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 +3569,7 @@ Output: UsersViewStep - + Users ব্যৱহাৰকাৰীসকল @@ -3742,7 +3736,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ৰ দ্বাৰা প্ৰযোজিত। @@ -3777,95 +3771,98 @@ 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 - + পাছলৈ 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 - + পাছলৈ 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 - + সলনি @@ -3874,7 +3871,8 @@ Output: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> + <p>এই খিনি ৰিলিজ নোতৰ উদাহৰণ </p> @@ -3907,7 +3905,7 @@ Output: Back - + পাছলৈ @@ -3916,32 +3914,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_ast.ts b/lang/calamares_ast.ts index 4b17a8a11..2afefa69f 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 @@ -509,134 +509,134 @@ L'instalador va colar y van perdese tolos cambeos. Formulariu - + Select storage de&vice: Esbilla un preséu d'al&macenamientu: - - - - + + + + Current: Anguaño: - + After: Dempués: - - <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) @@ -776,21 +776,61 @@ 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> + + + + 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. @@ -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 @@ -1220,7 +1250,8 @@ L'instalador va colar y van perdese tolos cambeos. Confirmación de la fras de pasu - + + Please enter the same passphrase in both boxes. Introduz la mesma fras de pasu en dambes caxes, por favor. @@ -1228,37 +1259,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. @@ -1402,7 +1433,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) @@ -1417,7 +1448,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 @@ -1509,12 +1540,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 +1602,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 +1703,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 +1730,7 @@ L'instalador va colar y van perdese tolos cambeos. LocaleViewStep - + Location Allugamientu @@ -1776,7 +1792,12 @@ L'instalador va colar y van perdese tolos cambeos. 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. @@ -1869,7 +1890,7 @@ L'instalador va colar y van perdese tolos cambeos. Theming - + Estilu @@ -1937,247 +1958,247 @@ L'instalador va colar y van perdese tolos cambeos. PWQ - + Password is too short La contraseña ye percurtia - + Password is too long La contraseña ye perllarga - + Password is too weak La contraseña ye perfeble - + Memory allocation error when setting '%1' Fallu d'asignación de memoria al afitar «%1» - + Memory allocation error Fallu d'asignación de memoria - + The password is the same as the old one La contraseña ye la mesma que la vieya - + The password is a palindrome La contraseña ye un palíndromu - + The password differs with case changes only La contraseña namás s'estrema polos cambeos de mayúscules y minúscules - + The password is too similar to the old one La contraseña aseméyase muncho a la vieya - + The password contains the user name in some form La contraseña contién de dalgún mou'l nome d'usuariu - + The password contains words from the real name of the user in some form La contraseña contién de dalgún mou pallabres del nome real del usuariu - + The password contains forbidden words in some form La contraseña contién de dalgún mou pallabres prohibíes - + The password contains less than %1 digits La contraseña contién menos de %1 díxitos - + The password contains too few digits La contraseña contién prepocos díxitos - + The password contains less than %1 uppercase letters La contraseña contién menos de %1 lletres mayúscules - + The password contains too few uppercase letters La contraseña contién perpoques lletres mayúscules - + The password contains less than %1 lowercase letters La contraseña contién menos de %1 lletres minúscules - + The password contains too few lowercase letters La contraseña contién perpoques lletres minúscules - + The password contains less than %1 non-alphanumeric characters La contraseña contién menos de %1 caráuteres que nun son alfanumbéricos - + The password contains too few non-alphanumeric characters La contraseña contién perpocos caráuteres que nun son alfanumbéricos - + The password is shorter than %1 characters La contraseña tien menos de %1 caráuteres - + The password is too short La contraseña ye percurtia - + The password is just rotated old one La contraseña ye l'anterior pero al aviesu - + The password contains less than %1 character classes La contraseña contién menos de %1 clases de caráuteres - + The password does not contain enough character classes La contraseña nun contién abondes clases de caráuteres - + The password contains more than %1 same characters consecutively La contraseña contién más de %1 caráuteres iguales consecutivamente - + The password contains too many same characters consecutively La contraseña contién milenta caráuteres iguales consecutivamente - + The password contains more than %1 characters of the same class consecutively La contraseña contién más de %1 caráuteres de la mesma clas consecutivamente - + The password contains too many characters of the same class consecutively La contraseña contién milenta caráuteres de la mesma clas consecutivamente - + The password contains monotonic sequence longer than %1 characters La contraseña tien una secuencia monotónica de más de %1 caráuteres - + The password contains too long of a monotonic character sequence La contraseña contién una secuencia perllarga de caráuteres monotónicos - + No password supplied Nun s'apurrió nenguna contraseña - + Cannot obtain random numbers from the RNG device Nun puen consiguise los númberos al debalu del preséu RNG - + Password generation failed - required entropy too low for settings Falló la xeneración de la contraseña - ríquese una entropía perbaxa pa los axustes - + The password fails the dictionary check - %1 La contraseña falla la comprobación del diccionariu - %1 - + The password fails the dictionary check La contraseña falla la comprobación del diccionariu - + Unknown setting - %1 Desconozse l'axuste - %1 - + Unknown setting Desconozse l'axuste - + Bad integer value of setting - %1 El valor enteru del axuste ye incorreutu - %1 - + Bad integer value El valor enteru ye incorreutu - + Setting %1 is not of integer type L'axuste %1 nun ye de la triba enteru - + Setting is not of integer type L'axuste nun ye de la triba enteru - + Setting %1 is not of string type L'axuste %1 nun ye de la triba cadena - + Setting is not of string type L'axuste nun ye de la triba cadena - + Opening the configuration file failed Falló l'apertura del ficheru de configuración - + The configuration file is malformed El ficheru de configuración ta malformáu - + Fatal failure Fallu fatal - + Unknown error Desconozse'l fallu - + Password is empty La contraseña ta balera @@ -2511,117 +2532,117 @@ L'instalador va colar y van perdese tolos cambeos. PartitionViewStep - + Gathering system information... 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 +2690,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. @@ -2836,7 +2857,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> @@ -2947,13 +2969,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> @@ -3162,29 +3186,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 +3441,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 +3470,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. @@ -3502,7 +3526,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. @@ -3526,47 +3550,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 +3568,7 @@ Salida: UsersViewStep - + Users Usuarios @@ -3787,19 +3781,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 +3801,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 +3846,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..599441a96 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ı @@ -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ı @@ -510,134 +510,134 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Format - + Select storage de&vice: Yaddaş ci&hazını seçmək: - - - - + + + + Current: Cari: - + After: Sonra: - - <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. + <strong>Əl ilə bölmək</strong><br/>Siz bölməni özünüz yarada və ölçüsünü dəyişə bilərsiniz. - + 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. + Saat quraşağını təyin etmək %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. + İstifadəçi adı '%1' ola bilməz + + + + 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. + Host_adı '%1' ola bilməz + + + + 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 @@ -1221,7 +1251,8 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Şifrəni təsdiq edin - + + Please enter the same passphrase in both boxes. Lütfən, hər iki sahəyə eyni şifrəni daxil edin. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocaleViewStep - + Location Məkan @@ -1777,7 +1793,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Map - + + Timezone: %1 + Saat qurşağı: %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. @@ -1940,247 +1961,247 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. PWQ - + Password is too short Şifrə çox qısadır - + Password is too long Şifrə çox uzundur - + Password is too weak Şifrə çox zəifdir - + Memory allocation error when setting '%1' '%1' ayarlanarkən yaddaş bölgüsü xətası - + Memory allocation error Yaddaş bölgüsü xətası - + The password is the same as the old one Şifrə köhnə şifrə ilə eynidir - + The password is a palindrome Şifrə tərsinə oxunuşu ilə eynidir - + The password differs with case changes only Şifrə yalnız hal dəyişiklikləri ilə fərqlənir - + The password is too similar to the old one Şifrə köhnə şifrə ilə çox oxşardır - + The password contains the user name in some form Şifrənin tərkibində istifadəçi adı var - + The password contains words from the real name of the user in some form Şifrə istifadəçinin əsl adına oxşar sözlərdən ibarətdir - + The password contains forbidden words in some form Şifrə qadağan edilmiş sözlərdən ibarətdir - + The password contains less than %1 digits Şifrə %1-dən az rəqəmdən ibarətdir - + The password contains too few digits Şifrə çox az rəqəmdən ibarətdir - + The password contains less than %1 uppercase letters Şifrə %1-dən az böyük hərfdən ibarətdir - + The password contains too few uppercase letters Şifrə çox az böyük hərflərdən ibarətdir - + The password contains less than %1 lowercase letters Şifrə %1-dən az kiçik hərflərdən ibarətdir - + The password contains too few lowercase letters Şifrə çox az kiçik hərflərdən ibarətdir - + The password contains less than %1 non-alphanumeric characters Şifrə %1-dən az alfasayısal olmayan simvollardan ibarətdir - + The password contains too few non-alphanumeric characters Şifrə çox az alfasayısal olmayan simvollardan ibarətdir - + The password is shorter than %1 characters Şifrə %1 simvoldan qısadır - + The password is too short Şifrə çox qısadır - + The password is just rotated old one Yeni şifrə sadəcə olaraq tərsinə çevirilmiş köhnəsidir - + The password contains less than %1 character classes Şifrə %1-dən az simvol sinifindən ibarətdir - + The password does not contain enough character classes Şifrənin tərkibində kifayət qədər simvol sinifi yoxdur - + The password contains more than %1 same characters consecutively Şifrə ardıcıl olaraq %1-dən çox eyni simvollardan ibarətdir - + The password contains too many same characters consecutively Şifrə ardıcıl olaraq çox oxşar simvollardan ibarətdir - + The password contains more than %1 characters of the same class consecutively Şifrə ardıcıl olaraq eyni sinifin %1-dən çox simvolundan ibarətdir - + The password contains too many characters of the same class consecutively Şifrə ardıcıl olaraq eyni sinifin çox simvolundan ibarətdir - + The password contains monotonic sequence longer than %1 characters Şifrə %1 simvoldan uzun olan monoton ardıcıllıqdan ibarətdir - + The password contains too long of a monotonic character sequence Şifrə çox uzun monoton simvollar ardıcıllığından ibarətdir - + No password supplied Şifrə verilməyib - + Cannot obtain random numbers from the RNG device RNG cihazından təsadüfi nömrələr əldə etmək olmur - + Password generation failed - required entropy too low for settings Şifrə yaratma uğursuz oldu - ayarlar üçün tələb olunan entropiya çox aşağıdır - + The password fails the dictionary check - %1 Şifrənin lüğət yoxlaması alınmadı - %1 - + The password fails the dictionary check Şifrənin lüğət yoxlaması alınmadı - + Unknown setting - %1 Naməlum ayarlar - %1 - + Unknown setting Naməlum ayarlar - + Bad integer value of setting - %1 Ayarın pozulmuş tam dəyəri - %1 - + Bad integer value Pozulmuş tam dəyər - + Setting %1 is not of integer type %1 -i ayarı tam say deyil - + Setting is not of integer type Ayar tam say deyil - + Setting %1 is not of string type %1 ayarı sətir deyil - + Setting is not of string type Ayar sətir deyil - + Opening the configuration file failed Tənzəmləmə faylının açılması uğursuz oldu - + The configuration file is malformed Tənzimləmə faylı qüsurludur - + Fatal failure Ciddi qəza - + Unknown error Naməlum xəta - + Password is empty Şifrə böşdur @@ -2515,117 +2536,117 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril PartitionViewStep - + Gathering system information... 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 +2694,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 +3190,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 +3445,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 +3474,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 +3554,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 +3572,7 @@ Output: UsersViewStep - + Users İstifadəçilər @@ -3805,21 +3796,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>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>. + <h1>Yerlər</h1></br> + Sistemin məkan ayarları say və tarix formatlarəna təsir edir. Cari ayar <strong>%1</strong>-dir - + Back Geriyə @@ -3827,44 +3818,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 +3863,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..e33e6ee66 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ı @@ -510,134 +510,134 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Format - + Select storage de&vice: Yaddaş ci&hazını seçmək: - - - - + + + + Current: Cari: - + After: Sonra: - - <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. + <strong>Əl ilə bölmək</strong><br/>Siz bölməni özünüz yarada və ölçüsünü dəyişə bilərsiniz. - + 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. + Saat quraşağını təyin etmək %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. + İstifadəçi adı '%1' ola bilməz + + + + 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. + Host_adı '%1' ola bilməz + + + + 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 @@ -1221,7 +1251,8 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir.Şifrəni təsdiq edin - + + Please enter the same passphrase in both boxes. Lütfən, hər iki sahəyə eyni şifrəni daxil edin. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. LocaleViewStep - + Location Məkan @@ -1777,7 +1793,12 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. Map - + + Timezone: %1 + Saat qurşağı: %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. @@ -1940,247 +1961,247 @@ Bu proqramdan çıxılacaq və bütün dəyişikliklər itiriləcəkdir. PWQ - + Password is too short Şifrə çox qısadır - + Password is too long Şifrə çox uzundur - + Password is too weak Şifrə çox zəifdir - + Memory allocation error when setting '%1' '%1' ayarlanarkən yaddaş bölgüsü xətası - + Memory allocation error Yaddaş bölgüsü xətası - + The password is the same as the old one Şifrə köhnə şifrə ilə eynidir - + The password is a palindrome Şifrə tərsinə oxunuşu ilə eynidir - + The password differs with case changes only Şifrə yalnız hal dəyişiklikləri ilə fərqlənir - + The password is too similar to the old one Şifrə köhnə şifrə ilə çox oxşardır - + The password contains the user name in some form Şifrənin tərkibində istifadəçi adı var - + The password contains words from the real name of the user in some form Şifrə istifadəçinin əsl adına oxşar sözlərdən ibarətdir - + The password contains forbidden words in some form Şifrə qadağan edilmiş sözlərdən ibarətdir - + The password contains less than %1 digits Şifrə %1-dən az rəqəmdən ibarətdir - + The password contains too few digits Şifrə çox az rəqəmdən ibarətdir - + The password contains less than %1 uppercase letters Şifrə %1-dən az böyük hərfdən ibarətdir - + The password contains too few uppercase letters Şifrə çox az böyük hərflərdən ibarətdir - + The password contains less than %1 lowercase letters Şifrə %1-dən az kiçik hərflərdən ibarətdir - + The password contains too few lowercase letters Şifrə çox az kiçik hərflərdən ibarətdir - + The password contains less than %1 non-alphanumeric characters Şifrə %1-dən az alfasayısal olmayan simvollardan ibarətdir - + The password contains too few non-alphanumeric characters Şifrə çox az alfasayısal olmayan simvollardan ibarətdir - + The password is shorter than %1 characters Şifrə %1 simvoldan qısadır - + The password is too short Şifrə çox qısadır - + The password is just rotated old one Yeni şifrə sadəcə olaraq tərsinə çevirilmiş köhnəsidir - + The password contains less than %1 character classes Şifrə %1-dən az simvol sinifindən ibarətdir - + The password does not contain enough character classes Şifrənin tərkibində kifayət qədər simvol sinifi yoxdur - + The password contains more than %1 same characters consecutively Şifrə ardıcıl olaraq %1-dən çox eyni simvollardan ibarətdir - + The password contains too many same characters consecutively Şifrə ardıcıl olaraq çox oxşar simvollardan ibarətdir - + The password contains more than %1 characters of the same class consecutively Şifrə ardıcıl olaraq eyni sinifin %1-dən çox simvolundan ibarətdir - + The password contains too many characters of the same class consecutively Şifrə ardıcıl olaraq eyni sinifin çox simvolundan ibarətdir - + The password contains monotonic sequence longer than %1 characters Şifrə %1 simvoldan uzun olan monoton ardıcıllıqdan ibarətdir - + The password contains too long of a monotonic character sequence Şifrə çox uzun monoton simvollar ardıcıllığından ibarətdir - + No password supplied Şifrə verilməyib - + Cannot obtain random numbers from the RNG device RNG cihazından təsadüfi nömrələr əldə etmək olmur - + Password generation failed - required entropy too low for settings Şifrə yaratma uğursuz oldu - ayarlar üçün tələb olunan entropiya çox aşağıdır - + The password fails the dictionary check - %1 Şifrənin lüğət yoxlaması alınmadı - %1 - + The password fails the dictionary check Şifrənin lüğət yoxlaması alınmadı - + Unknown setting - %1 Naməlum ayarlar - %1 - + Unknown setting Naməlum ayarlar - + Bad integer value of setting - %1 Ayarın pozulmuş tam dəyəri - %1 - + Bad integer value Pozulmuş tam dəyər - + Setting %1 is not of integer type %1 -i ayarı tam say deyil - + Setting is not of integer type Ayar tam say deyil - + Setting %1 is not of string type %1 ayarı sətir deyil - + Setting is not of string type Ayar sətir deyil - + Opening the configuration file failed Tənzəmləmə faylının açılması uğursuz oldu - + The configuration file is malformed Tənzimləmə faylı qüsurludur - + Fatal failure Ciddi qəza - + Unknown error Naməlum xəta - + Password is empty Şifrə böşdur @@ -2515,117 +2536,117 @@ Lütfən bir birinci disk bölümünü çıxarın və əvəzinə genişləndiril PartitionViewStep - + Gathering system information... 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 +2694,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 +3190,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 +3445,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 +3474,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 +3554,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 +3572,7 @@ Output: UsersViewStep - + Users İstifadəçilər @@ -3805,21 +3796,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>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>. + <h1>Yerlər</h1></br> + Sistemin məkan ayarları say və tarix formatlarəna təsir edir. Cari ayar <strong>%1</strong>-dir - + Back Geriyə @@ -3827,44 +3818,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 +3863,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..ac8d9d01a 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 @@ -512,134 +512,134 @@ The installer will quit and all changes will be lost. Форма - + 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. - <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 @@ -1223,7 +1253,8 @@ The installer will quit and all changes will be lost. Пацвердзіце парольную фразу - + + Please enter the same passphrase in both boxes. Калі ласка, увядзіце адную і тую парольную фразу ў абодва радкі. @@ -1231,37 +1262,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 +1543,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 +1605,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 +1706,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 +1733,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Месцазнаходжанне @@ -1779,7 +1795,12 @@ The installer will quit and all changes will be lost. 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. @@ -1940,247 +1961,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Пароль занадта кароткі - + Password is too long Пароль занадта доўгі - + Password is too weak Пароль занадта ненадзейны - + 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 знакаў - + The password is too short Пароль занадта кароткі - + 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 Пароль не прайшоў праверку слоўнікам - + Unknown setting - %1 Невядомы параметр - %1 - + Unknown setting Невядомы параметр - + 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 Фатальны збой - + Unknown error Невядомая памылка - + Password is empty Пароль пусты @@ -2514,117 +2535,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Збор інфармацыі пра сістэму... - + 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 +2693,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 +3186,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 +3441,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 +3470,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 +3550,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 +3568,7 @@ Output: UsersViewStep - + Users Карыстальнікі @@ -3800,19 +3791,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 +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 Пратэстуйце сваю клавіятуру @@ -3865,17 +3856,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..24b044bf5 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 Инсталатор @@ -508,134 +508,134 @@ The installer will quit and all changes will be lost. Форма - + 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. - + + <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 @@ -1220,7 +1250,8 @@ The installer will quit and all changes will be lost. Потвърди паролата - + + Please enter the same passphrase in both boxes. Моля, въведете еднаква парола в двете полета. @@ -1228,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. Инсталирай %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 +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. @@ -1571,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. @@ -1672,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. - Форматът на цифрите и датата ще бъде %1. - - - - Set timezone to %1/%2.<br/> - Постави часовата зона на %1/%2.<br/> - LocaleQmlViewStep - + Location Местоположение @@ -1714,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Местоположение @@ -1776,7 +1792,12 @@ The installer will quit and all changes will be lost. 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. @@ -1937,247 +1958,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Паролата е твърде кратка - + Password is too long Паролата е твърде дълга - + Password is too weak Паролата е твърде слаба - + 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 знаци - + The password is too short Паролата е твърде кратка - + 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 Паролата не издържа проверката на речника - + Unknown setting - %1 Неизвестна настройка - %1 - + Unknown setting Неизвестна настройка - + 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 Фатална повреда - + Unknown error Неизвестна грешка - + Password is empty @@ -2511,117 +2532,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Събиране на системна информация... - + 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 +2690,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 +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. @@ -3417,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. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3467,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 +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 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 +3565,7 @@ Output: UsersViewStep - + Users Потребители @@ -3787,19 +3778,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 +3798,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 +3843,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..0060679d6 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 - খারাপ প্রধান স্ক্রিপ্ট ফাইল + প্রধান স্ক্রিপ্ট ফাইল ভালো নয় @@ -220,7 +220,7 @@ - + Loading failed. @@ -257,173 +257,174 @@ 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 সংস্থাপন করতে আপনার ডিস্কে পরিবর্তন করতে যাচ্ছে। - + &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. - + আপনি কি সত্যিই বর্তমান সংস্থাপন প্রক্রিয়া বাতিল করতে চান? +ইনস্টলার টি বন্ধ হয়ে যাবে এবং সকল পরিবর্তন হারিয়ে যাবে। @@ -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,15 +479,15 @@ The installer will quit and all changes will be lost. &Cancel - + এবংবাতিল করুন - + %1 Setup Program - + %1 Installer 1% ইনস্টল @@ -496,7 +497,7 @@ The installer will quit and all changes will be lost. Gathering system information... - + সিস্টেম তথ্য সংগ্রহ করা হচ্ছে... @@ -504,137 +505,137 @@ The installer will quit and all changes will be lost. Form - + ফর্ম - + Select storage de&vice: - + স্টোরেজ ডিএবংভাইস নির্বাচন করুন: - - - - + + + + Current: - + বর্তমান: - + 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. 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> - + <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. - + 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 @@ -642,42 +643,42 @@ 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-এর জন্য সকল মাউন্ট মুছে ফেলা হয়েছে ClearTempMountsJob - + Clear all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করুন। - + Clearing all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করা হচ্ছে। - + Cannot get list of temporary mounts. - + অস্থায়ী মাউন্টের তালিকা পাওয়া যাচ্ছে না। - + Cleared all temporary mounts. - + সব অস্থায়ী মাউন্ট পরিষ্কার করা হয়েছে. @@ -702,30 +703,30 @@ The installer will quit and all changes will be lost. Config - + Set keyboard model to %1.<br/> - + %1-এ কীবোর্ড নকশা নির্ধারণ করুন। - + 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/> - - Network Installation. (Disabled: Incorrect configuration) @@ -791,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 @@ -810,7 +851,7 @@ The installer will quit and all changes will be lost. Si&ze: - + আএবংকার @@ -820,22 +861,22 @@ The installer will quit and all changes will be lost. Partition &Type: - পার্টিশন এবং প্রকার: + পার্টিশন এবংধরন: &Primary - এবং প্রাথমিক + এবংপ্রাথমিক E&xtended - সম্প্রসারিত + বএবংর্ধিত Fi&le System: - + ফাএবংইল সিস্টেম: @@ -845,7 +886,7 @@ The installer will quit and all changes will be lost. &Mount Point: - এবং মাউন্ট পয়েন্ট: + এবংমাউন্ট পয়েন্ট: @@ -860,17 +901,17 @@ The installer will quit and all changes will be lost. Logical - + যৌক্তিক Primary - + প্রাথমিক GPT - + জিপিটি @@ -893,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' ডিস্কে পার্টিশন তৈরি করতে ব্যর্থ হয়েছে। @@ -906,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) - + জিইউআইডি পার্টিশন টেবিল (জিপিটি) @@ -934,60 +975,50 @@ 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 এ একটি পার্টিশন টেবিল তৈরি করতে ব্যর্থ হয়েছে। CreateUserJob - + Create user %1 - + %1 ব্যবহারকারী তৈরি করুন - + Create user <strong>%1</strong>. - + ব্যবহারকারী %1 তৈরি করুন। - + 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. - + Sudoers ফাইল chmod করা যাবে না। @@ -1045,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 পার্টিশন মুছে ফেলতে ব্যর্থ হয়েছে। @@ -1068,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> বুট পরিবেশ থেকে শুরু হয়। @@ -1093,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> এই ইনস্টলার বর্তমান পার্টিশন টেবিল রাখবে যদি না আপনি স্পষ্টভাবে অন্যভাবে নির্বাচন করেন. যদি অনিশ্চিত থাকেন, আধুনিক সিস্টেমে জিপিটি অগ্রাধিকার দেওয়া হয়। @@ -1102,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) @@ -1142,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. - + সতর্কীকরণ: পার্টিশন ফরম্যাট করলে সমস্ত বিদ্যমান উপাত্ত মুছে ফেলবে। @@ -1172,7 +1203,7 @@ The installer will quit and all changes will be lost. Si&ze: - + আএবংকার @@ -1182,7 +1213,7 @@ The installer will quit and all changes will be lost. Fi&le System: - + ফাএবংইল সিস্টেম: @@ -1200,7 +1231,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -1218,7 +1249,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,39 +1258,39 @@ 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. - + মাউন্ট পয়েন্ট সেট আপ করা হচ্ছে। @@ -1266,12 +1298,12 @@ The installer will quit and all changes will be lost. Form - + ফর্ম &Restart now - + এবংএখন আবার চালু করুন @@ -1286,7 +1318,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 লাইভ পরিবেশ ব্যবহার চালিয়ে যেতে পারেন। @@ -1309,7 +1341,7 @@ The installer will quit and all changes will be lost. Finish - + শেষ করুন @@ -1347,12 +1379,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 পার্টিশন বিন্যাস করতে ব্যর্থ হয়েছে। @@ -1493,7 +1525,7 @@ The installer will quit and all changes will be lost. Executing script: &nbsp;<code>%1</code> - + স্ক্রিপ্ট কার্যকর করা হচ্ছে: &nbsp;<code>%1</code> @@ -1501,20 +1533,20 @@ The installer will quit and all changes will be lost. Script - + স্ক্রিপ্ট KeyboardPage - + Set keyboard model to %1.<br/> - + %1 এ কীবোর্ড নকশা নির্ধারণ করুন। - + Set keyboard layout to %1/%2. - + %1/%2 এ কীবোর্ড বিন্যাস নির্ধারণ করুন। @@ -1522,7 +1554,7 @@ The installer will quit and all changes will be lost. Keyboard - + কীবোর্ড @@ -1530,7 +1562,7 @@ The installer will quit and all changes will be lost. Keyboard - + কীবোর্ড @@ -1538,17 +1570,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 - + এবংবাতিল করুন @@ -1561,7 +1593,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -1569,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. @@ -1604,7 +1636,7 @@ The installer will quit and all changes will be lost. License - + লাইসেন্স @@ -1670,51 +1702,36 @@ 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 - + অবস্থান LocaleViewStep - + Location - + অবস্থান @@ -1774,7 +1791,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1957,247 @@ The installer will quit and all changes will be lost. 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 @@ -2185,7 +2207,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -2226,7 +2248,7 @@ The installer will quit and all changes will be lost. Name - + নাম @@ -2239,17 +2261,17 @@ The installer will quit and all changes will be lost. Form - + ফর্ম Keyboard Model: - + কীবোর্ড নকশা: Type here to test your keyboard - + আপনার কীবোর্ড পরীক্ষা করতে এখানে টাইপ করুন @@ -2257,12 +2279,12 @@ The installer will quit and all changes will be lost. Form - + ফর্ম What is your name? - + আপনার নাম কি? @@ -2272,7 +2294,7 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - + লগ-ইন করতে আপনি কোন নাম ব্যবহার করতে চান? @@ -2282,12 +2304,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> @@ -2297,13 +2319,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> @@ -2330,23 +2352,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> @@ -2354,43 +2376,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 @@ -2399,33 +2421,33 @@ The installer will quit and all changes will be lost. Free Space - + খালি জায়গা New partition - + নতুন পার্টিশন Name - + নাম File System - + নথি ব্যবস্থা Mount Point - + মাউন্ট পয়েন্ট Size - + আকার @@ -2433,22 +2455,22 @@ The installer will quit and all changes will be lost. Form - + ফর্ম Storage de&vice: - + স্টোরেজ ডিএবংভাইস &Revert All Changes - + এবংসকল পরিবর্তন ফিরিয়ে দিন New Partition &Table - + নতুন পার্টিশন এবংটেবিল @@ -2458,12 +2480,12 @@ The installer will quit and all changes will be lost. &Edit - + এবংসম্পাদনা করুন &Delete - + এবংমুছে ফেলুন @@ -2493,7 +2515,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 এ একটি নতুন পার্টিশন টেবিল তৈরি করতে চান? @@ -2509,117 +2531,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + 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: - + পরে: - + 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. @@ -2643,7 +2665,7 @@ The installer will quit and all changes will be lost. Form - + ফর্ম @@ -2667,17 +2689,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. @@ -2753,22 +2775,22 @@ Output: %1 (%2) - + %1 (%2) unknown - + অজানা extended - + বর্ধিত unformatted - + অবিন্যাসিত @@ -2778,13 +2800,13 @@ Output: Default Keyboard Model - + পূর্বনির্ধারিত কীবোর্ডের নকশা Default - + পূর্বনির্ধারিত @@ -2822,7 +2844,7 @@ Output: Unpartitioned space or unknown partition table - + অবিভাজনকৃত স্থান বা অজানা পার্টিশন টেবিল @@ -2866,74 +2888,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 সিস্টেম পার্টিশন: @@ -3025,7 +3047,7 @@ Output: Resize partition %1. - + পার্টিশন %1 পুনঃআকার করুন। @@ -3040,7 +3062,7 @@ Output: The installer failed to resize partition %1 on disk '%2'. - + ইনস্টলার '%2' ডিস্কে %1 পার্টিশন পুনঃআকার করতে ব্যর্থ হয়েছে। @@ -3116,12 +3138,12 @@ Output: Scanning storage devices... - + স্টোরেজ ডিভাইস স্ক্যান করা হচ্ছে... Partitioning - + পার্টিশন করা হচ্ছে @@ -3129,57 +3151,57 @@ 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 - + লক্ষ্য ব্যবস্থায় হোস্টের নাম লেখা যাচ্ছে না SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %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. @@ -3272,22 +3294,22 @@ Output: Set password for user %1 - + ব্যবহারকারীর জন্য গুপ্ত-সংকেত নির্ধারণ করুন % 1 Setting password for user %1. - + ব্যবহারকারীর %1-এর জন্য গুপ্ত-সংকেত নির্ধারণ করা হচ্ছে। Bad destination system path. - + খারাপ গন্তব্য সিস্টেম পথ। rootMountPoint is %1 - + রুটমাউন্টপয়েন্টটি % 1 @@ -3302,12 +3324,12 @@ Output: Cannot set password for user %1. - + % 1 ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করা যাচ্ছে না। usermod terminated with error code %1. - + %1 ত্রুটি কোড দিয়ে ব্যবহারকারীমোড সমাপ্ত করা হয়েছে। @@ -3315,37 +3337,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 - + লেখার জন্য /ইত্যাদি/সময়অঞ্চল খোলা যাচ্ছে না @@ -3375,7 +3397,7 @@ Output: This is an overview of what will happen once you start the install procedure. - + আপনি ইনস্টল প্রক্রিয়া শুরু করার পর কি হবে তার একটি পর্যালোচনা। @@ -3383,7 +3405,7 @@ Output: Summary - + সারাংশ @@ -3412,28 +3434,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 +3463,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 +3494,7 @@ Output: Form - + ফর্ম @@ -3521,57 +3543,27 @@ 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! - + আপনার পাসওয়ার্ড মেলে না! UsersViewStep - + Users - + ব্যবহারকারীরা @@ -3645,7 +3637,7 @@ Output: Form - + ফর্ম @@ -3656,7 +3648,7 @@ Output: &About - + এবংসম্পর্কে @@ -3676,7 +3668,7 @@ Output: &Support - + এবংসহায়তা @@ -3686,7 +3678,7 @@ Output: &Known issues - + এবংপরিচিত বিষয়গুলো @@ -3696,7 +3688,7 @@ Output: &Release notes - + এবংনোট প্রকাশ করুন @@ -3716,12 +3708,12 @@ Output: <h1>Welcome to the %1 installer.</h1> - + <h1>%1 ইনস্টলারে স্বাগতম।</h1> %1 support - + %1 সহায়তা @@ -3731,7 +3723,7 @@ Output: About %1 installer - + %1 ইনস্টলার সম্পর্কে @@ -3744,7 +3736,7 @@ Output: Welcome - + স্বাগতম @@ -3752,7 +3744,7 @@ Output: Welcome - + স্বাগতম @@ -3782,19 +3774,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 +3794,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 +3839,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..3de3ad6f7 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 @@ -510,134 +510,134 @@ L'instal·lador es tancarà i tots els canvis es perdran. Formulari - + Select storage de&vice: Seleccioneu un dispositiu d'e&mmagatzematge: - - - - + + + + Current: Actual: - + After: Després: - - <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 @@ -1221,7 +1251,8 @@ L'instal·lador es tancarà i tots els canvis es perdran. Confirmeu la contrasenya - + + Please enter the same passphrase in both boxes. Si us plau, escriviu la mateixa contrasenya a les dues caselles. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocaleViewStep - + Location Ubicació @@ -1777,7 +1793,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Map - + + Timezone: %1 + Zona horària: %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. @@ -1940,247 +1961,247 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé PWQ - + Password is too short La contrasenya és massa curta. - + Password is too long La contrasenya és massa llarga. - + Password is too weak La contrasenya és massa dèbil. - + Memory allocation error when setting '%1' Error d'assignació de memòria en establir "%1" - + Memory allocation error Error d'assignació de memòria - + The password is the same as the old one La contrasenya és la mateixa que l'anterior. - + The password is a palindrome La contrasenya és un palíndrom. - + The password differs with case changes only La contrasenya només és diferent per les majúscules o minúscules. - + The password is too similar to the old one La contrasenya és massa semblant a l'anterior. - + The password contains the user name in some form La contrasenya conté el nom d'usuari d'alguna manera. - + The password contains words from the real name of the user in some form La contrasenya conté paraules del nom real de l'usuari d'alguna manera. - + The password contains forbidden words in some form La contrasenya conté paraules prohibides d'alguna manera. - + The password contains less than %1 digits La contrasenya és inferior a %1 dígits. - + The password contains too few digits La contrasenya conté massa pocs dígits. - + The password contains less than %1 uppercase letters La contrasenya conté menys de %1 lletres majúscules. - + The password contains too few uppercase letters La contrasenya conté massa poques lletres majúscules. - + The password contains less than %1 lowercase letters La contrasenya conté menys de %1 lletres minúscules. - + The password contains too few lowercase letters La contrasenya conté massa poques lletres minúscules. - + The password contains less than %1 non-alphanumeric characters La contrasenya conté menys de %1 caràcters no alfanumèrics. - + The password contains too few non-alphanumeric characters La contrasenya conté massa pocs caràcters no alfanumèrics. - + The password is shorter than %1 characters La contrasenya és més curta de %1 caràcters. - + The password is too short La contrasenya és massa curta. - + The password is just rotated old one La contrasenya és només l'anterior capgirada. - + The password contains less than %1 character classes La contrasenya conté menys de %1 classes de caràcters. - + The password does not contain enough character classes La contrasenya no conté prou classes de caràcters. - + The password contains more than %1 same characters consecutively La contrasenya conté més de %1 caràcters iguals consecutius. - + The password contains too many same characters consecutively La contrasenya conté massa caràcters iguals consecutius. - + The password contains more than %1 characters of the same class consecutively La contrasenya conté més de %1 caràcters consecutius de la mateixa classe. - + The password contains too many characters of the same class consecutively La contrasenya conté massa caràcters consecutius de la mateixa classe. - + The password contains monotonic sequence longer than %1 characters La contrasenya conté una seqüència monòtona més llarga de %1 caràcters. - + The password contains too long of a monotonic character sequence La contrasenya conté una seqüència monòtona de caràcters massa llarga. - + No password supplied No s'ha proporcionat cap contrasenya. - + Cannot obtain random numbers from the RNG device No es poden obtenir nombres aleatoris del dispositiu RNG. - + Password generation failed - required entropy too low for settings Ha fallat la generació de la contrasenya. Entropia necessària massa baixa per als paràmetres. - + The password fails the dictionary check - %1 La contrasenya no aprova la comprovació del diccionari: %1 - + The password fails the dictionary check La contrasenya no aprova la comprovació del diccionari. - + Unknown setting - %1 Paràmetre desconegut: %1 - + Unknown setting Paràmetre desconegut - + Bad integer value of setting - %1 Valor enter del paràmetre incorrecte: %1 - + Bad integer value Valor enter incorrecte - + Setting %1 is not of integer type El paràmetre %1 no és del tipus enter. - + Setting is not of integer type El paràmetre no és del tipus enter. - + Setting %1 is not of string type El paràmetre %1 no és del tipus cadena. - + Setting is not of string type El paràmetre no és del tipus cadena. - + Opening the configuration file failed Ha fallat obrir el fitxer de configuració. - + The configuration file is malformed El fitxer de configuració té una forma incorrecta. - + Fatal failure Fallada fatal - + Unknown error Error desconegut - + Password is empty La contrasenya és buida. @@ -2514,117 +2535,117 @@ per desplaçar-s'hi i useu els botons +/- per fer ampliar-lo o reduir-lo, o bé PartitionViewStep - + Gathering system information... 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 +2693,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 +3189,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 +3444,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 +3473,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 +3553,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 +3571,7 @@ La configuració pot continuar, però algunes característiques podrien estar in UsersViewStep - + Users Usuaris @@ -3804,21 +3795,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 +3817,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 +3862,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..6b12d7f50 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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 e38f1ff69..ee6049f30 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 @@ -514,134 +514,134 @@ Instalační program bude ukončen a všechny změny ztraceny. Formulář - + Select storage de&vice: &Vyberte úložné zařízení: - - - - + + + + Current: Stávající: - + After: Po: - - <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) @@ -781,22 +781,62 @@ 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> <h1>Welcome to %1 setup</h1> - + <h1>Vítejte v instalátoru %1</h1> <h1>Welcome to the Calamares installer for %1</h1> - + <h1>Vítejte v Calamares, instalačním programu pro %1</h1> <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. + „%1“ není možné použít jako uživatelské jméno. + + + + 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. + „%1“ není možné použít jako název počítače. + + + + Only letters, numbers, underscore and hyphen are allowed. + Je možné použít pouze písmena, číslice, podtržítko a spojovník. @@ -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 @@ -1225,7 +1255,8 @@ Instalační program bude ukončen a všechny změny ztraceny. Potvrzení heslové fráze - + + Please enter the same passphrase in both boxes. Zadejte stejnou heslovou frázi do obou kolonek. @@ -1233,37 +1264,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 +1545,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 +1607,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 +1708,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 +1735,7 @@ Instalační program bude ukončen a všechny změny ztraceny. LocaleViewStep - + Location Poloha @@ -1781,11 +1797,18 @@ Instalační program bude ukončen a všechny změny ztraceny. Map - + + Timezone: %1 + Časová zóna: %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. - + Vyberte vámi upřednostňované umístění na mapě, aby vám instalátor mohl doporučit místní a jazyková nastavení + a časové pásmo. Doporučená nastavení můžete dále jemně doladit níže. Pro hledání na mapě přetahujte + pro posouvání a pomocí tlačítek +/- přibližujte/oddalujte nebo k tomu použijte kolečko myši. @@ -1936,253 +1959,253 @@ Instalační program bude ukončen a všechny změny ztraceny. 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. - + Aby bylo možné vybrat časové pásmo, ověřte, zda jste připojení k Internetu. Poté, co se připojíte, instalátor zavřete a spusťte znovu. Níže je možné jemně doladit místní a jazyková nastavení. PWQ - + Password is too short Heslo je příliš krátké - + Password is too long Heslo je příliš dlouhé - + Password is too weak Heslo je příliš slabé - + Memory allocation error when setting '%1' Chyba přidělování paměti při nastavování „%1“ - + Memory allocation error Chyba při přidělování paměti - + The password is the same as the old one Heslo je stejné jako to přechozí - + The password is a palindrome Heslo je palindrom (je stejné i pozpátku) - + The password differs with case changes only Heslo se liší pouze změnou velikosti písmen - + The password is too similar to the old one Heslo je příliš podobné tomu předchozímu - + The password contains the user name in some form Heslo obsahuje nějakou formou uživatelské jméno - + The password contains words from the real name of the user in some form Heslo obsahuje obsahuje nějakou formou slova ze jména uživatele - + The password contains forbidden words in some form Heslo obsahuje nějakou formou slova, která není možné použít - + The password contains less than %1 digits Heslo obsahuje méně než %1 číslic - + The password contains too few digits Heslo obsahuje příliš málo číslic - + The password contains less than %1 uppercase letters Heslo obsahuje méně než %1 velkých písmen - + The password contains too few uppercase letters Heslo obsahuje příliš málo velkých písmen - + The password contains less than %1 lowercase letters Heslo obsahuje méně než %1 malých písmen - + The password contains too few lowercase letters Heslo obsahuje příliš málo malých písmen - + The password contains less than %1 non-alphanumeric characters Heslo obsahuje méně než %1 speciálních znaků - + The password contains too few non-alphanumeric characters Heslo obsahuje příliš málo speciálních znaků - + The password is shorter than %1 characters Heslo je kratší než %1 znaků - + The password is too short Heslo je příliš krátké - + The password is just rotated old one Heslo je jen některé z předchozích - + The password contains less than %1 character classes Heslo obsahuje méně než %1 druhů znaků - + The password does not contain enough character classes Heslo není tvořeno dostatečným počtem druhů znaků - + The password contains more than %1 same characters consecutively Heslo obsahuje více než %1 stejných znaků za sebou - + The password contains too many same characters consecutively Heslo obsahuje příliš mnoho stejných znaků za sebou - + The password contains more than %1 characters of the same class consecutively Heslo obsahuje více než %1 znaků ze stejné třídy za sebou - + The password contains too many characters of the same class consecutively Heslo obsahuje příliš mnoho znaků stejného druhu za sebou - + The password contains monotonic sequence longer than %1 characters Heslo obsahuje monotónní posloupnost delší než %1 znaků - + The password contains too long of a monotonic character sequence Heslo obsahuje příliš dlouhou monotónní posloupnost - + No password supplied Nebylo zadáno žádné heslo - + Cannot obtain random numbers from the RNG device Nedaří se získat náhodná čísla ze zařízení generátoru náhodných čísel (RNG) - + Password generation failed - required entropy too low for settings Vytvoření hesla se nezdařilo – úroveň nahodilosti je příliš nízká - + The password fails the dictionary check - %1 Heslo je slovníkové – %1 - + The password fails the dictionary check Heslo je slovníkové - + Unknown setting - %1 Neznámé nastavení – %1 - + Unknown setting Neznámé nastavení - + Bad integer value of setting - %1 Chybná celočíselná hodnota nastavení – %1 - + Bad integer value Chybná celočíselná hodnota - + Setting %1 is not of integer type Nastavení %1 není typu celé číslo - + Setting is not of integer type Nastavení není typu celé číslo - + Setting %1 is not of string type Nastavení %1 není typu řetězec - + Setting is not of string type Nastavení není typu řetězec - + Opening the configuration file failed Nepodařilo se otevřít soubor s nastaveními - + The configuration file is malformed Soubor s nastaveními nemá správný formát - + Fatal failure Fatální nezdar - + Unknown error Neznámá chyba - + Password is empty Heslo není vyplněné @@ -2516,117 +2539,117 @@ Instalační program bude ukončen a všechny změny ztraceny. PartitionViewStep - + Gathering system information... 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 +2697,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. @@ -2841,7 +2864,8 @@ Výstup: <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>Tento počítač nesplňuje některé doporučené požadavky pro instalaci %1.<br/> + Instalace může pokračovat, ale některé funkce mohou být vypnuty.</p> @@ -2952,13 +2976,15 @@ Výstup: <p>This computer does not satisfy the minimum requirements for installing %1.<br/> Installation cannot continue.</p> - + <p>Tento počítač nesplňuje minimální požadavky pro instalaci %1.<br/> + Instalace nemůže pokračovat.</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>Tento počítač nesplňuje některé doporučené požadavky pro instalaci %1.<br/> + Instalace může pokračovat, ale některé funkce mohou být vypnuty.</p> @@ -3167,29 +3193,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,57 +3448,57 @@ Výstup: TrackingKUserFeedbackJob - + KDE user feedback - + Zpětná vazba uživatele KDE - + Configuring KDE user feedback. - + Nastavuje se zpětná vazba od uživatele pro KDE - - + + Error in KDE user feedback configuration. - + Chyba v nastavení zpětné vazby od uživatele pro KDE. - + Could not configure KDE user feedback correctly, script error %1. - + Nepodařilo se správně nastavit zpětnou vazbu KDE uživatele, chyba ve skriptu %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. 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. @@ -3492,7 +3518,7 @@ Výstup: <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>Kliknutím sem nastavíte neodesílání <span style=" font-weight:600;">vůbec žádných informací</span> o vaší instalaci.</p></body></html> @@ -3502,22 +3528,22 @@ Výstup: 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. - + Sledování pomůže %1 zjistit, jak často je instalováno, na jakém hardware a které aplikace jsou používány. Pro zobrazení toho, co je odesíláno, klikněte na ikonu nápovědy vedle každé z oblastí. 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. - + Výběrem tohoto pošlete informace o své instalaci a hardware. Tyto údaje budou poslány <b>pouze jednorázově</b> po dokončení instalace. By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + Výběrem tohoto budete pravidelně odesílat informace o instalaci na váš <b>počítač</b>, o hardwaru a aplikacích do %1. By selecting this you will regularly send information about your <b>user</b> installation, hardware, applications and application usage patterns, to %1. - + Výběrem tohoto budete pravidelně odesílat informace o vaší <b>uživatelské</b> instalaci, hardware, aplikacích a způsobu využití aplikací do %1. @@ -3531,47 +3557,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 +3575,7 @@ Výstup: UsersViewStep - + Users Uživatelé @@ -3781,7 +3777,18 @@ Výstup: development is sponsored by <br/> <a href='http://www.blue-systems.com/'>Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/> + <strong>%2<br/> + pro %3</strong><br/><br/> + Autorská práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Autorská práva 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Poděkování <a href='https://calamares.io/team/'>kolektivu Calamares</a> + a překladatelskému kolektivu <a href='https://www.transifex.com/calamares/calamares/'>Calamares + </a>.<br/><br/> + Vývoj <a href='https://calamares.io/'>Calamares</a> + je sponzorován společností <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> – + osvobozujeme software. @@ -3792,19 +3799,21 @@ 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>Jazyky</h1> </br> + Systémová místní a jazyková nastavení ovlivní jazyk a znakovou sadu některých prvků uživatelského rozhraní příkazového řádku. Stávající nastavení je <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>Místní a jazyková nastavení</h1> </br> + Místní a jazyková nastavení ovlivní formát čísel a datumů. Stávající nastavení je <strong>%1</strong>. - + Back Zpět @@ -3812,44 +3821,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 +3866,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..c2c5d73d1 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 @@ -510,134 +510,134 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Formular - + Select storage de&vice: Vælg lageren&hed: - - - - + + + + Current: Nuværende: - + After: Efter: - - <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. + Indstil tidszone til %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. + '%1' er ikke tilladt som brugernavn. + + + + 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. + '%1' er ikke tilladt som værtsnavn. + + + + 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 @@ -1221,7 +1251,8 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Bekræft adgangskode - + + Please enter the same passphrase in both boxes. Indtast venligst samme adgangskode i begge bokse. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocaleViewStep - + Location Placering @@ -1777,7 +1793,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Map - + + Timezone: %1 + Tidszone: %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. @@ -1940,247 +1961,247 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PWQ - + Password is too short Adgangskoden er for kort - + Password is too long Adgangskoden er for lang - + Password is too weak Adgangskoden er for svag - + Memory allocation error when setting '%1' Fejl ved allokering af hukommelse da '%1' blev sat - + Memory allocation error Fejl ved allokering af hukommelse - + The password is the same as the old one Adgangskoden er den samme som den gamle - + The password is a palindrome Adgangskoden er et palindrom - + The password differs with case changes only Adgangskoden har kun ændringer i store/små bogstaver - + The password is too similar to the old one Adgangskoden minder for meget om den gamle - + The password contains the user name in some form Adgangskoden indeholder i nogen form brugernavnet - + The password contains words from the real name of the user in some form Adgangskoden indeholder i nogen form ord fra brugerens rigtige navn - + The password contains forbidden words in some form Adgangskoden indeholder i nogen form forbudte ord - + The password contains less than %1 digits Adgangskoden indeholder færre end %1 cifre - + The password contains too few digits Adgangskoden indeholder for få cifre - + The password contains less than %1 uppercase letters Adgangskoden indeholder færre end %1 bogstaver med stort - + The password contains too few uppercase letters Adgangskoden indeholder for få bogstaver med stort - + The password contains less than %1 lowercase letters Adgangskoden indeholder færre end %1 bogstaver med småt - + The password contains too few lowercase letters Adgangskoden indeholder for få bogstaver med småt - + The password contains less than %1 non-alphanumeric characters Adgangskoden indeholder færre end %1 ikke-alfanumeriske tegn - + The password contains too few non-alphanumeric characters Adgangskoden indeholder for få ikke-alfanumeriske tegn - + The password is shorter than %1 characters Adgangskoden er kortere end %1 tegn - + The password is too short Adgangskoden er for kort - + The password is just rotated old one Adgangskoden er blot det gamle hvor der er byttet om på tegnene - + The password contains less than %1 character classes Adgangskoden indeholder færre end %1 tegnklasser - + The password does not contain enough character classes Adgangskoden indeholder ikke nok tegnklasser - + The password contains more than %1 same characters consecutively Adgangskoden indeholder flere end %1 af de samme tegn i træk - + The password contains too many same characters consecutively Adgangskoden indeholder for mange af de samme tegn i træk - + The password contains more than %1 characters of the same class consecutively Adgangskoden indeholder flere end %1 tegn af den samme klasse i træk - + The password contains too many characters of the same class consecutively Adgangskoden indeholder for mange tegn af den samme klasse i træk - + The password contains monotonic sequence longer than %1 characters Adgangskoden indeholder monoton sekvens som er længere end %1 tegn - + The password contains too long of a monotonic character sequence Adgangskoden indeholder en monoton tegnsekvens som er for lang - + No password supplied Der er ikke angivet nogen adgangskode - + Cannot obtain random numbers from the RNG device Kan ikke få tilfældige tal fra RNG-enhed - + Password generation failed - required entropy too low for settings Generering af adgangskode mislykkedes - krævede entropi er for lav til indstillinger - + The password fails the dictionary check - %1 Adgangskoden bestod ikke ordbogstjekket - %1 - + The password fails the dictionary check Adgangskoden bestod ikke ordbogstjekket - + Unknown setting - %1 Ukendt indstilling - %1 - + Unknown setting Ukendt indstilling - + Bad integer value of setting - %1 Ugyldig heltalsværdi til indstilling - %1 - + Bad integer value Ugyldig heltalsværdi - + Setting %1 is not of integer type Indstillingen %1 er ikke en helttalsstype - + Setting is not of integer type Indstillingen er ikke en helttalsstype - + Setting %1 is not of string type Indstillingen %1 er ikke en strengtype - + Setting is not of string type Indstillingen er ikke en strengtype - + Opening the configuration file failed Åbningen af konfigurationsfilen mislykkedes - + The configuration file is malformed Konfigurationsfilen er forkert udformet - + Fatal failure Fatal fejl - + Unknown error Ukendt fejl - + Password is empty Adgangskoden er tom @@ -2514,117 +2535,117 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. PartitionViewStep - + Gathering system information... 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 +2693,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 +3191,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 +3446,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 +3475,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 +3555,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 +3573,7 @@ setting UsersViewStep - + Users Brugere @@ -3806,21 +3797,21 @@ 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>. + <h1>Lokaliteter</h1> </br> + Systemets lokalitetsindstillinger påvirker tal- og datoformater. Den nuværende indstilling er <strong>%1</strong>. - + Back Tilbage @@ -3828,44 +3819,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 +3864,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 9098ab48c..bf2c4f635 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 @@ -510,134 +510,134 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Form - + Select storage de&vice: Speichermedium auswählen - - - - + + + + Current: Aktuell: - + After: Nachher: - - <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. + Setze Zeitzone auf %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) @@ -792,7 +792,47 @@ 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. + '%1' ist als Benutzername nicht erlaubt. + + + + 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. + '%1' ist als Computername nicht erlaubt. + + + + Only letters, numbers, underscore and hyphen are allowed. + Es sind nur Buchstaben, Zahlen, Unter- und Bindestriche erlaubt. @@ -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 @@ -1221,7 +1251,8 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Passwort wiederholen - + + Please enter the same passphrase in both boxes. Bitte tragen Sie dasselbe Passwort in beide Felder ein. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocaleViewStep - + Location Standort @@ -1777,11 +1793,18 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Map - + + Timezone: %1 + Zeitzone: %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. - + 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,253 +1955,253 @@ 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. PWQ - + Password is too short Das Passwort ist zu kurz - + Password is too long Das Passwort ist zu lang - + Password is too weak Das Passwort ist zu schwach - + Memory allocation error when setting '%1' Fehler bei der Speicherzuweisung beim Einrichten von '%1' - + Memory allocation error Fehler bei der Speicherzuweisung - + The password is the same as the old one Das Passwort ist dasselbe wie das alte - + The password is a palindrome Das Passwort ist ein Palindrom - + The password differs with case changes only Das Passwort unterscheidet sich nur durch Groß- und Kleinschreibung - + The password is too similar to the old one Das Passwort ist dem alten zu ähnlich - + The password contains the user name in some form Das Passwort enthält eine Form des Benutzernamens - + The password contains words from the real name of the user in some form Das Passwort enthält Teile des Klarnamens des Benutzers - + The password contains forbidden words in some form Das Passwort enthält verbotene Wörter - + The password contains less than %1 digits Das Passwort hat weniger als %1 Stellen - + The password contains too few digits Das Passwort hat zu wenige Stellen - + The password contains less than %1 uppercase letters Das Passwort enthält weniger als %1 Großbuchstaben - + The password contains too few uppercase letters Das Passwort enthält zu wenige Großbuchstaben - + The password contains less than %1 lowercase letters Das Passwort enthält weniger als %1 Kleinbuchstaben - + The password contains too few lowercase letters Das Passwort enthält zu wenige Kleinbuchstaben - + The password contains less than %1 non-alphanumeric characters Das Passwort enthält weniger als %1 nicht-alphanumerische Zeichen - + The password contains too few non-alphanumeric characters Das Passwort enthält zu wenige nicht-alphanumerische Zeichen - + The password is shorter than %1 characters Das Passwort hat weniger als %1 Stellen - + The password is too short Das Passwort ist zu kurz - + The password is just rotated old one Das Passwort wurde schon einmal verwendet - + The password contains less than %1 character classes Das Passwort enthält weniger als %1 verschiedene Zeichenarten - + The password does not contain enough character classes Das Passwort enthält nicht genügend verschiedene Zeichenarten - + The password contains more than %1 same characters consecutively Das Passwort enthält mehr als %1 gleiche Zeichen am Stück - + The password contains too many same characters consecutively Das Passwort enthält zu viele gleiche Zeichen am Stück - + The password contains more than %1 characters of the same class consecutively Das Passwort enthält mehr als %1 gleiche Zeichenarten am Stück - + The password contains too many characters of the same class consecutively Das Passwort enthält zu viele gleiche Zeichenarten am Stück - + The password contains monotonic sequence longer than %1 characters Das Passwort enthält eine gleichartige Sequenz von mehr als %1 Zeichen - + The password contains too long of a monotonic character sequence Das Passwort enthält eine gleichartige Sequenz von zu großer Länge - + No password supplied Kein Passwort angegeben - + Cannot obtain random numbers from the RNG device Zufallszahlen konnten nicht vom Zufallszahlengenerator abgerufen werden - + Password generation failed - required entropy too low for settings Passwortgeneration fehlgeschlagen - Zufallszahlen zu schwach für die gewählten Einstellungen - + The password fails the dictionary check - %1 Das Passwort besteht den Wörterbuch-Test nicht - %1 - + The password fails the dictionary check Das Passwort besteht den Wörterbuch-Test nicht - + Unknown setting - %1 Unbekannte Einstellung - %1 - + Unknown setting Unbekannte Einstellung - + Bad integer value of setting - %1 Fehlerhafter Integerwert der Einstellung - %1 - + Bad integer value Fehlerhafter Integerwert - + Setting %1 is not of integer type Die Einstellung %1 ist kein Integerwert - + Setting is not of integer type Die Einstellung ist kein Integerwert - + Setting %1 is not of string type Die Einstellung %1 ist keine Zeichenkette - + Setting is not of string type Die Einstellung ist keine Zeichenkette - + Opening the configuration file failed Öffnen der Konfigurationsdatei fehlgeschlagen - + The configuration file is malformed Die Konfigurationsdatei ist falsch strukturiert - + Fatal failure Fataler Fehler - + Unknown error Unbekannter Fehler - + Password is empty Passwort nicht vergeben @@ -2512,117 +2535,117 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PartitionViewStep - + Gathering system information... 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 +2693,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. @@ -2837,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> @@ -2948,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> @@ -3163,29 +3189,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,57 +3444,57 @@ Ausgabe: TrackingKUserFeedbackJob - + 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. 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. @@ -3488,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> @@ -3527,47 +3553,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 +3571,7 @@ Ausgabe: UsersViewStep - + Users Benutzer @@ -3799,19 +3795,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 +3815,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 +3860,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..53706c48e 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 @@ -508,134 +508,134 @@ The installer will quit and all changes will be lost. Τύπος - + 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. - + + <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 @@ -1219,7 +1249,8 @@ The installer will quit and all changes will be lost. Επιβεβαίωση λέξης κλειδί - + + Please enter the same passphrase in both boxes. Παρακαλώ εισάγετε την ίδια λέξη κλειδί και στα δύο κουτιά. @@ -1227,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>. - + 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 +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. @@ -1570,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. @@ -1671,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. - - - - - Set timezone to %1/%2.<br/> - Ορισμός της ζώνης ώρας σε %1/%2.<br/> - LocaleQmlViewStep - + Location Τοποθεσία @@ -1713,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Τοποθεσία @@ -1775,7 +1791,12 @@ The installer will quit and all changes will be lost. 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. @@ -1936,247 +1957,247 @@ The installer will quit and all changes will be lost. 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 @@ -2510,117 +2531,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Συλλογή πληροφοριών συστήματος... - + 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 +2689,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 +3179,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 +3434,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 +3463,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 +3543,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 +3561,7 @@ Output: UsersViewStep - + Users Χρήστες @@ -3783,19 +3774,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 +3794,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 +3839,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..b90a3b0c5 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 @@ -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. 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 @@ -1221,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. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Location @@ -1777,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. @@ -1940,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 @@ -2514,117 +2535,117 @@ 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: - + 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 +2693,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 +3189,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 +3444,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 +3473,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 +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 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 +3571,7 @@ Output: UsersViewStep - + Users Users @@ -3804,21 +3795,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 +3817,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 +3862,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..37b2bd475 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 @@ -508,134 +508,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. 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 @@ -1219,7 +1249,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. @@ -1227,37 +1258,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 +1539,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 +1601,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 +1702,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 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Location @@ -1775,7 +1791,12 @@ The installer will quit and all changes will be lost. 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. @@ -1936,247 +1957,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 @@ -2510,117 +2531,117 @@ 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: - + 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 +2689,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 +3182,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 +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. @@ -3445,28 +3466,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 +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 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 +3564,7 @@ Output: UsersViewStep - + Users Users @@ -3786,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 @@ -3806,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 @@ -3851,17 +3842,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..69cf1c212 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 @@ -508,134 +508,134 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Formularo - + Select storage de&vice: Elektita &tenada aparato - - - - + + + + Current: Nune: - + After: Poste: - - <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 @@ -1219,7 +1249,8 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + + Please enter the same passphrase in both boxes. @@ -1227,37 +1258,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 +1539,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1570,32 +1601,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 +1702,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 +1729,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LocaleViewStep - + Location @@ -1775,7 +1791,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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. @@ -1936,247 +1957,247 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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 @@ -2510,117 +2531,117 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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: 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 +2689,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 +3179,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 +3434,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 +3463,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 +3543,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 +3561,7 @@ Output: UsersViewStep - + Users @@ -3783,19 +3774,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 +3794,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 +3839,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..231c9e29f 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 @@ -509,134 +509,134 @@ Saldrá del instalador y se perderán todos los cambios. Formulario - + Select storage de&vice: Seleccionar dispositivo de almacenamiento: - - - - + + + + Current: Actual: - + After: Despues: - - <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 @@ -1220,7 +1250,8 @@ Saldrá del instalador y se perderán todos los cambios. Confirmar frase-contraseña - + + Please enter the same passphrase in both boxes. Por favor, introduzca la misma frase-contraseña en ambos recuadros. @@ -1228,37 +1259,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 +1540,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 +1602,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 +1703,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 +1730,7 @@ Saldrá del instalador y se perderán todos los cambios. LocaleViewStep - + Location Ubicación @@ -1776,7 +1792,12 @@ Saldrá del instalador y se perderán todos los cambios. 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. @@ -1937,247 +1958,247 @@ Saldrá del instalador y se perderán todos los cambios. PWQ - + Password is too short La contraseña es demasiado corta - + Password is too long La contraseña es demasiado larga - + Password is too weak La contraseña es demasiado débil - + Memory allocation error when setting '%1' Error de asignación de memoria al establecer '%1' - + Memory allocation error Error de asignación de memoria - + The password is the same as the old one La contraseña es la misma que la antigua - + The password is a palindrome La contraseña es un palíndromo - + The password differs with case changes only La contraseña difiere sólo en cambios de mayúsculas/minúsculas - + The password is too similar to the old one La contraseña es demasiado similar a la antigua - + The password contains the user name in some form La contraseña contiene el nombre de usuario de alguna forma - + The password contains words from the real name of the user in some form La contraseña contiene palabras procedentes del nombre real del usuario de alguna forma - + The password contains forbidden words in some form La contraseña contiene palabras prohibidas de alguna forma - + The password contains less than %1 digits La contraseña contiene menos de %1 dígitos - + The password contains too few digits La contraseña contiene demasiado pocos dígitos - + The password contains less than %1 uppercase letters La contraseña contiene menos de %1 letras mayúsculas - + The password contains too few uppercase letters La contraseña contiene demasiado pocas letras mayúsculas - + The password contains less than %1 lowercase letters La contraseña contiene menos de %1 letras mayúsculas - + The password contains too few lowercase letters La contraseña contiene demasiado pocas letras minúsculas - + The password contains less than %1 non-alphanumeric characters La contraseña contiene menos de %1 caracteres alfanuméricos - + The password contains too few non-alphanumeric characters La contraseña contiene demasiado pocos caracteres alfanuméricos - + The password is shorter than %1 characters La contraseña tiene menos de %1 caracteres - + The password is too short La contraseña es demasiado corta - + The password is just rotated old one La contraseña sólo es la antigua invertida - + The password contains less than %1 character classes La contraseña contiene menos de %1 clases de caracteres - + The password does not contain enough character classes La contraseña no contiene suficientes clases de caracteres - + The password contains more than %1 same characters consecutively La contraseña contiene más de %1 caracteres iguales consecutivamente - + The password contains too many same characters consecutively La contraseña contiene demasiados caracteres iguales consecutivamente - + The password contains more than %1 characters of the same class consecutively La contraseña contiene más de %1 caracteres de la misma clase consecutivamente - + The password contains too many characters of the same class consecutively La contraseña contiene demasiados caracteres de la misma clase consecutivamente - + The password contains monotonic sequence longer than %1 characters La contraseña contiene una secuencia monótona de más de %1 caracteres - + The password contains too long of a monotonic character sequence La contraseña contiene una secuencia monótona de caracteres demasiado larga - + No password supplied No se proporcionó contraseña - + Cannot obtain random numbers from the RNG device No se puede obtener números aleatorios del dispositivo RNG (generador de números aleatorios) - + Password generation failed - required entropy too low for settings La generación de contraseña falló - la entropía requerida es demasiado baja para la configuración - + The password fails the dictionary check - %1 La contraseña no paso el test de diccionario - %1 - + The password fails the dictionary check La contraseña no pasó el test de diccionario - + Unknown setting - %1 Configuración desconocida - %1 - + Unknown setting Configuración desconocida - + Bad integer value of setting - %1 Valor entero de la configuración erróneo - %1 - + Bad integer value Valor entero erróneo - + Setting %1 is not of integer type La configuración %1 no es de tipo entero - + Setting is not of integer type La configuración no es de tipo entero - + Setting %1 is not of string type La configuración %1 no es de tipo cadena de caracteres - + Setting is not of string type La configuración no es de tipo cadena de caracteres - + Opening the configuration file failed No se pudo abrir el fichero de configuración - + The configuration file is malformed El fichero de configuración está mal formado - + Fatal failure Fallo fatal - + Unknown error Error desconocido - + Password is empty La contraseña vacia @@ -2511,117 +2532,117 @@ Saldrá del instalador y se perderán todos los cambios. PartitionViewStep - + Gathering system information... 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 +2690,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 +3183,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 +3438,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 +3467,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 +3547,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 +3565,7 @@ Salida: UsersViewStep - + Users Usuarios @@ -3787,19 +3778,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 +3798,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 +3843,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..a529262f0 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 @@ -509,135 +509,135 @@ El instalador terminará y se perderán todos los cambios. Formulario - + Select storage de&vice: Seleccionar dispositivo de almacenamiento: - - - - + + + + Current: Actual: - + After: Después: - - <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 @@ -1221,7 +1251,8 @@ El instalador terminará y se perderán todos los cambios. Confirmar contraseña segura - + + Please enter the same passphrase in both boxes. Favor ingrese la misma contraseña segura en ambas casillas. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ El instalador terminará y se perderán todos los cambios. LocaleViewStep - + Location Ubicación @@ -1777,7 +1793,12 @@ El instalador terminará y se perderán todos los cambios. 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. @@ -1938,247 +1959,247 @@ El instalador terminará y se perderán todos los cambios. PWQ - + Password is too short La contraseña es muy corta - + Password is too long La contraseña es muy larga - + Password is too weak La contraseña es muy débil - + Memory allocation error when setting '%1' Error de asignación de memoria al configurar '%1' - + Memory allocation error Error en la asignación de memoria - + The password is the same as the old one La contraseña es la misma que la anterior - + The password is a palindrome La contraseña es un Palíndromo - + The password differs with case changes only La contraseña solo difiere en cambios de mayúsculas y minúsculas - + The password is too similar to the old one La contraseña es muy similar a la anterior. - + The password contains the user name in some form La contraseña contiene el nombre de usuario de alguna forma - + The password contains words from the real name of the user in some form La contraseña contiene palabras del nombre real del usuario de alguna forma - + The password contains forbidden words in some form La contraseña contiene palabras prohibidas de alguna forma - + The password contains less than %1 digits La contraseña contiene menos de %1 dígitos - + The password contains too few digits La contraseña contiene muy pocos dígitos - + The password contains less than %1 uppercase letters La contraseña contiene menos de %1 letras mayúsculas - + The password contains too few uppercase letters La contraseña contiene muy pocas letras mayúsculas - + The password contains less than %1 lowercase letters La contraseña continee menos de %1 letras minúsculas - + The password contains too few lowercase letters La contraseña contiene muy pocas letras minúsculas - + The password contains less than %1 non-alphanumeric characters La contraseña contiene menos de %1 caracteres no alfanuméricos - + The password contains too few non-alphanumeric characters La contraseña contiene muy pocos caracteres alfanuméricos - + The password is shorter than %1 characters La contraseña es mas corta que %1 caracteres - + The password is too short La contraseña es muy corta - + The password is just rotated old one La contraseña solo es la rotación de la anterior - + The password contains less than %1 character classes La contraseña contiene menos de %1 tipos de caracteres - + The password does not contain enough character classes La contraseña no contiene suficientes tipos de caracteres - + The password contains more than %1 same characters consecutively La contraseña contiene más de %1 caracteres iguales consecutivamente - + The password contains too many same characters consecutively La contraseña contiene muchos caracteres iguales repetidos consecutivamente - + The password contains more than %1 characters of the same class consecutively La contraseña contiene mas de %1 caracteres de la misma clase consecutivamente - + The password contains too many characters of the same class consecutively La contraseña contiene muchos caracteres de la misma clase consecutivamente - + The password contains monotonic sequence longer than %1 characters La contraseña contiene secuencias monotónicas mas larga que %1 caracteres - + The password contains too long of a monotonic character sequence La contraseña contiene secuencias monotónicas muy largas - + No password supplied Contraseña no suministrada - + Cannot obtain random numbers from the RNG device No pueden obtenerse números aleatorios del dispositivo RING - + Password generation failed - required entropy too low for settings Generación de contraseña fallida - entropía requerida muy baja para los ajustes - + The password fails the dictionary check - %1 La contraseña falla el chequeo del diccionario %1 - + The password fails the dictionary check La contraseña falla el chequeo del diccionario - + Unknown setting - %1 Configuración desconocida - %1 - + Unknown setting Configuración desconocida - + Bad integer value of setting - %1 Valor entero de configuración incorrecto - %1 - + Bad integer value Valor entero incorrecto - + Setting %1 is not of integer type Ajuste de % 1 no es de tipo entero - + Setting is not of integer type Ajuste no es de tipo entero - + Setting %1 is not of string type El ajuste %1 no es de tipo cadena - + Setting is not of string type El ajuste no es de tipo cadena - + Opening the configuration file failed Apertura del archivo de configuración fallida - + The configuration file is malformed El archivo de configuración está malformado - + Fatal failure Falla fatal - + Unknown error Error desconocido - + Password is empty @@ -2512,117 +2533,117 @@ El instalador terminará y se perderán todos los cambios. PartitionViewStep - + Gathering system information... 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 +2691,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 +3185,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 +3440,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 +3469,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 +3549,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 +3567,7 @@ Salida UsersViewStep - + Users Usuarios @@ -3789,19 +3780,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 +3800,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 +3845,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..f0eaaff3d 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. Formulario - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location Ubicación @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Ubicación @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..48678eaf4 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 @@ -508,134 +508,134 @@ Paigaldaja sulgub ning kõik muutused kaovad. Form - + Select storage de&vice: Vali mäluseade: - - - - + + + + Current: Hetkel: - + After: Pärast: - - <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 @@ -1219,7 +1249,8 @@ Paigaldaja sulgub ning kõik muutused kaovad. Kinnita salaväljendit - + + Please enter the same passphrase in both boxes. Palun sisesta sama salaväljend mõlemisse kasti. @@ -1227,37 +1258,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 +1539,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 +1601,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 +1702,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 +1729,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. LocaleViewStep - + Location Asukoht @@ -1775,7 +1791,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. 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. @@ -1936,247 +1957,247 @@ Paigaldaja sulgub ning kõik muutused kaovad. PWQ - + Password is too short Parool on liiga lühike - + Password is too long Parool on liiga pikk - + Password is too weak Parool on liiga nõrk - + Memory allocation error when setting '%1' Mälu eraldamise viga valikut "%1" määrates - + Memory allocation error Mälu eraldamise viga - + The password is the same as the old one Parool on sama mis enne - + The password is a palindrome Parool on palindroom - + The password differs with case changes only Parool erineb ainult suurtähtede poolest - + The password is too similar to the old one Parool on eelmisega liiga sarnane - + The password contains the user name in some form Parool sisaldab mingil kujul kasutajanime - + The password contains words from the real name of the user in some form Parool sisaldab mingil kujul sõnu kasutaja pärisnimest - + The password contains forbidden words in some form Parool sisaldab mingil kujul sobimatuid sõnu - + The password contains less than %1 digits Parool sisaldab vähem kui %1 numbrit - + The password contains too few digits Parool sisaldab liiga vähe numbreid - + The password contains less than %1 uppercase letters Parool sisaldab vähem kui %1 suurtähte - + The password contains too few uppercase letters Parool sisaldab liiga vähe suurtähti - + The password contains less than %1 lowercase letters Parool sisaldab vähem kui %1 väiketähte - + The password contains too few lowercase letters Parool sisaldab liiga vähe väiketähti - + The password contains less than %1 non-alphanumeric characters Parool sisaldab vähem kui %1 mitte-tähestikulist märki - + The password contains too few non-alphanumeric characters Parool sisaldab liiga vähe mitte-tähestikulisi märke - + The password is shorter than %1 characters Parool on lühem kui %1 tähemärki - + The password is too short Parool on liiga lühike - + The password is just rotated old one Parool on lihtsalt pööratud eelmine parool - + The password contains less than %1 character classes Parool sisaldab vähem kui %1 tähemärgiklassi - + The password does not contain enough character classes Parool ei sisalda piisavalt tähemärgiklasse - + The password contains more than %1 same characters consecutively Parool sisaldab järjest rohkem kui %1 sama tähemärki - + The password contains too many same characters consecutively Parool sisaldab järjest liiga palju sama tähemärki - + The password contains more than %1 characters of the same class consecutively Parool sisaldab järjest samast klassist rohkem kui %1 tähemärki - + The password contains too many characters of the same class consecutively Parool sisaldab järjest liiga palju samast klassist tähemärke - + The password contains monotonic sequence longer than %1 characters Parool sisaldab monotoonset jada, mis on pikem kui %1 tähemärki - + The password contains too long of a monotonic character sequence Parool sisaldab liiga pikka monotoonsete tähemärkide jada - + No password supplied Parooli ei sisestatud - + Cannot obtain random numbers from the RNG device RNG seadmest ei saanud hankida juhuslikke numbreid - + Password generation failed - required entropy too low for settings Parooligenereerimine ebaõnnestus - nõutud entroopia on seadete jaoks liiga vähe - + The password fails the dictionary check - %1 Parool põrub sõnastikukontrolli - %1 - + The password fails the dictionary check Parool põrub sõnastikukontrolli - + Unknown setting - %1 Tundmatu valik - %1 - + Unknown setting Tundmatu valik - + Bad integer value of setting - %1 Halb täisarvuline väärtus valikul - %1 - + Bad integer value Halb täisarvuväärtus - + Setting %1 is not of integer type Valik %1 pole täisarvu tüüpi - + Setting is not of integer type Valik ei ole täisarvu tüüpi - + Setting %1 is not of string type Valik %1 ei ole string-tüüpi - + Setting is not of string type Valik ei ole string-tüüpi - + Opening the configuration file failed Konfiguratsioonifaili avamine ebaõnnestus - + The configuration file is malformed Konfiguratsioonifail on rikutud - + Fatal failure Saatuslik viga - + Unknown error Tundmatu viga - + Password is empty @@ -2510,117 +2531,117 @@ Paigaldaja sulgub ning kõik muutused kaovad. PartitionViewStep - + Gathering system information... 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 +2689,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 +3182,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 +3437,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 +3466,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 +3546,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 +3564,7 @@ Väljund: UsersViewStep - + Users Kasutajad @@ -3786,19 +3777,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 +3797,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 +3842,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..de13ffabf 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 @@ -508,134 +508,134 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Formulario - + Select storage de&vice: Aukeratu &biltegiratze-gailua: - - - - + + + + Current: Unekoa: - + After: Ondoren: - - <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 @@ -1219,7 +1249,8 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Berretsi pasahitza - + + Please enter the same passphrase in both boxes. Mesedez sartu pasahitz berdina bi kutxatan. @@ -1227,37 +1258,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 +1539,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 +1601,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 +1702,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 +1729,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LocaleViewStep - + Location Kokapena @@ -1775,7 +1791,12 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. 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. @@ -1936,247 +1957,247 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. PWQ - + Password is too short Pasahitza laburregia da - + Password is too long Pasahitza luzeegia da - + Password is too weak Pasahitza ahulegia da - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one Pasahitza aurreko zahar baten berdina da - + The password is a palindrome Pasahitza palindromoa da - + The password differs with case changes only - + The password is too similar to the old one Pasahitza aurreko zahar baten oso antzerakoa da - + 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 Pasahitzak %1 baino zenbaki gutxiago ditu - + The password contains too few digits Pasahitzak zenbaki gutxiegi ditu - + The password contains less than %1 uppercase letters Pasahitzak %1 baino maiuskula gutxiago ditu - + The password contains too few uppercase letters Pasahitzak maiuskula gutxiegi ditu - + The password contains less than %1 lowercase letters Pasahitzak %1 baino minuskula gutxiago ditu - + The password contains too few lowercase letters Pasahitzak minuskula gutxiegi ditu - + The password contains less than %1 non-alphanumeric characters Pasahitzak alfabetokoak ez diren %1 baino karaktere gutxiago ditu - + The password contains too few non-alphanumeric characters Pasahitzak alfabetokoak ez diren karaktere gutxiegi ditu - + The password is shorter than %1 characters Pasahitza %1 karaktere baino motzagoa da. - + The password is too short Pasahitza motzegia da - + 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 Ezin izan da konfigurazio fitxategia zabaldu. - + The configuration file is malformed Konfigurazio fitxategia ez dago ondo eginda. - + Fatal failure Hutsegite larria - + Unknown error Hutsegite ezezaguna - + Password is empty @@ -2510,117 +2531,117 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. PartitionViewStep - + Gathering system information... 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 +2689,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 +3181,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 +3436,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 +3465,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 +3545,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 +3563,7 @@ Irteera: UsersViewStep - + Users Erabiltzaileak @@ -3785,19 +3776,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 +3796,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 +3841,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..3042e1aa0 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 @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. فرم - + 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. - <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 @@ -1221,7 +1251,8 @@ The installer will quit and all changes will be lost. تأیید عبارت عبور - + + Please enter the same passphrase in both boxes. لطفاً عبارت عبور یکسانی را در هر دو جعبه وارد کنید. @@ -1229,37 +1260,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 +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/%2. @@ -1572,32 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location موقعیت @@ -1777,7 +1793,12 @@ The installer will quit and all changes will be lost. 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. @@ -1938,247 +1959,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short گذرواژه خیلی کوتاه است - + Password is too long گذرواژه خیلی بلند است - + Password is too weak گذرواژه خیلی ضعیف است - + 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 - + 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 گذرواژه کوتاه‌تر از %1 نویسه است - + 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 مقدار صحیح بد در تنظیمات - %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 خطای مهلک - + Unknown error خطای ناشناخته - + Password is empty گذرواژه خالی است @@ -2512,117 +2533,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... جمع‌آوری اطّلاعات سامانه… - + 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 +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. @@ -3160,29 +3181,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 +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. @@ -3444,28 +3465,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 +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. - نام کاربریتان بیش از حد بلند است. - - - - 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 +3563,7 @@ Output: UsersViewStep - + Users کاربران @@ -3785,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 بازگشت @@ -3805,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 صفحه‌کلیدتان را بیازمایید @@ -3850,17 +3841,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..28fb3d625 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 @@ -510,134 +510,134 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Lomake - + Select storage de&vice: Valitse tallennus&laite: - - - - + + + + Current: Nykyinen: - + After: Jälkeen: - - <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 @@ -1222,7 +1252,8 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.Vahvista salasana - + + Please enter the same passphrase in both boxes. Anna sama salasana molemmissa ruuduissa. @@ -1230,37 +1261,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 +1542,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 +1604,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 +1705,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 +1732,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. LocaleViewStep - + Location Sijainti @@ -1778,7 +1794,12 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. Map - + + Timezone: %1 + Aikavyöhyke: %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. @@ -1941,247 +1962,247 @@ hiiren vieritystä skaalaamiseen. PWQ - + Password is too short Salasana on liian lyhyt - + Password is too long Salasana on liian pitkä - + Password is too weak Salasana on liian heikko - + Memory allocation error when setting '%1' Muistin varausvirhe asetettaessa '%1' - + Memory allocation error Muistin varausvirhe - + The password is the same as the old one Salasana on sama kuin vanha - + The password is a palindrome Salasana on palindromi - + The password differs with case changes only Salasana eroaa vain vähäisin muutoksin - + The password is too similar to the old one Salasana on liian samanlainen kuin vanha - + The password contains the user name in some form Salasana sisältää jonkin käyttäjänimen - + The password contains words from the real name of the user in some form Salasana sisältää sanoja käyttäjän todellisesta nimestä jossain muodossa - + The password contains forbidden words in some form Salasana sisältää kiellettyjä sanoja - + The password contains less than %1 digits Salasana sisältää vähemmän kuin %1 numeroa - + The password contains too few digits Salasana sisältää liian vähän numeroita - + The password contains less than %1 uppercase letters Salasana sisältää vähemmän kuin %1 isoja kirjaimia - + The password contains too few uppercase letters Salasana sisältää liian vähän isoja kirjaimia - + The password contains less than %1 lowercase letters Salasana sisältää vähemmän kuin %1 pieniä kirjaimia - + The password contains too few lowercase letters Salasana sisältää liian vähän pieniä kirjaimia - + The password contains less than %1 non-alphanumeric characters Salasanassa on vähemmän kuin %1 erikoismerkkiä - + The password contains too few non-alphanumeric characters Salasana sisältää liian vähän erikoismerkkejä - + The password is shorter than %1 characters Salasana on lyhyempi kuin %1 merkkiä - + The password is too short Salasana on liian lyhyt - + The password is just rotated old one Salasana on vain vanhan pyöritystä - + The password contains less than %1 character classes Salasana sisältää vähemmän kuin %1 merkkiluokkaa - + The password does not contain enough character classes Salasana ei sisällä tarpeeksi merkkiluokkia - + The password contains more than %1 same characters consecutively Salasana sisältää enemmän kuin %1 samaa merkkiä peräkkäin - + The password contains too many same characters consecutively Salasana sisältää liian monta samaa merkkiä peräkkäin - + The password contains more than %1 characters of the same class consecutively Salasana sisältää enemmän kuin %1 merkkiä samasta luokasta peräkkäin - + The password contains too many characters of the same class consecutively Salasana sisältää liian monta saman luokan merkkiä peräkkäin - + The password contains monotonic sequence longer than %1 characters Salasana sisältää monotonisen merkkijonon, joka on pidempi kuin %1 merkkiä - + The password contains too long of a monotonic character sequence Salasanassa on liian pitkä monotoninen merkkijono - + No password supplied Salasanaa ei annettu - + Cannot obtain random numbers from the RNG device Satunnaislukuja ei voi saada RNG-laitteesta - + Password generation failed - required entropy too low for settings Salasanojen luonti epäonnistui - pakollinen vähimmäistaso liian alhainen asetuksia varten - + The password fails the dictionary check - %1 Salasana epäonnistui sanaston tarkistuksessa -%1 - + The password fails the dictionary check Salasana epäonnistui sanaston tarkistuksessa - + Unknown setting - %1 Tuntematon asetus - %1 - + Unknown setting Tuntematon asetus - + Bad integer value of setting - %1 Asetuksen virheellinen kokonaisluku - %1 - + Bad integer value Virheellinen kokonaisluku - + Setting %1 is not of integer type Asetus %1 ei ole kokonaisluku - + Setting is not of integer type Asetus ei ole kokonaisluku - + Setting %1 is not of string type Asetus %1 ei ole merkkijono - + Setting is not of string type Asetus ei ole merkkijono - + Opening the configuration file failed Määritystiedoston avaaminen epäonnistui - + The configuration file is malformed Määritystiedosto on väärin muotoiltu - + Fatal failure Vakava virhe - + Unknown error Tuntematon virhe - + Password is empty Salasana on tyhjä @@ -2515,117 +2536,117 @@ hiiren vieritystä skaalaamiseen. PartitionViewStep - + Gathering system information... 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 +2694,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 +3191,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 +3446,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 +3475,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 +3555,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 +3573,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. UsersViewStep - + Users Käyttäjät @@ -3806,21 +3797,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 +3819,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 +3864,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..3b236b2cb 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 @@ -510,134 +510,134 @@ L'installateur se fermera et les changements seront perdus. Formulaire - + Select storage de&vice: Sélectionnez le support de sto&ckage : - - - - + + + + Current: Actuel : - + After: Après: - - <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 @@ -1221,7 +1251,8 @@ L'installateur se fermera et les changements seront perdus. Confirmez la phrase de passe - + + Please enter the same passphrase in both boxes. Merci d'entrer la même phrase de passe dans les deux champs. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ L'installateur se fermera et les changements seront perdus. LocaleViewStep - + Location Localisation @@ -1777,7 +1793,12 @@ L'installateur se fermera et les changements seront perdus. 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. @@ -1938,247 +1959,247 @@ L'installateur se fermera et les changements seront perdus. PWQ - + Password is too short Le mot de passe est trop court - + Password is too long Le mot de passe est trop long - + Password is too weak Le mot de passe est trop faible - + Memory allocation error when setting '%1' Erreur d'allocation mémoire lors du paramétrage de '%1' - + Memory allocation error Erreur d'allocation mémoire - + The password is the same as the old one Le mot de passe est identique au précédent - + The password is a palindrome Le mot de passe est un palindrome - + The password differs with case changes only Le mot de passe ne diffère que sur la casse - + The password is too similar to the old one Le mot de passe est trop similaire à l'ancien - + The password contains the user name in some form Le mot de passe contient le nom d'utilisateur sous une certaine forme - + The password contains words from the real name of the user in some form Le mot de passe contient des mots provenant du nom d'utilisateur sous une certaine forme - + The password contains forbidden words in some form Le mot de passe contient des mots interdits sous une certaine forme - + The password contains less than %1 digits Le mot de passe contient moins de %1 chiffres - + The password contains too few digits Le mot de passe ne contient pas assez de chiffres - + The password contains less than %1 uppercase letters Le mot de passe contient moins de %1 lettres majuscules - + The password contains too few uppercase letters Le mot de passe ne contient pas assez de lettres majuscules - + The password contains less than %1 lowercase letters Le mot de passe contient moins de %1 lettres minuscules - + The password contains too few lowercase letters Le mot de passe ne contient pas assez de lettres minuscules - + The password contains less than %1 non-alphanumeric characters Le mot de passe contient moins de %1 caractères spéciaux - + The password contains too few non-alphanumeric characters Le mot de passe ne contient pas assez de caractères spéciaux - + The password is shorter than %1 characters Le mot de passe fait moins de %1 caractères - + The password is too short Le mot de passe est trop court - + The password is just rotated old one Le mot de passe saisit correspond avec un de vos anciens mot de passe - + The password contains less than %1 character classes Le mot de passe contient moins de %1 classes de caractères - + The password does not contain enough character classes Le mot de passe ne contient pas assez de classes de caractères - + The password contains more than %1 same characters consecutively Le mot de passe contient plus de %1 fois le même caractère à la suite - + The password contains too many same characters consecutively Le mot de passe contient trop de fois le même caractère à la suite - + The password contains more than %1 characters of the same class consecutively Le mot de passe contient plus de %1 caractères de la même classe consécutivement - + The password contains too many characters of the same class consecutively Le mot de passe contient trop de caractères de la même classe consécutivement - + The password contains monotonic sequence longer than %1 characters Le mot de passe contient une séquence de caractères monotones de %1 caractères - + The password contains too long of a monotonic character sequence Le mot de passe contient une trop longue séquence de caractères monotones - + No password supplied Aucun mot de passe saisi - + Cannot obtain random numbers from the RNG device Impossible d'obtenir des nombres aléatoires depuis le générateur de nombres aléatoires - + Password generation failed - required entropy too low for settings La génération du mot de passe a échoué - L'entropie minimum nécessaire n'est pas satisfaite par les paramètres - + The password fails the dictionary check - %1 Le mot de passe a échoué le contrôle de qualité par dictionnaire - %1 - + The password fails the dictionary check Le mot de passe a échoué le contrôle de qualité par dictionnaire - + Unknown setting - %1 Paramètre inconnu - %1 - + Unknown setting Paramètre inconnu - + Bad integer value of setting - %1 Valeur incorrect du paramètre - %1 - + Bad integer value Mauvaise valeur d'entier - + Setting %1 is not of integer type Le paramètre %1 n'est pas de type entier - + Setting is not of integer type Le paramètre n'est pas de type entier - + Setting %1 is not of string type Le paramètre %1 n'est pas une chaîne de caractères - + Setting is not of string type Le paramètre n'est pas une chaîne de caractères - + Opening the configuration file failed L'ouverture du fichier de configuration a échouée - + The configuration file is malformed Le fichier de configuration est mal formé - + Fatal failure Erreur fatale - + Unknown error Erreur inconnue - + Password is empty Le mot de passe est vide @@ -2512,117 +2533,117 @@ L'installateur se fermera et les changements seront perdus. PartitionViewStep - + Gathering system information... 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 +2692,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 +3185,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 +3440,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 +3469,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 +3549,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 +3567,7 @@ Sortie UsersViewStep - + Users Utilisateurs @@ -3789,19 +3780,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 +3800,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 +3845,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..92c7c69a2 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..ae88c05fc 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 @@ -509,134 +509,134 @@ O instalador pecharase e perderanse todos os cambios. Formulario - + Select storage de&vice: Seleccione o dispositivo de almacenamento: - - - - + + + + Current: Actual: - + After: Despois: - - <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 @@ -1220,7 +1250,8 @@ O instalador pecharase e perderanse todos os cambios. Confirme a frase de contrasinal - + + Please enter the same passphrase in both boxes. Faga o favor de introducila a misma frase de contrasinal námbalas dúas caixas. @@ -1228,37 +1259,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 +1540,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 +1602,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 +1703,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 +1730,7 @@ O instalador pecharase e perderanse todos os cambios. LocaleViewStep - + Location Localización... @@ -1776,7 +1792,12 @@ O instalador pecharase e perderanse todos os cambios. 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. @@ -1937,247 +1958,247 @@ O instalador pecharase e perderanse todos os cambios. PWQ - + Password is too short O contrasinal é demasiado curto - + Password is too long O contrasinal é demasiado longo - + Password is too weak O contrasinal é moi feble - + Memory allocation error when setting '%1' Erro de asignación de memoria ao configurar «%1» - + Memory allocation error Erro de asignación de memoria - + The password is the same as the old one O contrasinal é o mesmo que o anterior - + The password is a palindrome O contrasinal é un palíndromo - + The password differs with case changes only O contrasinal difire só no uso de maiúsculas - + The password is too similar to the old one O contrasinal é demasiado semellante ao anterior - + The password contains the user name in some form O contrasinal contén o nome do usuario ou unha variante - + The password contains words from the real name of the user in some form O contrasinal contén palabras do nome real do usuario ou unha variante - + The password contains forbidden words in some form O contrasinal contén palabras prohibidas ou unha variante - + The password contains less than %1 digits O contrasinal contén menos de %1 díxitos - + The password contains too few digits O contrasinal contén moi poucos díxitos - + The password contains less than %1 uppercase letters O contrasinal contén menos de %1 maiúsculas - + The password contains too few uppercase letters O contrasinal contén moi poucas maiúsculas - + The password contains less than %1 lowercase letters O contrasinal contén menos de %1 minúsculas - + The password contains too few lowercase letters O contrasinal contén moi poucas minúsculas - + The password contains less than %1 non-alphanumeric characters O contrasinal contén menos de %1 caracteres alfanuméricos - + The password contains too few non-alphanumeric characters O contrasinal contén moi poucos caracteres non alfanuméricos - + The password is shorter than %1 characters O contrasinal ten menos de %1 caracteres - + The password is too short O contrasinal é moi curto - + The password is just rotated old one O contrasinal é un anterior reutilizado - + The password contains less than %1 character classes O contrasinal contén menos de %1 clases de caracteres - + The password does not contain enough character classes O contrasinal non contén suficientes clases de caracteres - + The password contains more than %1 same characters consecutively O contrasinal contén máis de %1 caracteres iguais consecutivos - + The password contains too many same characters consecutively O contrasinal contén demasiados caracteres iguais consecutivos - + The password contains more than %1 characters of the same class consecutively O contrasinal contén máis de %1 caracteres consecutivos da mesma clase - + The password contains too many characters of the same class consecutively O contrasinal contén demasiados caracteres da mesma clase consecutivos - + The password contains monotonic sequence longer than %1 characters O contrasinal contén unha secuencia monotónica de máis de %1 caracteres - + The password contains too long of a monotonic character sequence O contrasinal contén unha secuencia de caracteres monotónica demasiado longa - + No password supplied Non se indicou o contrasinal - + Cannot obtain random numbers from the RNG device Non é posíbel obter números aleatorios do servizo de RNG - + Password generation failed - required entropy too low for settings Fallou a xeración do contrasinal - a entropía requirida é demasiado baixa para a configuración - + The password fails the dictionary check - %1 O contrasinal falla a comprobación do dicionario - %1 - + The password fails the dictionary check O contrasinal falla a comprobación do dicionario - + Unknown setting - %1 Configuración descoñecida - %1 - + Unknown setting Configuración descoñecida - + Bad integer value of setting - %1 Valor enteiro incorrecto de opción - %1 - + Bad integer value Valor enteiro incorrecto - + Setting %1 is not of integer type A opción %1 non é de tipo enteiro - + Setting is not of integer type A opción non é de tipo enteiro - + Setting %1 is not of string type A opción %1 non é de tipo cadea - + Setting is not of string type A opción non é de tipo cadea - + Opening the configuration file failed Non foi posíbel abrir o ficheiro de configuración - + The configuration file is malformed O ficheiro de configuración está mal escrito - + Fatal failure Fallo fatal - + Unknown error Erro descoñecido - + Password is empty @@ -2511,117 +2532,117 @@ O instalador pecharase e perderanse todos os cambios. PartitionViewStep - + Gathering system information... 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 +2690,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 +3183,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 +3438,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 +3467,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 +3547,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 +3565,7 @@ Saída: UsersViewStep - + Users Usuarios @@ -3787,19 +3778,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 +3798,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 +3843,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..9d3d1e327 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..51af5736d 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 @@ -514,134 +514,134 @@ The installer will quit and all changes will be lost. 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. - <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 @@ -1225,7 +1255,8 @@ The installer will quit and all changes will be lost. אישור מילת צופן - + + Please enter the same passphrase in both boxes. נא להקליד את אותה מילת הצופן בשתי התיבות. @@ -1233,37 +1264,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. נקודות עיגון מוגדרות. @@ -1331,7 +1362,7 @@ The installer will quit and all changes will be lost. The setup of %1 is complete. - התקנת %1 הושלמה. + ההתקנה של %1 הושלמה. @@ -1514,12 +1545,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 +1607,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 +1708,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 +1735,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location מיקום @@ -1781,7 +1797,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + אזור זמן: %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. @@ -1944,247 +1965,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short הססמה קצרה מדי - + Password is too long הססמה ארוכה מדי - + Password is too weak הססמה חלשה מדי - + 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 תווים - + The password is too short הססמה קצרה מדי - + 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 הססמה נכשלה במבחן המילון - + Unknown setting - %1 הגדרה לא מוכרת - %1 - + Unknown setting הגדרה לא מוכרת - + 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 כשל מכריע - + Unknown error שגיאה לא ידועה - + Password is empty הססמה ריקה @@ -2518,117 +2539,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... נאסף מידע על המערכת… - + 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 +2697,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 +3193,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 +3448,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 +3477,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 +3557,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 +3575,7 @@ Output: UsersViewStep - + Users משתמשים @@ -3741,7 +3732,7 @@ Output: About %1 setup - על אודות התקנת %1 + אודות התקנת %1 @@ -3808,21 +3799,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 +3821,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 +3866,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..28653609a 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 इंस्टॉलर @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. रूप - + Select storage de&vice: डिवाइस चुनें (&v): - - - - + + + + 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>मैनुअल विभाजन</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. + समय क्षेत्र %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. + उपयोक्ता नाम के रूप में '%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 @@ -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 @@ -1221,7 +1251,8 @@ The installer will quit and all changes will be lost. कूटशब्द की पुष्टि करें - + + Please enter the same passphrase in both boxes. कृपया दोनों स्थानों में समान कूटशब्द दर्ज करें। @@ -1229,37 +1260,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 +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/%2 सेट करें। @@ -1572,32 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location स्थान @@ -1777,7 +1793,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + समय क्षेत्र : %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. @@ -1940,247 +1961,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short कूटशब्द बहुत छोटा है - + Password is too long कूटशब्द बहुत लंबा है - + Password is too weak कूटशब्द बहुत कमज़ोर है - + 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 इसमें और पिछले कूटशब्द में केवल lower/upper case का फर्क है - + 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 से कम uppercase अक्षर हैं - + The password contains too few uppercase letters इस कूटशब्द में काफ़ी कम uppercase अक्षर हैं - + The password contains less than %1 lowercase letters इस कूटशब्द में %1 से कम lowercase अक्षर हैं - + The password contains too few lowercase letters इस कूटशब्द में काफ़ी कम lowercase अक्षर हैं - + 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 अक्षरों से छोटा है - + The password is too short कूटशब्द बहुत छोटा है - + The password is just rotated old one यह कूटशब्द पुराने वाला ही है, बस घुमा रखा है - + The password contains less than %1 character classes इस कूटशब्द में %1 से कम अक्षर classes हैं - + The password does not contain enough character classes इस कूटशब्द में नाकाफ़ी अक्षर 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 से अधिक समान अक्षर classes लगातार हैं - + The password contains too many characters of the same class consecutively कूटशब्द में काफ़ी ज्यादा एक ही class के अक्षर लगातार हैं - + The password contains monotonic sequence longer than %1 characters कूटशब्द में %1 अक्षरों से लंबा monotonic अनुक्रम है - + The password contains too long of a monotonic character sequence कूटशब्द में काफ़ी बड़ा monotonic अनुक्रम है - + No password supplied कोई कूटशब्द नहीं दिया गया - + Cannot obtain random numbers from the RNG device RNG डिवाइस से यादृच्छिक अंक नहीं मिल सके - + Password generation failed - required entropy too low for settings कूटशब्द बनाना विफल रहा - सेटिंग्स के लिए आवश्यक entropy बहुत कम है - + The password fails the dictionary check - %1 कूटशब्द शब्दकोश की जाँच में विफल रहा - %1 - + The password fails the dictionary check कूटशब्द शब्दकोश की जाँच में विफल रहा - + Unknown setting - %1 अज्ञात सेटिंग- %1 - + Unknown setting अज्ञात सेटिंग - + 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 गंभीर विफलता - + Unknown error अज्ञात त्रुटि - + Password is empty कूटशब्द रिक्त है @@ -2514,117 +2535,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... सिस्टम की जानकारी प्राप्त की जा रही है... - + 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 +2693,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 +3189,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 +3444,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 +3473,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 +3553,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 +3571,7 @@ Output: UsersViewStep - + Users उपयोक्ता @@ -3804,21 +3795,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> सिस्टम स्थानिकी सेटिंग कमांड लाइन के कुछ उपयोक्ता अंतरफलक तत्वों की भाषा व अक्षर सेट पर असर डालती है।<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>. + <h1>स्थानिकी</h1> </br> + सिस्टम स्थानिकी सेटिंग संख्या व दिनांक के प्रारूप को प्रभावित करती है। वर्तमान सेटिंग <strong>%1</strong> है। - + Back वापस @@ -3826,44 +3817,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 +3862,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..152e7ab6d 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 @@ -512,134 +512,134 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Oblik - + Select storage de&vice: Odaberi uređaj za spremanje: - - - - + + + + Current: Trenutni: - + After: Poslije: - - <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 @@ -1223,7 +1253,8 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Potvrdi lozinku - + + Please enter the same passphrase in both boxes. Molimo unesite istu lozinku u oba polja. @@ -1231,37 +1262,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 +1543,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 +1605,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 +1706,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 +1733,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocaleViewStep - + Location Lokacija @@ -1779,7 +1795,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. Map - + + Timezone: %1 + Vremenska zona: %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. @@ -1942,247 +1963,247 @@ te korištenjem tipki +/- ili skrolanjem miša za zumiranje. PWQ - + Password is too short Lozinka je prekratka - + Password is too long Lozinka je preduga - + Password is too weak Lozinka je preslaba - + Memory allocation error when setting '%1' Pogreška u dodjeli memorije prilikom postavljanja '%1' - + Memory allocation error Pogreška u dodjeli memorije - + The password is the same as the old one Lozinka je ista prethodnoj - + The password is a palindrome Lozinka je palindrom - + The password differs with case changes only Lozinka se razlikuje samo u promjenama velikog i malog slova - + The password is too similar to the old one Lozinka je slična prethodnoj - + The password contains the user name in some form Lozinka u nekoj formi sadrži korisničko ime - + The password contains words from the real name of the user in some form Lozinka u nekoj formi sadrži stvarno ime korisnika - + The password contains forbidden words in some form Lozinka u nekoj formi sadrži zabranjene rijeći - + The password contains less than %1 digits Lozinka sadrži manje od %1 brojeva - + The password contains too few digits Lozinka sadrži premalo brojeva - + The password contains less than %1 uppercase letters Lozinka sadrži manje od %1 velikih slova - + The password contains too few uppercase letters Lozinka sadrži premalo velikih slova - + The password contains less than %1 lowercase letters Lozinka sadrži manje od %1 malih slova - + The password contains too few lowercase letters Lozinka sadrži premalo malih slova - + The password contains less than %1 non-alphanumeric characters Lozinka sadrži manje od %1 ne-alfanumeričkih znakova. - + The password contains too few non-alphanumeric characters Lozinka sadrži premalo ne-alfanumeričkih znakova - + The password is shorter than %1 characters Lozinka je kraća od %1 znakova - + The password is too short Lozinka je prekratka - + The password is just rotated old one Lozinka je jednaka rotiranoj prethodnoj - + The password contains less than %1 character classes Lozinka sadrži manje od %1 razreda znakova - + The password does not contain enough character classes Lozinka ne sadrži dovoljno razreda znakova - + The password contains more than %1 same characters consecutively Lozinka sadrži više od %1 uzastopnih znakova - + The password contains too many same characters consecutively Lozinka sadrži previše uzastopnih znakova - + The password contains more than %1 characters of the same class consecutively Lozinka sadrži više od %1 uzastopnih znakova iz istog razreda - + The password contains too many characters of the same class consecutively Lozinka sadrži previše uzastopnih znakova iz istog razreda - + The password contains monotonic sequence longer than %1 characters Lozinka sadrži monotonu sekvencu dužu od %1 znakova - + The password contains too long of a monotonic character sequence Lozinka sadrži previše monotonu sekvencu znakova - + No password supplied Nema isporučene lozinke - + Cannot obtain random numbers from the RNG device Ne mogu dobiti slučajne brojeve od RNG uređaja - + Password generation failed - required entropy too low for settings Generiranje lozinke nije uspjelo - potrebna entropija je premala za postavke - + The password fails the dictionary check - %1 Nije uspjela provjera rječnika za lozinku - %1 - + The password fails the dictionary check Nije uspjela provjera rječnika za lozinku - + Unknown setting - %1 Nepoznate postavke - %1 - + Unknown setting Nepoznate postavke - + Bad integer value of setting - %1 Loša cjelobrojna vrijednost postavke - %1 - + Bad integer value Loša cjelobrojna vrijednost - + Setting %1 is not of integer type Postavka %1 nije cjelobrojnog tipa - + Setting is not of integer type Postavka nije cjelobrojnog tipa - + Setting %1 is not of string type Postavka %1 nije tipa znakovnog niza - + Setting is not of string type Postavka nije tipa znakovnog niza - + Opening the configuration file failed Nije uspjelo otvaranje konfiguracijske datoteke - + The configuration file is malformed Konfiguracijska datoteka je oštećena - + Fatal failure Fatalna pogreška - + Unknown error Nepoznata greška - + Password is empty Lozinka je prazna @@ -2516,117 +2537,117 @@ te korištenjem tipki +/- ili skrolanjem miša za zumiranje. PartitionViewStep - + Gathering system information... 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 +2695,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 +3191,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 +3446,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 +3475,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 +3555,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 +3573,7 @@ Postavljanje se može nastaviti, ali neke će značajke možda biti onemogućene UsersViewStep - + Users Korisnici @@ -3806,21 +3797,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 +3819,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 +3864,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..e04b7c4f9 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ő @@ -509,134 +509,134 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. Adatlap - + Select storage de&vice: Válassz tároló eszközt: - - - - + + + + Current: Aktuális: - + After: Utána: - - <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 @@ -1221,7 +1251,8 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a>Jelszó megerősítés - + + Please enter the same passphrase in both boxes. Írd be ugyanazt a jelmondatot mindkét dobozban. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> LocaleViewStep - + Location Hely @@ -1777,7 +1793,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> 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. @@ -1938,247 +1959,247 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> PWQ - + Password is too short Túl rövid jelszó - + Password is too long Túl hosszú jelszó - + Password is too weak A jelszó túl gyenge - + Memory allocation error when setting '%1' Memóriafoglalási hiba a(z) „%1” beállításakor - + Memory allocation error Memóriafoglalási hiba - + The password is the same as the old one A jelszó ugyanaz, mint a régi - + The password is a palindrome A jelszó egy palindrom - + The password differs with case changes only A jelszó csak kis- és nagybetűben tér el - + The password is too similar to the old one A jelszó túlságosan hasonlít a régire - + The password contains the user name in some form A jelszó tartalmazza felhasználónevet valamilyen formában - + The password contains words from the real name of the user in some form A jelszó tartalmazza a felhasználó valódi nevét valamilyen formában - + The password contains forbidden words in some form A jelszó tiltott szavakat tartalmaz valamilyen formában - + The password contains less than %1 digits A jelszó kevesebb mint %1 számjegyet tartalmaz - + The password contains too few digits A jelszó túl kevés számjegyet tartalmaz - + The password contains less than %1 uppercase letters A jelszó kevesebb mint %1 nagybetűt tartalmaz - + The password contains too few uppercase letters A jelszó túl kevés nagybetűt tartalmaz - + The password contains less than %1 lowercase letters A jelszó kevesebb mint %1 kisbetűt tartalmaz - + The password contains too few lowercase letters A jelszó túl kevés kisbetűt tartalmaz - + The password contains less than %1 non-alphanumeric characters A jelszó kevesebb mint %1 nem alfanumerikus karaktert tartalmaz - + The password contains too few non-alphanumeric characters A jelszó túl kevés nem alfanumerikus karaktert tartalmaz - + The password is shorter than %1 characters A jelszó rövidebb mint %1 karakter - + The password is too short A jelszó túl rövid - + The password is just rotated old one A jelszó egy újra felhasznált régi jelszó - + The password contains less than %1 character classes A jelszó kevesebb mint %1 karaktert tartalmaz - + The password does not contain enough character classes A jelszó nem tartalmaz elég karakterosztályt - + The password contains more than %1 same characters consecutively A jelszó több mint %1 egyező karaktert tartalmaz egymás után - + The password contains too many same characters consecutively A jelszó túl sok egyező karaktert tartalmaz egymás után - + The password contains more than %1 characters of the same class consecutively A jelszó több mint %1 karaktert tartalmaz ugyanabból a karakterosztályból egymás után - + The password contains too many characters of the same class consecutively A jelszó túl sok karaktert tartalmaz ugyanabból a karakterosztályból egymás után - + The password contains monotonic sequence longer than %1 characters A jelszó %1 karakternél hosszabb monoton sorozatot tartalmaz - + The password contains too long of a monotonic character sequence A jelszó túl hosszú monoton karaktersorozatot tartalmaz - + No password supplied Nincs jelszó megadva - + Cannot obtain random numbers from the RNG device Nem nyerhetőek ki véletlenszámok az RNG eszközből - + Password generation failed - required entropy too low for settings A jelszó előállítás meghiúsult – a szükséges entrópia túl alacsony a beállításokhoz - + The password fails the dictionary check - %1 A jelszó megbukott a szótárellenőrzésen – %1 - + The password fails the dictionary check A jelszó megbukott a szótárellenőrzésen - + Unknown setting - %1 Ismeretlen beállítás – %1 - + Unknown setting Ismeretlen beállítás - + Bad integer value of setting - %1 Hibás egész érték a beállításnál – %1 - + Bad integer value Hibás egész érték - + Setting %1 is not of integer type A(z) %1 beállítás nem egész típusú - + Setting is not of integer type A beállítás nem egész típusú - + Setting %1 is not of string type A(z) %1 beállítás nem karakterlánc típusú - + Setting is not of string type A beállítás nem karakterlánc típusú - + Opening the configuration file failed A konfigurációs fájl megnyitása meghiúsult - + The configuration file is malformed A konfigurációs fájl rosszul formázott - + Fatal failure Végzetes hiba - + Unknown error Ismeretlen hiba - + Password is empty @@ -2512,117 +2533,117 @@ Telepítés nem folytatható. <a href="#details">Részletek...</a> PartitionViewStep - + Gathering system information... 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 +2691,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 +3185,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 +3440,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 +3469,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 +3550,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 +3568,7 @@ Calamares hiba %1. UsersViewStep - + Users Felhasználók @@ -3790,19 +3781,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 +3801,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 +3846,7 @@ Calamares hiba %1. localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_i18n.qrc.in b/lang/calamares_i18n.qrc.in new file mode 100644 index 000000000..dd7931e09 --- /dev/null +++ b/lang/calamares_i18n.qrc.in @@ -0,0 +1,9 @@ + + + + +@calamares_i18n_qrc_content@ + + diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index f7cc5b54e..7f7189370 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 @@ -506,134 +506,134 @@ Instalasi akan ditutup dan semua perubahan akan hilang. Isian - + Select storage de&vice: Pilih perangkat penyimpanan: - - - - + + + + Current: Saat ini: - + After: Setelah: - - <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 @@ -1219,7 +1249,8 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Konfirmasi kata sandi - + + Please enter the same passphrase in both boxes. Silakan masukkan kata sandi yang sama di kedua kotak. @@ -1227,37 +1258,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 +1539,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 +1601,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 +1702,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 +1729,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. LocaleViewStep - + Location Lokasi @@ -1775,7 +1791,12 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. 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. @@ -1936,247 +1957,247 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PWQ - + Password is too short Kata sandi terlalu pendek - + Password is too long Kata sandi terlalu panjang - + Password is too weak kata sandi terlalu lemah - + Memory allocation error when setting '%1' Kesalahan alokasi memori saat menyetel '%1' - + Memory allocation error Kesalahan alokasi memori - + The password is the same as the old one Kata sandi sama dengan yang lama - + The password is a palindrome Kata sandi palindrom - + The password differs with case changes only Kata sandi berbeda hanya dengan perubahan huruf saja - + The password is too similar to the old one Kata sandi terlalu mirip dengan yang lama - + The password contains the user name in some form Kata sandi berisi nama pengguna dalam beberapa form - + The password contains words from the real name of the user in some form Kata sandi berisi kata-kata dari nama asli pengguna dalam beberapa form - + The password contains forbidden words in some form Password mengandung kata yang dilarang pada beberapa bagian form - + The password contains less than %1 digits Password setidaknya berisi 1 digit karakter - + The password contains too few digits Kata sandi terkandung terlalu sedikit digit - + The password contains less than %1 uppercase letters Kata sandi terkandung kurang dari %1 huruf besar - + The password contains too few uppercase letters Kata sandi terkandung terlalu sedikit huruf besar - + The password contains less than %1 lowercase letters Kata sandi terkandung kurang dari %1 huruf kecil - + The password contains too few lowercase letters Kata sandi terkandung terlalu sedikit huruf kecil - + The password contains less than %1 non-alphanumeric characters Kata sandi terkandung kurang dari %1 karakter non-alfanumerik - + The password contains too few non-alphanumeric characters Kata sandi terkandung terlalu sedikit non-alfanumerik - + The password is shorter than %1 characters Kata sandi terlalu pendek dari %1 karakter - + The password is too short Password terlalu pendek - + The password is just rotated old one Kata sandi hanya terotasi satu kali - + The password contains less than %1 character classes Kata sandi terkandung kurang dari %1 kelas karakter - + The password does not contain enough character classes Kata sandi tidak terkandung kelas karakter yang cukup - + The password contains more than %1 same characters consecutively Kata sandi terkandung lebih dari %1 karakter berurutan yang sama - + The password contains too many same characters consecutively Kata sandi terkandung terlalu banyak karakter berurutan yang sama - + The password contains more than %1 characters of the same class consecutively Kata sandi terkandung lebih dari %1 karakter dari kelas berurutan yang sama - + The password contains too many characters of the same class consecutively Kata sandi terkandung terlalu banyak karakter dari kelas berurutan yang sama - + The password contains monotonic sequence longer than %1 characters Kata sandi terkandung rangkaian monoton yang lebih panjang dari %1 karakter - + The password contains too long of a monotonic character sequence Kata sandi terkandung rangkaian karakter monoton yang panjang - + No password supplied Tidak ada kata sandi yang dipasok - + Cannot obtain random numbers from the RNG device Tidak dapat memperoleh angka acak dari piranti RNG - + Password generation failed - required entropy too low for settings Penghasilan kata sandi gagal - entropi yang diperlukan terlalu rendah untuk pengaturan - + The password fails the dictionary check - %1 Kata sandi gagal memeriksa kamus - %1 - + The password fails the dictionary check Kata sandi gagal memeriksa kamus - + Unknown setting - %1 Pengaturan tidak diketahui - %1 - + Unknown setting pengaturan tidak diketahui - + Bad integer value of setting - %1 Nilai bilangan bulat buruk dari pengaturan - %1 - + Bad integer value Nilai integer jelek - + Setting %1 is not of integer type Pengaturan %1 tidak termasuk tipe integer - + Setting is not of integer type Pengaturan tidak termasuk tipe integer - + Setting %1 is not of string type Pengaturan %1 tidak termasuk tipe string - + Setting is not of string type Pengaturan tidak termasuk tipe string - + Opening the configuration file failed Ada kesalahan saat membuka berkas konfigurasi - + The configuration file is malformed Kesalahan format pada berkas konfigurasi - + Fatal failure Kegagalan fatal - + Unknown error Ada kesalahan yang tidak diketahui - + Password is empty @@ -2510,117 +2531,117 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. PartitionViewStep - + Gathering system information... 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 +2689,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 +3184,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 +3439,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 +3468,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 +3548,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 +3566,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. UsersViewStep - + Users Pengguna @@ -3788,19 +3779,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 +3799,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 +3844,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 new file mode 100644 index 000000000..ce87c586e --- /dev/null +++ b/lang/calamares_ie.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 + 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) + + + + Calamares::BlankViewStep + + + Blank Page + Blanc págine + + + + Calamares::DebugWindow + + + Form + Redimensionar un gruppe de tomes + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + Modules + + + + Type: + Tip: + + + + + none + + + + + Interface: + + + + + Tools + Utensiles + + + + Reload Stylesheet + + + + + Widget Tree + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Set up + Configurar + + + + Install + Installar + + + + Calamares::FailJob + + + Job failed (%1) + Tache ne successat (%1) + + + + Programmed job failure was explicitly requested. + + + + + Calamares::JobThread + + + Done + Finit + + + + 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 ... + Cargante... + + + + 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 + Configuration ne successat + + + + Installation Failed + Installation ne successat + + + + Would you like to paste the install log to the web? + + + + + Error + Errore + + + + + &Yes + &Yes + + + + + &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 + 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 + &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. + + + + + CalamaresPython::Helper + + + Unknown exception type + Ínconosset tip de exception + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + &Retro + + + + &Next + Ad ava&n + + + + &Cancel + A&nullar + + + + %1 Setup Program + Configiration de %1 + + + + %1 Installer + Installator de %1 + + + + CheckerContainer + + + Gathering system information... + + + + + ChoicePage + + + Form + Redimensionar un gruppe de tomes + + + + Select storage de&vice: + + + + + + + + Current: + Actual: + + + + After: + Pos: + + + + <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 + + + + + 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>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. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + Crear un partition + + + + Si&ze: + &Grandore: + + + + MiB + Mio + + + + Partition &Type: + + + + + &Primary + &Primari + + + + E&xtended + E&xtendet + + + + Fi&le System: + Sistema de fi&les: + + + + LVM LV name + Gruppe (LV) de LVM + + + + &Mount Point: + + + + + Flags: + + + + + En&crypt + &Ciffrar + + + + Logical + Logic + + + + Primary + Primari + + + + 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. + Creante un nov partition de %1 sur %2. + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + Crear li tabelle de partitiones + + + + 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) + Master Boot Record (MBR) + + + + GUID Partition Table (GPT) + Tabelle GUID (GPT) + + + + CreatePartitionTableJob + + + 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. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + Crear un gruppe de tomes + + + + 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 (%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 + Ne successat aperter %1 + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + Contenete: + + + + &Keep + &Retener + + + + Format + Formate + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + &Grandore: + + + + MiB + Mio + + + + Fi&le System: + Sistema de fi&les: + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + Redimensionar un gruppe de tomes + + + + En&crypt system + &Ciffrar li sistema + + + + 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 + Redimensionar un gruppe de tomes + + + + &Restart now + &Reiniciar nu + + + + <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 + 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. + + + + 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. + Creante initramfs med mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Creante initramfs. + + + + InteractiveTerminalPage + + + Konsole not installed + Konsole ne es installat + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + Scripte + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardQmlViewStep + + + Keyboard + Tastatura + + + + KeyboardViewStep + + + Keyboard + Tastatura + + + + 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 + A&nullar + + + + &OK + &OK + + + + LicensePage + + + 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. + + + + + LicenseViewStep + + + License + Licentie + + + + LicenseWidget + + + 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 + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + Region: + + + + Zone: + Zone: + + + + + &Change... + &Modificar... + + + + LocaleQmlViewStep + + + Location + Localisation + + + + LocaleViewStep + + + Location + Localisation + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + Null partition es definit. + + + + + + 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. + Generar li machine-id. + + + + Configuration Error + Errore de configuration + + + + No root mount point is set for MachineId. + + + + + Map + + + Timezone: %1 + Zone horari: %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 + Selection de paccages + + + + Office software + + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + Nucleo + + + + Services + Servicios + + + + Login + + + + + Desktop + + + + + Applications + Applicationes + + + + Communication + Communication + + + + Development + + + + + Office + Officie + + + + Multimedia + + + + + Internet + + + + + Theming + Temas + + + + Gaming + Ludes + + + + Utilities + Utensiles + + + + NotesQmlViewStep + + + Notes + 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 + Configuration de OEM + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + Offline + + + Timezone: %1 + Zone horari: %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 + Li contrasigne es tro curt + + + + Password is too long + Li contrasigne es tro 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 + Ínconosset errore + + + + Password is empty + Li contrasigne es vacui + + + + PackageChooserPage + + + Form + Redimensionar un gruppe de tomes + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + Selection de paccages + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + Paccages + + + + PackageModel + + + Name + Nómine + + + + Description + Descrition + + + + Page_Keyboard + + + Form + Redimensionar un gruppe de tomes + + + + Keyboard Model: + Modelle de tastatura: + + + + Type here to test your keyboard + Tippa ti-ci por provar vor tastatura + + + + Page_UserSetup + + + Form + Redimensionar un gruppe de tomes + + + + 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 + Hem + + + + Boot + Inicie + + + + EFI system + Sistema EFI + + + + Swap + Swap + + + + New partition for %1 + + + + + New partition + Nov partition + + + + %1 %2 + size[number] filesystem[name] + + + + + PartitionModel + + + + Free Space + Líber spacie + + + + + New partition + Nov partition + + + + Name + Nómine + + + + File System + Sistema de files + + + + Mount Point + Monte-punctu + + + + Size + Grandore + + + + PartitionPage + + + Form + Redimensionar un gruppe de tomes + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + 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: + + + + 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 + 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: + 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. + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + Redimensionar un gruppe de tomes + + + + 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 + Aspecte e conduida + + + + 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 + ínconosset + + + + extended + + + + + unformatted + + + + + swap + + + + + Default Keyboard Model + + + + + + Default + Predefinit + + + + + + + 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 + Redimensionar un gruppe de tomes + + + + 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: + Partition de sistema EFI: + + + + 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 + KPMCore ne es disponibil + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + Redimension ne successat + + + + 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. + Redimensionar li 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 + Redimensionar li gruppe de tomes + + + + 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 + Gerer partitiones + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + Intern errore + + + + + Cannot write hostname to target system + + + + + 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. + + + + + 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. + passwd ha terminat con code %1. + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + Assignar li zone horari: %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) + %L1 / %L2 + + + + 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 + Resume + + + + TrackingInstallJob + + + Installation feedback + Response al installation + + + + 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 + Redimensionar un gruppe de tomes + + + + 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 + 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 passwords do not match! + + + + + UsersViewStep + + + Users + Usatores + + + + VariantModel + + + Key + Clave + + + + Value + Valore + + + + VolumeGroupBaseDialog + + + 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: + + + + Physical Extent Size: + + + + + MiB + Mio + + + + Total Size: + Total grandore: + + + + Used Size: + Usat grandore: + + + + Total Sectors: + Total sectores: + + + + Quantity of LVs: + + + + + WelcomePage + + + 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». + + + + WelcomeQmlViewStep + + + Welcome + Benevenit + + + + WelcomeViewStep + + + Welcome + Benevenit + + + + 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 + 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 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 + + + Change + Modificar + + + + 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 + Retro + + + + 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 + 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..bc21d0127 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 @@ -508,134 +508,134 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Eyðublað - + Select storage de&vice: Veldu geymslu tæ&ki: - - - - + + + + Current: Núverandi: - + After: Eftir: - - <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 @@ -1219,7 +1249,8 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Staðfesta lykilorð - + + Please enter the same passphrase in both boxes. Vinsamlegast sláðu inn sama lykilorðið í báða kassana. @@ -1227,37 +1258,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 +1539,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1570,32 +1601,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 +1702,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 +1729,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocaleViewStep - + Location Staðsetning @@ -1775,7 +1791,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. 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. @@ -1936,247 +1957,247 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PWQ - + Password is too short Lykilorðið þitt er of stutt - + Password is too long Lykilorðið þitt er of langt - + Password is too weak Lykilorðið þitt er of veikt - + 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 Lykilorðið er of stutt - + 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 Óþekkt villa - + Password is empty @@ -2510,117 +2531,117 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. PartitionViewStep - + Gathering system information... 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 +2689,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 +3179,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 +3434,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 +3463,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 +3543,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 +3561,7 @@ Output: UsersViewStep - + Users Notendur @@ -3783,19 +3774,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 +3794,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 +3839,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 3a36cc2a8..2dc265b04 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 @@ -509,134 +509,134 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Modulo - + Select storage de&vice: Selezionare un dispositivo di me&moria: - - - - + + + + Current: Corrente: - + After: Dopo: - - <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) @@ -776,23 +776,63 @@ 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 + + + + 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 @@ -1220,7 +1250,8 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Confermare frase di accesso - + + Please enter the same passphrase in both boxes. Si prega di immettere la stessa frase di accesso in entrambi i riquadri. @@ -1228,37 +1259,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 +1540,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 +1602,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 +1703,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 +1730,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse LocaleViewStep - + Location Posizione @@ -1776,11 +1792,16 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Map - + + Timezone: %1 + Fuso orario: %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. - + 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,258 +1947,258 @@ 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. PWQ - + Password is too short Password troppo corta - + Password is too long Password troppo lunga - + Password is too weak Password troppo debole - + Memory allocation error when setting '%1' Errore di allocazione della memoria quando si imposta '%1' - + Memory allocation error Errore di allocazione di memoria - + The password is the same as the old one La password coincide con la precedente - + The password is a palindrome La password è un palindromo - + The password differs with case changes only La password differisce solo per lettere minuscole e maiuscole - + The password is too similar to the old one La password è troppo simile a quella precedente - + The password contains the user name in some form La password contiene il nome utente in qualche campo - + The password contains words from the real name of the user in some form La password contiene parti del nome utente reale in qualche campo - + The password contains forbidden words in some form La password contiene parole vietate in alcuni campi - + The password contains less than %1 digits La password contiene meno di %1 cifre - + The password contains too few digits La password contiene poche cifre - + The password contains less than %1 uppercase letters La password contiene meno di %1 lettere maiuscole - + The password contains too few uppercase letters La password contiene poche lettere maiuscole - + The password contains less than %1 lowercase letters La password contiene meno di %1 lettere minuscole - + The password contains too few lowercase letters La password contiene poche lettere minuscole - + The password contains less than %1 non-alphanumeric characters La password contiene meno di %1 caratteri non alfanumerici - + The password contains too few non-alphanumeric characters La password contiene pochi caratteri non alfanumerici - + The password is shorter than %1 characters La password ha meno di %1 caratteri - + The password is too short La password è troppo corta - + The password is just rotated old one La password è solo una rotazione della precedente - + The password contains less than %1 character classes La password contiene meno di %1 classi di caratteri - + The password does not contain enough character classes La password non contiene classi di caratteri sufficienti - + The password contains more than %1 same characters consecutively La password contiene più di %1 caratteri uguali consecutivi - + The password contains too many same characters consecutively La password contiene troppi caratteri uguali consecutivi - + The password contains more than %1 characters of the same class consecutively La password contiene più di %1 caratteri consecutivi della stessa classe - + The password contains too many characters of the same class consecutively La password contiene molti caratteri consecutivi della stessa classe - + The password contains monotonic sequence longer than %1 characters La password contiene una sequenza monotona più lunga di %1 caratteri - + The password contains too long of a monotonic character sequence La password contiene una sequenza di caratteri monotona troppo lunga - + No password supplied Nessuna password fornita - + Cannot obtain random numbers from the RNG device Impossibile ottenere numeri casuali dal dispositivo RNG - + Password generation failed - required entropy too low for settings Generazione della password fallita - entropia richiesta troppo bassa per le impostazioni - + The password fails the dictionary check - %1 La password non supera il controllo del dizionario - %1 - + The password fails the dictionary check La password non supera il controllo del dizionario - + Unknown setting - %1 Impostazioni sconosciute - %1 - + Unknown setting Impostazione sconosciuta - + Bad integer value of setting - %1 Valore intero non valido per l'impostazione - %1 - + Bad integer value Valore intero non valido - + Setting %1 is not of integer type Impostazione %1 non è di tipo intero - + Setting is not of integer type Impostazione non è di tipo intero - + Setting %1 is not of string type Impostazione %1 non è di tipo stringa - + Setting is not of string type Impostazione non è di tipo stringa - + Opening the configuration file failed Apertura del file di configurazione fallita - + The configuration file is malformed Il file di configurazione non è corretto - + Fatal failure Errore fatale - + Unknown error Errore sconosciuto - + Password is empty Password vuota @@ -2511,117 +2532,117 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse PartitionViewStep - + Gathering system information... 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 +2690,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. @@ -2836,7 +2857,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 +2968,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. @@ -3162,29 +3183,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 +3438,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 +3467,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 +3547,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 +3565,7 @@ Output: UsersViewStep - + Users Utenti @@ -3798,19 +3789,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 +3809,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 +3854,7 @@ Output: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 0c8d6a742..edd32434f 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 インストーラー @@ -508,134 +508,134 @@ The installer will quit and all changes will be lost. フォーム - + Select storage de&vice: ストレージデバイスを選択 (&V): - - - - + + + + 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>手動パーティショニング</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,29 +703,29 @@ 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/> + 数値と日付のロケールを %1 に設定します。 @@ -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 @@ -1219,7 +1249,8 @@ The installer will quit and all changes will be lost. パスフレーズの確認 - + + Please enter the same passphrase in both boxes. 両方のボックスに同じパスフレーズを入力してください。 @@ -1227,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. <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 +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 に設定する。 @@ -1571,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. 条件に同意しない場合はプロプライエタリソフトウェアがインストールされず、代わりにオープンソースの代替ソフトウェアが使用されます。 @@ -1672,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 ロケーション @@ -1714,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location ロケーション @@ -1776,7 +1792,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + タイムゾーン: %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. @@ -1940,247 +1961,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short パスワードが短すぎます - + Password is too long パスワードが長すぎます - + Password is too weak パスワードが弱すぎます - + 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 字より短いです - + The password is too short パスワードが短すぎます - + 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 パスワードの辞書チェックに失敗しました - + Unknown setting - %1 未設定- %1 - + Unknown setting 未設定 - + 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 致命的な失敗 - + Unknown error 未知のエラー - + Password is empty パスワードが空です @@ -2514,117 +2535,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + 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. ディスク <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 +2693,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 +3189,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 +3444,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 +3473,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 +3553,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 +3571,7 @@ Output: UsersViewStep - + Users ユーザー情報 @@ -3804,21 +3795,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 戻る @@ -3826,44 +3817,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 +3862,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..989c9891a 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users Пайдаланушылар @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..9970a67de 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..a20505211 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 설치 관리자 @@ -508,134 +508,134 @@ The installer will quit and all changes will be lost. 형식 - + Select storage de&vice: 저장 장치 선택 (&v) - - - - + + + + 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>수동 파티션 작업</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 @@ -1219,7 +1249,8 @@ The installer will quit and all changes will be lost. 암호 확인 - + + Please enter the same passphrase in both boxes. 암호와 암호 확인 상자에 동일한 값을 입력해주세요. @@ -1227,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. <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 +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로 설정합니다. @@ -1570,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. 조건에 동의하지 않으면 독점 소프트웨어가 설치되지 않으며 대신 오픈 소스 대체 소프트웨어가 사용됩니다. @@ -1671,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 위치 @@ -1713,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 위치 @@ -1775,7 +1791,12 @@ The installer will quit and all changes will be lost. 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. @@ -1936,247 +1957,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short 암호가 너무 짧습니다 - + Password is too long 암호가 너무 깁니다 - + Password is too weak 암호가 너무 취약합니다 - + 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 문자보다 짧습니다 - + The password is too short 암호가 너무 짧습니다 - + 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 암호가 사전 검사에 실패했습니다. - + Unknown setting - %1 설정되지 않음 - %1 - + Unknown setting 설정되지 않음 - + 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 치명적인 실패 - + Unknown error 알 수 없는 오류 - + Password is empty 비밀번호가 비어 있습니다 @@ -2510,117 +2531,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 시스템 정보 수집 중... - + 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 +2689,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 +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 디렉터리에 키보드 설정을 저장하지 못했습니다. @@ -3416,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. @@ -3445,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. 시스템 피드백을 정확하게 설정할 수 없습니다, %1 깔라마레스 오류. @@ -3525,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! 암호가 일치하지 않습니다! @@ -3573,7 +3564,7 @@ Output: UsersViewStep - + Users 사용자 @@ -3797,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 뒤로 @@ -3817,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 키보드 테스트 @@ -3862,17 +3853,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..e1510837f 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 @@ -505,134 +505,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1216,7 +1246,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1224,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. @@ -1505,12 +1536,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 +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. @@ -1668,41 +1699,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 +1726,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1772,7 +1788,12 @@ The installer will quit and all changes will be lost. 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. @@ -1933,247 +1954,247 @@ The installer will quit and all changes will be lost. 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 @@ -2507,117 +2528,117 @@ The installer will quit and all changes will be lost. 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. @@ -2665,17 +2686,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 +3176,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 +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. @@ -3439,28 +3460,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 +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 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 +3558,7 @@ Output: UsersViewStep - + Users @@ -3780,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 @@ -3800,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 @@ -3845,17 +3836,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..b7a48772a 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 @@ -514,134 +514,134 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Forma - + Select storage de&vice: Pasirinkite atminties įr&enginį: - - - - + + + + Current: Dabartinis: - + After: Po: - - <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. + Nustatyti laiko juostą į %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 @@ -1225,7 +1255,8 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Patvirtinkite slaptafrazę - + + Please enter the same passphrase in both boxes. Prašome abiejuose langeliuose įrašyti tą pačią slaptafrazę. @@ -1233,37 +1264,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 +1545,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 +1607,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 +1708,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 +1735,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocaleViewStep - + Location Vieta @@ -1781,7 +1797,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Map - + + Timezone: %1 + Laiko juosta: %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. @@ -1931,7 +1952,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Timezone: %1 - + Laiko juosta: %1 @@ -1942,247 +1963,247 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PWQ - + Password is too short Slaptažodis yra per trumpas - + Password is too long Slaptažodis yra per ilgas - + Password is too weak Slaptažodis yra per silpnas - + Memory allocation error when setting '%1' Atminties paskirstymo klaida, nustatant "%1" - + Memory allocation error Atminties paskirstymo klaida - + The password is the same as the old one Slaptažodis yra toks pats kaip ir senas - + The password is a palindrome Slaptažodis yra palindromas - + The password differs with case changes only Slaptažodyje skiriasi tik raidžių dydis - + The password is too similar to the old one Slaptažodis pernelyg panašus į senąjį - + The password contains the user name in some form Slaptažodyje tam tikru pavidalu yra naudotojo vardas - + The password contains words from the real name of the user in some form Slaptažodyje tam tikra forma yra žodžiai iš tikrojo naudotojo vardo - + The password contains forbidden words in some form Slaptažodyje tam tikra forma yra uždrausti žodžiai - + The password contains less than %1 digits Slaptažodyje yra mažiau nei %1 skaitmenys - + The password contains too few digits Slaptažodyje yra per mažai skaitmenų - + The password contains less than %1 uppercase letters Slaptažodyje yra mažiau nei %1 didžiosios raidės - + The password contains too few uppercase letters Slaptažodyje yra per mažai didžiųjų raidžių - + The password contains less than %1 lowercase letters Slaptažodyje yra mažiau nei %1 mažosios raidės - + The password contains too few lowercase letters Slaptažodyje yra per mažai mažųjų raidžių - + The password contains less than %1 non-alphanumeric characters Slaptažodyje yra mažiau nei %1 neraidiniai ir neskaitiniai simboliai - + The password contains too few non-alphanumeric characters Slaptažodyje yra per mažai neraidinių ir neskaitinių simbolių - + The password is shorter than %1 characters Slaptažodyje yra mažiau nei %1 simboliai - + The password is too short Slaptažodis yra per trumpas - + The password is just rotated old one Slaptažodis yra toks pats kaip ir senas, tik apverstas - + The password contains less than %1 character classes Slaptažodyje yra mažiau nei %1 simbolių klasės - + The password does not contain enough character classes Slaptažodyje nėra pakankamai simbolių klasių - + The password contains more than %1 same characters consecutively Slaptažodyje yra daugiau nei %1 tokie patys simboliai iš eilės - + The password contains too many same characters consecutively Slaptažodyje yra per daug tokių pačių simbolių iš eilės - + The password contains more than %1 characters of the same class consecutively Slaptažodyje yra daugiau nei %1 tos pačios klasės simboliai iš eilės - + The password contains too many characters of the same class consecutively Slaptažodyje yra per daug tos pačios klasės simbolių iš eilės - + The password contains monotonic sequence longer than %1 characters Slaptažodyje yra ilgesnė nei %1 simbolių monotoninė seka - + The password contains too long of a monotonic character sequence Slaptažodyje yra per ilga monotoninių simbolių seka - + No password supplied Nepateiktas joks slaptažodis - + Cannot obtain random numbers from the RNG device Nepavyksta gauti atsitiktinių skaičių iš RNG įrenginio - + Password generation failed - required entropy too low for settings Slaptažodžio generavimas nepavyko - reikalinga entropija nustatymams yra per maža - + The password fails the dictionary check - %1 Slaptažodis nepraeina žodyno patikros - %1 - + The password fails the dictionary check Slaptažodis nepraeina žodyno patikros - + Unknown setting - %1 Nežinomas nustatymas - %1 - + Unknown setting Nežinomas nustatymas - + Bad integer value of setting - %1 Bloga nustatymo sveikojo skaičiaus reikšmė - %1 - + Bad integer value Bloga sveikojo skaičiaus reikšmė - + Setting %1 is not of integer type Nustatymas %1 nėra sveikojo skaičiaus tipo - + Setting is not of integer type Nustatymas nėra sveikojo skaičiaus tipo - + Setting %1 is not of string type Nustatymas %1 nėra eilutės tipo - + Setting is not of string type Nustatymas nėra eilutės tipo - + Opening the configuration file failed Konfigūracijos failo atvėrimas nepavyko - + The configuration file is malformed Konfigūracijos failas yra netaisyklingas - + Fatal failure Lemtingoji klaida - + Unknown error Nežinoma klaida - + Password is empty Slaptažodis yra tuščias @@ -2516,117 +2537,117 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PartitionViewStep - + Gathering system information... 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 +2695,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. @@ -2841,7 +2862,8 @@ Išvestis: <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>Šis kompiuteris netenkina kai kurių %1 nustatymui keliamų rekomenduojamų reikalavimų.<br/> + Sąranką galima tęsti, bet kai kurios ypatybės gali būti išjungtos.</p> @@ -2958,7 +2980,8 @@ Išvestis: <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>Šis kompiuteris netenkina kai kurių %1 nustatymui keliamų rekomenduojamų reikalavimų.<br/> + Sąranką galima tęsti, bet kai kurios ypatybės gali būti išjungtos.</p> @@ -3167,29 +3190,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,57 +3445,57 @@ Išvestis: TrackingKUserFeedbackJob - + KDE user feedback - + KDE naudotojo grįžtamasis ryšys - + Configuring KDE user feedback. - + Konfigūruojamas KDE naudotojo grįžtamasis ryšys. - - + + Error in KDE user feedback configuration. - + Klaida KDE naudotojo grįžtamojo ryšio konfigūracijoje. - + Could not configure KDE user feedback correctly, script error %1. - + Nepavyko teisingai sukonfigūruoti KDE naudotojo grįžtamojo ryšio, scenarijaus klaida %1. - + Could not configure KDE user feedback correctly, Calamares error %1. - + Nepavyko teisingai sukonfigūruoti KDE naudotojo grįžtamojo ryšio, Calamares klaida %1. 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. @@ -3507,12 +3530,12 @@ Išvestis: 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. - + Tai pažymėdami, išsiųsite informaciją apie savo diegimą ir aparatinę įrangą. Ši informacija bus išsiųsta tik <b>vieną kartą</b>, užbaigus diegimą. By selecting this you will periodically send information about your <b>machine</b> installation, hardware and applications, to %1. - + Tai pažymėdami, jūs periodiškai siųsite informaciją apie savo <b>kompiuterio</b> diegimą, aparatinę įrangą ir programas į %1. @@ -3531,47 +3554,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 +3572,7 @@ Išvestis: UsersViewStep - + Users Naudotojai @@ -3803,19 +3796,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 +3816,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 +3861,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..739a530e2 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 @@ -509,134 +509,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1220,7 +1250,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1228,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. @@ -1509,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. @@ -1571,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. @@ -1672,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1714,7 +1730,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1776,7 +1792,12 @@ The installer will quit and all changes will be lost. 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. @@ -1937,247 +1958,247 @@ The installer will quit and all changes will be lost. 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 @@ -2511,117 +2532,117 @@ The installer will quit and all changes will be lost. 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. @@ -2669,17 +2690,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 +3180,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 +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. @@ -3443,28 +3464,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 +3544,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 +3562,7 @@ Output: UsersViewStep - + Users @@ -3784,19 +3775,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 +3795,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 +3840,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..d7264bceb 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..793462856 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 ഇൻസ്റ്റാളർ @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. ഫോം - + 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. - + + <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 @@ -1221,7 +1251,8 @@ The installer will quit and all changes will be lost. രഹസ്യവാചകം സ്ഥിരീകരിക്കുക - + + Please enter the same passphrase in both boxes. രണ്ട് പെട്ടികളിലും ഒരേ രഹസ്യവാചകം നല്‍കുക, @@ -1229,37 +1260,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 +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%2 എന്നതായി ക്രമീകരിക്കുക. @@ -1572,32 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location സ്ഥാനം @@ -1777,7 +1793,12 @@ The installer will quit and all changes will be lost. 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. @@ -1938,247 +1959,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short രഹസ്യവാക്ക് വളരെ ചെറുതാണ് - + Password is too long രഹസ്യവാക്ക് വളരെ വലുതാണ് - + Password is too weak രഹസ്യവാക്ക് വളരെ ദുർബലമാണ് - + 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 പ്രതീകങ്ങളേക്കാൾ ചെറുതാണ് - + The password is too short രഹസ്യവാക്ക് വളരെ ചെറുതാണ് - + 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 രഹസ്യവാക്ക് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു - ആവശ്യത്തിനു entropy ഇല്ല. - + The password fails the dictionary check - %1 രഹസ്യവാക്ക് നിഘണ്ടു പരിശോധനയിൽ പരാജയപ്പെടുന്നു - %1 - + The password fails the dictionary check രഹസ്യവാക്ക് നിഘണ്ടു പരിശോധനയിൽ പരാജയപ്പെടുന്നു - + Unknown setting - %1 അജ്ഞാതമായ ക്രമീകരണം - %1 - + Unknown setting അപരിചിതമായ സജ്ജീകരണം - + 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 അപകടകരമായ പിഴവ് - + Unknown error അപരിചിതമായ പിശക് - + Password is empty രഹസ്യവാക്ക് ശൂന്യമാണ് @@ -2512,117 +2533,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... സിസ്റ്റത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിക്കുന്നു... - + 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 +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. ക്രമീകരിക്കപ്പെട്ട ഫയലുകളെല്ലാം സംരക്ഷിക്കാനായില്ല. @@ -3163,29 +3184,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 +3439,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 +3468,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 +3548,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 +3566,7 @@ Output: UsersViewStep - + Users ഉപയോക്താക്കൾ @@ -3788,19 +3779,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 +3799,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 +3844,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..0f0230761 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 अधिष्ठापक @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. स्वरुप - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users वापरकर्ते @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..19685925d 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 @@ -508,134 +508,134 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.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. - + + <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 @@ -1219,7 +1249,8 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + + Please enter the same passphrase in both boxes. @@ -1227,37 +1258,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 +1539,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 +1601,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 +1702,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 +1729,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocaleViewStep - + Location Plassering @@ -1775,7 +1791,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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. @@ -1936,247 +1957,247 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PWQ - + Password is too short Passordet er for kort - + Password is too long Passordet er for langt - + Password is too weak Passordet er for svakt - + Memory allocation error when setting '%1' - + Memory allocation error - + The password is the same as the old one Passordet er det samme som det gamle - + The password is a palindrome - + The password differs with case changes only - + The password is too similar to the old one Passordet likner for mye på det gamle - + 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 Passordet inneholder mindre enn %1 store bokstaver - + The password contains too few uppercase letters Passordet inneholder for få store bokstaver - + The password contains less than %1 lowercase letters Passordet inneholder mindre enn %1 små bokstaver - + The password contains too few lowercase letters Passordet inneholder for få små bokstaver - + 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 Passordet er for kort - + 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 Passordet inneholder for mange like tegn etter hverandre - + 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 Innstillingen er ikke av type streng - + Opening the configuration file failed - + The configuration file is malformed - + Fatal failure - + Unknown error Ukjent feil - + Password is empty @@ -2510,117 +2531,117 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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. @@ -2668,17 +2689,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 +3179,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 +3434,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 +3463,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 +3543,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 +3561,7 @@ Output: UsersViewStep - + Users Brukere @@ -3783,19 +3774,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 +3794,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 +3839,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..e3eceec76 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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 07ac3dfcd..feb5c35ce 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). @@ -245,182 +245,183 @@ (%n second(s)) (%n seconde) - (%n seconden) + (%n seconde(n)) 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 @@ -508,134 +510,134 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Formulier - + Select storage de&vice: Selecteer &opslagmedium: - - - - + + + + Current: Huidig: - + After: Na: - - <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>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 @@ -1219,7 +1251,8 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Bevestig wachtwoordzin - + + Please enter the same passphrase in both boxes. Gelieve in beide velden dezelfde wachtwoordzin in te vullen. @@ -1227,37 +1260,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 +1310,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 +1325,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 +1348,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Setup Complete - + Voorbereiden voltooid @@ -1325,7 +1358,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 +1371,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 +1394,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 +1404,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 +1434,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,17 +1449,17 @@ 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. 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. @@ -1434,7 +1467,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Collecting information about your machine. - + Informatie verzamelen over je systeem. @@ -1445,22 +1478,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 +1501,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Creating initramfs with mkinitcpio. - + initramfs aanmaken met mkinitcpio. @@ -1476,7 +1509,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Creating initramfs. - + initramfs aanmaken. @@ -1508,12 +1541,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 +1600,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. @@ -1655,57 +1688,42 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Hide license text - + Verberg licentietekst Show the license text - + Toon licentietekst 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 +1731,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocaleViewStep - + Location Locatie @@ -1723,35 +1741,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 +1782,27 @@ 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 - + + Timezone: %1 + Tijdzone: %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. - + 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 +1836,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Web browser - + Webbrowser @@ -1868,7 +1891,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Theming - + Thema @@ -1878,7 +1901,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Utilities - + Gereedschappen @@ -1886,7 +1909,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Notes - + Notities @@ -1894,17 +1917,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 +1935,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,260 +1948,260 @@ 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. PWQ - + Password is too short Het wachtwoord is te kort - + Password is too long Het wachtwoord is te lang - + Password is too weak Wachtwoord is te zwak - + Memory allocation error when setting '%1' Foute geheugentoewijzing bij het instellen van %1. - + Memory allocation error Foute geheugentoewijzing - + The password is the same as the old one Het wachtwoord is hetzelfde als het oude wachtwoord - + The password is a palindrome Het wachtwoord is een palindroom - + The password differs with case changes only Het wachtwoord verschilt slechts in hoofdlettergebruik - + The password is too similar to the old one Het wachtwoord lijkt te veel op het oude wachtwoord - + The password contains the user name in some form Het wachtwoord bevat de gebruikersnaam op een of andere manier - + The password contains words from the real name of the user in some form Het wachtwoord bevat woorden van de echte naam van de gebruiker in één of andere vorm. - + The password contains forbidden words in some form Het wachtwoord bevat verboden woorden in één of andere vorm. - + The password contains less than %1 digits Het wachtwoord bevat minder dan %1 cijfers - + The password contains too few digits Het wachtwoord bevat te weinig cijfers - + The password contains less than %1 uppercase letters Het wachtwoord bevat minder dan %1 hoofdletters. - + The password contains too few uppercase letters Het wachtwoord bevat te weinig hoofdletters. - + The password contains less than %1 lowercase letters Het wachtwoord bevat minder dan %1 kleine letters. - + The password contains too few lowercase letters Het wachtwoord bevat te weinig kleine letters. - + The password contains less than %1 non-alphanumeric characters Het wachtwoord bevat minder dan %1 niet-alfanumerieke symbolen. - + The password contains too few non-alphanumeric characters Het wachtwoord bevat te weinig niet-alfanumerieke symbolen. - + The password is shorter than %1 characters Het wachtwoord is korter dan %1 karakters. - + The password is too short Het wachtwoord is te kort. - + The password is just rotated old one Het wachtwoord is enkel omgedraaid. - + The password contains less than %1 character classes Het wachtwoord bevat minder dan %1 karaktergroepen - + The password does not contain enough character classes Het wachtwoord bevat te weinig karaktergroepen - + The password contains more than %1 same characters consecutively Het wachtwoord bevat meer dan %1 dezelfde karakters na elkaar - + The password contains too many same characters consecutively Het wachtwoord bevat te veel dezelfde karakters na elkaar - + The password contains more than %1 characters of the same class consecutively Het wachtwoord bevat meer dan %1 karakters van dezelfde groep na elkaar - + The password contains too many characters of the same class consecutively Het wachtwoord bevat te veel karakters van dezelfde groep na elkaar - + The password contains monotonic sequence longer than %1 characters Het wachtwoord bevat een monotone sequentie van meer dan %1 karakters - + The password contains too long of a monotonic character sequence Het wachtwoord bevat een te lange monotone sequentie van karakters - + No password supplied Geen wachtwoord opgegeven - + Cannot obtain random numbers from the RNG device Kan geen willekeurige nummers verkrijgen van het RNG apparaat - + Password generation failed - required entropy too low for settings Wachtwoord aanmaken mislukt - te weinig wanorde voor de instellingen - + The password fails the dictionary check - %1 Het wachtwoord faalt op de woordenboektest - %1 - + The password fails the dictionary check Het wachtwoord faalt op de woordenboektest - + Unknown setting - %1 Onbekende instelling - %1 - + Unknown setting Onbekende instelling - + Bad integer value of setting - %1 Ongeldige gehele waarde voor instelling - %1 - + Bad integer value Ongeldige gehele waarde - + Setting %1 is not of integer type Instelling %1 is niet van het type integer - + Setting is not of integer type Instelling is niet van het type integer - + Setting %1 is not of string type Instelling %1 is niet van het type string - + Setting is not of string type Instelling is niet van het type string - + Opening the configuration file failed Openen van het configuratiebestand is mislukt - + The configuration file is malformed Het configuratiebestand is ongeldig - + Fatal failure Fatale fout - + Unknown error Onbekende fout - + Password is empty - + Wachtwoord is leeg @@ -2191,7 +2214,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Product Name - + Productnaam @@ -2201,17 +2224,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 +2242,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Packages - + Pakketten @@ -2268,7 +2291,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Your Full Name - Volledige Naam + Volledige naam @@ -2278,7 +2301,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. login - + Gebruikersnaam @@ -2310,23 +2333,23 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Password - + Wachtwoord Repeat Password - + Herhaal wachtwoord 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. @@ -2510,119 +2533,119 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PartitionViewStep - + Gathering system information... 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 +2672,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 +2691,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 +2819,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 +2858,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 +2866,7 @@ Uitvoer: Remove live user from target system - + Verwijder live gebruiker van het doelsysteem @@ -2946,13 +2969,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 +3058,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 +3116,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 +3126,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 +3185,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 +3222,7 @@ Uitvoer: Set flags on %1MiB %2 partition. - + Stel vlaggen in op %1MiB %2 partitie. @@ -3213,7 +3237,7 @@ Uitvoer: Clear flags on %1MiB <strong>%2</strong> partition. - + Wis vlaggen op %1MiB <strong>%2</strong> partitie. @@ -3228,7 +3252,7 @@ Uitvoer: Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + Vlag %1MiB <strong>%2</strong> partitie als <strong>%3</strong>. @@ -3243,7 +3267,7 @@ Uitvoer: Clearing flags on %1MiB <strong>%2</strong> partition. - + Vlaggen op %1MiB <strong>%2</strong> partitie wissen. @@ -3258,7 +3282,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 +3398,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 +3440,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 +3510,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 +3520,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 +3549,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 +3567,7 @@ Uitvoer: UsersViewStep - + Users Gebruikers @@ -3583,7 +3577,7 @@ Uitvoer: Key - + Sleutel @@ -3596,7 +3590,7 @@ Uitvoer: Create Volume Group - + Volumegroep aanmaken @@ -3655,7 +3649,7 @@ Uitvoer: Select application and system language - + Selecteer applicatie- en systeemstaal. @@ -3665,7 +3659,7 @@ Uitvoer: Open donations website - + Open donatiewebsite @@ -3675,7 +3669,7 @@ Uitvoer: Open help and support website - + Open help en ondersteuningswebsite. @@ -3685,7 +3679,7 @@ Uitvoer: Open issues and bug-tracking website - + Open problemen en bug-tracking website. @@ -3695,7 +3689,7 @@ Uitvoer: Open release notes website - + Open release-opmerkingen website. @@ -3710,7 +3704,7 @@ Uitvoer: <h1>Welcome to %1 setup.</h1> - + <h1>Welkom in het %1 installatieprogramma.</h1> @@ -3730,7 +3724,7 @@ Uitvoer: About %1 setup - + Over %1 installatieprogramma. @@ -3740,7 +3734,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 +3769,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 +3780,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 +3802,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 +3858,8 @@ Uitvoer: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> +<p>Dit zijn voorbeeld release-opmerkingen.</p> @@ -3900,7 +3887,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 +3920,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..2a3828f3c 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 @@ -512,134 +512,134 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Formularz - + Select storage de&vice: &Wybierz urządzenie przechowywania: - - - - + + + + Current: Bieżący: - + After: Po: - - <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 @@ -1223,7 +1253,8 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Potwierdź hasło - + + Please enter the same passphrase in both boxes. Użyj tego samego hasła w obu polach. @@ -1231,37 +1262,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 +1543,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 +1605,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 +1706,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 +1733,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocaleViewStep - + Location Położenie @@ -1779,7 +1795,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. 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. @@ -1940,247 +1961,247 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PWQ - + Password is too short Hasło jest zbyt krótkie - + Password is too long Hasło jest zbyt długie - + Password is too weak Hasło jest zbyt słabe - + Memory allocation error when setting '%1' Wystąpił błąd przydzielania pamięci przy ustawieniu '%1' - + Memory allocation error Błąd przydzielania pamięci - + The password is the same as the old one Hasło jest takie samo jak poprzednie - + The password is a palindrome Hasło jest palindromem - + The password differs with case changes only Hasła różnią się tylko wielkością znaków - + The password is too similar to the old one Hasło jest zbyt podobne do poprzedniego - + The password contains the user name in some form Hasło zawiera nazwę użytkownika - + The password contains words from the real name of the user in some form Hasło zawiera fragment pełnej nazwy użytkownika - + The password contains forbidden words in some form Hasło zawiera jeden z niedozwolonych wyrazów - + The password contains less than %1 digits Hasło składa się z mniej niż %1 znaków - + The password contains too few digits Hasło zawiera zbyt mało znaków - + The password contains less than %1 uppercase letters Hasło składa się z mniej niż %1 wielkich liter - + The password contains too few uppercase letters Hasło zawiera zbyt mało wielkich liter - + The password contains less than %1 lowercase letters Hasło składa się z mniej niż %1 małych liter - + The password contains too few lowercase letters Hasło zawiera zbyt mało małych liter - + The password contains less than %1 non-alphanumeric characters Hasło składa się z mniej niż %1 znaków niealfanumerycznych - + The password contains too few non-alphanumeric characters Hasło zawiera zbyt mało znaków niealfanumerycznych - + The password is shorter than %1 characters Hasło zawiera mniej niż %1 znaków - + The password is too short Hasło jest zbyt krótkie - + The password is just rotated old one Hasło jest odwróceniem poprzedniego - + The password contains less than %1 character classes Hasło składa się z mniej niż %1 rodzajów znaków - + The password does not contain enough character classes Hasło zawiera zbyt mało rodzajów znaków - + The password contains more than %1 same characters consecutively Hasło zawiera ponad %1 powtarzających się tych samych znaków - + The password contains too many same characters consecutively Hasło zawiera zbyt wiele powtarzających się znaków - + The password contains more than %1 characters of the same class consecutively Hasło zawiera więcej niż %1 znaków tego samego rodzaju - + The password contains too many characters of the same class consecutively Hasło składa się ze zbyt wielu znaków tego samego rodzaju - + The password contains monotonic sequence longer than %1 characters Hasło zawiera jednakowy ciąg dłuższy niż %1 znaków - + The password contains too long of a monotonic character sequence Hasło zawiera zbyt długi ciąg jednakowych znaków - + No password supplied Nie podano hasła - + Cannot obtain random numbers from the RNG device Nie można uzyskać losowych znaków z urządzenia RNG - + Password generation failed - required entropy too low for settings Błąd tworzenia hasła - wymagana entropia jest zbyt niska dla ustawień - + The password fails the dictionary check - %1 Hasło nie przeszło pomyślnie sprawdzenia słownikowego - %1 - + The password fails the dictionary check Hasło nie przeszło pomyślnie sprawdzenia słownikowego - + Unknown setting - %1 Nieznane ustawienie - %1 - + Unknown setting Nieznane ustawienie - + Bad integer value of setting - %1 Błędna wartość liczby całkowitej ustawienia - %1 - + Bad integer value Błędna wartość liczby całkowitej - + Setting %1 is not of integer type Ustawienie %1 nie jest liczbą całkowitą - + Setting is not of integer type Ustawienie nie jest liczbą całkowitą - + Setting %1 is not of string type Ustawienie %1 nie jest ciągiem znaków - + Setting is not of string type Ustawienie nie jest ciągiem znaków - + Opening the configuration file failed Nie udało się otworzyć pliku konfiguracyjnego - + The configuration file is malformed Plik konfiguracyjny jest uszkodzony - + Fatal failure Błąd krytyczny - + Unknown error Nieznany błąd - + Password is empty @@ -2514,117 +2535,117 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PartitionViewStep - + Gathering system information... 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 +2693,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 +3187,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 +3442,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 +3471,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 +3551,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 +3569,7 @@ i nie uruchomi się UsersViewStep - + Users Użytkownicy @@ -3791,19 +3782,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 +3802,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 +3847,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 f65ecd0ee..7c7b65959 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 @@ -510,134 +510,134 @@ O instalador será fechado e todas as alterações serão perdidas.Formulário - + Select storage de&vice: Selecione o dispositi&vo de armazenamento: - - - - + + + + Current: Atual: - + After: Depois: - - <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 @@ -1221,7 +1251,8 @@ O instalador será fechado e todas as alterações serão perdidas.Confirme a frase-chave - + + Please enter the same passphrase in both boxes. Por favor, insira a mesma frase-chave nos dois campos. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ O instalador será fechado e todas as alterações serão perdidas. LocaleViewStep - + Location Localização @@ -1777,7 +1793,12 @@ O instalador será fechado e todas as alterações serão perdidas. Map - + + Timezone: %1 + Fuso horário: %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. @@ -1940,247 +1961,247 @@ O instalador será fechado e todas as alterações serão perdidas. PWQ - + Password is too short A senha é muito curta - + Password is too long A senha é muito longa - + Password is too weak A senha é muito fraca - + Memory allocation error when setting '%1' Erro de alocação de memória ao definir '% 1' - + Memory allocation error Erro de alocação de memória - + The password is the same as the old one A senha é a mesma que a antiga - + The password is a palindrome A senha é um palíndromo - + The password differs with case changes only A senha difere apenas com mudanças entre maiúsculas ou minúsculas - + The password is too similar to the old one A senha é muito semelhante à antiga - + The password contains the user name in some form A senha contém o nome de usuário em alguma forma - + The password contains words from the real name of the user in some form A senha contém palavras do nome real do usuário - + The password contains forbidden words in some form A senha contém palavras proibidas de alguma forma - + The password contains less than %1 digits A senha contém menos de %1 dígitos - + The password contains too few digits A senha contém poucos dígitos - + The password contains less than %1 uppercase letters A senha contém menos que %1 letras maiúsculas - + The password contains too few uppercase letters A senha contém poucas letras maiúsculas - + The password contains less than %1 lowercase letters A senha contém menos que %1 letras minúsculas - + The password contains too few lowercase letters A senha contém poucas letras minúsculas - + The password contains less than %1 non-alphanumeric characters A senha contém menos que %1 caracteres não alfanuméricos - + The password contains too few non-alphanumeric characters A senha contém poucos caracteres não alfanuméricos - + The password is shorter than %1 characters A senha é menor que %1 caracteres - + The password is too short A senha é muito curta - + The password is just rotated old one A senha é apenas uma antiga modificada - + The password contains less than %1 character classes A senha contém menos de %1 tipos de caracteres - + The password does not contain enough character classes A senha não contém tipos suficientes de caracteres - + The password contains more than %1 same characters consecutively A senha contém mais que %1 caracteres iguais consecutivamente - + The password contains too many same characters consecutively A senha contém muitos caracteres iguais consecutivamente - + The password contains more than %1 characters of the same class consecutively A senha contém mais que %1 caracteres do mesmo tipo consecutivamente - + The password contains too many characters of the same class consecutively A senha contém muitos caracteres da mesma classe consecutivamente - + The password contains monotonic sequence longer than %1 characters A senha contém uma sequência monotônica com mais de %1 caracteres - + The password contains too long of a monotonic character sequence A senha contém uma sequência de caracteres monotônicos muito longa - + No password supplied Nenhuma senha fornecida - + Cannot obtain random numbers from the RNG device Não é possível obter números aleatórios do dispositivo RNG - + Password generation failed - required entropy too low for settings A geração de senha falhou - a entropia requerida é muito baixa para as configurações - + The password fails the dictionary check - %1 A senha falhou na verificação do dicionário - %1 - + The password fails the dictionary check A senha falhou na verificação do dicionário - + Unknown setting - %1 Configuração desconhecida - %1 - + Unknown setting Configuração desconhecida - + Bad integer value of setting - %1 Valor de número inteiro errado na configuração - %1 - + Bad integer value Valor de número inteiro errado - + Setting %1 is not of integer type A configuração %1 não é do tipo inteiro - + Setting is not of integer type A configuração não é de tipo inteiro - + Setting %1 is not of string type A configuração %1 não é do tipo string - + Setting is not of string type A configuração não é do tipo string - + Opening the configuration file failed Falha ao abrir o arquivo de configuração - + The configuration file is malformed O arquivo de configuração está defeituoso - + Fatal failure Falha fatal - + Unknown error Erro desconhecido - + Password is empty A senha está em branco @@ -2302,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. @@ -2514,117 +2535,117 @@ O instalador será fechado e todas as alterações serão perdidas. PartitionViewStep - + Gathering system information... 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 +2693,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 +3189,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 +3444,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 +3473,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 +3553,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 maiú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 +3571,7 @@ Saída: UsersViewStep - + Users Usuários @@ -3804,21 +3795,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 +3817,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 +3862,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..569e9f2cb 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 @@ -510,134 +510,134 @@ O instalador será encerrado e todas as alterações serão perdidas.Formulário - + Select storage de&vice: Selecione o dis&positivo de armazenamento: - - - - + + + + Current: Atual: - + After: Depois: - - <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 @@ -1221,7 +1251,8 @@ O instalador será encerrado e todas as alterações serão perdidas.Confirmar frase-chave - + + Please enter the same passphrase in both boxes. Por favor insira a mesma frase-passe em ambas as caixas. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ O instalador será encerrado e todas as alterações serão perdidas. LocaleViewStep - + Location Localização @@ -1777,7 +1793,12 @@ O instalador será encerrado e todas as alterações serão perdidas. 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. @@ -1938,247 +1959,247 @@ O instalador será encerrado e todas as alterações serão perdidas. PWQ - + Password is too short A palavra-passe é demasiado curta - + Password is too long A palavra-passe é demasiado longa - + Password is too weak A palavra-passe é demasiado fraca - + Memory allocation error when setting '%1' Erro de alocação de memória quando definido '%1' - + Memory allocation error Erro de alocação de memória - + The password is the same as the old one A palavra-passe é a mesma que a antiga - + The password is a palindrome A palavra-passe é um palíndromo - + The password differs with case changes only A palavra-passe difere com apenas diferenças de maiúsculas e minúsculas - + The password is too similar to the old one A palavra-passe é demasiado semelhante à antiga - + The password contains the user name in some form A palavra passe contém de alguma forma o nome do utilizador - + The password contains words from the real name of the user in some form A palavra passe contém de alguma forma palavras do nome real do utilizador - + The password contains forbidden words in some form A palavra-passe contém de alguma forma palavras proibidas - + The password contains less than %1 digits A palavra-passe contém menos de %1 dígitos - + The password contains too few digits A palavra-passe contém muito poucos dígitos - + The password contains less than %1 uppercase letters A palavra-passe contém menos de %1 letras maiúsculas - + The password contains too few uppercase letters A palavra-passe contém muito poucas letras maiúsculas - + The password contains less than %1 lowercase letters A palavra-passe contém menos de %1 letras minúsculas - + The password contains too few lowercase letters A palavra-passe contém muito poucas letras minúsculas - + The password contains less than %1 non-alphanumeric characters A palavra-passe contém menos de %1 carateres não-alfanuméricos - + The password contains too few non-alphanumeric characters A palavra-passe contém muito pouco carateres não alfa-numéricos - + The password is shorter than %1 characters A palavra-passe é menor do que %1 carateres - + The password is too short A palavra-passe é demasiado pequena - + The password is just rotated old one A palavra-passe é apenas uma antiga alternada - + The password contains less than %1 character classes A palavra-passe contém menos de %1 classe de carateres - + The password does not contain enough character classes A palavra-passe não contém classes de carateres suficientes - + The password contains more than %1 same characters consecutively A palavra-passe contém apenas mais do que %1 carateres iguais consecutivos - + The password contains too many same characters consecutively A palavra-passe contém demasiados carateres iguais consecutivos - + The password contains more than %1 characters of the same class consecutively A palavra-passe contém mais do que %1 carateres consecutivos da mesma classe - + The password contains too many characters of the same class consecutively A palavra-passe contém demasiados carateres consecutivos da mesma classe - + The password contains monotonic sequence longer than %1 characters A palavra-passe contém sequência mono tónica mais longa do que %1 carateres - + The password contains too long of a monotonic character sequence A palavra-passe contém uma sequência mono tónica de carateres demasiado longa - + No password supplied Nenhuma palavra-passe fornecida - + Cannot obtain random numbers from the RNG device Não é possível obter sequência aleatória de números a partir do dispositivo RNG - + Password generation failed - required entropy too low for settings Geração de palavra-passe falhada - entropia obrigatória demasiado baixa para definições - + The password fails the dictionary check - %1 A palavra-passe falha a verificação do dicionário - %1 - + The password fails the dictionary check A palavra-passe falha a verificação do dicionário - + Unknown setting - %1 Definição desconhecida - %1 - + Unknown setting Definição desconhecida - + Bad integer value of setting - %1 Valor inteiro incorreto para definição - %1 - + Bad integer value Valor inteiro incorreto - + Setting %1 is not of integer type Definição %1 não é do tipo inteiro - + Setting is not of integer type Definição não é do tipo inteiro - + Setting %1 is not of string type Definição %1 não é do tipo cadeia de carateres - + Setting is not of string type Definição não é do tipo cadeira de carateres - + Opening the configuration file failed Abertura da configuração de ficheiro falhou - + The configuration file is malformed O ficheiro de configuração está mal formado - + Fatal failure Falha fatal - + Unknown error Erro desconhecido - + Password is empty Palavra-passe está vazia @@ -2512,117 +2533,117 @@ O instalador será encerrado e todas as alterações serão perdidas. PartitionViewStep - + Gathering system information... 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 +2691,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 +3184,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 +3439,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 +3468,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 +3548,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 +3566,7 @@ Saída de Dados: UsersViewStep - + Users Utilizadores @@ -3788,19 +3779,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 +3799,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 +3844,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..828a6ff70 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 @@ -510,134 +510,134 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Formular - + Select storage de&vice: Selectează dispoziti&vul de stocare: - - - - + + + + Current: Actual: - + After: După: - - <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 @@ -1221,7 +1251,8 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Confirmă fraza secretă - + + Please enter the same passphrase in both boxes. Introduceți aceeași frază secretă în ambele căsuțe. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocaleViewStep - + Location Locație @@ -1777,7 +1793,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. 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. @@ -1938,102 +1959,102 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PWQ - + Password is too short Parola este prea scurtă - + Password is too long Parola este prea lungă - + Password is too weak Parola este prea slabă - + Memory allocation error when setting '%1' Eroare de alocare a memorie in timpul setării '%1' - + Memory allocation error Eroare de alocare a memoriei - + The password is the same as the old one Parola este aceeasi a si cea veche - + The password is a palindrome Parola este un palindrom - + The password differs with case changes only Parola diferă doar prin schimbăarii ale majusculelor - + The password is too similar to the old one Parola este prea similară cu cea vehe - + The password contains the user name in some form Parola contine numele de utilizator intr-o anume formă - + The password contains words from the real name of the user in some form Parola contine cuvinte din numele real al utilizatorului intr-o anumita formă - + The password contains forbidden words in some form Parola contine cuvinte interzise int-o anumita formă - + The password contains less than %1 digits Parola contine mai putin de %1 caractere - + The password contains too few digits Parola contine prea putine caractere - + The password contains less than %1 uppercase letters Parola contine mai putin de %1 litera cu majusculă - + The password contains too few uppercase letters Parola contine prea putine majuscule - + The password contains less than %1 lowercase letters Parola contine mai putin de %1 minuscule - + The password contains too few lowercase letters Parola contine prea putine minuscule - + The password contains less than %1 non-alphanumeric characters Parola contine mai putin de %1 caractere non-alfanumerice - + The password contains too few non-alphanumeric characters Parola contine prea putine caractere non-alfanumerice @@ -2041,147 +2062,147 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + The password is shorter than %1 characters Parola este mai scurta de %1 caractere - + The password is too short Parola este prea mica - + The password is just rotated old one Parola este doar cea veche rasturnata - + The password contains less than %1 character classes Parola contine mai putin de %1 clase de caractere - + The password does not contain enough character classes Parola nu contine destule clase de caractere - + The password contains more than %1 same characters consecutively Parola ontine mai mult de %1 caractere identice consecutiv - + The password contains too many same characters consecutively Parola ontine prea multe caractere identice consecutive - + The password contains more than %1 characters of the same class consecutively Parola contine mai mult de %1 caractere ale aceleiaşi clase consecutive - + The password contains too many characters of the same class consecutively Parola contine prea multe caractere ale aceleiaşi clase consecutive - + The password contains monotonic sequence longer than %1 characters Parola ontine o secventa monotonica mai lunga de %1 caractere - + The password contains too long of a monotonic character sequence Parola contine o secventa de caractere monotonica prea lunga - + No password supplied Nicio parola nu a fost furnizata - + Cannot obtain random numbers from the RNG device Nu s-a putut obtine un numar aleator de la dispozitivul RNG - + Password generation failed - required entropy too low for settings Generarea parolei a esuat - necesita entropie prea mica pentru setari - + The password fails the dictionary check - %1 Parola a esuat verificarea dictionarului - %1 - + The password fails the dictionary check Parola a esuat verificarea dictionarului - + Unknown setting - %1 Setare necunoscuta - %1 - + Unknown setting Setare necunoscuta - + Bad integer value of setting - %1 Valoare gresita integrala a setari - %1 - + Bad integer value Valoare gresita integrala a setari - + Setting %1 is not of integer type Setarea %1 nu este de tip integral - + Setting is not of integer type Setarea nu este de tipul integral - + Setting %1 is not of string type Setarea %1 nu este de tipul şir - + Setting is not of string type Setarea nu este de tipul şir - + Opening the configuration file failed Deschiderea fisierului de configuratie a esuat - + The configuration file is malformed Fisierul de configuratie este malformat - + Fatal failure Esec fatal - + Unknown error Eroare necunoscuta - + Password is empty @@ -2515,117 +2536,117 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PartitionViewStep - + Gathering system information... 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 +2694,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 +3187,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 +3442,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 +3471,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 +3551,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 +3569,7 @@ Output UsersViewStep - + Users Utilizatori @@ -3791,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 @@ -3811,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 @@ -3856,17 +3847,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..c86827f7f 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 @@ -513,134 +513,134 @@ n%1 Форма - + 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. - <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 @@ -1224,7 +1254,8 @@ n%1 Подтвердите пароль - + + Please enter the same passphrase in both boxes. Пожалуйста, введите один и тот же пароль в оба поля. @@ -1232,37 +1263,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 +1481,7 @@ n%1 OEM Batch Identifier - + Идентификатор партии OEM @@ -1513,12 +1544,12 @@ n%1 KeyboardPage - + Set keyboard model to %1.<br/> Установить модель клавиатуры на %1.<br/> - + Set keyboard layout to %1/%2. Установить раскладку клавиатуры на %1/%2. @@ -1575,32 +1606,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 +1649,7 @@ n%1 URL: %1 - + Адрес: %1 @@ -1676,41 +1707,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 +1734,7 @@ n%1 LocaleViewStep - + Location Местоположение @@ -1780,11 +1796,16 @@ n%1 Map - + + Timezone: %1 + Часовой пояс: %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. - + Выберите ваше месторасположение на карте, чтобы программа установки предложила настройки локали и часового пояса. В дальнейшем их можно изменить ниже. Карту можно перемещать мышью, и изменять ее масштаб колесиком мыши или клавишами +/-. @@ -1899,7 +1920,7 @@ n%1 Ba&tch: - + Пар&тия: @@ -1917,7 +1938,7 @@ n%1 OEM Configuration - + Конфигурация OEM @@ -1930,258 +1951,258 @@ 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. - + Чтобы выбрать часовой пояс, необходимо подключение к интернету. После подключения перезапустите программу установки. Язык и локаль можно выбрать ниже. PWQ - + Password is too short Слишком короткий пароль - + Password is too long Слишком длинный пароль - + Password is too weak Пароль слишком слабый - + 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 символов - + The password is too short Пароль слишком короткий - + 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 Пароль не прошёл проверку на использование словарных слов - + Unknown setting - %1 Неизвестная настройка - %1 - + Unknown setting Неизвестная настройка - + 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 Фатальный сбой - + Unknown error Неизвестная ошибка - + Password is empty Пустой пароль @@ -2515,117 +2536,117 @@ n%1 PartitionViewStep - + Gathering system information... Сбор информации о системе... - + 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 +2694,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 +2972,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 +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. @@ -3421,28 +3443,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 +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. @@ -3530,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! Пароли не совпадают! @@ -3578,7 +3570,7 @@ Output: UsersViewStep - + Users Пользователи @@ -3791,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 Назад @@ -3811,44 +3803,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 +3848,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..3afe31e15 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 @@ -514,134 +514,134 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Forma - + Select storage de&vice: Vyberte úložné &zariadenie: - - - - + + + + Current: Teraz: - + After: Potom: - - <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. + „%1“ nie je možné použiť ako používateľské meno. + + + + 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. + „%1“ nie je možné použiť ako názov hostiteľa. + + + + 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 @@ -1225,7 +1255,8 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Potvrdenie hesla - + + Please enter the same passphrase in both boxes. Prosím, zadajte rovnaké heslo do oboch polí. @@ -1233,37 +1264,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 +1545,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 +1607,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 +1708,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 +1735,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LocaleViewStep - + Location Umiestnenie @@ -1781,7 +1797,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Map - + + Timezone: %1 + Časová zóna: %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. @@ -1942,247 +1963,247 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. PWQ - + Password is too short Heslo je príliš krátke - + Password is too long Heslo je príliš dlhé - + Password is too weak Heslo je príliš slabé - + Memory allocation error when setting '%1' Chyba počas vyhradzovania pamäte pri nastavovaní „%1“ - + Memory allocation error Chyba počas vyhradzovania pamäte - + The password is the same as the old one Heslo je rovnaké ako to staré - + The password is a palindrome Heslo je palindróm - + The password differs with case changes only Heslo sa odlišuje iba vo veľkosti písmen - + The password is too similar to the old one Heslo je príliš podobné ako to staré - + The password contains the user name in some form Heslo obsahuje v nejakom tvare používateľské meno - + The password contains words from the real name of the user in some form Heslo obsahuje v nejakom tvare slová zo skutočného mena používateľa - + The password contains forbidden words in some form Heslo obsahuje zakázané slová v určitom tvare - + The password contains less than %1 digits Heslo obsahuje menej ako %1 číslic - + The password contains too few digits Heslo tiež obsahuje pár číslic - + The password contains less than %1 uppercase letters Heslo obsahuje menej ako %1 veľkých písmen - + The password contains too few uppercase letters Heslo obsahuje príliš málo veľkých písmen - + The password contains less than %1 lowercase letters Heslo obsahuje menej ako %1 malých písmen - + The password contains too few lowercase letters Heslo obsahuje príliš málo malých písmen - + The password contains less than %1 non-alphanumeric characters Heslo obsahuje menej ako% 1 nealfanumerických znakov - + The password contains too few non-alphanumeric characters Heslo obsahuje príliš málo nealfanumerických znakov - + The password is shorter than %1 characters Heslo je kratšie ako %1 znakov - + The password is too short Heslo je príliš krátke - + The password is just rotated old one Heslo je iba obrátené staré heslo - + The password contains less than %1 character classes Heslo obsahuje menej ako %1 triedy znakov - + The password does not contain enough character classes Heslo neobsahuje dostatok tried znakov - + The password contains more than %1 same characters consecutively Heslo obsahuje viac ako% 1 rovnakých znakov za sebou - + The password contains too many same characters consecutively Heslo obsahuje príliš veľa rovnakých znakov - + The password contains more than %1 characters of the same class consecutively Heslo obsahuje postupne viac ako% 1 znakov toho istého typu - + The password contains too many characters of the same class consecutively Heslo obsahuje postupne príliš veľa znakov toho istého typu - + The password contains monotonic sequence longer than %1 characters Heslo obsahuje monotónnu sekvenciu dlhšiu ako %1 znakov - + The password contains too long of a monotonic character sequence Heslo obsahuje príliš dlhú sekvenciu monotónnych znakov - + No password supplied Nebolo poskytnuté žiadne heslo - + Cannot obtain random numbers from the RNG device Nedajú sa získať náhodné čísla zo zariadenia RNG - + Password generation failed - required entropy too low for settings Generovanie hesla zlyhalo - potrebná entropia je príliš nízka na nastavenie - + The password fails the dictionary check - %1 Heslo zlyhalo pri slovníkovej kontrole - %1 - + The password fails the dictionary check Heslo zlyhalo pri slovníkovej kontrole - + Unknown setting - %1 Neznáme nastavenie - %1 - + Unknown setting Neznáme nastavenie - + Bad integer value of setting - %1 Nesprávna celočíselná hodnota nastavenia - %1 - + Bad integer value Nesprávna celočíselná hodnota - + Setting %1 is not of integer type Nastavenie %1 nie je celé číslo - + Setting is not of integer type Nastavenie nie je celé číslo - + Setting %1 is not of string type Nastavenie %1 nie je reťazec - + Setting is not of string type Nastavenie nie je reťazec - + Opening the configuration file failed Zlyhalo otváranie konfiguračného súboru - + The configuration file is malformed Konfiguračný súbor je poškodený - + Fatal failure Závažné zlyhanie - + Unknown error Neznáma chyba - + Password is empty Heslo je prázdne @@ -2516,117 +2537,117 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. PartitionViewStep - + Gathering system information... 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 +2695,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 +3191,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,57 +3446,57 @@ Výstup: TrackingKUserFeedbackJob - + KDE user feedback - + Používateľská spätná väzba prostredia KDE - + Configuring KDE user feedback. - + Nastavuje sa používateľská spätná väzba prostredia KDE. - - + + Error in KDE user feedback configuration. - + Chyba pri nastavovaní používateľskej spätnej väzby prostredia KDE. - + Could not configure KDE user feedback correctly, script error %1. - + Nepodarilo sa správne nastaviť používateľskú spätnú väzbu prostredia KDE. Chyba %1 skriptu. - + Could not configure KDE user feedback correctly, Calamares error %1. - + Nepodarilo sa správne nastaviť používateľskú spätnú väzbu prostredia KDE. Chyba %1 inštalátora Calamares. 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. @@ -3495,7 +3516,7 @@ Výstup: <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>Kliknutím sem neodošlete <span style=" font-weight:600;">absolútne žiadne informácie</span> o vašej inštalácii.</p></body></html> @@ -3534,47 +3555,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 +3573,7 @@ Výstup: UsersViewStep - + Users Používatelia @@ -3805,19 +3796,21 @@ 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>Jazyky</h1> </br> + Miestne nastavenie systému ovplyvní jazyk a znakovú sadu pre niektoré prvky používateľského rozhrania príkazového riadku. Aktuálne nastavenie je <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>Miestne nastavenie</h1> </br> + Miestne nastavenie systému ovplyvní formát čísel a dátumov. Aktuálne nastavenie je <strong>%1</strong>. - + Back Späť @@ -3825,44 +3818,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 +3863,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..9cef1395d 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 @@ -512,134 +512,134 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Oblika - + Select storage de&vice: - - - - + + + + Current: - + After: Potem: - - <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 @@ -1223,7 +1253,8 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + + Please enter the same passphrase in both boxes. @@ -1231,37 +1262,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 +1543,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 +1605,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 +1706,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 +1733,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocaleViewStep - + Location Položaj @@ -1779,7 +1795,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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. @@ -1940,247 +1961,247 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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 @@ -2514,117 +2535,117 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PartitionViewStep - + Gathering system information... 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 +2693,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 +3183,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 +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. - + Could not configure KDE user feedback correctly, Calamares error %1. @@ -3446,28 +3467,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 +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 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 +3565,7 @@ Output: UsersViewStep - + Users @@ -3787,19 +3778,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 +3798,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 +3843,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..c83df20be 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 @@ -510,134 +510,134 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Formular - + Select storage de&vice: Përzgjidhni &pajisje depozitimi: - - - - + + + + Current: E tanishmja: - + After: Më Pas: - - <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 @@ -1221,7 +1251,8 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Ripohoni frazëkalimin - + + Please enter the same passphrase in both boxes. Ju lutemi, jepni të njëjtin frazëkalim në të dy kutizat. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocaleViewStep - + Location Vendndodhje @@ -1777,7 +1793,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Map - + + Timezone: %1 + Zonë kohore: %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. @@ -1938,247 +1959,247 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PWQ - + Password is too short Fjalëkalimi është shumë i shkurtër - + Password is too long Fjalëkalimi është shumë i gjatë - + Password is too weak Fjalëkalimi është shumë i dobët - + Memory allocation error when setting '%1' Gabim caktimi kujtese kur rregullohej '%1' - + Memory allocation error Gabim caktimi kujtese - + The password is the same as the old one Fjalëkalimi është i njëjtë me të vjetrin - + The password is a palindrome Fjalëkalimi është një palindromë - + The password differs with case changes only Fjalëkalimet ndryshojnë vetëm nga shkronja të mëdha apo të vogla - + The password is too similar to the old one Fjalëkalimi është shumë i ngjashëm me të vjetrin - + The password contains the user name in some form Fjalëkalimi, në një farë mënyre, përmban emrin e përdoruesit - + The password contains words from the real name of the user in some form Fjalëkalimi, në një farë mënyre, përmban fjalë nga emri i vërtetë i përdoruesit - + The password contains forbidden words in some form Fjalëkalimi, në një farë mënyre, përmban fjalë të ndaluara - + The password contains less than %1 digits Fjalëkalimi përmban më pak se %1 shifra - + The password contains too few digits Fjalëkalimi përmban shumë pak shifra - + The password contains less than %1 uppercase letters Fjalëkalimi përmban më pak se %1 shkronja të mëdha - + The password contains too few uppercase letters Fjalëkalimi përmban pak shkronja të mëdha - + The password contains less than %1 lowercase letters Fjalëkalimi përmban më pak se %1 shkronja të vogla - + The password contains too few lowercase letters Fjalëkalimi përmban pak shkronja të vogla - + The password contains less than %1 non-alphanumeric characters Fjalëkalimi përmban më pak se %1 shenja jo alfanumerike - + The password contains too few non-alphanumeric characters Fjalëkalimi përmban pak shenja jo alfanumerike - + The password is shorter than %1 characters Fjalëkalimi është më i shkurtër se %1 shenja - + The password is too short Fjalëkalimi është shumë i shkurtër - + The password is just rotated old one Fjalëkalimi është i vjetri i ricikluar - + The password contains less than %1 character classes Fjalëkalimi përmban më pak se %1 klasa shenjash - + The password does not contain enough character classes Fjalëkalimi nuk përmban klasa të mjaftueshme shenjash - + The password contains more than %1 same characters consecutively Fjalëkalimi përmban më shumë se %1 shenja të njëjta njëra pas tjetrës - + The password contains too many same characters consecutively Fjalëkalimi përmban shumë shenja të njëjta njëra pas tjetrës - + The password contains more than %1 characters of the same class consecutively Fjalëkalimi përmban më shumë se %1 shenja të së njëjtës klasë njëra pas tjetrës - + The password contains too many characters of the same class consecutively Fjalëkalimi përmban shumë shenja të së njëjtës klasë njëra pas tjetrës - + The password contains monotonic sequence longer than %1 characters Fjalëkalimi përmban varg monoton më të gjatë se %1 shenja - + The password contains too long of a monotonic character sequence Fjalëkalimi përmban varg monoton shumë të gjatë shenjash - + No password supplied S’u dha fjalëkalim - + Cannot obtain random numbers from the RNG device S’merren dot numra të rëndomtë nga pajisja RNG - + Password generation failed - required entropy too low for settings Prodhimi i fjalëkalimit dështoi - entropi e domosdoshme për rregullimin shumë e ulët - + The password fails the dictionary check - %1 Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit - %1 - + The password fails the dictionary check Fjalëkalimi s’kaloi dot kontrollin kundrejt fjalorit - + Unknown setting - %1 Rregullim i panjohur - %1 - + Unknown setting Rregullim i panjohur - + Bad integer value of setting - %1 Vlerë e plotë e gabuar për rregullimin - %1 - + Bad integer value Vlerë e plotë e gabuar - + Setting %1 is not of integer type Rregullimi për %1 s’është numër i plotë - + Setting is not of integer type Rregullimi s’është numër i plotë - + Setting %1 is not of string type Rregullimi për %1 s’është i llojit varg - + Setting is not of string type Rregullimi s’është i llojit varg - + Opening the configuration file failed Dështoi hapja e kartelës së formësimit - + The configuration file is malformed Kartela e formësimit është e keqformuar - + Fatal failure Dështim fatal - + Unknown error Gabim i panjohur - + Password is empty Fjalëkalimi është i zbrazët @@ -2512,117 +2533,117 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. PartitionViewStep - + Gathering system information... 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 +2691,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 +3187,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 +3442,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 +3471,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 +3551,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 +3569,7 @@ Përfundim: UsersViewStep - + Users Përdorues @@ -3802,21 +3793,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 +3815,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 +3860,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..98ee6c7da 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 инсталер @@ -510,134 +510,134 @@ The installer will quit and all changes will be lost. Форма - + 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. - + + <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 @@ -1221,7 +1251,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Локација @@ -1777,7 +1793,12 @@ The installer will quit and all changes will be lost. 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. @@ -1938,247 +1959,247 @@ The installer will quit and all changes will be lost. 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 @@ -2512,117 +2533,117 @@ The installer will quit and all changes will be lost. 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. @@ -2670,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. @@ -3160,29 +3181,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 +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. @@ -3444,28 +3465,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 +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. - Ваше корисничко име је предугачко. - - - - 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 +3563,7 @@ Output: UsersViewStep - + Users Корисници @@ -3785,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 @@ -3805,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 @@ -3850,17 +3841,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..dd1b1ec69 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 @@ -510,134 +510,134 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Select storage de&vice: - - - - + + + + Current: - + After: Poslije: - - <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 @@ -1221,7 +1251,8 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + + Please enter the same passphrase in both boxes. @@ -1229,37 +1260,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 +1541,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 +1603,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 +1704,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 +1731,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocaleViewStep - + Location Lokacija @@ -1777,7 +1793,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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. @@ -1938,247 +1959,247 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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 @@ -2512,117 +2533,117 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PartitionViewStep - + Gathering system information... - + 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 +2691,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 +3181,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 +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. @@ -3444,28 +3465,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 +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. - - - - - 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 +3563,7 @@ Output: UsersViewStep - + Users Korisnici @@ -3785,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 @@ -3805,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 @@ -3850,17 +3841,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..2e746aa2f 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. @@ -220,9 +220,9 @@ QML steg <i>%1</i>. - + Loading failed. - + Laddning misslyckades. @@ -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 @@ -509,134 +509,134 @@ Alla ändringar kommer att gå förlorade. Formulär - + Select storage de&vice: Välj lagringsenhet: - - - - + + + + Current: Nuvarande: - + After: Efter: - - <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. + Sätt tidszon till %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) @@ -776,22 +776,62 @@ 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> + + + + Your username is too long. + Ditt användarnamn är för långt. + + + + '%1' is not allowed as username. + '%1' är inte tillåtet som användarnamn. + + + + 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. + '%1' är inte tillåtet som värdnamn. + + + + Only letters, numbers, underscore and hyphen are allowed. + Endast bokstäver, nummer, understreck och bindestreck är tillåtet. @@ -799,7 +839,7 @@ Alla ändringar kommer att gå förlorade. Contextual Processes Job - + Kontextuellt processjobb @@ -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 @@ -1220,7 +1250,8 @@ Alla ändringar kommer att gå förlorade. Bekräfta lösenord - + + Please enter the same passphrase in both boxes. Vänligen skriv samma lösenord i båda fälten. @@ -1228,37 +1259,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. @@ -1446,7 +1477,7 @@ Alla ändringar kommer att gå förlorade. OEM Batch Identifier - + OEM-batchidentifierare @@ -1509,12 +1540,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 +1602,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 +1703,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 +1730,7 @@ Alla ändringar kommer att gå förlorade. LocaleViewStep - + Location Plats @@ -1776,11 +1792,19 @@ Alla ändringar kommer att gå förlorade. Map - + + Timezone: %1 + Tidszon: %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. - + 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. @@ -1895,12 +1919,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> @@ -1918,7 +1942,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>. @@ -1931,253 +1955,253 @@ 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. PWQ - + Password is too short Lösenordet är för kort - + Password is too long Lösenordet är för långt - + Password is too weak Lösenordet är för svagt - + Memory allocation error when setting '%1' - + Minnesallokerings fel då '%1' skulle ställas in - + Memory allocation error Minnesallokerings fel - + The password is the same as the old one Lösenordet är samma som det gamla - + The password is a palindrome Lösenordet är en palindrom - + The password differs with case changes only Endast stora och små bokstäver skiljer lösenorden åt - + The password is too similar to the old one Lösenordet liknar för mycket det gamla - + The password contains the user name in some form Lösenordet innehåller ditt användarnamn i någon form - + The password contains words from the real name of the user in some form Lösenordet innehåller ord från användarens namn i någon form - + The password contains forbidden words in some form Lösenordet innehåller förbjudna ord i någon form - + The password contains less than %1 digits Lösenordet innehåller mindre än %1 siffror - + The password contains too few digits Lösenordet innehåller för få siffror - + The password contains less than %1 uppercase letters Lösenordet innehåller mindre än %1 stora bokstäver - + The password contains too few uppercase letters Lösenordet innehåller för få stora bokstäver - + The password contains less than %1 lowercase letters Lösenordet innehåller mindre än %1 små bokstäver - + The password contains too few lowercase letters Lösenordet innehåller för få små bokstäver - + The password contains less than %1 non-alphanumeric characters Lösenordet innehåller färre än %1 icke alfanumeriska tecken - + The password contains too few non-alphanumeric characters Lösenordet innehåller för få icke-alfanumeriska tecken - + The password is shorter than %1 characters Lösenordet är kortare än %1 tecken - + The password is too short Detta lösenordet är för kort - + The password is just rotated old one Lösenordet är ett roterat gammalt lösenord - + The password contains less than %1 character classes Lösenordet innehåller färre än %1 teckenklasser - + The password does not contain enough character classes Lösenordet innehåller inte tillräckligt många teckenklasser - + The password contains more than %1 same characters consecutively Lösenordet innehåller fler än %1 likadana tecken i rad - + The password contains too many same characters consecutively Lösenordet innehåller för många liknande tecken efter varandra - + The password contains more than %1 characters of the same class consecutively Lösenordet innehåller fler än %1 tecken från samma klass i rad - + The password contains too many characters of the same class consecutively Lösenordet innehåller för många tecken från samma klass i rad - + The password contains monotonic sequence longer than %1 characters Lösenordet innehåller en monoton sekvens längre än %1 tecken - + The password contains too long of a monotonic character sequence Lösenordet innehåller en för lång monoton teckensekvens - + No password supplied Inget lösenord angivit - + Cannot obtain random numbers from the RNG device Kan inte hämta slumptal från slumptalsgeneratorn - + Password generation failed - required entropy too low for settings Lösenordsgenerering misslyckades - för lite entropi tillgänglig för givna inställningar - + The password fails the dictionary check - %1 Lösenordet klarar inte ordlistekontrollen - %1 - + The password fails the dictionary check Lösenordet klarar inte ordlistekontrollen - + Unknown setting - %1 Okänd inställning - %1 - + Unknown setting Okänd inställning - + Bad integer value of setting - %1 - + Dåligt heltals värde på inställning - %1 - + Bad integer value Dåligt heltals värde - + Setting %1 is not of integer type Inställning %1 är inte av heltals typ - + Setting is not of integer type Inställning är inte av heltals typ - + Setting %1 is not of string type Inställning %1 är inte av sträng typ - + Setting is not of string type Inställning %1 är inte av sträng typ - + Opening the configuration file failed Öppnande av konfigurationsfilen misslyckades - + The configuration file is malformed Konfigurationsfilen är felaktig - + Fatal failure Fatalt fel - + Unknown error Okänt fel - + Password is empty Lösenordet är blankt @@ -2511,117 +2535,117 @@ Alla ändringar kommer att gå förlorade. PartitionViewStep - + Gathering system information... 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 +2693,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. @@ -2836,7 +2860,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> @@ -2947,13 +2972,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> @@ -3162,29 +3189,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. @@ -3396,17 +3423,17 @@ Utdata: Installation feedback - + Installationsåterkoppling Sending installation feedback. - + Skickar installationsåterkoppling Internal error in install-tracking. - + Internt fel i install-tracking. @@ -3417,57 +3444,57 @@ Utdata: TrackingKUserFeedbackJob - + 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. TrackingMachineUpdateManagerJob - + Machine feedback Maskin feedback - + Configuring machine feedback. Konfigurerar maskin feedback - - + + Error in machine feedback configuration. - + Fel vid konfigurering av maskin feedback - + 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. @@ -3487,32 +3514,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. @@ -3526,47 +3553,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 +3571,7 @@ Utdata: UsersViewStep - + Users Användare @@ -3798,19 +3795,21 @@ 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>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 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>Nationella inställningar</h1> </br> +Systems nationella inställningar påverkar nummer och datumformat. Den nuvarande inställningen är <strong>%3</strong>. - + Back Bakåt @@ -3818,44 +3817,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 +3862,7 @@ Utdata: localeq - - System language set to %1 - - - - - Numbers and dates locale set to %1 - - - - + Change Ändra 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 + + + + diff --git a/lang/calamares_tg.ts b/lang/calamares_tg.ts new file mode 100644 index 000000000..c7d0d3501 --- /dev/null +++ b/lang/calamares_tg.ts @@ -0,0 +1,3968 @@ + + + + + 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 + Хатои таҳлилнашавандаи Python + + + + unparseable Python traceback + Барориши таҳлилнашавандаи Python + + + + Unfetchable Python error. + Хатои кашиданашавандаи Python. + + + + CalamaresUtils + + + Install log posted to: +%1 + Сабти рӯйдодҳои насб ба нишонии зерин гузошта шуд: +%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. + <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. + Ҳамаи васлҳои муваққатӣ пок карда шуданд. + + + + CommandList + + + + 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 танзим карда мешавад. + + + + 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/>Насбкунӣ идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. + + + + 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> + + + + 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 + + + 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. + Қисми диски нав бо ҳаҷми %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' эҷод карда натавонист. + + + + 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) + Сабти роҳандозии асосӣ (MBR) + + + + GUID Partition Table (GPT) + Ҷадвали қисми диски GUID (GPT) + + + + CreatePartitionTableJob + + + 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. + + + + Cannot create sudoers file for writing. + Файли sudoers барои сабт эҷод карда намешавад. + + + + Cannot chmod sudoers file. + Фармони chmod барои файли sudoers иҷро намешавад. + + + + 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. + Ин дастгоҳ ҷадвали қисми диски <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 дар низомҳои муосир бояд истифода бурда шавад. + + + + 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 + Танзимоти LUKS барои Dracut ба %1 сабт карда мешавад + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Сабти танзимоти LUKS барои Dracut иҷро карда намешавад: қисми диски "/" рамзгузорӣ нашудааст + + + + Failed to open %1 + %1 кушода нашуд + + + + DummyCppJob + + + Dummy C++ Job + Вазифаи амсилаи C++ + + + + 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. + Насбкунии %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. + Танзимкунии нуқтаҳои васл. + + + + 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. + <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. + + + + FinishedViewStep + + + Finish + Анҷом + + + + Setup Complete + Анҷоми танзимкунӣ + + + + Installation Complete + Насбкунӣ ба анҷом расид + + + + The setup of %1 is complete. + Танзимкунии %1 ба анҷом расид. + + + + The installation of %1 is complete. + Насбкунии %1 ба анҷом расид. + + + + FormatPartitionJob + + + 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' шаклбандӣ карда натавонист. + + + + GeneralRequirements + + + 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. + Экран барои нишон додани насбкунанда хеле хурд аст. + + + + HostInfoJob + + + Collecting information about your machine. + Ҷамъкунии иттилоот дар бораи компютери шумо. + + + + IDJob + + + + + + 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> навишта натавонист. + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Эҷодкунии initramfs бо mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Эҷодкунии initramfs. + + + + InteractiveTerminalPage + + + Konsole not installed + Konsole насб нашудааст + + + + Please install KDE Konsole and try again! + Лутфан, KDE Konsole-ро насб намуда, аз нав кӯшиш кунед! + + + + Executing script: &nbsp;<code>%1</code> + Иҷрокунии нақши: &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>. + Танзими маҳаллигардонии низом ба забон ва маҷмӯаи аломатҳо барои баъзеи унсурҳои интерфейси корбарӣ дар сатри фармондиҳӣ таъсир мерасонад.<br/>Танзимоти ҷорӣ: <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). + Лутфан, Созишномаҳои иҷозатномавии корбари ниҳоиро (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. + Агар шумо шартҳоро қабул накунед, нармафзори патентдор насб карда намешавад, аммо ба ҷояш нармафзори имконпазири ройгон истифода бурда мешавад. + + + + LicenseViewStep + + + License + Иҷозатнома + + + + LicenseWidget + + + 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> + + + + File: %1 + Файл: %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. + Танзимкунии файли калиди LUKS. + + + + + No partitions are defined. + Ягон қисми диск муайян карда нашуд. + + + + + + Encrypted rootfs setup error + Хатои танзими рамзгузории "rootfs" + + + + 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 танзим карда нашуд. + + + + MachineIdJob + + + Generate machine-id. + Эҷодкунии рақами мушаххаси компютер (machine-id). + + + + Configuration Error + Хатои танзимкунӣ + + + + No root mount point is set for MachineId. + Нуқтаи васли реша (root) барои MachineId танзим нашудааст. + + + + Map + + + Timezone: %1 + Минтақаи вақт: %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><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> + + + + OEMViewStep + + + OEM Configuration + Танзимоти OEM + + + + Set the OEM Batch Identifier to <code>%1</code>. + Муайянкунандаи бастаи OEM ба <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' + Хатои ҷойдиҳии ҳофиза ҳангоми танзими '%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 аломат кӯтоҳтар аст + + + + The password is too short + Ниҳонвожа хеле кӯтоҳ аст + + + + 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 + Ниҳонвожа аз санҷиши луғавӣ нагузашт + + + + Unknown setting - %1 + Танзими номаълум - %1 + + + + Unknown setting + Танзими номаълум + + + + 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 + Хатои ҷиддӣ + + + + 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> + <small>Ин ном истифода мешавад, агар шумо компютери худро барои дигарон дар шабака намоён кунед.</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> + <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. + Агар шумо ин имконро интихоб кунед, қувваи ниҳонвожа тафтиш карда мешавад ва шумо ниҳонвожаи заифро истифода карда наметавонед. + + + + 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> + <small>Ниҳонвожаи ягонаро ду маротиба ворид намоед, то ки он барои хатоҳои имлоӣ тафтиш карда шавад.</small> + + + + PartitionLabelsView + + + Root + Реша (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. + Ҷадвали қисми диск дар %1 аллакай %2 қисми диски асосиро дар бар мегирад ва қисмҳои бештар илова карда намешаванд. Лутфан, як қисми диски асосиро нест кунед ва ба ҷояш қисми диски афзударо илова намоед. + + + + PartitionViewStep + + + Gathering system information... + Ҷамъкунии иттилооти низомӣ... + + + + 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. + Қисми диски низомии 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 + Имкони истифодаи 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. + Қисми диски роҳандозии алоҳида дар як ҷой бо қисми диски реша (root)-и рамзгузоришуда танзим карда шуд, аммо қисми диски роҳандозӣ рамзгузорӣ нашудааст.<br/><br/>Барои ҳамин навъи танзимкунӣ масъалаи амниятӣ аҳамият дорад, зеро ки файлҳои низомии муҳим дар қисми диски рамзгузоринашуда нигоҳ дошта мешаванд.<br/>Агар шумо хоҳед, метавонед идома диҳед, аммо қулфкушоии низоми файлӣ дертар ҳангоми оғози кори низом иҷро карда мешавад.<br/>Барои рамзгзорӣ кардани қисми диски роҳандозӣ ба қафо гузаред ва бо интихоби тугмаи <strong>Рамзгузорӣ</strong> дар равзанаи эҷодкунии қисми диск онро аз нав эҷод намоед. + + + + has at least one disk device available. + ақаллан як дастгоҳи диск дастрас аст. + + + + There are no partitions to install on. + Ягон қисми диск барои насб вуҷуд надорад. + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + Вазифаи намуди зоҳирии Plasma + + + + + Could not select KDE Plasma Look-and-Feel package + Бастаи намуди зоҳирии KDE Plasma интихоб карда намешавад + + + + 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. + Лутфан, намуди зоҳириро барои мизи кории KDE Plasma интихоб намоед. Шумо инчунин метавонед ин қадамро ҳозир ба назар нагиред, аммо намуди зоҳириро пас аз анҷоми танзимкунии низом дар вақти дилхоҳ танзим намоед. Барои пешнамоиш кардани намуди зоҳирии интихобшуда, онро зер кунед. + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + Лутфан, намуди зоҳириро барои мизи кории KDE Plasma интихоб намоед. Шумо инчунин метавонед ин қадамро ҳозир ба назар нагиред, аммо намуди зоҳириро пас аз анҷоми насбкунии низом дар вақти дилхоҳ танзим намоед. Барои пешнамоиш кардани намуди зоҳирии интихобшуда, онро зер кунед. + + + + PlasmaLnfViewStep + + + Look-and-Feel + Намуди зоҳирӣ + + + + 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. + Фармони <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 ба анҷом расид. + + + + 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. + Масири <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 + Фазои диск бо қисми диски ҷудонашуда ё ҷадвали қисми диски номаълум + + + + 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> + <p>Ин компютер ба баъзеи талаботи тавсияшуда барои насбкунии %1 ҷавобгӯ намебошад.<br/> + Танзимот идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд.</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. + Интихоб кунед, ки %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 ГБ интихоб намоед. + + + + <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 истифода бурда мешавад. + + + + EFI system partition: + Қисми диски низомии: + + + + Requirements + + + <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> + + + + ResizeFSJob + + + 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-ро оғоз карда наметавонад. + + + + + + + + Resize Failed + Андоза иваз карда нашуд + + + + 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 бояд иваз карда шавад, аммо иваз карда намешавад. + + + + ResizePartitionJob + + + Resize partition %1. + Иваз кардани андозаи қисми диски %1. + + + + 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' иваз карда натавонист. + + + + 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> + Ин компютер ба талаботи камтарин барои танзимкунии %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/>Насбкунӣ идома дода мешавад, аммо баъзеи хусусиятҳо ғайрифаъол карда мешаванд. + + + + This program will ask you some questions and set up %2 on your computer. + Ин барнома аз Шумо якчанд савол мепурсад ва %2-ро дар компютери шумо танзим мекунад. + + + + ScanningDialog + + + Scanning storage devices... + Ҷустуҷӯи дастгоҳҳои захирагоҳ... + + + + Partitioning + Қисмбандии диск + + + + SetHostNameJob + + + Set hostname %1 + Танзими номи мизбони %1 + + + + Set hostname <strong>%1</strong>. + Танзими номи мизбони <strong>%1</strong>. + + + + Setting hostname %1. + Танзимкунии номи мизбони %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 + Ба %1 сабт нашуд + + + + Failed to write keyboard configuration for X11. + Танзимоти клавиатура барои X11 сабт нашуд. + + + + Failed to write keyboard configuration to existing /etc/default directory. + Танзимоти клавиатура ба феҳристи мавҷудбудаи /etc/default сабт нашуд. + + + + SetPartFlagsJob + + + 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 танзим карда натавонист. + + + + SetPasswordJob + + + Set password for user %1 + Танзими ниҳонвожа барои корбари %1 + + + + Setting password for user %1. + Танзимкунии ниҳонвожа барои корбари %1. + + + + Bad destination system path. + Масири ҷойи таъиноти низомӣ нодуруст аст. + + + + rootMountPoint is %1 + rootMountPoint: %1 + + + + Cannot disable root account. + Ҳисоби реша (root) ғайрифаъол карда намешавад. + + + + passwd terminated with error code %1. + passwd бо рамзи хатои %1 қатъ шуд. + + + + Cannot set password for user %1. + Ниҳонвожа барои корбари %1 танзим карда намешавад. + + + + usermod terminated with error code %1. + usermod бо рамзи хатои %1 қатъ шуд. + + + + SetTimezoneJob + + + 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 барои сабт кушода намешавад + + + + ShellProcessJob + + + Shell Processes Job + Вазифаи равандҳои восит + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + %L1 / %L2 + + + + 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. + Вақти дархости 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. + + + + 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>Дар ин ҷо зер кунед, то ки <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 мефиристонед. + + + + TrackingViewStep + + + 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 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. + <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 дастгирӣ карда мешавад. + + + + 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. + <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 дастгирӣ карда мешавад. + + + + 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 numbers and dates format. 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 + + + 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> + <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> + + + + 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 + Саҳмгузорӣ + + + diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 5cd67740a..ab2e8f980 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 @@ -506,134 +506,134 @@ The installer will quit and all changes will be lost. ฟอร์ม - + 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. - + + <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 @@ -1217,7 +1247,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1225,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. @@ -1506,12 +1537,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 +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. @@ -1669,41 +1700,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 +1727,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location ตำแหน่ง @@ -1773,7 +1789,12 @@ The installer will quit and all changes will be lost. 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. @@ -1934,247 +1955,247 @@ The installer will quit and all changes will be lost. 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 รหัสผ่านว่าง @@ -2508,117 +2529,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... กำลังรวบรวมข้อมูลของระบบ... - + 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 +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. @@ -3156,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. @@ -3411,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. @@ -3440,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. @@ -3520,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! รหัสผ่านของคุณไม่ตรงกัน! @@ -3568,7 +3559,7 @@ Output: UsersViewStep - + Users ผู้ใช้ @@ -3781,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 @@ -3801,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 @@ -3846,17 +3837,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..005148771 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 @@ -510,135 +510,135 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. Biçim - + Select storage de&vice: Depolama ay&gıtı seç: - - - - + + + + Current: Geçerli: - + After: Sonra: - - <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 @@ -1224,7 +1254,8 @@ Kurulum devam edebilir fakat bazı özellikler devre dışı kalabilir.Parolayı doğrula - + + Please enter the same passphrase in both boxes. Her iki kutuya da aynı parolayı giriniz. @@ -1232,37 +1263,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 +1545,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 +1607,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 +1708,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 +1735,7 @@ Sistem güç kaynağına bağlı değil. LocaleViewStep - + Location Sistem Yereli @@ -1781,7 +1797,12 @@ Sistem güç kaynağına bağlı değil. Map - + + Timezone: %1 + Zaman dilimi: %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. @@ -1944,247 +1965,247 @@ Sistem güç kaynağına bağlı değil. PWQ - + Password is too short Şifre çok kısa - + Password is too long Şifre çok uzun - + Password is too weak Şifre çok zayıf - + Memory allocation error when setting '%1' '%1' ayarlanırken bellek ayırma hatası - + Memory allocation error Bellek ayırma hatası - + The password is the same as the old one Şifre eski şifreyle aynı - + The password is a palindrome Parola eskilerden birinin ters okunuşu olabilir - + The password differs with case changes only Parola sadece vaka değişiklikleri ile farklılık gösterir - + The password is too similar to the old one Parola eski parolaya çok benzer - + The password contains the user name in some form Parola kullanıcı adını bir biçimde içeriyor - + The password contains words from the real name of the user in some form Şifre, kullanıcının gerçek adına ait kelimeleri bazı biçimde içerir - + The password contains forbidden words in some form Şifre, bazı biçimde yasak kelimeler içeriyor - + The password contains less than %1 digits Şifre %1 den az hane içeriyor - + The password contains too few digits Parola çok az basamak içeriyor - + The password contains less than %1 uppercase letters Parola %1 den az büyük harf içeriyor - + The password contains too few uppercase letters Parola çok az harf içermektedir - + The password contains less than %1 lowercase letters Parola %1 den daha küçük harf içermektedir - + The password contains too few lowercase letters Parola çok az küçük harf içeriyor - + The password contains less than %1 non-alphanumeric characters Şifre %1 den az alfasayısal olmayan karakter içeriyor - + The password contains too few non-alphanumeric characters Parola çok az sayıda alfasayısal olmayan karakter içeriyor - + The password is shorter than %1 characters Parola %1 karakterden kısa - + The password is too short Parola çok kısa - + The password is just rotated old one Şifre önceden kullanıldı - + The password contains less than %1 character classes Parola %1 den az karakter sınıfı içeriyor - + The password does not contain enough character classes Parola yeterli sayıda karakter sınıfı içermiyor - + The password contains more than %1 same characters consecutively Şifre, %1 den fazla aynı karakteri ardışık olarak içeriyor - + The password contains too many same characters consecutively Parola ardışık olarak aynı sayıda çok karakter içeriyor - + The password contains more than %1 characters of the same class consecutively Parola, aynı sınıftan %1 den fazla karakter ardışık olarak içeriyor - + The password contains too many characters of the same class consecutively Parola aynı sınıfta çok fazla karakter içeriyor - + The password contains monotonic sequence longer than %1 characters Şifre, %1 karakterden daha uzun monoton dizilim içeriyor - + The password contains too long of a monotonic character sequence Parola çok uzun monoton karakter dizisi içeriyor - + No password supplied Parola sağlanmadı - + Cannot obtain random numbers from the RNG device RNG cihazından rastgele sayılar elde edemiyor - + Password generation failed - required entropy too low for settings Şifre üretimi başarısız oldu - ayarlar için entropi çok düşük gerekli - + The password fails the dictionary check - %1 Parola, sözlüğü kontrolü başarısız - %1 - + The password fails the dictionary check Parola, sözlük onayı başarısız - + Unknown setting - %1 Bilinmeyen ayar - %1 - + Unknown setting Bilinmeyen ayar - + Bad integer value of setting - %1 Ayarın bozuk tam sayı değeri - %1 - + Bad integer value Yanlış tamsayı değeri - + Setting %1 is not of integer type %1 ayarı tamsayı tipinde değil - + Setting is not of integer type Ayar tamsayı tipinde değil - + Setting %1 is not of string type Ayar %1, dizgi tipi değil - + Setting is not of string type Ayar, dizgi tipi değil - + Opening the configuration file failed Yapılandırma dosyasını açma başarısız oldu - + The configuration file is malformed Yapılandırma dosyası hatalı biçimlendirildi - + Fatal failure Ölümcül arıza - + Unknown error Bilinmeyen hata - + Password is empty Şifre boş @@ -2518,118 +2539,118 @@ Sistem güç kaynağına bağlı değil. PartitionViewStep - + Gathering system information... 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 +2698,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 +3196,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 +3451,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 +3480,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 +3560,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 +3578,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. UsersViewStep - + Users Kullanıcı Tercihleri @@ -3812,21 +3803,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 +3825,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 +3870,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..c720f8235 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 @@ -514,134 +514,134 @@ The installer will quit and all changes will be lost. Форма - + 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. - <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 @@ -1225,7 +1255,8 @@ The installer will quit and all changes will be lost. Підтвердження ключової фрази - + + Please enter the same passphrase in both boxes. Будь ласка, введіть однакову ключову фразу у обидва текстові вікна. @@ -1233,37 +1264,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 +1545,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 +1607,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 +1708,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 +1735,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location Розташування @@ -1781,7 +1797,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + Часовий пояс: %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. @@ -1944,248 +1965,248 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short Пароль занадто короткий - + Password is too long Пароль задовгий - + Password is too weak Пароль надто ненадійний - + 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 символів - + The password is too short Цей пароль занадто короткий - + 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 Пароль не пройшов перевірки за словником - + Unknown setting - %1 Невідомий параметр – %1 - + Unknown setting Невідомий параметр - + 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 Фатальна помилка - + Unknown error Невідома помилка - + Password is empty Пароль є порожнім @@ -2519,117 +2540,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Збір інформації про систему... - + 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 +2698,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 +3194,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 +3449,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 +3478,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 +3558,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 +3576,7 @@ Output: UsersViewStep - + Users Користувачі @@ -3808,21 +3799,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 +3821,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 +3866,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..88169cd38 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 @@ -507,134 +507,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1218,7 +1248,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1226,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. - + 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 +1538,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 +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. @@ -1670,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. - - - - - The numbers and dates locale will be set to %1. - - - - - Set timezone to %1/%2.<br/> - - LocaleQmlViewStep - + Location @@ -1712,7 +1728,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1774,7 +1790,12 @@ The installer will quit and all changes will be lost. 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. @@ -1935,247 +1956,247 @@ The installer will quit and all changes will be lost. 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 @@ -2509,117 +2530,117 @@ The installer will quit and all changes will be lost. 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. @@ -2667,17 +2688,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 +3178,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 +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. @@ -3441,28 +3462,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 +3542,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 +3560,7 @@ Output: UsersViewStep - + Users @@ -3782,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 @@ -3802,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 @@ -3847,17 +3838,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..fadb3b407 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 @@ -505,134 +505,134 @@ The installer will quit and all changes will be lost. - + 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. + + <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 @@ -1216,7 +1246,8 @@ The installer will quit and all changes will be lost. - + + Please enter the same passphrase in both boxes. @@ -1224,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. @@ -1505,12 +1536,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 +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. @@ -1668,41 +1699,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 +1726,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location @@ -1772,7 +1788,12 @@ The installer will quit and all changes will be lost. 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. @@ -1933,247 +1954,247 @@ The installer will quit and all changes will be lost. 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 @@ -2507,117 +2528,117 @@ The installer will quit and all changes will be lost. 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. @@ -2665,17 +2686,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 +3176,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 +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. @@ -3439,28 +3460,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 +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 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 +3558,7 @@ Output: UsersViewStep - + Users @@ -3780,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 @@ -3800,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 @@ -3845,17 +3836,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..141a36247 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 安装程序 @@ -509,134 +509,134 @@ The installer will quit and all changes will be lost. 表单 - + Select storage de&vice: 选择存储器(&V): - - - - + + + + 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>手动分区</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 @@ -1223,7 +1253,8 @@ The installer will quit and all changes will be lost. 确认密码 - + + Please enter the same passphrase in both boxes. 请在两个输入框中输入同样的密码。 @@ -1231,37 +1262,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 +1543,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 +1605,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 +1706,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 +1733,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 位置 @@ -1779,7 +1795,12 @@ The installer will quit and all changes will be lost. 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. @@ -1940,247 +1961,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short 密码太短 - + Password is too long 密码太长 - + Password is too weak 密码强度太弱 - + 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 位 - + The password is too short 新密码过短 - + 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 新密码无法通过字典检查 - + Unknown setting - %1 未知设置 - %1 - + Unknown setting 未知设置 - + 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 致命错误 - + Unknown error 未知错误 - + Password is empty 密码是空 @@ -2514,117 +2535,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 正在收集系统信息... - + 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 +2693,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 +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 目录。 @@ -3422,28 +3443,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 +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。 @@ -3531,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! 密码不匹配! @@ -3579,7 +3570,7 @@ Output: UsersViewStep - + Users 用户 @@ -3803,19 +3794,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 +3814,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 +3859,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..1fc94c7a1 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 安裝程式 @@ -508,134 +508,134 @@ The installer will quit and all changes will be lost. 表單 - + Select storage de&vice: 選取儲存裝置(&V): - - - - + + + + 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>手動分割</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 @@ -1219,7 +1249,8 @@ The installer will quit and all changes will be lost. 確認通關密語 - + + Please enter the same passphrase in both boxes. 請在兩個框框中輸入相同的通關密語。 @@ -1227,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. 在 <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 +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 。 @@ -1570,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). 請審閱終端使用者授權條款 (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 +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 位置 @@ -1713,7 +1729,7 @@ The installer will quit and all changes will be lost. LocaleViewStep - + Location 位置 @@ -1775,7 +1791,12 @@ The installer will quit and all changes will be lost. Map - + + Timezone: %1 + 時區:%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. @@ -1938,247 +1959,247 @@ The installer will quit and all changes will be lost. PWQ - + Password is too short 密碼太短 - + Password is too long 密碼太長 - + Password is too weak 密碼太弱 - + 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 個字元 - + The password is too short 密碼太短 - + 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 密碼在字典檢查時失敗 - + Unknown setting - %1 未知的設定 - %1 - + Unknown setting 未知的設定 - + 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 無法挽回的失敗 - + Unknown error 未知的錯誤 - + Password is empty 密碼為空 @@ -2512,117 +2533,117 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 蒐集系統資訊中... - + 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 +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. 並非所有已設定的檔案都可以被保留。 @@ -3166,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 目錄失敗。 @@ -3421,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。 @@ -3450,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。 @@ -3530,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! 密碼不符! @@ -3578,7 +3569,7 @@ Output: UsersViewStep - + Users 使用者 @@ -3802,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 返回 @@ -3824,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 測試您的鍵盤 @@ -3869,17 +3860,7 @@ Output: localeq - - System language set to %1 - 系統語言設定為 %1 - - - - Numbers and dates locale set to %1 - 數字與日期語系設定為 %1 - - - + Change 變更 diff --git a/lang/python.pot b/lang/python.pot index 95fc5da04..e082c567c 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-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" diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo deleted file mode 100644 index 53869a8e7..000000000 Binary files a/lang/python/ar/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index bea1c8aea..43a77b747 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-08-09 20:56+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.mo b/lang/python/as/LC_MESSAGES/python.mo deleted file mode 100644 index f9533c495..000000000 Binary files a/lang/python/as/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/as/LC_MESSAGES/python.po b/lang/python/as/LC_MESSAGES/python.po index c50cfdbfe..fe159e168 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-08-09 20:56+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.mo b/lang/python/ast/LC_MESSAGES/python.mo deleted file mode 100644 index d14fb29fa..000000000 Binary files a/lang/python/ast/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index 502b9a6ed..0a98ff9f8 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-08-09 20:56+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.mo b/lang/python/az/LC_MESSAGES/python.mo deleted file mode 100644 index 30568e957..000000000 Binary files a/lang/python/az/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/az/LC_MESSAGES/python.po b/lang/python/az/LC_MESSAGES/python.po index 8c93c8d96..cefa15dc7 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-08-09 20:56+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.mo b/lang/python/az_AZ/LC_MESSAGES/python.mo deleted file mode 100644 index 7ecad241f..000000000 Binary files a/lang/python/az_AZ/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/az_AZ/LC_MESSAGES/python.po b/lang/python/az_AZ/LC_MESSAGES/python.po index ede276cf7..a84f9e786 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-08-09 20:56+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.mo b/lang/python/be/LC_MESSAGES/python.mo deleted file mode 100644 index 0f786f5e7..000000000 Binary files a/lang/python/be/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po index f4c7e65e2..5262ed7a0 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-08-09 20:56+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.mo b/lang/python/bg/LC_MESSAGES/python.mo deleted file mode 100644 index 6f3e15740..000000000 Binary files a/lang/python/bg/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index b05e10126..4fc0eadea 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-08-09 20:56+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.mo b/lang/python/bn/LC_MESSAGES/python.mo deleted file mode 100644 index 7faa09a2c..000000000 Binary files a/lang/python/bn/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/bn/LC_MESSAGES/python.po b/lang/python/bn/LC_MESSAGES/python.po index ee7b2e059..fc5d6f101 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-08-09 20:56+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.mo b/lang/python/ca/LC_MESSAGES/python.mo deleted file mode 100644 index 69051c442..000000000 Binary files a/lang/python/ca/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index 4549b1e17..aae659bb5 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-08-09 20:56+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.mo b/lang/python/ca@valencia/LC_MESSAGES/python.mo deleted file mode 100644 index ab2697f1e..000000000 Binary files a/lang/python/ca@valencia/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ca@valencia/LC_MESSAGES/python.po b/lang/python/ca@valencia/LC_MESSAGES/python.po index e33bba2dd..cc4f2c1b2 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-08-09 20:56+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.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo deleted file mode 100644 index 8062d80c4..000000000 Binary files a/lang/python/cs_CZ/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index e2b0e6596..5316dae81 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-08-09 20:56+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.mo b/lang/python/da/LC_MESSAGES/python.mo deleted file mode 100644 index e20269910..000000000 Binary files a/lang/python/da/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po index 3aa90eaad..e4daf8c91 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-08-09 20:56+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 deleted file mode 100644 index beb4ce7b3..000000000 Binary files a/lang/python/de/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index 107847889..506d49cca 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-08-09 20:56+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.mo b/lang/python/el/LC_MESSAGES/python.mo deleted file mode 100644 index 5fc568093..000000000 Binary files a/lang/python/el/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index 95a2c90eb..8145f277e 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-08-09 20:56+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.mo b/lang/python/en_GB/LC_MESSAGES/python.mo deleted file mode 100644 index 4c2401cc7..000000000 Binary files a/lang/python/en_GB/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po index 17fc8db1e..b35229816 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-08-09 20:56+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.mo b/lang/python/eo/LC_MESSAGES/python.mo deleted file mode 100644 index 0f910a110..000000000 Binary files a/lang/python/eo/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index b8c83ed0a..37ab372f2 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-08-09 20:56+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.mo b/lang/python/es/LC_MESSAGES/python.mo deleted file mode 100644 index d2ab2f337..000000000 Binary files a/lang/python/es/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index 3246f7d1f..e1be580e7 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-08-09 20:56+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.mo b/lang/python/es_MX/LC_MESSAGES/python.mo deleted file mode 100644 index 86619f9ff..000000000 Binary files a/lang/python/es_MX/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index 7b0933ed9..4abed75d4 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-08-09 20:56+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.mo b/lang/python/es_PR/LC_MESSAGES/python.mo deleted file mode 100644 index d3872bc6f..000000000 Binary files a/lang/python/es_PR/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index 503461528..4334657f1 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-08-09 20:56+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.mo b/lang/python/et/LC_MESSAGES/python.mo deleted file mode 100644 index bc59b5fe4..000000000 Binary files a/lang/python/et/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index 73b642c14..f7ba3f2f0 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-08-09 20:56+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.mo b/lang/python/eu/LC_MESSAGES/python.mo deleted file mode 100644 index 6ec9f5277..000000000 Binary files a/lang/python/eu/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index 540f048b9..b879e6adf 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-08-09 20:56+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.mo b/lang/python/fa/LC_MESSAGES/python.mo deleted file mode 100644 index f3e832135..000000000 Binary files a/lang/python/fa/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 82f63fbda..bb6096cbf 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-08-09 20:56+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.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo deleted file mode 100644 index 9f9791235..000000000 Binary files a/lang/python/fi_FI/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index 3df0a0d0c..d01c7d81b 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-08-09 20:56+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.mo b/lang/python/fr/LC_MESSAGES/python.mo deleted file mode 100644 index c226c213b..000000000 Binary files a/lang/python/fr/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index 24f71ecb0..d4bc08f4c 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ # Abdellah B , 2017 # Aestan , 2018 # Jeremy Gourmel , 2018 -# Aurnytoraink , 2018 +# Aurnytoraink , 2018 # a270031086f2a0d3514bc0cb507b48f6, 2019 # Seboss666 , 2019 # Florian B , 2019 @@ -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-08-09 20:56+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.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo deleted file mode 100644 index a063ac8ce..000000000 Binary files a/lang/python/fr_CH/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index fdfb24597..3a078ad62 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-08-09 20:56+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.mo b/lang/python/gl/LC_MESSAGES/python.mo deleted file mode 100644 index d70c91133..000000000 Binary files a/lang/python/gl/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index f072a2efe..4215df794 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-08-09 20:56+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.mo b/lang/python/gu/LC_MESSAGES/python.mo deleted file mode 100644 index 114bcc926..000000000 Binary files a/lang/python/gu/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 601ec8021..755a686c3 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-08-09 20:56+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.mo b/lang/python/he/LC_MESSAGES/python.mo deleted file mode 100644 index cdd79d657..000000000 Binary files a/lang/python/he/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 229d2ff78..f59dcd1be 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-08-09 20:56+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.mo b/lang/python/hi/LC_MESSAGES/python.mo deleted file mode 100644 index 8b12ae6dc..000000000 Binary files a/lang/python/hi/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index 40fbd2e72..83157867e 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-08-09 20:56+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.mo b/lang/python/hr/LC_MESSAGES/python.mo deleted file mode 100644 index 0ea377107..000000000 Binary files a/lang/python/hr/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index c5dc0e9b3..d878870b3 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-08-09 20:56+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.mo b/lang/python/hu/LC_MESSAGES/python.mo deleted file mode 100644 index 60592e1b5..000000000 Binary files a/lang/python/hu/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 2b2d42bd2..343445422 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-08-09 20:56+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.mo b/lang/python/id/LC_MESSAGES/python.mo deleted file mode 100644 index 2a6c52941..000000000 Binary files a/lang/python/id/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index 918423b8d..49e4ff718 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-08-09 20:56+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.po b/lang/python/ie/LC_MESSAGES/python.po new file mode 100644 index 000000000..bd9e3ddec --- /dev/null +++ b/lang/python/ie/LC_MESSAGES/python.po @@ -0,0 +1,347 @@ +# 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: +# Caarmi, 2020 +# +#, 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" +"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" +"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 "Configurante GRUB." + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "Montente partitiones." + +#: 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 "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 "Null partition es definit por usa de
{!s}
." + +#: src/modules/services-systemd/main.py:35 +msgid "Configure systemd services" +msgstr "Configurante servicios de systemd" + +#: 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 "" +"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 "Ne successat activar li servicio de systemd {name!s}." + +#: 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 "Ne successat depaccar li image \"{}\"" + +#: 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 "Ínvalid configuration de unsquash" + +#: 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 "Ne successat scrir li file de configuration de KDM" + +#: src/modules/displaymanager/main.py:524 +msgid "KDM config file {!s} does not exist" +msgstr "File del configuration de KDM {!s} ne existe" + +#: src/modules/displaymanager/main.py:585 +msgid "Cannot write LXDM configuration file" +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 "File del configuration de LXDM {!s} ne existe" + +#: src/modules/displaymanager/main.py:669 +msgid "Cannot write LightDM configuration file" +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 "File del configuration de LightDM {!s} ne existe" + +#: 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 "File del configuration de SLIM {!s} ne existe" + +#: 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 "Configurante mkinitcpio." + +#: 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 "Installante li data." + +#: src/modules/services-openrc/main.py:38 +msgid "Configure OpenRC services" +msgstr "Configurante servicios de OpenRC" + +#: 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 "" +"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" +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 "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 "Installante paccages." + +#: 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 "Installante li bootloader." + +#: 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 "Li code de termination esset {}" + +#: src/modules/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "Configurante initramfs." + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +msgstr "Scrition de fstab." + +#: 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 "Configurante locales." + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo deleted file mode 100644 index b56cd6fbc..000000000 Binary files a/lang/python/is/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 6a5bd68ff..bc61f13da 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-08-09 20:56+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.mo b/lang/python/it_IT/LC_MESSAGES/python.mo deleted file mode 100644 index 1936447e6..000000000 Binary files a/lang/python/it_IT/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index b556b5963..cf020cbd2 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-08-09 20:56+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.mo b/lang/python/ja/LC_MESSAGES/python.mo deleted file mode 100644 index e6b02ece7..000000000 Binary files a/lang/python/ja/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index ebbf60f56..0a6b0fec9 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-08-09 20:56+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.mo b/lang/python/kk/LC_MESSAGES/python.mo deleted file mode 100644 index 0678172ea..000000000 Binary files a/lang/python/kk/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 0e9162ef5..3180ad804 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-08-09 20:56+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.mo b/lang/python/kn/LC_MESSAGES/python.mo deleted file mode 100644 index 457bfa792..000000000 Binary files a/lang/python/kn/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 704155d87..e79d9d792 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-08-09 20:56+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.mo b/lang/python/ko/LC_MESSAGES/python.mo deleted file mode 100644 index 22a53a688..000000000 Binary files a/lang/python/ko/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po index 9ce0aff53..26261ff3f 100644 --- a/lang/python/ko/LC_MESSAGES/python.po +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -5,16 +5,16 @@ # # Translators: # 김지현 , 2018 -# MarongHappy , 2020 +# JungHee Lee , 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-08-09 20:56+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" diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo deleted file mode 100644 index 0236d8e18..000000000 Binary files a/lang/python/lo/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 3c2ab81cb..f6089481c 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-08-09 20:56+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.mo b/lang/python/lt/LC_MESSAGES/python.mo deleted file mode 100644 index 5f976d9ce..000000000 Binary files a/lang/python/lt/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index 733d46f04..8f7dc3266 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-08-09 20:56+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.mo b/lang/python/lv/LC_MESSAGES/python.mo deleted file mode 100644 index f6651cf37..000000000 Binary files a/lang/python/lv/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/lv/LC_MESSAGES/python.po b/lang/python/lv/LC_MESSAGES/python.po index d4ac4ed03..cb54a3cbb 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-08-09 20:56+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.mo b/lang/python/mk/LC_MESSAGES/python.mo deleted file mode 100644 index 1680c8dc1..000000000 Binary files a/lang/python/mk/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/mk/LC_MESSAGES/python.po b/lang/python/mk/LC_MESSAGES/python.po index 98853a9b6..6439af795 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-08-09 20:56+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.mo b/lang/python/ml/LC_MESSAGES/python.mo deleted file mode 100644 index 60415346e..000000000 Binary files a/lang/python/ml/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ml/LC_MESSAGES/python.po b/lang/python/ml/LC_MESSAGES/python.po index e510dc364..1236bbd4e 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-08-09 20:56+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.mo b/lang/python/mr/LC_MESSAGES/python.mo deleted file mode 100644 index 99e564ec4..000000000 Binary files a/lang/python/mr/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index 7440713a1..07311bd45 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-08-09 20:56+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.mo b/lang/python/nb/LC_MESSAGES/python.mo deleted file mode 100644 index 93379d3b8..000000000 Binary files a/lang/python/nb/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index 4a1c802db..50f72e6fd 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-08-09 20:56+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.mo b/lang/python/ne_NP/LC_MESSAGES/python.mo deleted file mode 100644 index 1d91bbddd..000000000 Binary files a/lang/python/ne_NP/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ne_NP/LC_MESSAGES/python.po b/lang/python/ne_NP/LC_MESSAGES/python.po index 028b51b53..b06e36b39 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-08-09 20:56+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 deleted file mode 100644 index 2c89bbca4..000000000 Binary files a/lang/python/nl/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index cfb1913bc..37e0a8232 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-08-09 20:56+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.mo b/lang/python/pl/LC_MESSAGES/python.mo deleted file mode 100644 index 7bafa3c5f..000000000 Binary files a/lang/python/pl/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index 967fae876..0a6b9c293 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-08-09 20:56+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.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo deleted file mode 100644 index a27bbf671..000000000 Binary files a/lang/python/pt_BR/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index d3d17a2d5..cda0188e6 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-08-09 20:56+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.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo deleted file mode 100644 index 3076c2a8f..000000000 Binary files a/lang/python/pt_PT/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 377c9a553..82ca01395 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-08-09 20:56+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.mo b/lang/python/ro/LC_MESSAGES/python.mo deleted file mode 100644 index 3844e22d8..000000000 Binary files a/lang/python/ro/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index f90faa939..f79475800 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-08-09 20:56+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.mo b/lang/python/ru/LC_MESSAGES/python.mo deleted file mode 100644 index c26778b42..000000000 Binary files a/lang/python/ru/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index b950fb3b5..6c09a7527 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-08-09 20:56+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.mo b/lang/python/sk/LC_MESSAGES/python.mo deleted file mode 100644 index ce3bab491..000000000 Binary files a/lang/python/sk/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 99cbec3c1..09aba970d 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-08-09 20:56+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.mo b/lang/python/sl/LC_MESSAGES/python.mo deleted file mode 100644 index 1943947b8..000000000 Binary files a/lang/python/sl/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 3d23de20e..060e2dc09 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-08-09 20:56+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.mo b/lang/python/sq/LC_MESSAGES/python.mo deleted file mode 100644 index 5f245ee0c..000000000 Binary files a/lang/python/sq/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index a0f9279f6..218981724 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-08-09 20:56+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.mo b/lang/python/sr/LC_MESSAGES/python.mo deleted file mode 100644 index 377bfcbaa..000000000 Binary files a/lang/python/sr/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 232966a9c..35b579c84 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-08-09 20:56+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.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo deleted file mode 100644 index b9ce140b0..000000000 Binary files a/lang/python/sr@latin/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index 947a3ac0c..5bd01bbee 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-08-09 20:56+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.mo b/lang/python/sv/LC_MESSAGES/python.mo deleted file mode 100644 index 20667a99c..000000000 Binary files a/lang/python/sv/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 8248bddee..5e36e0ba2 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-08-09 20:56+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/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 "" diff --git a/lang/python/tg/LC_MESSAGES/python.po b/lang/python/tg/LC_MESSAGES/python.po new file mode 100644 index 000000000..e1a2443db --- /dev/null +++ b/lang/python/tg/LC_MESSAGES/python.po @@ -0,0 +1,361 @@ +# 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-08-09 20:56+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 "Ягон қисми диск барои истифодаи
{!s}
муайян карда нашуд." + +#: src/modules/services-systemd/main.py:35 +msgid "Configure systemd services" +msgstr "Танзимоти хидматҳои systemd" + +#: 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 "" +"Дархости 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 "Хидмати systemd-и {name!s} фаъол карда намешавад." + +#: src/modules/services-systemd/main.py:74 +msgid "Cannot enable systemd target {name!s}." +msgstr "Интихоби systemd-и {name!s} фаъол карда намешавад." + +#: src/modules/services-systemd/main.py:78 +msgid "Cannot disable systemd target {name!s}." +msgstr "Интихоби systemd-и {name!s} ғайрифаъол карда намешавад." + +#: src/modules/services-systemd/main.py:80 +msgid "Cannot mask systemd unit {name!s}." +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 "Ҷудо кардани низомҳои файлӣ." + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "Пурборкунӣ бо низомҳои файлӣ." + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "rsync бо рамзи хатои {} қатъ шуд." + +#: 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 "Ягон нуқтаи васл барои қисми диски реша (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 "Нуқтаи васли нодуруст барои қисми диски реша (root)" + +#: src/modules/unpackfs/main.py:422 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +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 "Танзимоти unsquash нодуруст аст" + +#: 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 "" +"unsquashfs ёфт нашуд, мутмаин шавед, ки бастаи squashfs-tools насб карда " +"шудааст" + +#: 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 "Файли танзимии KDM сабт карда намешавад" + +#: src/modules/displaymanager/main.py:524 +msgid "KDM config file {!s} does not exist" +msgstr "Файли танзимии KDM {!s} вуҷуд надорад" + +#: src/modules/displaymanager/main.py:585 +msgid "Cannot write LXDM configuration file" +msgstr "Файли танзимии LXDM сабт карда намешавад" + +#: src/modules/displaymanager/main.py:586 +msgid "LXDM config file {!s} does not exist" +msgstr "Файли танзимии LXDM {!s} вуҷуд надорад" + +#: src/modules/displaymanager/main.py:669 +msgid "Cannot write LightDM configuration file" +msgstr "Файли танзимии LightDM сабт карда намешавад" + +#: src/modules/displaymanager/main.py:670 +msgid "LightDM config file {!s} does not exist" +msgstr "Файли танзимии LightDM {!s} вуҷуд надорад" + +#: src/modules/displaymanager/main.py:744 +msgid "Cannot configure LightDM" +msgstr "LightDM танзим карда намешавад" + +#: src/modules/displaymanager/main.py:745 +msgid "No LightDM greeter installed." +msgstr "Хушомади LightDM насб нашудааст." + +#: src/modules/displaymanager/main.py:776 +msgid "Cannot write SLIM configuration file" +msgstr "Файли танзимии SLIM сабт карда намешавад" + +#: src/modules/displaymanager/main.py:777 +msgid "SLIM config file {!s} does not exist" +msgstr "Файли танзимии SLIM {!s} вуҷуд надорад" + +#: src/modules/displaymanager/main.py:903 +msgid "No display managers selected for the displaymanager module." +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 "Раванди танзимкунии мудири намоиш ба анҷом нарасид" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "Танзимкунии mkinitcpio." + +#: 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 "Нуқтаи васли реша (root) барои истифодаи
{!s}
дода нашуд." + +#: 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 "Танзимоти хидматҳои OpenRC" + +#: src/modules/services-openrc/main.py:66 +msgid "Cannot add service {name!s} to run-level {level!s}." +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 "Хидмати {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 "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 "Хидмати интихобшуда вуҷуд надорад" + +#: 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 "Танзимоти мавзӯи Plymouth" + +#: 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 "Коргузории қуттиҳо (%(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] "Насбкунии %(num)d баста." + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Тозакунии як баста" +msgstr[1] "Тозакунии %(num)d баста." + +#: 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 "Эҷодкунии initramfs бо dracut." + +#: src/modules/dracut/main.py:58 +msgid "Failed to run dracut on the target" +msgstr "dracut дар низоми интихобшуда иҷро нашуд" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Рамзи барориш: {}" + +#: src/modules/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "Танзимкунии initramfs." + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "Танзимкунии хидмати OpenRC dmcrypt." + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +msgstr "Сабткунии fstab." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +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 "Қадами амсилаи python {}" + +#: 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/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo deleted file mode 100644 index 3b427fbbf..000000000 Binary files a/lang/python/th/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index d042d58fe..7f8350835 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-08-09 20:56+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.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo deleted file mode 100644 index 817072661..000000000 Binary files a/lang/python/tr_TR/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index bf26b5ad8..a265bd533 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-08-09 20:56+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.mo b/lang/python/uk/LC_MESSAGES/python.mo deleted file mode 100644 index d30e896ea..000000000 Binary files a/lang/python/uk/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index 428dea6c2..901e8f954 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-08-09 20:56+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.mo b/lang/python/ur/LC_MESSAGES/python.mo deleted file mode 100644 index 31761ef92..000000000 Binary files a/lang/python/ur/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index 4ccb1881a..05f74eaa1 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-08-09 20:56+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.mo b/lang/python/uz/LC_MESSAGES/python.mo deleted file mode 100644 index 3c75289ee..000000000 Binary files a/lang/python/uz/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index 3d002fc5e..457cc6c25 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-08-09 20:56+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.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo deleted file mode 100644 index ac41fe04d..000000000 Binary files a/lang/python/zh_CN/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index b51e4c766..33075c4b8 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-08-09 20:56+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.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo deleted file mode 100644 index 3bf723b47..000000000 Binary files a/lang/python/zh_TW/LC_MESSAGES/python.mo and /dev/null differ diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index 553977d26..e517986e8 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-08-09 20:56+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" diff --git a/lang/txload.cpp b/lang/txload.cpp index 68a157b81..b7d14c8bf 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. + * */ /* @@ -37,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; @@ -69,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(); } @@ -85,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(); @@ -103,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" ) { @@ -130,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; } } } @@ -141,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 ); @@ -159,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(); } @@ -176,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/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_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_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_tg.ts b/lang/tz_tg.ts new file mode 100644 index 000000000..4c3fe86b7 --- /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 + Тсурих + + + 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/settings.conf b/settings.conf index 9d566aca9..84dec9f4d 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. @@ -26,11 +35,29 @@ modules-search: [ local ] # Instances section. This section is optional, and it defines custom instances -# for modules of any kind. An instance entry has an module name, an instance -# name, and a configuration file name. The primary goal of this mechanism is -# to allow loading multiple instances of the same module, with different -# configuration. If you don't need this, the instances section can safely be -# left empty. +# for modules of any kind. An instance entry has these keys: +# - *module* name, which matches the module name from the module descriptor +# (usually the name of the directory under `src/modules/`, but third- +# party modules may diverge. +# - *id* (optional) an identifier to distinguish this instance from +# all the others. If none is given, the name of the module is used. +# Together, the module and id form an instance key (see below). +# - *config* (optional) a filename for the configuration. If none is +# given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome +# module) +# - *weight* (optional) In the *exec* phase of the sequence, progress +# is reported as jobs are completed. The jobs from a single module +# together contribute the full weight of that module. The overall +# progress (0 .. 100%) is divided up according to the weight of each +# module. Give modules that take a lot of time to complete, a larger +# weight to keep the overall progress moving along steadily. This +# weight overrides a weight given in the module descriptor. If no weight +# is given, uses the value from the module descriptor, or 1 if there +# isn't one there either. +# +# The primary goal of this mechanism is to allow loading multiple instances +# of the same module, with different configuration. If you don't need this, +# the instances section can safely be left empty. # # Module name plus instance name makes an instance key, e.g. # "webview@owncloud", where "webview" is the module name (for the webview @@ -43,10 +70,11 @@ modules-search: [ local ] # mentioning a module without a full instance key (e.g. "welcome") # means that implicit module. # -# An instance must specify its configuration file (e.g. `webview-home.conf`). +# An instance may specify its configuration file (e.g. `webview-home.conf`). # The implicit instances all have configuration files named `.conf`. # This (implict) way matches the source examples, where the welcome -# module contains an example `welcome.conf`. +# module contains an example `welcome.conf`. Specify a *config* for +# any module (also implicit instances) to change which file is used. # # For more information on running module instances, run Calamares in debug # mode and check the Modules page in the Debug information interface. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1445b18f3..5ce5349fb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,14 @@ -include( CalamaresAddPlugin ) -include( CalamaresAddModuleSubdirectory ) -include( CalamaresAddLibrary ) +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# include( CalamaresAddBrandingSubdirectory ) +include( CalamaresAddLibrary ) +include( CalamaresAddModuleSubdirectory ) +include( CalamaresAddPlugin ) include( CalamaresAddTest ) +include( CalamaresAddTranslations ) # library add_subdirectory( libcalamares ) @@ -10,7 +16,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..09d60118e 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/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..f4c50e629 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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; @@ -78,7 +69,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. diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index b632567b8..94abb9f54 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -1,3 +1,9 @@ +# === This file is part of Calamares - === +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# + set( calamaresSources main.cpp CalamaresApplication.cpp @@ -11,15 +17,12 @@ set( calamaresSources ) if( NOT WITH_KF5DBus ) - set( kdsagSources "" ) - foreach( _s - kdsingleapplicationguard/kdsingleapplicationguard.cpp - kdsingleapplicationguard/kdsharedmemorylocker.cpp - kdsingleapplicationguard/kdtoolsglobal.cpp - kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp + set( kdsagSources + ${CMAKE_SOURCE_DIR}/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp ) - list( APPEND kdsagSources ${CMAKE_SOURCE_DIR}/3rdparty/${_s} ) - endforeach() mark_thirdparty_code( ${kdsagSources} ) list( APPEND calamaresSources ${kdsagSources} ) endif() @@ -31,12 +34,45 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) -# Translations -include( CalamaresAddTranslations ) -add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) -qt5_add_resources( calamaresRc calamares.qrc ) +### TRANSLATIONS +# +# +set( TS_FILES "" ) +set( calamares_i18n_qrc_content "" ) -add_executable( calamares_bin ${calamaresSources} ${calamaresRc} ${trans_outfile} ) +# calamares and qt language files +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" ) + 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 PROPERTIES @@ -45,6 +81,11 @@ set_target_properties(calamares_bin ) calamares_automoc( calamares_bin ) calamares_autouic( calamares_bin ) +calamares_autorcc( calamares_bin ) + +if( kdsagSources ) + set_source_files_properties( ${kdsagSources} PROPERTIES AUTOMOC OFF ) +endif() target_link_libraries( calamares_bin PRIVATE @@ -73,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 ) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index d337f774c..164b3ed5c 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -76,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/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index f42c21b56..e7dea4c61 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 28b9df626..0960da10a 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e6c27fd3f..b6e63aa6b 100644 --- a/src/calamares/CalamaresWindow.h +++ b/src/calamares/CalamaresWindow.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -37,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 82533a648..4a68d4ae2 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -102,14 +93,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 +178,8 @@ 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/DebugWindow.h b/src/calamares/DebugWindow.h index 764a141c2..a07487b4c 100644 --- a/src/calamares/DebugWindow.h +++ b/src/calamares/DebugWindow.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp index 2d8313665..8b0378f03 100644 --- a/src/calamares/VariantModel.cpp +++ b/src/calamares/VariantModel.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 bdf6da866..3b0b594b7 100644 --- a/src/calamares/VariantModel.h +++ b/src/calamares/VariantModel.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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 030ccc239..d60108215 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -166,6 +157,11 @@ main( int argc, char* argv[] ) #endif Calamares::Settings::init( is_debug ); + if ( !Calamares::Settings::instance() || !Calamares::Settings::instance()->isValid() ) + { + qCritical() << "Calamares has invalid settings, shutting down."; + return 78; // EX_CONFIG on FreeBSD + } a.init(); return a.exec(); } diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp index 7b7101f5d..48b5b4328 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.cpp +++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 d36bd4d14..55dcf7ac4 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.h +++ b/src/calamares/progresstree/ProgressTreeDelegate.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 22b11bfc6..b953db64d 100644 --- a/src/calamares/progresstree/ProgressTreeView.cpp +++ b/src/calamares/progresstree/ProgressTreeView.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 4a1bf9f2d..98bbe10b4 100644 --- a/src/calamares/progresstree/ProgressTreeView.h +++ b/src/calamares/progresstree/ProgressTreeView.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 06247bfed..73b19aa26 100644 --- a/src/calamares/test_conf.cpp +++ b/src/calamares/test_conf.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /** @@ -23,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; @@ -61,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; @@ -69,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() ) { @@ -95,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 a29c8ce91..c9d6f7195 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ /* @@ -184,13 +175,13 @@ public: void loadSelf() override; - virtual Type type() const override; - virtual Interface interface() const override; + virtual Calamares::ModuleSystem::Type type() const override; + virtual Calamares::ModuleSystem::Interface interface() const override; virtual Calamares::JobList jobs() const override; protected: - void initFrom( const QVariantMap& ) override; + void initFrom( const Calamares::ModuleSystem::Descriptor& ) override; }; ExecViewModule::ExecViewModule() @@ -201,13 +192,13 @@ ExecViewModule::ExecViewModule() // We don't have one, so build one -- this gives us "x@x". QVariantMap m; m.insert( "name", "x" ); - Calamares::Module::initFrom( m, "x" ); + Calamares::Module::initFrom( Calamares::ModuleSystem::Descriptor::fromDescriptorData( m ), "x" ); } ExecViewModule::~ExecViewModule() {} void -ExecViewModule::initFrom( const QVariantMap& ) +ExecViewModule::initFrom( const Calamares::ModuleSystem::Descriptor& ) { } @@ -217,7 +208,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; } @@ -332,7 +323,8 @@ load_module( const ModuleConfig& moduleConfig ) cDebug() << "Module" << moduleName << "job-configuration:" << configFile; - Calamares::Module* module = Calamares::moduleFromDescriptor( descriptor, name, configFile, moduleDirectory ); + Calamares::Module* module = Calamares::moduleFromDescriptor( + Calamares::ModuleSystem::Descriptor::fromDescriptorData( descriptor ), name, configFile, moduleDirectory ); return module; } diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 0516b5613..be5b252f0 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,34 +1,24 @@ -# === 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 distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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 -# + # # 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} ) 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 "" ) @@ -49,16 +39,18 @@ set( libSources geoip/Handler.cpp # Locale-data service + locale/Global.cpp locale/Label.cpp locale/LabelModel.cpp locale/Lookup.cpp locale/TimeZone.cpp locale/TranslatableConfiguration.cpp + locale/TranslatableString.cpp # Modules + modulesystem/Descriptor.cpp modulesystem/InstanceKey.cpp modulesystem/Module.cpp - modulesystem/Requirement.cpp modulesystem/RequirementsChecker.cpp modulesystem/RequirementsModel.cpp @@ -76,6 +68,7 @@ set( libSources utils/Dirs.cpp utils/Entropy.cpp utils/Logger.cpp + utils/Permissions.cpp utils/PluginFactory.cpp utils/Retranslator.cpp utils/String.cpp @@ -215,22 +208,34 @@ endforeach() calamares_add_test( libcalamarestest SOURCES - utils/Tests.cpp + Tests.cpp ) calamares_add_test( - libcalamarestestpaths - SOURCES - utils/TestPaths.cpp -) - -calamares_add_test( - geoiptest + libcalamaresgeoiptest SOURCES geoip/GeoIPTests.cpp ${geoip_src} ) +calamares_add_test( + libcalamareslocaletest + SOURCES + locale/Tests.cpp +) + +calamares_add_test( + libcalamaresmodulesystemtest + SOURCES + modulesystem/Tests.cpp +) + +calamares_add_test( + libcalamaresnetworktest + SOURCES + network/Tests.cpp +) + calamares_add_test( libcalamarespartitiontest SOURCES @@ -248,22 +253,17 @@ if( KPMcore_FOUND ) endif() calamares_add_test( - libcalamareslocaletest + libcalamaresutilstest SOURCES - locale/Tests.cpp + utils/Tests.cpp ) calamares_add_test( - libcalamaresnetworktest + libcalamaresutilspathstest SOURCES - network/Tests.cpp + utils/TestPaths.cpp ) -calamares_add_test( - libcalamaresmodulesystemtest - SOURCES - modulesystem/Tests.cpp -) # This is not an actual test, it's a test / demo application # for experimenting with GeoIP. 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/calamares/CalamaresVersion.h.in b/src/libcalamares/CalamaresVersion.h.in similarity index 85% rename from src/calamares/CalamaresVersion.h.in rename to src/libcalamares/CalamaresVersion.h.in index 4ac7ee1d1..09ef9ae2c 100644 --- a/src/calamares/CalamaresVersion.h.in +++ b/src/libcalamares/CalamaresVersion.h.in @@ -1,10 +1,12 @@ +// SPDX-FileCopyrightText: no +// SPDX-License-Identifier: CC0-1.0 #ifndef CALAMARES_VERSION_H #define CALAMARES_VERSION_H #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/libcalamares/CalamaresVersionX.h.in b/src/libcalamares/CalamaresVersionX.h.in new file mode 100644 index 000000000..be3a9ae21 --- /dev/null +++ b/src/libcalamares/CalamaresVersionX.h.in @@ -0,0 +1,16 @@ +// 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 + +// 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 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 2eeea331e..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 d58a3b0c6..6cae46eeb 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -1,28 +1,15 @@ -/* === 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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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 "GlobalStorage.h" -#include "JobQueue.h" #include "utils/Logger.h" #include "utils/Units.h" @@ -30,14 +17,37 @@ #include #include +#include using CalamaresUtils::operator""_MiB; namespace Calamares { -GlobalStorage::GlobalStorage() - : QObject( nullptr ) +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 ) { } @@ -45,6 +55,7 @@ GlobalStorage::GlobalStorage() bool GlobalStorage::contains( const QString& key ) const { + ReadLock l( this ); return m.contains( key ); } @@ -52,6 +63,7 @@ GlobalStorage::contains( const QString& key ) const int GlobalStorage::count() const { + ReadLock l( this ); return m.count(); } @@ -59,14 +71,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(); } @@ -74,8 +87,8 @@ GlobalStorage::keys() const int GlobalStorage::remove( const QString& key ) { + WriteLock l( this ); int nItems = m.remove( key ); - emit changed(); return nItems; } @@ -83,21 +96,25 @@ GlobalStorage::remove( const QString& key ) QVariant GlobalStorage::value( const QString& key ) const { + ReadLock l( this ); return m.value( key ); } void GlobalStorage::debugDump() const { + ReadLock l( this ); + 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(); } } bool -GlobalStorage::save( const QString& filename ) +GlobalStorage::saveJson( const QString& filename ) const { + ReadLock l( this ); QFile f( filename ); if ( !f.open( QFile::WriteOnly ) ) { @@ -110,7 +127,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 ) ) @@ -130,10 +147,14 @@ GlobalStorage::load( 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; } @@ -141,8 +162,9 @@ GlobalStorage::load( const QString& filename ) } bool -GlobalStorage::saveYaml( const QString& filename ) +GlobalStorage::saveYaml( const QString& filename ) const { + ReadLock l( this ); return CalamaresUtils::saveYaml( filename, m ); } @@ -150,12 +172,20 @@ bool GlobalStorage::loadYaml( const QString& filename ) { bool ok = false; - auto gs = CalamaresUtils::loadYaml( filename, &ok ); + auto map = CalamaresUtils::loadYaml( filename, &ok ); if ( ok ) { - m = gs; + 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. + for ( auto i = map.constBegin(); i != map.constEnd(); ++i ) + { + m.insert( i.key(), *i ); + } + return true; } - return ok; + return false; } diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index e9ba1da8a..9d8e3849b 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -1,31 +1,18 @@ -/* === 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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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 CALAMARES_GLOBALSTORAGE_H #define CALAMARES_GLOBALSTORAGE_H -#include "CalamaresConfig.h" - +#include #include #include #include @@ -33,67 +20,146 @@ namespace Calamares { -class DebugWindow; - +/** @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 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 { Q_OBJECT public: - explicit GlobalStorage(); + /** @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, * 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 * * 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 ); + 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 + /** @brief reads settings from the given filename + * + * See also load(), above. + */ 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? + * + * 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: + class ReadLock; + class WriteLock; QVariantMap m; + mutable QMutex m_mutex; }; } // namespace Calamares diff --git a/src/libcalamares/Job.cpp b/src/libcalamares/Job.cpp index 95339f349..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. * */ @@ -101,10 +88,10 @@ Job::Job( QObject* parent ) Job::~Job() {} -qreal +int Job::getJobWeight() const { - return qreal( 1.0 ); + return 1; } diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index 18f11158f..ed349ab30 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -1,22 +1,11 @@ -/* === 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-FileCopyrightText: 2017 Adriaan de Groot * SPDX-License-Identifier: GPL-3.0-or-later - * License-Filename: LICENSE + * + * Calamares is Free Software: see the License-Identifier above. + * * */ #ifndef CALAMARES_JOB_H @@ -101,20 +90,33 @@ public: /** @brief The job's (relative) weight. * - * The default implementation returns 1.0, which gives all jobs + * The default implementation returns 1, which gives all jobs * the same weight, so they advance the overall progress the same * amount. This is nonsense, since some jobs take much longer than * others; it's up to the individual jobs to say something about * how much work is (relatively) done. + * + * Since jobs are caused by **modules** from the sequence, the + * overall weight of the module is taken into account: its weight + * is divided among the jobs based on each jobs relative weight. + * This can be used in a module that runs a bunch of jobs to indicate + * which of the jobs is "heavy" and which is not. */ - virtual qreal getJobWeight() const; + virtual int getJobWeight() const; /** @brief The human-readable name of this job * * This should be a very short statement of what the job does. * 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/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 adff9464b..17ea6a141 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. * */ @@ -28,11 +15,34 @@ #include "Job.h" #include "utils/Logger.h" +#include +#include #include namespace Calamares { +struct WeightedJob +{ + /** @brief Cumulative weight **before** this job starts + * + * This is calculated as jobs come in. + */ + qreal cumulative = 0.0; + /** @brief Weight of the job within the module's jobs + * + * When a list of jobs is added from a particular module, + * the jobs are weighted relative to that module's overall weight + * **and** the other jobs in the list, so that each job + * gets its share: + * ( job-weight / total-job-weight ) * module-weight + */ + qreal weight = 0.0; + + job_ptr job; +}; +using WeightedJobList = QList< WeightedJob >; + class JobThread : public QThread { public: @@ -45,106 +55,138 @@ public: virtual ~JobThread() override; - void setJobs( JobList&& jobs ) + void finalize() { - m_jobs = jobs; - - qreal totalJobsWeight = 0.0; - for ( auto job : m_jobs ) + Q_ASSERT( m_runningJobs->isEmpty() ); + QMutexLocker qlock( &m_enqueMutex ); + QMutexLocker rlock( &m_runMutex ); + std::swap( m_runningJobs, m_queuedJobs ); + m_overallQueueWeight + = m_runningJobs->isEmpty() ? 0.0 : ( m_runningJobs->last().cumulative + m_runningJobs->last().weight ); + if ( m_overallQueueWeight < 1 ) { - totalJobsWeight += job->getJobWeight(); + m_overallQueueWeight = 1.0; } - for ( auto job : m_jobs ) + } + + void enqueue( int moduleWeight, const JobList& jobs ) + { + QMutexLocker qlock( &m_enqueMutex ); + + qreal cumulative + = m_queuedJobs->isEmpty() ? 0.0 : ( m_queuedJobs->last().cumulative + m_queuedJobs->last().weight ); + + qreal totalJobWeight + = std::accumulate( jobs.cbegin(), jobs.cend(), qreal( 0.0 ), []( qreal total, const job_ptr& j ) { + return total + j->getJobWeight(); + } ); + if ( totalJobWeight < 1 ) { - qreal jobWeight = qreal( job->getJobWeight() / totalJobsWeight ); - m_jobWeights.append( jobWeight ); + totalJobWeight = 1.0; + } + + for ( const auto& j : jobs ) + { + qreal jobContribution = ( j->getJobWeight() / totalJobWeight ) * moduleWeight; + m_queuedJobs->append( WeightedJob { cumulative, jobContribution, j } ); + cumulative += jobContribution; } } void run() override { - bool anyFailed = false; - QString message; + QMutexLocker rlock( &m_runMutex ); + bool failureEncountered = false; + QString message; ///< Filled in with errors QString details; m_jobIndex = 0; - for ( auto job : m_jobs ) + for ( const auto& jobitem : *m_runningJobs ) { - if ( anyFailed && !job->isEmergency() ) + if ( failureEncountered && !jobitem.job->isEmergency() ) { - cDebug() << "Skipping non-emergency job" << job->prettyName(); - ++m_jobIndex; - continue; + cDebug() << "Skipping non-emergency job" << jobitem.job->prettyName(); } - - emitProgress(); - cDebug() << "Starting" << ( anyFailed ? "EMERGENCY JOB" : "job" ) << job->prettyName() << " (there are" - << m_jobs.count() << " left)"; - connect( job.data(), &Job::progress, this, &JobThread::emitProgress ); - JobResult result = job->exec(); - if ( !anyFailed && !result ) + else { - anyFailed = true; - message = result.message(); - details = result.details(); + emitProgress( 0.0 ); // 0% for *this job* + cDebug() << "Starting" << ( failureEncountered ? "EMERGENCY JOB" : "job" ) << jobitem.job->prettyName() + << '(' << ( m_jobIndex + 1 ) << '/' << m_runningJobs->count() << ')'; + connect( jobitem.job.data(), &Job::progress, this, &JobThread::emitProgress ); + auto result = jobitem.job->exec(); + if ( !failureEncountered && !result ) + { + // so this is the first failure + failureEncountered = true; + message = result.message(); + details = result.details(); + } + QThread::msleep( 16 ); // Very brief rest before reporting the job as complete + emitProgress( 1.0 ); // 100% for *this job* } - emitProgress( 1.0 ); - ++m_jobIndex; + m_jobIndex++; } - if ( anyFailed ) + if ( failureEncountered ) { - emitFailed( message, details ); + QMetaObject::invokeMethod( + m_queue, "failed", Qt::QueuedConnection, Q_ARG( QString, message ), Q_ARG( QString, details ) ); } else { - emitProgress(); + emitProgress( 1.0 ); } - emitFinished(); + m_runningJobs->clear(); + 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: - JobList m_jobs; - QList< qreal > m_jobWeights; - JobQueue* m_queue; - int m_jobIndex; - - void emitProgress( qreal jobPercent = 0 ) + /* 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 { - // Make sure jobPercent is reasonable, in case a job messed up its - // percentage computations. - jobPercent = qBound( qreal( 0 ), jobPercent, qreal( 1 ) ); + percentage = qBound( 0.0, percentage, 1.0 ); - int jobCount = m_jobs.size(); - QString message = m_jobIndex < jobCount ? m_jobs.at( m_jobIndex )->prettyStatusMessage() : tr( "Done" ); - - qreal percent = 1.0; // Pretend we're done, since the if will reset it - if ( m_jobIndex < jobCount ) + QString message; + qreal progress = 0.0; + if ( m_jobIndex < m_runningJobs->count() ) { - qreal cumulativeProgress = 0.0; - for ( auto jobWeight : m_jobWeights.mid( 0, m_jobIndex ) ) - { - cumulativeProgress += jobWeight; - } - percent = cumulativeProgress + ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ); - - Logger::CDebug( Logger::LOGVERBOSE ) - << "[JOBQUEUE]: Progress for Job[" << m_jobIndex << "]: " << ( jobPercent * 100 ) << "% completed"; - Logger::CDebug( Logger::LOGVERBOSE ) - << "[JOBQUEUE]: Progress Overall: " << ( cumulativeProgress * 100 ) << "% (accumulated) + " - << ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 ) - << "% (this job) = " << ( percent * 100 ) << "% (total)"; + const auto& jobitem = m_runningJobs->at( m_jobIndex ); + progress = ( jobitem.cumulative + jobitem.weight * percentage ) / m_overallQueueWeight; + message = jobitem.job->prettyStatusMessage(); + } + else + { + progress = 1.0; + message = tr( "Done" ); } QMetaObject::invokeMethod( - m_queue, "progress", Qt::QueuedConnection, Q_ARG( qreal, percent ), Q_ARG( QString, message ) ); + m_queue, "progress", Qt::QueuedConnection, Q_ARG( qreal, progress ), Q_ARG( QString, message ) ); } - void emitFailed( const QString& message, const QString& details ) - { - QMetaObject::invokeMethod( - m_queue, "failed", Qt::QueuedConnection, Q_ARG( QString, message ), Q_ARG( QString, details ) ); - } + mutable QMutex m_runMutex; + mutable QMutex m_enqueMutex; - void emitFinished() { QMetaObject::invokeMethod( m_queue, "finish", Qt::QueuedConnection ); } + std::unique_ptr< WeightedJobList > m_runningJobs = std::make_unique< WeightedJobList >(); + std::unique_ptr< WeightedJobList > m_queuedJobs = std::make_unique< WeightedJobList >(); + + JobQueue* m_queue; + int m_jobIndex = 0; ///< Index into m_runningJobs + qreal m_overallQueueWeight = 0.0; ///< cumulation when **all** the jobs are done }; JobThread::~JobThread() {} @@ -152,25 +194,21 @@ JobThread::~JobThread() {} JobQueue* JobQueue::s_instance = nullptr; - JobQueue* JobQueue::instance() { + if ( !s_instance ) + { + cWarning() << "Getting nullptr JobQueue instance."; + } return s_instance; } -GlobalStorage* -JobQueue::globalStorage() const -{ - return m_storage; -} - - 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; @@ -197,28 +235,18 @@ void JobQueue::start() { Q_ASSERT( !m_thread->isRunning() ); - m_thread->setJobs( std::move( m_jobs ) ); - m_jobs.clear(); + m_thread->finalize(); m_finished = false; m_thread->start(); } void -JobQueue::enqueue( const job_ptr& job ) +JobQueue::enqueue( int moduleWeight, const JobList& jobs ) { Q_ASSERT( !m_thread->isRunning() ); - m_jobs.append( job ); - emit queueChanged( m_jobs ); -} - - -void -JobQueue::enqueue( const JobList& jobs ) -{ - Q_ASSERT( !m_thread->isRunning() ); - m_jobs.append( jobs ); - emit queueChanged( m_jobs ); + m_thread->enqueue( moduleWeight, jobs ); + emit queueChanged( m_thread->queuedJobs() ); } void @@ -226,6 +254,13 @@ JobQueue::finish() { m_finished = true; emit finished(); + emit queueChanged( m_thread->queuedJobs() ); +} + +GlobalStorage* +JobQueue::globalStorage() const +{ + return m_storage; } } // namespace Calamares diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index ff2694d8f..5c4c6c35f 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. * */ @@ -30,7 +17,6 @@ namespace Calamares { - class GlobalStorage; class JobThread; @@ -45,25 +31,63 @@ public: GlobalStorage* globalStorage() const; - void enqueue( const job_ptr& job ); - void enqueue( const JobList& jobs ); + /** @brief Queues up jobs from a single module source + * + * The total weight of the jobs is spread out to fill the weight + * of the module. + */ + void enqueue( int moduleWeight, const JobList& jobs ); + /** @brief Starts all the jobs that are enqueued. + * + * After this, isRunning() returns @c true until + * finished() is emitted. + */ void start(); bool isRunning() const { return !m_finished; } -public slots: - void finish(); - signals: - void queueChanged( const JobList& jobs ); + /** @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 ); + /** @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 ); + +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; - JobList m_jobs; JobThread* m_thread; GlobalStorage* m_storage; bool m_finished = true; ///< Initially, not running 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 50828e896..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" @@ -184,19 +171,12 @@ PythonJob::PythonJob( const ModuleSystem::InstanceKey& instance, , m_workingPath( workingPath ) , m_description() , m_configurationMap( moduleConfiguration ) - , m_weight( ( instance.module() == QStringLiteral( "unpackfs" ) ) ? 12.0 : 1.0 ) { } PythonJob::~PythonJob() {} -qreal -PythonJob::getJobWeight() const -{ - return m_weight; -} - QString PythonJob::prettyName() const { diff --git a/src/libcalamares/PythonJob.h b/src/libcalamares/PythonJob.h index 498eac44f..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. * */ @@ -55,8 +42,6 @@ public: QString prettyStatusMessage() const override; JobResult exec() override; - virtual qreal getJobWeight() const override; - private: struct Private; @@ -68,7 +53,6 @@ private: QString m_workingPath; QString m_description; QVariantMap m_configurationMap; - qreal m_weight; }; } // namespace Calamares 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 3c45c2e43..dcb5c70b0 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -1,25 +1,13 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu * SPDX-FileCopyrightText: 2019 Dominic Hayes * SPDX-FileCopyrightText: 2017-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. + * * */ @@ -75,22 +63,40 @@ requireBool( const YAML::Node& config, const char* key, bool d ) namespace Calamares { -InstanceDescription::InstanceDescription( const QVariantMap& m ) - : module( m.value( "module" ).toString() ) - , id( m.value( "id" ).toString() ) - , config( m.value( "config" ).toString() ) - , weight( m.value( "weight" ).toInt() ) +InstanceDescription::InstanceDescription( const Calamares::ModuleSystem::InstanceKey& key ) + : m_instanceKey( key ) + , m_weight( -1 ) { - if ( id.isEmpty() ) + if ( !isValid() ) { - id = module; + m_weight = 0; } - if ( config.isEmpty() ) + else { - config = module + QStringLiteral( ".conf" ); + m_configFileName = key.module() + QStringLiteral( ".conf" ); } +} - weight = qBound( 1, weight, 100 ); +InstanceDescription +InstanceDescription::fromSettings( const QVariantMap& m ) +{ + InstanceDescription r( + Calamares::ModuleSystem::InstanceKey( m.value( "module" ).toString(), m.value( "id" ).toString() ) ); + if ( r.isValid() ) + { + if ( m.value( "weight" ).isValid() ) + { + int w = qBound( 1, m.value( "weight" ).toInt(), 100 ); + r.m_weight = w; + } + + QString c = m.value( "config" ).toString(); + if ( !c.isEmpty() ) + { + r.m_configFileName = c; + } + } + return r; } Settings* Settings::s_instance = nullptr; @@ -156,7 +162,13 @@ interpretInstances( const YAML::Node& node, Settings::InstanceDescriptionList& c { continue; } - customInstances.append( InstanceDescription( instancesVListItem.toMap() ) ); + auto description = InstanceDescription::fromSettings( instancesVListItem.toMap() ); + if ( !description.isValid() ) + { + cWarning() << "Invalid entry in *instances*" << instancesVListItem; + } + // Append it **anyway**, since this will bail out after Settings is constructed + customInstances.append( description ); } } } @@ -193,11 +205,23 @@ interpretSequence( const YAML::Node& node, Settings::ModuleSequence& moduleSeque } else { + cDebug() << "Unknown action in *sequence*" << thisActionS; continue; } QStringList thisActionRoster = sequenceVListItem.toMap().value( thisActionS ).toStringList(); - moduleSequence.append( qMakePair( thisAction, thisActionRoster ) ); + Calamares::ModuleSystem::InstanceKeyList roster; + roster.reserve( thisActionRoster.count() ); + for ( const auto& s : thisActionRoster ) + { + auto instanceKey = Calamares::ModuleSystem::InstanceKey::fromString( s ); + if ( !instanceKey.isValid() ) + { + cWarning() << "Invalid instance in *sequence*" << s; + } + roster.append( instanceKey ); + } + moduleSequence.append( qMakePair( thisAction, roster ) ); } } else @@ -206,6 +230,16 @@ interpretSequence( const YAML::Node& node, Settings::ModuleSequence& moduleSeque } } +Settings::Settings( bool debugMode ) + : QObject() + , m_debug( debugMode ) + , m_doChroot( true ) + , m_promptInstall( false ) + , m_disableCancel( false ) + , m_disableCancelDuringExec( false ) +{ +} + Settings::Settings( const QString& settingsFilePath, bool debugMode ) : QObject() , m_debug( debugMode ) @@ -218,30 +252,7 @@ Settings::Settings( const QString& settingsFilePath, bool debugMode ) QFile file( settingsFilePath ); if ( file.exists() && file.open( QFile::ReadOnly | QFile::Text ) ) { - QByteArray ba = file.readAll(); - - try - { - YAML::Node config = YAML::Load( ba.constData() ); - Q_ASSERT( config.IsMap() ); - - interpretModulesSearch( - debugMode, CalamaresUtils::yamlToStringList( config[ "modules-search" ] ), m_modulesSearchPaths ); - interpretInstances( config[ "instances" ], m_customModuleInstances ); - interpretSequence( config[ "sequence" ], m_modulesSequence ); - - m_brandingComponentName = requireString( config, "branding" ); - m_promptInstall = requireBool( config, "prompt-install", false ); - m_doChroot = !requireBool( config, "dont-chroot", false ); - m_isSetupMode = requireBool( config, "oem-setup", !m_doChroot ); - m_disableCancel = requireBool( config, "disable-cancel", false ); - m_disableCancelDuringExec = requireBool( config, "disable-cancel-during-exec", false ); - m_quitAtEnd = requireBool( config, "quit-at-end", false ); - } - catch ( YAML::Exception& e ) - { - CalamaresUtils::explainYamlException( e, ba, file.fileName() ); - } + setConfiguration( file.readAll(), file.fileName() ); } else { @@ -251,6 +262,61 @@ Settings::Settings( const QString& settingsFilePath, bool debugMode ) s_instance = this; } +void +Settings::reconcileInstancesAndSequence() +{ + // Since moduleFinder captures targetKey by reference, we can + // update targetKey to change what the finder lambda looks for. + Calamares::ModuleSystem::InstanceKey targetKey; + auto moduleFinder = [&targetKey]( const InstanceDescription& d ) { return d.isValid() && d.key() == targetKey; }; + + // Check the sequence against the existing instances (which so far are only custom) + for ( const auto& step : m_modulesSequence ) + { + for ( const auto& instanceKey : step.second ) + { + targetKey = instanceKey; + const auto it = std::find_if( m_moduleInstances.constBegin(), m_moduleInstances.constEnd(), moduleFinder ); + if ( it == m_moduleInstances.constEnd() ) + { + if ( instanceKey.isCustom() ) + { + cWarning() << "Custom instance key" << instanceKey << "is not listed in the *instances*"; + } + m_moduleInstances.append( InstanceDescription( instanceKey ) ); + } + } + } +} + +void +Settings::setConfiguration( const QByteArray& ba, const QString& explainName ) +{ + try + { + YAML::Node config = YAML::Load( ba.constData() ); + Q_ASSERT( config.IsMap() ); + + interpretModulesSearch( + debugMode(), CalamaresUtils::yamlToStringList( config[ "modules-search" ] ), m_modulesSearchPaths ); + interpretInstances( config[ "instances" ], m_moduleInstances ); + interpretSequence( config[ "sequence" ], m_modulesSequence ); + + m_brandingComponentName = requireString( config, "branding" ); + m_promptInstall = requireBool( config, "prompt-install", false ); + m_doChroot = !requireBool( config, "dont-chroot", false ); + m_isSetupMode = requireBool( config, "oem-setup", !m_doChroot ); + m_disableCancel = requireBool( config, "disable-cancel", false ); + m_disableCancelDuringExec = requireBool( config, "disable-cancel-during-exec", false ); + m_quitAtEnd = requireBool( config, "quit-at-end", false ); + + reconcileInstancesAndSequence(); + } + catch ( YAML::Exception& e ) + { + CalamaresUtils::explainYamlException( e, ba, explainName ); + } +} QStringList Settings::modulesSearchPaths() const @@ -260,9 +326,9 @@ Settings::modulesSearchPaths() const Settings::InstanceDescriptionList -Settings::customModuleInstances() const +Settings::moduleInstances() const { - return m_customModuleInstances; + return m_moduleInstances; } @@ -368,4 +434,25 @@ Settings::init( const QString& path ) return new Calamares::Settings( path, true ); } +bool +Settings::isValid() const +{ + if ( brandingComponentName().isEmpty() ) + { + cWarning() << "No branding component is set"; + return false; + } + + const auto invalidDescriptor = []( const InstanceDescription& d ) { return !d.isValid(); }; + const auto invalidDescriptorIt + = std::find_if( m_moduleInstances.constBegin(), m_moduleInstances.constEnd(), invalidDescriptor ); + if ( invalidDescriptorIt != m_moduleInstances.constEnd() ) + { + cWarning() << "Invalid module instance in *instances* or *sequence*"; + return false; + } + + return true; +} + } // namespace Calamares diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 098e010e5..0abf3b866 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -1,25 +1,13 @@ -/* === This file is part of Calamares - === - * +/* === This file is part of Calamares - === + * * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac * SPDX-FileCopyrightText: 2019 Gabriel Craciunescu * SPDX-FileCopyrightText: 2019 Dominic Hayes * SPDX-FileCopyrightText: 2017-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. + * * */ @@ -28,6 +16,7 @@ #include "DllMacro.h" #include "modulesystem/Actions.h" +#include "modulesystem/InstanceKey.h" #include #include @@ -36,21 +25,63 @@ namespace Calamares { -struct DLLEXPORT InstanceDescription +/** @brief Description of an instance as named in `settings.conf` + * + * An instance is an intended-step-in-sequence; it is not yet + * a loaded module. The instances have config-files and weights + * which are used by the module manager when loading modules + * and creating jobs. + */ +class DLLEXPORT InstanceDescription { - InstanceDescription( const QVariantMap& ); + using InstanceKey = Calamares::ModuleSystem::InstanceKey; - QString module; ///< Module name (e.g. "welcome") - QString id; ///< Id, to distinguish multiple instances (e.g. "one", for "welcome@one") - QString config; ///< Config-file name (for multiple instances) - int weight; +public: + /** @brief An invalid InstanceDescription + * + * Use `fromSettings()` to populate an InstanceDescription and + * check its validity. + */ + InstanceDescription() = default; + + /** @brief An InstanceDescription with no special settings. + * + * Regardless of @p key being custom, sets weight to 1 and + * the configuration file to @c key.module() (plus the ".conf" + * extension). + * + * To InstanceDescription is custom if the key is. + */ + InstanceDescription( const InstanceKey& key ); + + static InstanceDescription fromSettings( const QVariantMap& ); + + bool isValid() const { return m_instanceKey.isValid(); } + + const InstanceKey& key() const { return m_instanceKey; } + QString configFileName() const { return m_configFileName; } + bool isCustom() const { return m_instanceKey.isCustom(); } + int weight() const { return m_weight < 0 ? 1 : m_weight; } + bool explicitWeight() const { return m_weight > 0; } + +private: + InstanceKey m_instanceKey; + QString m_configFileName; + int m_weight = 0; }; class DLLEXPORT Settings : public QObject { Q_OBJECT +#ifdef BUILD_AS_TEST +public: +#endif + explicit Settings( bool debugMode ); explicit Settings( const QString& settingsFilePath, bool debugMode ); + void setConfiguration( const QByteArray& configData, const QString& explainName ); + void reconcileInstancesAndSequence(); + public: static Settings* instance(); /// @brief Find a settings.conf, following @p debugMode @@ -61,13 +92,34 @@ public: QStringList modulesSearchPaths() const; using InstanceDescriptionList = QList< InstanceDescription >; - InstanceDescriptionList customModuleInstances() const; + /** @brief All the module instances used + * + * Each module-instance mentioned in `settings.conf` has an entry + * in the moduleInstances list -- both custom entries that are + * in the *instances* section, and each module mentioned in the + * *sequence*. + */ + InstanceDescriptionList moduleInstances() const; - using ModuleSequence = QList< QPair< ModuleSystem::Action, QStringList > >; + using ModuleSequence = QList< QPair< ModuleSystem::Action, Calamares::ModuleSystem::InstanceKeyList > >; + /** @brief Representation of *sequence* of execution + * + * Each "section" of the *sequence* key in `settings.conf` gets an + * entry here, stating what kind of action is taken and which modules + * take part (in order). Each entry in the list is an instance key + * which can be found in the moduleInstances() list. + */ ModuleSequence modulesSequence() const; QString brandingComponentName() const; + /** @brief Are the settings consistent and valid? + * + * Checks that at least branding is set, and that the instances + * and sequence are valid. + */ + bool isValid() const; + /** @brief Is this a debugging run? * * Returns true if Calamares is in debug mode. In debug mode, @@ -113,7 +165,7 @@ private: QStringList m_modulesSearchPaths; - InstanceDescriptionList m_customModuleInstances; + InstanceDescriptionList m_moduleInstances; ModuleSequence m_modulesSequence; QString m_brandingComponentName; diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp new file mode 100644 index 000000000..c7f1d6028 --- /dev/null +++ b/src/libcalamares/Tests.cpp @@ -0,0 +1,637 @@ +/* === 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: see the License-Identifier above. + * + * + */ + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" +#include "modulesystem/InstanceKey.h" +#include "utils/Logger.h" + +#include +#include +#include + +class TestLibCalamares : public QObject +{ + Q_OBJECT +public: + TestLibCalamares() {} + virtual ~TestLibCalamares() {} + +private Q_SLOTS: + void testGSModify(); + void testGSLoadSave(); + void testGSLoadSave2(); + void testGSLoadSaveYAMLStringList(); + + void testInstanceKey(); + void testInstanceDescription(); + + void testSettings(); + + void testJobQueue(); +}; + +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" ); + + QVariantList l; + for ( const auto& s : QStringList { "dopey", "sneezy" } ) + { + l.append( s ); + } + gs.insert( "dwarfs", l ); + + 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() ); + + // YAML can load as JSON! + QVERIFY( gs3.loadYaml( jsonfilename ) ); + QCOMPARE( gs3.count(), 3 ); + QCOMPARE( gs3.data(), gs.data() ); + + // Failures in loading + 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 +} + +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 ); +} + +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 +} + +void +TestLibCalamares::testInstanceKey() +{ + using InstanceKey = Calamares::ModuleSystem::InstanceKey; + { + InstanceKey k; + QVERIFY( !k.isValid() ); + QVERIFY( !k.isCustom() ); + QVERIFY( k.module().isEmpty() ); + } + { + InstanceKey k( QStringLiteral( "welcome" ), QString() ); + QVERIFY( k.isValid() ); + QVERIFY( !k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( "welcome" ) ); + QCOMPARE( k.id(), QStringLiteral( "welcome" ) ); + } + { + InstanceKey k( QStringLiteral( "shellprocess" ), QStringLiteral( "zfssetup" ) ); + QVERIFY( k.isValid() ); + QVERIFY( k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( "shellprocess" ) ); + QCOMPARE( k.id(), QStringLiteral( "zfssetup" ) ); + } + + { + // This is a bad idea, names and ids with odd punctuation + InstanceKey k( QStringLiteral( " o__O " ), QString() ); + QVERIFY( k.isValid() ); + QVERIFY( !k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( " o__O " ) ); + } + { + // .. but @ is disallowed + InstanceKey k( QStringLiteral( "welcome@hi" ), QString() ); + QVERIFY( !k.isValid() ); + QVERIFY( !k.isCustom() ); + QVERIFY( k.module().isEmpty() ); + } + + { + InstanceKey k = InstanceKey::fromString( "welcome" ); + QVERIFY( k.isValid() ); + QVERIFY( !k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( "welcome" ) ); + QCOMPARE( k.id(), QStringLiteral( "welcome" ) ); + } + { + InstanceKey k = InstanceKey::fromString( "welcome@welcome" ); + QVERIFY( k.isValid() ); + QVERIFY( !k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( "welcome" ) ); + QCOMPARE( k.id(), QStringLiteral( "welcome" ) ); + } + + { + InstanceKey k = InstanceKey::fromString( "welcome@hi" ); + QVERIFY( k.isValid() ); + QVERIFY( k.isCustom() ); + QCOMPARE( k.module(), QStringLiteral( "welcome" ) ); + QCOMPARE( k.id(), QStringLiteral( "hi" ) ); + } + { + InstanceKey k = InstanceKey::fromString( "welcome@hi@hi" ); + QVERIFY( !k.isValid() ); + QVERIFY( !k.isCustom() ); + QVERIFY( k.module().isEmpty() ); + QVERIFY( k.id().isEmpty() ); + } +} + +void +TestLibCalamares::testInstanceDescription() +{ + using InstanceDescription = Calamares::InstanceDescription; + using InstanceKey = Calamares::ModuleSystem::InstanceKey; + + // With invalid keys + // + // + { + InstanceDescription d; + QVERIFY( !d.isValid() ); + QVERIFY( !d.isCustom() ); + QCOMPARE( d.weight(), 0 ); + QVERIFY( d.configFileName().isEmpty() ); + QVERIFY( !d.explicitWeight() ); + } + + { + InstanceDescription d( InstanceKey {} ); // most-vexing, use brace-init instead + QVERIFY( !d.isValid() ); + QVERIFY( !d.isCustom() ); + QCOMPARE( d.weight(), 0 ); + QVERIFY( d.configFileName().isEmpty() ); + QVERIFY( !d.explicitWeight() ); + } + + // Private constructor + // + // This does set up the config file, to default values + { + InstanceDescription d( InstanceKey::fromString( "welcome" ) ); + QVERIFY( d.isValid() ); + QVERIFY( !d.isCustom() ); + QCOMPARE( d.weight(), 1 ); // **now** the constraints kick in + QVERIFY( !d.configFileName().isEmpty() ); + QCOMPARE( d.configFileName(), QStringLiteral( "welcome.conf" ) ); + QVERIFY( !d.explicitWeight() ); + } + + { + InstanceDescription d( InstanceKey::fromString( "welcome@hi" ) ); + QVERIFY( d.isValid() ); + QVERIFY( d.isCustom() ); + QCOMPARE( d.weight(), 1 ); // **now** the constraints kick in + QVERIFY( !d.configFileName().isEmpty() ); + QCOMPARE( d.configFileName(), QStringLiteral( "welcome.conf" ) ); + QVERIFY( !d.explicitWeight() ); + } + + + // From settings, normal program flow + // + // + { + QVariantMap m; + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( !d.isValid() ); + } + { + QVariantMap m; + m.insert( "name", "welcome" ); + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( !d.isValid() ); + QVERIFY( !d.explicitWeight() ); + } + { + QVariantMap m; + m.insert( "module", "welcome" ); + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( d.isValid() ); + QVERIFY( !d.isCustom() ); + // Valid, but no weight set by settings + QCOMPARE( d.weight(), 1 ); + QVERIFY( !d.explicitWeight() ); + + QCOMPARE( d.key().module(), QString( "welcome" ) ); + QCOMPARE( d.key().id(), QString( "welcome" ) ); + QCOMPARE( d.configFileName(), QString( "welcome.conf" ) ); + } + { + QVariantMap m; + m.insert( "module", "welcome" ); + m.insert( "weight", 1 ); + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( d.isValid() ); + QVERIFY( !d.isCustom() ); + + //Valid, set explicitly + QCOMPARE( d.weight(), 1 ); + QVERIFY( d.explicitWeight() ); + + QCOMPARE( d.key().module(), QString( "welcome" ) ); + QCOMPARE( d.key().id(), QString( "welcome" ) ); + QCOMPARE( d.configFileName(), QString( "welcome.conf" ) ); + } + { + QVariantMap m; + m.insert( "module", "welcome" ); + m.insert( "id", "hi" ); + m.insert( "weight", "17" ); // String, that's kind of bogus + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( d.isValid() ); + QVERIFY( d.isCustom() ); + QCOMPARE( d.weight(), 17 ); + QCOMPARE( d.key().module(), QString( "welcome" ) ); + QCOMPARE( d.key().id(), QString( "hi" ) ); + QCOMPARE( d.configFileName(), QString( "welcome.conf" ) ); + QVERIFY( d.explicitWeight() ); + } + { + QVariantMap m; + m.insert( "module", "welcome" ); + m.insert( "id", "hi" ); + m.insert( "weight", 134 ); + m.insert( "config", "hi.conf" ); + + InstanceDescription d = InstanceDescription::fromSettings( m ); + QVERIFY( d.isValid() ); + QVERIFY( d.isCustom() ); + QCOMPARE( d.weight(), 100 ); + QCOMPARE( d.key().module(), QString( "welcome" ) ); + QCOMPARE( d.key().id(), QString( "hi" ) ); + QCOMPARE( d.configFileName(), QString( "hi.conf" ) ); + QVERIFY( d.explicitWeight() ); + } +} + +void +TestLibCalamares::testSettings() +{ + { + Calamares::Settings s( false ); + QVERIFY( !s.debugMode() ); + QVERIFY( !s.isValid() ); + } + { + Calamares::Settings s( true ); + QVERIFY( s.debugMode() ); + QVERIFY( s.moduleInstances().isEmpty() ); + QVERIFY( s.modulesSequence().isEmpty() ); + QVERIFY( s.brandingComponentName().isEmpty() ); + QVERIFY( !s.isValid() ); + + s.setConfiguration( R"(--- +branding: default # needed for it to be considered valid +instances: + - module: welcome + id: hi + weight: 75 + - module: welcome + id: yo + config: yolo.conf +sequence: + - show: + - welcome@hi + - welcome@yo + - dummycpp + - summary + - exec: + - welcome@hi +)", + QStringLiteral( "" ) ); + + QVERIFY( s.debugMode() ); + QCOMPARE( s.moduleInstances().count(), 4 ); // there are 4 module instances mentioned + QCOMPARE( s.modulesSequence().count(), 2 ); // 2 steps (show, exec) + QVERIFY( !s.brandingComponentName().isEmpty() ); + QVERIFY( s.isValid() ); + + // Make a lambda where we can adjust what it looks for from the outside, + // by capturing a reference. + QString moduleKey = QString( "welcome" ); + auto moduleFinder = [&moduleKey]( const Calamares::InstanceDescription& d ) { + return d.isValid() && d.key().module() == moduleKey; + }; + + const auto it0 = std::find_if( s.moduleInstances().constBegin(), s.moduleInstances().constEnd(), moduleFinder ); + QVERIFY( it0 != s.moduleInstances().constEnd() ); + + moduleKey = QString( "derp" ); + const auto it1 = std::find_if( s.moduleInstances().constBegin(), s.moduleInstances().constEnd(), moduleFinder ); + QVERIFY( it1 == s.moduleInstances().constEnd() ); + + int validCount = 0; + int customCount = 0; + for ( const auto& d : s.moduleInstances() ) + { + if ( d.isValid() ) + { + validCount++; + } + if ( d.isCustom() ) + { + customCount++; + } + QVERIFY( d.isCustom() ? d.isValid() : true ); // All custom entries are valid + + if ( !d.isCustom() ) + { + QCOMPARE( d.configFileName(), QString( "%1.conf" ).arg( d.key().module() ) ); + } + else + { + // Specific cases from this config file + if ( d.key().id() == QString( "yo" ) ) + { + QCOMPARE( d.configFileName(), QString( "yolo.conf" ) ); + } + else + { + QCOMPARE( d.configFileName(), QString( "welcome.conf" ) ); // Not set in the settings data + } + } + } + QCOMPARE( customCount, 2 ); + QCOMPARE( validCount, 4 ); // welcome@hi is listed twice, in *show* and *exec* + } +} + +constexpr const std::chrono::milliseconds MAX_TEST_DURATION( 3000 ); +constexpr const int MAX_TEST_SLEEP( 2 ); // seconds, < MAX_TEST_DURATION + +Q_STATIC_ASSERT( std::chrono::seconds( MAX_TEST_SLEEP ) < MAX_TEST_DURATION ); + +class DummyJob : public Calamares::Job +{ +public: + DummyJob( QObject* parent ) + : Calamares::Job( parent ) + { + } + virtual ~DummyJob() override; + + QString prettyName() const override; + Calamares::JobResult exec() override; +}; + +DummyJob::~DummyJob() {} + +QString +DummyJob::prettyName() const +{ + return QString( "DummyJob" ); +} + +Calamares::JobResult +DummyJob::exec() +{ + cDebug() << "Starting DummyJob"; + progress( 0.5 ); + QThread::sleep( MAX_TEST_SLEEP ); + cDebug() << ".. continuing DummyJob"; + progress( 0.75 ); + return Calamares::JobResult::ok(); +} + + +void +TestLibCalamares::testJobQueue() +{ + // Run an empty queue + { + Calamares::JobQueue q; + QVERIFY( !q.isRunning() ); + + QSignalSpy spy_progress( &q, &Calamares::JobQueue::progress ); + QSignalSpy spy_finished( &q, &Calamares::JobQueue::finished ); + QSignalSpy spy_failed( &q, &Calamares::JobQueue::failed ); + + QEventLoop loop; + connect( &q, &Calamares::JobQueue::finished, &loop, &QEventLoop::quit ); + QTimer::singleShot( MAX_TEST_DURATION, &loop, &QEventLoop::quit ); + q.start(); + QVERIFY( q.isRunning() ); + loop.exec(); + QVERIFY( !q.isRunning() ); + QCOMPARE( spy_finished.count(), 1 ); + QCOMPARE( spy_failed.count(), 0 ); + QCOMPARE( spy_progress.count(), 1 ); // just one, 100% at queue end + } + + // Run a dummy queue + { + Calamares::JobQueue q; + QVERIFY( !q.isRunning() ); + + q.enqueue( 8, Calamares::JobList() << Calamares::job_ptr( new DummyJob( this ) ) ); + QSignalSpy spy_progress( &q, &Calamares::JobQueue::progress ); + QSignalSpy spy_finished( &q, &Calamares::JobQueue::finished ); + QSignalSpy spy_failed( &q, &Calamares::JobQueue::failed ); + + QEventLoop loop; + connect( &q, &Calamares::JobQueue::finished, &loop, &QEventLoop::quit ); + QTimer::singleShot( MAX_TEST_DURATION, &loop, &QEventLoop::quit ); + q.start(); + QVERIFY( q.isRunning() ); + loop.exec(); + QVERIFY( !q.isRunning() ); + QCOMPARE( spy_finished.count(), 1 ); + QCOMPARE( spy_failed.count(), 0 ); + // 0% by the queue at job start + // 50% by the job itself + // 90% by the job itself + // 100% by the queue at job end + // 100% by the queue at queue end + QCOMPARE( spy_progress.count(), 5 ); + } + + { + Calamares::JobQueue q; + QVERIFY( !q.isRunning() ); + + q.enqueue( 8, Calamares::JobList() << Calamares::job_ptr( new DummyJob( this ) ) ); + q.enqueue( 12, + Calamares::JobList() << Calamares::job_ptr( new DummyJob( this ) ) + << Calamares::job_ptr( new DummyJob( this ) ) ); + QSignalSpy spy_progress( &q, &Calamares::JobQueue::progress ); + QSignalSpy spy_finished( &q, &Calamares::JobQueue::finished ); + QSignalSpy spy_failed( &q, &Calamares::JobQueue::failed ); + + QEventLoop loop; + connect( &q, &Calamares::JobQueue::finished, &loop, &QEventLoop::quit ); + // Run the loop longer because the jobs take longer (there are 3 of them) + QTimer::singleShot( 3 * MAX_TEST_DURATION, &loop, &QEventLoop::quit ); + q.start(); + QVERIFY( q.isRunning() ); + loop.exec(); + QVERIFY( !q.isRunning() ); + QCOMPARE( spy_finished.count(), 1 ); + QCOMPARE( spy_failed.count(), 0 ); + // 0% by the queue at job start + // 50% by the job itself + // 90% by the job itself + // 100% by the queue at job end + // 4 more for the next job + // 4 more for the next job + // 100% by the queue at queue end + QCOMPARE( spy_progress.count(), 13 ); + + /* Consider how progress will be reported: + * + * - the first module has weight 8, so the 1 job it has has weight 8 + * - the second module has weight 12, so each of its two jobs has weight 6 + * + * Total weight of the modules is 20. So the events are + * + * Job Progress Overall Weight Consumed Overall Progress + * 1 0 0 0.00 + * 1 50 4 0.20 + * 1 75 6 0.30 + * 1 100 8 0.40 + * 2 0 8 0.40 + * 2 50 11 (8 + 50% of 6) 0.55 + * 2 75 12.5 0.625 + * 2 100 14 0.70 + * 3 0 14 0.70 + * 3 50 17 0.85 + * 3 75 18.5 0.925 + * 3 100 20 1.00 + * - 100 20 1.00 + */ + cDebug() << "Progress signals:"; + qreal overallProgress = 0.0; + for ( const auto& e : spy_progress ) + { + QCOMPARE( e.count(), 2 ); + const auto v = e.first(); + QVERIFY( v.canConvert< qreal >() ); + qreal progress = v.toReal(); + cDebug() << Logger::SubEntry << progress; + QVERIFY( progress >= overallProgress ); // Doesn't go backwards + overallProgress = progress; + } + } +} + + +QTEST_GUILESS_MAIN( TestLibCalamares ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" 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..d954b8fc0 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. * */ @@ -80,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 a44162576..e13198b94 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. * */ @@ -47,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/geoip/Interface.cpp b/src/libcalamares/geoip/Interface.cpp index f8649f37a..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. * */ @@ -47,7 +34,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 ); 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 4382950ec..932a1996d 100644 --- a/src/libcalamares/locale/CountryData_p.cpp +++ b/src/libcalamares/locale/CountryData_p.cpp @@ -1,8 +1,14 @@ /* GENERATED FILE DO NOT EDIT * -* === This file is part of Calamares - === +* === 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-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 +* 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/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/Label.cpp b/src/libcalamares/locale/Label.cpp index 0be82a380..b4ec8180c 100644 --- a/src/libcalamares/locale/Label.cpp +++ b/src/libcalamares/locale/Label.cpp @@ -1,23 +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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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/Label.h b/src/libcalamares/locale/Label.h index fa07e3361..58b2a3773 100644 --- a/src/libcalamares/locale/Label.h +++ b/src/libcalamares/locale/Label.h @@ -1,23 +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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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/LabelModel.cpp b/src/libcalamares/locale/LabelModel.cpp index a7f14bf50..9a9be9905 100644 --- a/src/libcalamares/locale/LabelModel.cpp +++ b/src/libcalamares/locale/LabelModel.cpp @@ -1,23 +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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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/LabelModel.h b/src/libcalamares/locale/LabelModel.h index 000bf4da7..8648dc71c 100644 --- a/src/libcalamares/locale/LabelModel.h +++ b/src/libcalamares/locale/LabelModel.h @@ -1,23 +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 - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General 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/Lookup.cpp b/src/libcalamares/locale/Lookup.cpp index 615783a87..f792f08ed 100644 --- a/src/libcalamares/locale/Lookup.cpp +++ b/src/libcalamares/locale/Lookup.cpp @@ -1,22 +1,10 @@ -/* === 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/locale/Lookup.h b/src/libcalamares/locale/Lookup.h index daa9c2987..4095fd097 100644 --- a/src/libcalamares/locale/Lookup.h +++ b/src/libcalamares/locale/Lookup.h @@ -1,22 +1,10 @@ -/* === 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/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 6c5a508d7..b701ce849 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -1,37 +1,56 @@ -/* === 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 "Tests.h" - +#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 -QTEST_GUILESS_MAIN( LocaleTests ) +class LocaleTests : public QObject +{ + Q_OBJECT +public: + LocaleTests(); + ~LocaleTests() override; + +private Q_SLOTS: + void initTestCase(); + + void testLanguageModelCount(); + void testTranslatableLanguages(); + void testTranslatableConfig1(); + void testTranslatableConfig2(); + void testLanguageScripts(); + + void testEsperanto(); + void testInterlingue(); + + // TimeZone testing + void testRegions(); + void testSimpleZones(); + void testComplexZones(); + void testTZLookup(); + void testTZIterator(); + void testLocationLookup_data(); + void testLocationLookup(); + void testLocationLookup2(); + + // Global Storage updates + void testGSUpdates(); +}; LocaleTests::LocaleTests() {} @@ -40,6 +59,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" ) ); @@ -65,10 +86,8 @@ LocaleTests::testLanguageModelCount() } void -LocaleTests::testEsperanto() +LocaleTests::testLanguageScripts() { - Logger::setupLogLevel( Logger::LOGDEBUG ); - const auto* m = CalamaresUtils::Locale::availableTranslations(); QVERIFY( m ); @@ -89,13 +108,34 @@ 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 ); + QCOMPARE( QLocale( QLocale::Esperanto ).language(), QLocale::English ); #else QCOMPARE( QLocale( "eo" ).language(), QLocale::Esperanto ); + QCOMPARE( QLocale( QLocale::Esperanto ).language(), QLocale::Esperanto ); // Probably fails on 5.12, too #endif } +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() { @@ -206,54 +246,280 @@ LocaleTests::testTranslatableConfig2() QCOMPARE( ts3.count(), 1 ); // The empty string } +void +LocaleTests::testRegions() +{ + 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 ), RegionsModel::NameRole ); + QVERIFY( name.isValid() ); + QVERIFY( !name.toString().isEmpty() ); + names.append( name.toString() ); + } + + QVERIFY( names.contains( "America" ) ); + QVERIFY( !names.contains( "UTC" ) ); +} + + +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() { using namespace CalamaresUtils::Locale; + ZonesModel zones; + QVERIFY( zones.rowCount( QModelIndex() ) > 24 ); + + QStringList names; + displayedNames( zones, names ); + QVERIFY( names.contains( "Amsterdam" ) ); + if ( !names.contains( "New York" ) ) { - 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() ); + 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 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" ) ); +} + +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" ) ); +} + +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 ) { - TZZone r0( "America/New_York" ); - TZZone r1( "America/New York" ); - - QCOMPARE( r0.tr(), r1.tr() ); - QCOMPARE( r0.tr(), QStringLiteral( "America/New York" ) ); + 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() ) ); + + QCOMPARE( zones.data( zones.index( 0 ), ZonesModel::RegionRole ).toString(), QStringLiteral( "Africa" ) ); + 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" ); + + 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 +LocaleTests::testLocationLookup() +{ + const CalamaresUtils::Locale::ZonesModel zones; + + QFETCH( double, latitude ); + QFETCH( double, longitude ); + QFETCH( QString, name ); + + const auto* zone = zones.find( latitude, longitude ); + QVERIFY( zone ); + 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 ); +} + +void +LocaleTests::testGSUpdates() +{ + Calamares::GlobalStorage gs; + + const QString gsKey( "localeConf" ); + + QCOMPARE( gs.value( gsKey ), QVariant() ); + + // Insert one { - TZZone r( "zxc,;*_vm" ); - QVERIFY( !r.tr().isEmpty() ); - QCOMPARE( r.tr(), QStringLiteral( "zxc,;* vm" ) ); // Only _ is special + 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 ) + +#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 diff --git a/src/libcalamares/locale/TimeZone.cpp b/src/libcalamares/locale/TimeZone.cpp index 772a242fb..b9dbac5ee 100644 --- a/src/libcalamares/locale/TimeZone.cpp +++ b/src/libcalamares/locale/TimeZone.cpp @@ -1,38 +1,37 @@ -/* === 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 "TimeZone.h" +#include "locale/TranslatableString.h" #include "utils/Logger.h" #include "utils/String.h" #include -#include -#include - -#include +#include static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; +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 + * + * 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 ) { @@ -62,99 +61,45 @@ getRightGeoLocation( QString str ) } -namespace CalamaresUtils +TimeZoneData::TimeZoneData( const QString& region, + const QString& zone, + const QString& country, + double latitude, + double longitude ) + : TranslatableString( zone ) + , m_region( region ) + , m_country( country ) + , m_latitude( latitude ) + , m_longitude( longitude ) { -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 ); + setObjectName( region + '/' + zone ); } -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. - */ -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( const char* s1 ) - : m_human( s1 ? munge( s1 ) : nullptr ) - , m_key( s1 ? QString( s1 ) : QString() ) -{ -} - - -CStringPair::~CStringPair() -{ - free( m_human ); -} - - QString -TZRegion::tr() const +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 TranslatableString +{ +public: + using TranslatableString::TranslatableString; + 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" ); } -TZRegion::~TZRegion() +static void +loadTZData( RegionVector& regions, ZoneVector& zones, QTextStream& in ) { - 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(); @@ -181,18 +126,6 @@ TZRegion::fromFile( const char* fileName ) 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 ) { @@ -200,114 +133,368 @@ TZRegion::fromFile( const char* fileName ) } 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 ) + QString zone = timezoneParts.join( '/' ); + if ( zone.length() < 2 ) { - std::sort( r->m_zones.begin(), r->m_zones.end(), sorter ); + 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 ) ); + } +} + +/** @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 +{ + Q_OBJECT +public: + RegionVector m_regions; + ZoneVector m_zones; ///< The official timezones and locations + 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 + + // 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(); + } ); + 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(); + } ); + + for ( auto* z : m_zones ) + { + z->setParent( this ); } } +}; - return model; -} - -TZZone::TZZone( const QString& region, const char* zoneName, const QString& country, QString position ) - : CStringPair( zoneName ) - , m_region( region ) - , m_country( country ) +static Private* +privateInstance() { - int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); - if ( cooSplitPos > 0 ) - { - m_latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); - m_longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); - } + static Private* s_p = new Private; + return s_p; } -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( QObject* parent ) + : QAbstractListModel( parent ) + , m_private( privateInstance() ) { } -void -CStringListModel::setList( CalamaresUtils::Locale::CStringPairList l ) -{ - beginResetModel(); - m_list = l; - endResetModel(); -} +RegionsModel::~RegionsModel() {} int -CStringListModel::rowCount( const QModelIndex& ) const +RegionsModel::rowCount( const QModelIndex& ) const { - return m_list.count(); + return m_private->m_regions.count(); } QVariant -CStringListModel::data( const QModelIndex& index, int role ) const +RegionsModel::data( const QModelIndex& index, int role ) const { - if ( ( role != Qt::DisplayRole ) && ( role != Qt::UserRole ) ) + if ( !index.isValid() || index.row() < 0 || index.row() >= m_private->m_regions.count() ) { return QVariant(); } - if ( !index.isValid() ) + const auto& region = m_private->m_regions[ index.row() ]; + if ( role == NameRole ) { - return QVariant(); + return region->tr(); } - - 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() ) ) + if ( role == KeyRole ) { - return; + return region->key(); } - - m_currentIndex = index; - emit currentIndexChanged(); -} - -int -CStringListModel::currentIndex() const -{ - return m_currentIndex; + return QVariant(); } QHash< int, QByteArray > -CStringListModel::roleNames() const +RegionsModel::roleNames() const { - return { { Qt::DisplayRole, "label" }, { Qt::UserRole, "key" } }; + return { { NameRole, "name" }, { KeyRole, "key" } }; } -const CStringPair* -CStringListModel::item( int index ) const +QString +RegionsModel::tr( const QString& region ) const { - if ( ( index < 0 ) || ( index >= m_list.count() ) ) + for ( const auto* p : m_private->m_regions ) { - return nullptr; + if ( p->key() == region ) + { + return p->tr(); + } } - return m_list[ index ]; + return region; } +ZonesModel::ZonesModel( QObject* parent ) + : QAbstractListModel( parent ) + , m_private( privateInstance() ) +{ +} + +ZonesModel::~ZonesModel() {} + +int +ZonesModel::rowCount( const QModelIndex& ) const +{ + return m_private->m_zones.count(); +} + +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() ]; + switch ( role ) + { + case NameRole: + return zone->tr(); + case KeyRole: + return zone->key(); + case RegionRole: + return zone->region(); + default: + return QVariant(); + } +} + +QHash< int, QByteArray > +ZonesModel::roleNames() const +{ + return { { NameRole, "name" }, { KeyRole, "key" } }; +} + +const TimeZoneData* +ZonesModel::find( const QString& region, const QString& zone ) const +{ + for ( const auto* p : m_private->m_zones ) + { + if ( p->region() == region && p->zone() == zone ) + { + return p; + } + } + return nullptr; +} + +STATICTEST const TimeZoneData* +find( double startingDistance, + const ZoneVector& zones, + const std::function< double( const TimeZoneData* ) >& distanceFunc ) +{ + double smallestDistance = startingDistance; + const TimeZoneData* closest = nullptr; + + for ( const auto* zone : zones ) + { + double thisDistance = distanceFunc( zone ); + if ( thisDistance < smallestDistance ) + { + closest = zone; + smallestDistance = thisDistance; + } + } + return closest; +} + +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 ); + + // 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* +ZonesModel::find( double latitude, double longitude ) const +{ + /* 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. + */ + auto distance = [&]( const TimeZoneData* zone ) -> double { + // 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 ); + } + + return latitudeDifference + longitudeDifference; + }; + + return find( distance ); +} + +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(); +} + +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() ) +{ + 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 + +#include "utils/moc-warnings.h" + +#include "TimeZone.moc" diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h index 60900ef21..8c16517c7 100644 --- a/src/libcalamares/locale/TimeZone.h +++ b/src/libcalamares/locale/TimeZone.h @@ -1,197 +1,235 @@ -/* === 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. + * * */ +/** @file Timezone data and models to go with it + * + * The TimeZoneData class holds information from zone.tab, about + * TZ names and locations (latitude and longitude) for geographic + * lookups. + * + * The RegionModel lists the regions of the world (about 12) and + * ZonesModel lists all the timezones; the RegionalZonesModel provides + * a way to restrict the view of timezones to those of a specific region. + * + */ #ifndef LOCALE_TIMEZONE_H #define LOCALE_TIMEZONE_H #include "DllMacro.h" -#include "utils/Logger.h" +#include "locale/TranslatableString.h" #include #include -#include - -#include +#include +#include namespace CalamaresUtils { namespace Locale { +class Private; +class RegionalZonesModel; +class ZonesModel; -/** @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 there is API that needs - * C-style strings. - */ -class CStringPair : public QObject +class TimeZoneData : public QObject, TranslatableString { + friend class RegionalZonesModel; + friend class ZonesModel; + 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: - /// @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(); + TimeZoneData( const QString& region, + const QString& zone, + const QString& country, + double latitude, + double longitude ); + TimeZoneData( const TimeZoneData& ) = delete; + TimeZoneData( TimeZoneData&& ) = delete; - /// @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 A pair of strings for timezone regions (e.g. "America") -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 A pair of strings for specific timezone names (e.g. "New_York") -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: +private: QString m_region; QString m_country; - double m_latitude = 0.0, m_longitude = 0.0; + double m_latitude; + double m_longitude; }; -class CStringListModel : public QAbstractListModel + +/** @brief The list of timezone regions + * + * The regions are a short list of global areas (Africa, America, India ..) + * which contain zones. + */ +class DLLEXPORT RegionsModel : public QAbstractListModel { Q_OBJECT - Q_PROPERTY( int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged ) public: - /// @brief Create empty model - CStringListModel() {} - /// @brief Create model from list (non-owning) - CStringListModel( CStringPairList ); + enum Roles + { + NameRole = Qt::DisplayRole, + KeyRole = Qt::UserRole // So that currentData() will get the key + }; + + RegionsModel( QObject* parent = nullptr ); + virtual ~RegionsModel() override; 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; - } - } - +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: - CStringPairList m_list; - int m_currentIndex = -1; + Private* m_private; +}; + +class DLLEXPORT ZonesModel : public QAbstractListModel +{ + Q_OBJECT + +public: + enum Roles + { + NameRole = Qt::DisplayRole, + KeyRole = Qt::UserRole, // So that currentData() will get the key + RegionRole = 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; + + /** @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: + * + * ``` + * 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 ); } + + /** @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. + * + * 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. 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; + + /** @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; +}; + +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 currentIndexChanged(); + void regionChanged( const QString& ); + +private: + Private* m_private; + QString m_region; }; + } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TranslatableConfiguration.cpp b/src/libcalamares/locale/TranslatableConfiguration.cpp index fb9800d64..1f0811c9d 100644 --- a/src/libcalamares/locale/TranslatableConfiguration.cpp +++ b/src/libcalamares/locale/TranslatableConfiguration.cpp @@ -1,22 +1,10 @@ -/* === 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/locale/TranslatableConfiguration.h b/src/libcalamares/locale/TranslatableConfiguration.h index fa6016731..c45c8f523 100644 --- a/src/libcalamares/locale/TranslatableConfiguration.h +++ b/src/libcalamares/locale/TranslatableConfiguration.h @@ -1,25 +1,21 @@ -/* === 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. + * * */ +/** @file Run-time translation of strings from configuration files + * + * The TranslatedString class provides a way of doing run-time + * lookups of human-readable strings, from data provided in + * the configuration files (*.conf) for Calamares. This acts + * like "normal" translation through tr() calls, as far as the + * user-visible part goes. + */ #ifndef LOCALE_TRANSLATABLECONFIGURATION_H #define LOCALE_TRANSLATABLECONFIGURATION_H diff --git a/src/libcalamares/locale/TranslatableString.cpp b/src/libcalamares/locale/TranslatableString.cpp new file mode 100644 index 000000000..8f42a4e41 --- /dev/null +++ b/src/libcalamares/locale/TranslatableString.cpp @@ -0,0 +1,79 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ +#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..663f6a2c2 --- /dev/null +++ b/src/libcalamares/locale/TranslatableString.h @@ -0,0 +1,58 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2019 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ +#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 diff --git a/src/libcalamares/locale/ZoneData_p.cxxtr b/src/libcalamares/locale/ZoneData_p.cxxtr index 4bfef3c0c..c59c60dbb 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-1.0 * * 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..7aff85be1 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 - === -# +# === 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 " + ../../data/images/yes.svgz ../../data/images/no.svgz diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp index 632a9dcb8..c2110061c 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.cpp +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -84,13 +75,12 @@ CppJobModule::jobs() const void -CppJobModule::initFrom( const QVariantMap& moduleDescriptor ) +CppJobModule::initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) { QDir directory( location() ); - QString load; - if ( !moduleDescriptor.value( "load" ).toString().isEmpty() ) + QString load = moduleDescriptor.load(); + if ( !load.isEmpty() ) { - load = moduleDescriptor.value( "load" ).toString(); load = directory.absoluteFilePath( load ); } // If a load path is not specified, we look for a plugin to load in the directory. diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h index 2fd82433c..288f674f4 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.h +++ b/src/libcalamaresui/modulesystem/CppJobModule.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -39,7 +30,7 @@ public: JobList jobs() const override; protected: - void initFrom( const QVariantMap& moduleDescriptor ) override; + void initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) override; private: explicit CppJobModule(); diff --git a/src/libcalamaresui/modulesystem/ModuleFactory.cpp b/src/libcalamaresui/modulesystem/ModuleFactory.cpp index f3b46eab7..a7193d3f5 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.cpp +++ b/src/libcalamaresui/modulesystem/ModuleFactory.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -52,23 +43,23 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto const QString& configFileName, const QString& moduleDirectory ) { + using Type = Calamares::ModuleSystem::Type; + using Interface = Calamares::ModuleSystem::Interface; + std::unique_ptr< Module > m; - QString typeString = moduleDescriptor.value( "type" ).toString(); - QString intfString = moduleDescriptor.value( "interface" ).toString(); - - if ( typeString.isEmpty() || intfString.isEmpty() ) + if ( !moduleDescriptor.isValid() ) { cError() << "Bad module descriptor format" << instanceId; return nullptr; } - if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) + if ( moduleDescriptor.type() == Type::View ) { - if ( intfString == "qtplugin" ) + if ( moduleDescriptor.interface() == Interface::QtPlugin ) { m.reset( new ViewModule() ); } - else if ( intfString == "pythonqt" ) + else if ( moduleDescriptor.interface() == Interface::PythonQt ) { #ifdef WITH_PYTHONQT m.reset( new PythonQtViewModule() ); @@ -78,20 +69,22 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto } else { - cError() << "Bad interface" << intfString << "for module type" << typeString; + cError() << "Bad interface" + << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) + << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); } } - else if ( typeString == "job" ) + else if ( moduleDescriptor.type() == Type::Job ) { - if ( intfString == "qtplugin" ) + if ( moduleDescriptor.interface() == Interface::QtPlugin ) { m.reset( new CppJobModule() ); } - else if ( intfString == "process" ) + else if ( moduleDescriptor.interface() == Interface::Process ) { m.reset( new ProcessJobModule() ); } - else if ( intfString == "python" ) + else if ( moduleDescriptor.interface() == Interface::Python ) { #ifdef WITH_PYTHON m.reset( new PythonJobModule() ); @@ -101,17 +94,21 @@ moduleFromDescriptor( const Calamares::ModuleSystem::Descriptor& moduleDescripto } else { - cError() << "Bad interface" << intfString << "for module type" << typeString; + cError() << "Bad interface" + << Calamares::ModuleSystem::interfaceNames().find( moduleDescriptor.interface() ) + << "for module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); } } else { - cError() << "Bad module type" << typeString; + cError() << "Bad module type" << Calamares::ModuleSystem::typeNames().find( moduleDescriptor.type() ); } if ( !m ) { - cError() << "Bad module type (" << typeString << ") or interface string (" << intfString << ") 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/ModuleFactory.h b/src/libcalamaresui/modulesystem/ModuleFactory.h index 8184967d2..170e27e8e 100644 --- a/src/libcalamaresui/modulesystem/ModuleFactory.h +++ b/src/libcalamaresui/modulesystem/ModuleFactory.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 23df7ce8a..8c0f21f58 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -113,9 +104,10 @@ ModuleManager::doInit() if ( ok && !moduleName.isEmpty() && ( moduleName == currentDir.dirName() ) && !m_availableDescriptorsByModuleName.contains( moduleName ) ) { - m_availableDescriptorsByModuleName.insert( moduleName, moduleDescriptorMap ); - m_moduleDirectoriesByModuleName.insert( moduleName, - descriptorFileInfo.absoluteDir().absolutePath() ); + auto descriptor + = Calamares::ModuleSystem::Descriptor::fromDescriptorData( moduleDescriptorMap ); + descriptor.setDirectory( descriptorFileInfo.absoluteDir().absolutePath() ); + m_availableDescriptorsByModuleName.insert( moduleName, descriptor ); } } else @@ -131,8 +123,7 @@ ModuleManager::doInit() } // At this point m_availableDescriptorsByModuleName is filled with // the modules that were found in the search paths. - cDebug() << "Found" << m_availableDescriptorsByModuleName.count() << "modules" - << m_moduleDirectoriesByModuleName.count() << "names"; + cDebug() << "Found" << m_availableDescriptorsByModuleName.count() << "modules"; emit initDone(); } @@ -151,66 +142,43 @@ 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 ); } -/** - * @brief Search a list of instance descriptions for one matching @p module and @p id - * - * @return -1 on failure, otherwise index of the instance that matches. - */ -static int -findCustomInstance( const Settings::InstanceDescriptionList& customInstances, const ModuleSystem::InstanceKey& m ) -{ - for ( int i = 0; i < customInstances.count(); ++i ) - { - const auto& thisInstance = customInstances[ i ]; - if ( thisInstance.module == m.module() && thisInstance.id == m.id() ) - { - return i; - } - } - return -1; -} - -/** @brief Returns the config file name for the fiven @p instanceKey +/** @brief Returns the config file name for the given @p instanceKey * * Custom instances have custom config files, non-custom ones * have a .conf file. Returns an empty QString on * errors. */ static QString -getConfigFileName( const Settings::InstanceDescriptionList& customInstances, +getConfigFileName( const Settings::InstanceDescriptionList& descriptorList, const ModuleSystem::InstanceKey& instanceKey, - const ModuleSystem::Descriptor& descriptor ) + const ModuleSystem::Descriptor& thisModule ) { - if ( instanceKey.isCustom() ) + if ( !thisModule.hasConfig() ) { - int found = findCustomInstance( customInstances, instanceKey ); - - if ( found < 0 ) - { - // This should already have been checked and failed the module already - return QString(); - } - - return customInstances[ found ].config; + // Explicitly set to no-configuration. This doesn't apply + // to custom instances (above) since the only reason to + // **have** a custom instance is to specify a different + // config file for more than one module. + return QString(); } - else + + for ( const auto& descriptor : descriptorList ) { - if ( descriptor.value( "noconfig", false ).toBool() ) + if ( descriptor.key() == instanceKey ) { - // Explicitly set to no-configuration. This doesn't apply - // to custom instances (above) since the only reason to - // **have** a custom instance is to specify a different - // config file for more than one module. - return QString(); + return descriptor.configFileName(); } - return QString( "%1.conf" ).arg( instanceKey.module() ); } + + + // This should already have been checked and failed the module already + return QString(); } void @@ -220,7 +188,7 @@ ModuleManager::loadModules() { cWarning() << "Some installed modules have unmet dependencies."; } - Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); + Settings::InstanceDescriptionList customInstances = Settings::instance()->moduleInstances(); QStringList failedModules; const auto modulesSequence = Settings::instance()->modulesSequence(); @@ -228,29 +196,18 @@ ModuleManager::loadModules() { ModuleSystem::Action currentAction = modulePhase.first; - foreach ( const QString& moduleEntry, modulePhase.second ) + for ( const auto& instanceKey : modulePhase.second ) { - auto instanceKey = ModuleSystem::InstanceKey::fromString( moduleEntry ); if ( !instanceKey.isValid() ) { - cError() << "Wrong module entry format for module" << moduleEntry; - failedModules.append( moduleEntry ); + cError() << "Wrong module entry format for module" << instanceKey; + failedModules.append( instanceKey.toString() ); continue; } - if ( instanceKey.isCustom() ) - { - int found = findCustomInstance( customInstances, instanceKey ); - if ( found < 0 ) - { - cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; - failedModules.append( moduleEntry ); - continue; - } - } ModuleSystem::Descriptor descriptor = m_availableDescriptorsByModuleName.value( instanceKey.module(), ModuleSystem::Descriptor() ); - if ( descriptor.isEmpty() ) + if ( !descriptor.isValid() ) { cError() << "Module" << instanceKey.toString() << "not found in module search paths." << Logger::DebugList( m_paths ); @@ -287,11 +244,8 @@ ModuleManager::loadModules() } else { - thisModule - = Calamares::moduleFromDescriptor( descriptor, - instanceKey.id(), - configFileName, - m_moduleDirectoriesByModuleName.value( instanceKey.module() ) ); + thisModule = Calamares::moduleFromDescriptor( + descriptor, instanceKey.id(), configFileName, descriptor.directory() ); if ( !thisModule ) { cError() << "Module" << instanceKey.toString() << "cannot be created from descriptor" @@ -320,7 +274,7 @@ ModuleManager::loadModules() ViewManager::instance()->addViewStep( evs ); } - evs->appendJobModuleInstanceKey( instanceKey.toString() ); + evs->appendJobModuleInstanceKey( instanceKey ); } } } @@ -336,7 +290,7 @@ ModuleManager::loadModules() } bool -ModuleManager::addModule( Module *module ) +ModuleManager::addModule( Module* module ) { if ( !module ) { @@ -344,7 +298,7 @@ ModuleManager::addModule( Module *module ) } if ( !module->instanceKey().isValid() ) { - cWarning() << "Module" << module->location() << Logger::Pointer(module) << "has invalid instance key."; + cWarning() << "Module" << module->location() << Logger::Pointer( module ) << "has invalid instance key."; return false; } if ( !checkModuleDependencies( *module ) ) @@ -383,13 +337,15 @@ ModuleManager::checkRequirements() RequirementsChecker* rq = new RequirementsChecker( modules, m_requirementsModel, this ); connect( rq, &RequirementsChecker::done, rq, &RequirementsChecker::deleteLater ); - connect( rq, &RequirementsChecker::done, this, [=](){ this->requirementsComplete( m_requirementsModel->satisfiedMandatory() ); } ); + connect( rq, &RequirementsChecker::done, this, [=]() { + this->requirementsComplete( m_requirementsModel->satisfiedMandatory() ); + } ); QTimer::singleShot( 0, rq, &RequirementsChecker::run ); } static QStringList -missingRequiredModules( const QStringList& required, const QMap< QString, QVariantMap >& available ) +missingRequiredModules( const QStringList& required, const QMap< QString, ModuleSystem::Descriptor >& available ) { QStringList l; for ( const QString& depName : required ) @@ -417,12 +373,11 @@ ModuleManager::checkDependencies() for ( auto it = m_availableDescriptorsByModuleName.begin(); it != m_availableDescriptorsByModuleName.end(); ++it ) { - QStringList unmet = missingRequiredModules( it->value( "requiredModules" ).toStringList(), - m_availableDescriptorsByModuleName ); + QStringList unmet = missingRequiredModules( it->requiredModules(), m_availableDescriptorsByModuleName ); if ( unmet.count() > 0 ) { - QString moduleName = it->value( "name" ).toString(); + QString moduleName = it->name(); somethingWasRemovedBecauseOfUnmetDependencies = true; m_availableDescriptorsByModuleName.erase( it ); numberRemoved++; @@ -445,8 +400,7 @@ ModuleManager::checkModuleDependencies( const Module& m ) } bool allRequirementsFound = true; - QStringList requiredModules - = m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList(); + QStringList requiredModules = m_availableDescriptorsByModuleName[ m.name() ].requiredModules(); for ( const QString& required : requiredModules ) { diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index 2c51e70f7..d2beedf2e 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -71,12 +62,22 @@ public: */ ModuleSystem::Descriptor moduleDescriptor( const QString& name ); + /** @brief returns the module descriptor structure for the module @p instance + * + * Descriptors are for the module, which may have multiple instances; + * this is the same as moduleDescriptor( instance.module() ). + */ + ModuleSystem::Descriptor moduleDescriptor( const ModuleSystem::InstanceKey& instanceKey ) + { + return moduleDescriptor( instanceKey.module() ); + } + /** * @brief moduleInstance returns a Module object for a given instance key. * @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. @@ -103,11 +104,37 @@ 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 - void requirementsComplete( bool ); + /** @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 @p canContinue indicates if all of the **mandatory** requirements + * are satisfied (e.g. whether installation can continue). + */ + void requirementsComplete( bool canContinue ); private slots: void doInit(); @@ -136,7 +163,6 @@ private: bool checkModuleDependencies( const Module& ); QMap< QString, ModuleSystem::Descriptor > m_availableDescriptorsByModuleName; - QMap< QString, QString > m_moduleDirectoriesByModuleName; QMap< ModuleSystem::InstanceKey, Module* > m_loadedModulesByInstanceKey; const QStringList m_paths; RequirementsModel* m_requirementsModel; diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index 3fb0579d3..2671d0899 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -61,32 +52,14 @@ ProcessJobModule::jobs() const void -ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor ) +ProcessJobModule::initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) { QDir directory( location() ); m_workingPath = directory.absolutePath(); - if ( !moduleDescriptor.value( "command" ).toString().isEmpty() ) - { - m_command = moduleDescriptor.value( "command" ).toString(); - } - - m_secondsTimeout = std::chrono::seconds( 30 ); - if ( moduleDescriptor.contains( "timeout" ) && !moduleDescriptor.value( "timeout" ).isNull() ) - { - int sec = moduleDescriptor.value( "timeout" ).toInt(); - if ( sec < 0 ) - { - sec = 0; - } - m_secondsTimeout = std::chrono::seconds( sec ); - } - - m_runInChroot = false; - if ( moduleDescriptor.contains( "chroot" ) && !moduleDescriptor.value( "chroot" ).isNull() ) - { - m_runInChroot = moduleDescriptor.value( "chroot" ).toBool(); - } + m_command = moduleDescriptor.command(); + m_secondsTimeout = std::chrono::seconds( moduleDescriptor.timeout() ); + m_runInChroot = moduleDescriptor.chroot(); } @@ -98,7 +71,7 @@ ProcessJobModule::ProcessJobModule() } -ProcessJobModule::~ProcessJobModule() { } +ProcessJobModule::~ProcessJobModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h index 87c6e2da8..0e00f5545 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.h +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -38,7 +29,7 @@ public: JobList jobs() const override; protected: - void initFrom( const QVariantMap& moduleDescriptor ) override; + void initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) override; private: explicit ProcessJobModule(); diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index d5d5563c7..20f8215d2 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -62,15 +53,11 @@ PythonJobModule::jobs() const void -PythonJobModule::initFrom( const QVariantMap& moduleDescriptor ) +PythonJobModule::initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) { QDir directory( location() ); m_workingPath = directory.absolutePath(); - - if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) - { - m_scriptFileName = moduleDescriptor.value( "script" ).toString(); - } + m_scriptFileName = moduleDescriptor.script(); } @@ -80,7 +67,7 @@ PythonJobModule::PythonJobModule() } -PythonJobModule::~PythonJobModule() { } +PythonJobModule::~PythonJobModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index 85f25ab74..37634d6be 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -35,7 +26,7 @@ public: JobList jobs() const override; protected: - void initFrom( const QVariantMap& moduleDescriptor ) override; + void initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) override; private: explicit PythonJobModule(); diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index b94414d4a..ae2b2915f 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -188,6 +179,6 @@ PythonQtViewModule::PythonQtViewModule() { } -PythonQtViewModule::~PythonQtViewModule() { } +PythonQtViewModule::~PythonQtViewModule() {} } // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h index 64cc0f8a9..8267dd2cb 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.h +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 54a79ab66..32c05bdba 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -89,13 +80,12 @@ ViewModule::jobs() const void -ViewModule::initFrom( const QVariantMap& moduleDescriptor ) +ViewModule::initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) { QDir directory( location() ); - QString load; - if ( !moduleDescriptor.value( "load" ).toString().isEmpty() ) + QString load = moduleDescriptor.load(); + if ( !load.isEmpty() ) { - load = moduleDescriptor.value( "load" ).toString(); load = directory.absoluteFilePath( load ); } // If a load path is not specified, we look for a plugin to load in the directory. diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h index 1d24ca811..8e5eb44b4 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.h +++ b/src/libcalamaresui/modulesystem/ViewModule.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -42,7 +33,7 @@ public: RequirementsList checkRequirements() override; protected: - void initFrom( const QVariantMap& moduleDescriptor ) override; + void initFrom( const ModuleSystem::Descriptor& moduleDescriptor ) override; private: explicit ViewModule(); diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 680673a22..e16763a70 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 251741fad..aa7aff79b 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 ebe6858dd..ffc65300e 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -1,28 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 @@ -40,7 +23,7 @@ ImageRegistry::instance() } -ImageRegistry::ImageRegistry() { } +ImageRegistry::ImageRegistry() {} QIcon diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h index 5378d71e7..80bc25ff6 100644 --- a/src/libcalamaresui/utils/ImageRegistry.h +++ b/src/libcalamaresui/utils/ImageRegistry.h @@ -1,28 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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..8099d9024 100644 --- a/src/libcalamaresui/utils/Paste.cpp +++ b/src/libcalamaresui/utils/Paste.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 fd088882c..f802dfe2e 100644 --- a/src/libcalamaresui/utils/Paste.h +++ b/src/libcalamaresui/utils/Paste.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 3a60839a4..bc4e034f0 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.cpp +++ b/src/libcalamaresui/utils/PythonQtUtils.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 dc889b2d0..49f3bb1c4 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.h +++ b/src/libcalamaresui/utils/PythonQtUtils.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 4f53aa317..2cb13c803 100644 --- a/src/libcalamaresui/utils/Qml.cpp +++ b/src/libcalamaresui/utils/Qml.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -23,6 +14,7 @@ #include "JobQueue.h" #include "Settings.h" #include "ViewManager.h" +#include "network/Manager.h" #include "utils/Dirs.h" #include "utils/Logger.h" @@ -242,6 +234,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(); + } ); } } diff --git a/src/libcalamaresui/utils/Qml.h b/src/libcalamaresui/utils/Qml.h index a3fc6d114..2d6655e9e 100644 --- a/src/libcalamaresui/utils/Qml.h +++ b/src/libcalamaresui/utils/Qml.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 68eba5385..ea51e3f02 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -62,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/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h index ab44205ac..793241647 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.h +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2dd4b79df..fe90e1ec3 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -146,10 +137,24 @@ ExecutionViewStep::onActivate() { m_slideshow->changeSlideShowState( Slideshow::Start ); + const auto instanceDescriptors = Calamares::Settings::instance()->moduleInstances(); + JobQueue* queue = JobQueue::instance(); - foreach ( const QString& instanceKey, m_jobInstanceKeys ) + for ( const auto& instanceKey : m_jobInstanceKeys ) { + const auto& moduleDescriptor = Calamares::ModuleManager::instance()->moduleDescriptor( instanceKey ); Calamares::Module* module = Calamares::ModuleManager::instance()->moduleInstance( instanceKey ); + + const auto instanceDescriptor + = std::find_if( instanceDescriptors.constBegin(), + instanceDescriptors.constEnd(), + [=]( const Calamares::InstanceDescription& d ) { return d.key() == instanceKey; } ); + int weight = moduleDescriptor.weight(); + if ( instanceDescriptor != instanceDescriptors.constEnd() && instanceDescriptor->explicitWeight() ) + { + weight = instanceDescriptor->weight(); + } + weight = qBound( 1, weight, 100 ); if ( module ) { auto jl = module->jobs(); @@ -160,7 +165,7 @@ ExecutionViewStep::onActivate() j->setEmergency( true ); } } - queue->enqueue( jl ); + queue->enqueue( weight, jl ); } } @@ -176,7 +181,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..26618c77f 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.h +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.h @@ -1,26 +1,18 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define EXECUTIONVIEWSTEP_H #include "ViewStep.h" +#include "modulesystem/InstanceKey.h" #include @@ -57,7 +49,7 @@ public: JobList jobs() const override; - void appendJobModuleInstanceKey( const QString& instanceKey ); + void appendJobModuleInstanceKey( const ModuleSystem::InstanceKey& instanceKey ); private: QWidget* m_widget; @@ -65,7 +57,7 @@ private: QLabel* m_label; Slideshow* m_slideshow; - QStringList m_jobInstanceKeys; + QList< ModuleSystem::InstanceKey > m_jobInstanceKeys; void updateFromJobQueue( qreal percent, const QString& message ); }; diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp index ba7657b09..0d667a097 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 5ccc4e21d..5d1282d0f 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -40,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.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp index 0718df95d..d41c70f1f 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.cpp +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 bab073430..4d48921e1 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.h +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -44,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.cpp b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp index d16bd56f8..4cd72f8c0 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 96de6fe9c..e39249185 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -33,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/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 5e313ff98..29c65472f 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 5358bc824..b23a540b9 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.h +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 6318e47d8..17a1ea79c 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.cpp +++ b/src/libcalamaresui/viewpages/QmlViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -88,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/QmlViewStep.h b/src/libcalamaresui/viewpages/QmlViewStep.h index dc2af650d..7f04bea81 100644 --- a/src/libcalamaresui/viewpages/QmlViewStep.h +++ b/src/libcalamaresui/viewpages/QmlViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0c75dc390..268843421 100644 --- a/src/libcalamaresui/viewpages/Slideshow.cpp +++ b/src/libcalamaresui/viewpages/Slideshow.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -126,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 ); } } } @@ -151,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 f338d44e2..4432eed7b 100644 --- a/src/libcalamaresui/viewpages/Slideshow.h +++ b/src/libcalamaresui/viewpages/Slideshow.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -109,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; diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index ad86d06a4..26c7ee778 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -31,7 +22,7 @@ ViewStep::ViewStep( QObject* parent ) } -ViewStep::~ViewStep() { } +ViewStep::~ViewStep() {} QString diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h index 59f307af2..156975fc5 100644 --- a/src/libcalamaresui/viewpages/ViewStep.h +++ b/src/libcalamaresui/viewpages/ViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 8f2323fa4..be7b142f1 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -36,7 +27,7 @@ ClickableLabel::ClickableLabel( const QString& text, QWidget* parent ) } -ClickableLabel::~ClickableLabel() { } +ClickableLabel::~ClickableLabel() {} void diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h index f60a247ca..83ddb3d86 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.h +++ b/src/libcalamaresui/widgets/ClickableLabel.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 cf72c9924..195aad67e 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -26,7 +17,7 @@ FixedAspectRatioLabel::FixedAspectRatioLabel( QWidget* parent ) } -FixedAspectRatioLabel::~FixedAspectRatioLabel() { } +FixedAspectRatioLabel::~FixedAspectRatioLabel() {} void diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h index 9466fcd15..ded7ba602 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 1cf348315..b79f93a25 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.cpp +++ b/src/libcalamaresui/widgets/PrettyRadioButton.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9c7139526..6b158f353 100644 --- a/src/libcalamaresui/widgets/PrettyRadioButton.h +++ b/src/libcalamaresui/widgets/PrettyRadioButton.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -47,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/libcalamaresui/widgets/WaitingWidget.cpp b/src/libcalamaresui/widgets/WaitingWidget.cpp index 1a658b35b..aef5aecf5 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.cpp +++ b/src/libcalamaresui/widgets/WaitingWidget.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0d8b6fd5b..850b81ca9 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.h +++ b/src/libcalamaresui/widgets/WaitingWidget.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 d49a4c0c0..8e8c67848 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 @@ -67,9 +73,6 @@ foreach( _category ${_use_categories} ) endif() endforeach() -include( CalamaresAddTranslations ) -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 diff --git a/src/modules/README.md b/src/modules/README.md index ee6e378d2..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". @@ -46,9 +51,19 @@ Module descriptors **must** have the following keys: - *interface* (see below for the different interfaces; generally we refer to the kinds of modules by their interface) +Module descriptors for C++ modules **may** have the following key: +- *load* (the name of the shared library to load; if empty, uses a + standard library name derived from the module name) + Module descriptors for Python modules **must** have the following key: - *script* (the name of the Python script to load, nearly always `main.py`) +Module descriptors for process modules **must** have the following key: +- *command* (the command to run) +Module descriptors for process modules **may** have the following keys: +- *timeout* (how long, in seconds, to wait for the command to run) +- *chroot* (if true, run the command in the target system rather than the host) + Module descriptors **may** have the following keys: - *emergency* (a boolean value, set to true to mark the module as an emergency module) @@ -56,6 +71,8 @@ Module descriptors **may** have the following keys: has no configuration file; defaults to false) - *requiredModules* (a list of modules which are required for this module to operate properly) +- *weight* (a relative module weight, used to scale progress reporting) + ### Required Modules @@ -112,6 +129,40 @@ All sample module configuration files are installed in files with the same name placed manually (or by the packager) in `/etc/calamares/modules`. +### Module Weights + +During the *exec* phase of an installation, where jobs are run and +things happen to the target system, there is a running progress bar. +It goes from 0% to 100% while all of the jobs for that exec phase +are run. Generally, one module creates on job, but this varies a little +(e.g. the partition module can spawn a whole bunch of jobs to +deal with each disk, and the users module has separate jobs for +the regular user and the root user). + +By default, modules all "weigh" the same, and each job is equal. +A typical installation has about 30 modules in the exec phase, +so there may be 40 jobs or so: each job represents 2.5% of the +overall progress of the installation. + +The consequence is that the *unpackfs* module, which needs to write +a few hundred MB to disk, gets 2.5% of the progress, and the *machineid* +module, which is essentially instantaneous, also gets 2.5% of the progress. +This makes progress reporting seem weird and uneven, and suggests to users +that Calamares may be "hanging" during the unpackfs stage. + +A module may be assigned a different "weight" in the `module.desc` +file (or via the CMake macros for adding plugins). This gives the +module more space in the overall progress: for instance, the *unpackfs* +module now has a weight of 12, so (assuming there are 38 modules +in the exec phase with a weight of 1, and *unpackfs* with a weight of 12) +regular modules get 2% (1 in 50 total weight) of the overall progress +bar, and the *unpackfs* module gets 24% (12 in 50). While this doesn't +speed anything up, it does make the progress in the unpackfs module more +visible. + +It is also possible to set a weight on a specific module **instance**, +which can be done in `settings.conf`. This overrides any weight +set in the module descriptor. ## C++ modules diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 51337de9d..9f9ad84aa 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/bootloader.schema.yaml b/src/modules/bootloader/bootloader.schema.yaml index 4670ea3db..152d3ab72 100644 --- a/src/modules/bootloader/bootloader.schema.yaml +++ b/src/modules/bootloader/bootloader.schema.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/bootloader diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 87288b583..ec9a6f2e6 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -1,32 +1,23 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/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/contextualprocess/Binding.h b/src/modules/contextualprocess/Binding.h index 25b5c7547..fc9f65557 100644 --- a/src/modules/contextualprocess/Binding.h +++ b/src/modules/contextualprocess/Binding.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2df4cfe37..113b504db 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/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 1173a3071..8bc011127 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -77,7 +68,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..f84afb5f1 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.h +++ b/src/modules/contextualprocess/ContextualProcessJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 50ce9f400..aa51e1192 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 fd705a103..0aed1f4a5 100644 --- a/src/modules/contextualprocess/Tests.h +++ b/src/modules/contextualprocess/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/displaymanager.schema.yaml b/src/modules/displaymanager/displaymanager.schema.yaml index a16af732f..fc28fd66d 100644 --- a/src/modules/displaymanager/displaymanager.schema.yaml +++ b/src/modules/displaymanager/displaymanager.schema.yaml @@ -1,16 +1,22 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $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 } diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 1529aab17..a803e0d7a 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -1,28 +1,19 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/displaymanager/module.desc b/src/modules/displaymanager/module.desc index ad7ae4423..a58941879 100644 --- a/src/modules/displaymanager/module.desc +++ b/src/modules/displaymanager/module.desc @@ -1,6 +1,7 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "displaymanager" interface: "python" -requires: [] script: "main.py" diff --git a/src/modules/dracut/main.py b/src/modules/dracut/main.py index a929ac70b..392dd8a51 100644 --- a/src/modules/dracut/main.py +++ b/src/modules/dracut/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/dracutlukscfg/CMakeLists.txt b/src/modules/dracutlukscfg/CMakeLists.txt index 1a07b042d..dd9faf9d4 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/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp index e151acc0c..edd9b2948 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 52b290d1c..eb517b21d 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0841eaa2b..e199d5027 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/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index 5a2ca1803..5b2deffd1 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 bf8625950..2f267d511 100644 --- a/src/modules/dummycpp/DummyCppJob.h +++ b/src/modules/dummycpp/DummyCppJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/main.py b/src/modules/dummypython/main.py index 96de6030f..aa748006d 100644 --- a/src/modules/dummypython/main.py +++ b/src/modules/dummypython/main.py @@ -1,24 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/lang/ar/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 96b7a6c53..000000000 Binary files a/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 8192eb723..000000000 Binary files a/src/modules/dummypythonqt/lang/as/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 bbe53ce95..000000000 Binary files a/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 2a7ecc372..000000000 Binary files a/src/modules/dummypythonqt/lang/be/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 cbd832bc7..000000000 Binary files a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index a8045f8df..000000000 Binary files a/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 988a78d7e..000000000 Binary files a/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 b22984ed7..000000000 Binary files a/src/modules/dummypythonqt/lang/ca@valencia/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 c83734ac0..000000000 Binary files a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 1e836027f..000000000 Binary files a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 9af7a6614..000000000 Binary files a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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" diff --git a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 6f98c92cc..000000000 Binary files a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 283b865e9..000000000 Binary files a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 ad243b6ea..000000000 Binary files a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 5fcc8a7de..000000000 Binary files a/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 54ca84802..000000000 Binary files a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 db7159023..000000000 Binary files a/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 cdb2466fa..000000000 Binary files a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 43448bf58..000000000 Binary files a/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 19f444cdd..000000000 Binary files a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 fcc562306..000000000 Binary files a/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index b8d951621..000000000 Binary files a/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 17561fc31..000000000 Binary files a/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 33cbe602c..000000000 Binary files a/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index bd8794f5a..000000000 Binary files a/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 e6061d7c4..000000000 Binary files a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 9c22e2c82..000000000 Binary files a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 6d12c7ddc..000000000 Binary files a/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index afc284949..000000000 Binary files a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 faf378083..000000000 Binary files a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 b2f98c8d3..000000000 Binary files a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index c1989cc8f..000000000 Binary files a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 4d131a0f8..000000000 Binary files a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 bd70c8130..000000000 Binary files a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index fa0c9819a..000000000 Binary files a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 9f6a1c4e6..000000000 Binary files a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 61b880bb7..000000000 Binary files a/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index c42841514..000000000 Binary files a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 cdb444be0..000000000 Binary files a/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 bad77684e..000000000 Binary files a/src/modules/dummypythonqt/lang/mk/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 258ea94f6..000000000 Binary files a/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 48aca7e96..000000000 Binary files a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 549cfa6b5..000000000 Binary files a/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/ne_NP/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ne_NP/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 020b2e549..000000000 Binary files a/src/modules/dummypythonqt/lang/ne_NP/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 95b99b007..000000000 Binary files a/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index a0bf42817..000000000 Binary files a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 5ef78795b..000000000 Binary files a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 3845d3070..000000000 Binary files a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 b07421664..000000000 Binary files a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 931086b0d..000000000 Binary files a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index db7fccbbf..000000000 Binary files a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 763803202..000000000 Binary files a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 b7daa29f5..000000000 Binary files a/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 5c8099cd4..000000000 Binary files a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 9f59500bd..000000000 Binary files a/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index eb7d7d69d..000000000 Binary files a/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 502e4d130..000000000 Binary files a/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 9e62f7154..000000000 Binary files a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 6b860e05c..000000000 Binary files a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index e7588670d..000000000 Binary files a/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 4e1a2c34a..000000000 Binary files a/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo deleted file mode 100644 index 61ec39334..000000000 Binary files a/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo and /dev/null differ 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 f13ff2d5f..000000000 Binary files a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo and /dev/null differ diff --git a/src/modules/dummypythonqt/main.py b/src/modules/dummypythonqt/main.py index f830caf30..e33c20e6f 100644 --- a/src/modules/dummypythonqt/main.py +++ b/src/modules/dummypythonqt/main.py @@ -1,23 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/finished/CMakeLists.txt index 6482fb2cd..21eb1ad18 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/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index e2ad4a24f..23f09df99 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -100,7 +91,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..1df022f58 100644 --- a/src/modules/finished/FinishedPage.h +++ b/src/modules/finished/FinishedPage.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/finished/FinishedViewStep.cpp b/src/modules/finished/FinishedViewStep.cpp index 7e4cf1c6b..525108dc7 100644 --- a/src/modules/finished/FinishedViewStep.cpp +++ b/src/modules/finished/FinishedViewStep.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 8f57d0210..97d38b267 100644 --- a/src/modules/finished/FinishedViewStep.h +++ b/src/modules/finished/FinishedViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/finished/finished.schema.yaml b/src/modules/finished/finished.schema.yaml index 53189c7fa..380292d1b 100644 --- a/src/modules/finished/finished.schema.yaml +++ b/src/modules/finished/finished.schema.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/finished diff --git a/src/modules/fsresizer/CMakeLists.txt b/src/modules/fsresizer/CMakeLists.txt index 6808f1bea..7fdea1ff2 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/fsresizer/ResizeFSJob.cpp b/src/modules/fsresizer/ResizeFSJob.cpp index 217f1315e..9f2b440b8 100644 --- a/src/modules/fsresizer/ResizeFSJob.cpp +++ b/src/modules/fsresizer/ResizeFSJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -26,8 +17,8 @@ #include "utils/Units.h" #include "utils/Variant.h" -#include #include +#include #include #include @@ -46,9 +37,7 @@ ResizeFSJob::ResizeFSJob( QObject* parent ) } -ResizeFSJob::~ResizeFSJob() -{ -} +ResizeFSJob::~ResizeFSJob() {} QString @@ -62,7 +51,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 +60,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 +94,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 +169,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 +182,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 +222,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 +239,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 +248,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..5c9c961a5 100644 --- a/src/modules/fsresizer/ResizeFSJob.h +++ b/src/modules/fsresizer/ResizeFSJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -51,26 +42,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 +58,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 +68,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..7cd60ee9e 100644 --- a/src/modules/fsresizer/Tests.cpp +++ b/src/modules/fsresizer/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -36,20 +27,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 +60,8 @@ atleast: 600MiB QCOMPARE( j.minimumSize().value(), 0 ); } -void FSResizerTests::testConfigurationValues() +void +FSResizerTests::testConfigurationValues() { ResizeFSJob j; @@ -84,7 +73,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 +88,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 +102,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 +117,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..f3d2308ec 100644 --- a/src/modules/fsresizer/Tests.h +++ b/src/modules/fsresizer/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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 db66488ac..a14165e15 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/fstab.schema.yaml b/src/modules/fstab/fstab.schema.yaml index 1c2bf459c..fc68fd2c5 100644 --- a/src/modules/fstab/fstab.schema.yaml +++ b/src/modules/fstab/fstab.schema.yaml @@ -1,19 +1,27 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/fstab additionalProperties: false type: object properties: - "mountOptions": - type: map - mapping: - "default": { type: string, required: true } - "btrfs": { type: string, required: true } - "ssdExtraMountOptions": - type: map - mapping: - "ext4": { type: string, required: true } - "jfs": { type: string, required: true } - "xfs": { type: string, required: true } - "swap": { type: string, required: true } - "btrfs": { type: string, required: true } + mountOptions: + type: object + additionalProperties: true # we don't know which FS exist + properties: + default: { type: string } + btrfs: { type: string } + required: [ default ] + ssdExtraMountOptions: + type: object + additionalProperties: true # we don't know which FS exist + properties: + ext4: { type: string } + jfs: { type: string } + xfs: { type: string } + swap: { type: string } + btrfs: { type: string } + efiMountOptions: { type: string } + crypttabOptions: { type: string } +required: [ mountOptions ] diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index c58e8eb11..26c357945 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/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/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index ba31d6070..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 @@ -17,6 +20,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 10aa34c2b..f1bf2cc03 100644 --- a/src/modules/grubcfg/grubcfg.schema.yaml +++ b/src/modules/grubcfg/grubcfg.schema.yaml @@ -1,15 +1,21 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $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 } + keepDistributor: { type: boolean, default: false } + prefer_grub_d: { 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 ] diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 040e823f0..96a2f55af 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -1,26 +1,17 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # -# Copyright 2014-2019, 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,2019 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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 @@ -37,6 +28,33 @@ def pretty_name(): return _("Configure GRUB.") +def get_grub_config_path(root_mount_point): + """ + Figures out where to put the grub config files. Returns + 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_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): + 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) + + def modify_grub_default(partitions, root_mount_point, distributor): """ Configures '/etc/default/grub' for hibernation and plymouth. @@ -54,8 +72,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_grub = get_grub_config_path(root_mount_point) distributor_replace = distributor.replace("'", "'\\''") dracut_bin = libcalamares.utils.target_env_call( ["sh", "-c", "which dracut"] @@ -149,9 +166,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 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/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 83e79db28..31c6f1166 100644 --- a/src/modules/grubcfg/tests/2.global +++ b/src/modules/grubcfg/tests/2.global @@ -1,8 +1,10 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- 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/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 new file mode 100644 index 000000000..f9e1e6954 --- /dev/null +++ b/src/modules/grubcfg/tests/3.global @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +--- +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..7d579839c --- /dev/null +++ b/src/modules/grubcfg/tests/3.job @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +--- +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..1e8d37fc6 --- /dev/null +++ b/src/modules/grubcfg/tests/4.global @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +--- +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..58fd8bcb7 --- /dev/null +++ b/src/modules/grubcfg/tests/4.job @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +--- +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..54a0721e4 100644 --- a/src/modules/grubcfg/tests/CMakeTests.txt +++ b/src/modules/grubcfg/tests/CMakeTests.txt @@ -1,12 +1,19 @@ +# 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 # 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) + diff --git a/src/modules/hostinfo/CMakeLists.txt b/src/modules/hostinfo/CMakeLists.txt index 3d6e0973f..cdf5857e6 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/hostinfo/HostInfoJob.cpp b/src/modules/hostinfo/HostInfoJob.cpp index c2959fb6b..0be419978 100644 --- a/src/modules/hostinfo/HostInfoJob.cpp +++ b/src/modules/hostinfo/HostInfoJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -113,6 +104,38 @@ hostCPU_FreeBSD() #endif #if defined( Q_OS_LINUX ) +static QString +hostCPUmatchARM( const QString& s ) +{ + /* The "CPU implementer" line is for ARM CPUs in general. + * + * The specific value given distinguishes *which designer* + * (or architecture licensee, who cares) produced the current + * silicon. For instance, a list from lscpu-arm.c (Linux kernel) + * shows this: + * + static const struct hw_impl hw_implementer[] = { + { 0x41, arm_part, "ARM" }, + { 0x42, brcm_part, "Broadcom" }, + { 0x43, cavium_part, "Cavium" }, + { 0x44, dec_part, "DEC" }, + { 0x48, hisi_part, "HiSilicon" }, + { 0x4e, nvidia_part, "Nvidia" }, + { 0x50, apm_part, "APM" }, + { 0x51, qcom_part, "Qualcomm" }, + { 0x53, samsung_part, "Samsung" }, + { 0x56, marvell_part, "Marvell" }, + { 0x66, faraday_part, "Faraday" }, + { 0x69, intel_part, "Intel" }, + { -1, unknown_part, "unknown" }, + }; + * + * Since the specific implementor isn't interesting, just + * map everything to "ARM". + */ + return QStringLiteral( "ARM" ); +} + QString hostCPU_Linux() { @@ -127,6 +150,10 @@ hostCPU_Linux() { return hostCPUmatch( line ); } + if ( line.startsWith( "CPU implementer" ) ) + { + return hostCPUmatchARM( line ); + } } } return QString(); // Not open, or not found diff --git a/src/modules/hostinfo/HostInfoJob.h b/src/modules/hostinfo/HostInfoJob.h index 5db169b0e..d9b450ac4 100644 --- a/src/modules/hostinfo/HostInfoJob.h +++ b/src/modules/hostinfo/HostInfoJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 8241ef022..724340269 100644 --- a/src/modules/hostinfo/Tests.cpp +++ b/src/modules/hostinfo/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -59,7 +50,33 @@ 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 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 ) ); + } + } } diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index f18cf12a9..be9fabf5f 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -1,26 +1,17 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/hwclock/module.desc b/src/modules/hwclock/module.desc index 47d1b6c14..d13435b3c 100644 --- a/src/modules/hwclock/module.desc +++ b/src/modules/hwclock/module.desc @@ -1,7 +1,8 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "hwclock" interface: "python" -requires: [] script: "main.py" noconfig: true diff --git a/src/modules/initcpio/CMakeLists.txt b/src/modules/initcpio/CMakeLists.txt index 5140c97e0..e8d90e7fa 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/initcpio/InitcpioJob.cpp b/src/modules/initcpio/InitcpioJob.cpp index 38f3a8961..b96f3b316 100644 --- a/src/modules/initcpio/InitcpioJob.cpp +++ b/src/modules/initcpio/InitcpioJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -88,8 +79,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..45421ea05 100644 --- a/src/modules/initcpio/InitcpioJob.h +++ b/src/modules/initcpio/InitcpioJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e0590ba25..bff163b5f 100644 --- a/src/modules/initcpio/Tests.cpp +++ b/src/modules/initcpio/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -31,23 +22,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 +44,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..aac48d0c4 100644 --- a/src/modules/initcpio/Tests.h +++ b/src/modules/initcpio/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/initcpio/initcpio.schema.yaml b/src/modules/initcpio/initcpio.schema.yaml index db81ba68e..2024182bf 100644 --- a/src/modules/initcpio/initcpio.schema.yaml +++ b/src/modules/initcpio/initcpio.schema.yaml @@ -1,7 +1,11 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/initcpio additionalProperties: false type: object properties: - kernel: { type: string, required: true } + kernel: { type: string } + be_unsafe: { type: boolean, default: false } +required: [ kernel ] diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index b3c43ea0b..7a94a8acc 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/initramfs/CMakeLists.txt index b3287c896..b8bcc9681 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/initramfs/InitramfsJob.cpp b/src/modules/initramfs/InitramfsJob.cpp index 468047c45..1b10a1a05 100644 --- a/src/modules/initramfs/InitramfsJob.cpp +++ b/src/modules/initramfs/InitramfsJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -78,8 +69,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..7b3a03911 100644 --- a/src/modules/initramfs/InitramfsJob.h +++ b/src/modules/initramfs/InitramfsJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2a236e64b..f1c9b5e24 100644 --- a/src/modules/initramfs/Tests.cpp +++ b/src/modules/initramfs/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -33,32 +24,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 +68,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..377424589 100644 --- a/src/modules/initramfs/Tests.h +++ b/src/modules/initramfs/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/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/initramfscfg/main.py b/src/modules/initramfscfg/main.py index 52d512567..974e2634d 100644 --- a/src/modules/initramfscfg/main.py +++ b/src/modules/initramfscfg/main.py @@ -1,27 +1,18 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index 5eff610d5..fea99a5dd 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/interactiveterminal/InteractiveTerminalPage.cpp b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp index 5b2f81bfa..ea4e3b42e 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.cpp @@ -1,31 +1,22 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#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 +40,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 +60,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 +88,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 +99,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..86ba075ad 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalPage.h +++ b/src/modules/interactiveterminal/InteractiveTerminalPage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -43,4 +34,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..b01321c18 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -24,7 +15,8 @@ #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( InteractiveTerminalViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( InteractiveTerminalViewStepFactory, + registerPlugin< InteractiveTerminalViewStep >(); ) InteractiveTerminalViewStep::InteractiveTerminalViewStep( QObject* parent ) : Calamares::ViewStep( parent ) @@ -37,7 +29,9 @@ InteractiveTerminalViewStep::InteractiveTerminalViewStep( QObject* parent ) InteractiveTerminalViewStep::~InteractiveTerminalViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -102,8 +96,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..f01a19ee6 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -60,4 +51,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( InteractiveTerminalViewStepFactory ) -#endif // INTERACTIVETERMINALPAGEPLUGIN_H +#endif // INTERACTIVETERMINALPAGEPLUGIN_H 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/CMakeLists.txt b/src/modules/keyboard/CMakeLists.txt index c0d8575c6..4ee83ec14 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/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index 64b253835..11a20bbb7 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 a05a5ab86..44a893faa 100644 --- a/src/modules/keyboard/Config.h +++ b/src/modules/keyboard/Config.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7e24df570..5b92678f6 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.cpp +++ b/src/modules/keyboard/KeyboardLayoutModel.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e0007fdbc..f4699c9f8 100644 --- a/src/modules/keyboard/KeyboardLayoutModel.h +++ b/src/modules/keyboard/KeyboardLayoutModel.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e8997b915..66f4c7570 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,24 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 1ce21787c..485e27ed6 100644 --- a/src/modules/keyboard/KeyboardPage.h +++ b/src/modules/keyboard/KeyboardPage.h @@ -1,24 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 * 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/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/keyboard/KeyboardViewStep.cpp b/src/modules/keyboard/KeyboardViewStep.cpp index e6e89eb1c..55402fd14 100644 --- a/src/modules/keyboard/KeyboardViewStep.cpp +++ b/src/modules/keyboard/KeyboardViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 208d50686..5d4882aca 100644 --- a/src/modules/keyboard/KeyboardViewStep.h +++ b/src/modules/keyboard/KeyboardViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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..d0ad8fcbf 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -1,25 +1,18 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 599642b19..f1eabe195 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.h +++ b/src/modules/keyboard/SetKeyboardLayoutJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/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/keyboard/keyboard.schema.yaml b/src/modules/keyboard/keyboard.schema.yaml index 33175b84d..08a2ababe 100644 --- a/src/modules/keyboard/keyboard.schema.yaml +++ b/src/modules/keyboard/keyboard.schema.yaml @@ -1,8 +1,12 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/finished -additionalProperties: keyboard +additionalProperties: false type: object properties: - xOrgConfFileName: { type: string, required: true } - convertedKeymapPath: { type: string, required: true } + xOrgConfFileName: { type: string } + convertedKeymapPath: { type: string } + writeEtcDefaultKeyboard: { type: boolean, default: true } +required: [ xOrgConfFileName, convertedKeymapPath ] diff --git a/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp b/src/modules/keyboard/keyboardwidget/keyboardglobal.cpp index f363ea844..329913d79 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 - === +/* === 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 @@ -9,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" @@ -43,18 +35,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 +71,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 +86,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 +98,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 +121,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 +150,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 +181,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..07c6e5ea2 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardglobal.h +++ b/src/modules/keyboard/keyboardwidget/keyboardglobal.h @@ -1,44 +1,37 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 #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 +43,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..572965de5 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -1,24 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 * 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" @@ -33,96 +25,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 +153,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..1a01fe1a2 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.h +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.h @@ -1,39 +1,31 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 #define KEYBOARDPREVIEW_H -#include -#include +#include #include #include -#include #include -#include +#include #include #include +#include #include #include +#include class KeyBoardPreview : public QWidget @@ -41,40 +33,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/CMakeLists.txt b/src/modules/keyboardq/CMakeLists.txt index 729748a7f..cc1e7e2c3 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/keyboardq/KeyboardQmlViewStep.cpp b/src/modules/keyboardq/KeyboardQmlViewStep.cpp index 783349075..d42ab5269 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.cpp +++ b/src/modules/keyboardq/KeyboardQmlViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 22826f2cd..4571a9a60 100644 --- a/src/modules/keyboardq/KeyboardQmlViewStep.h +++ b/src/modules/keyboardq/KeyboardQmlViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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 eb160afab..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: Kirigami.Theme.backgroundColor - radius: 5 - opacity: 0.7 - } -} diff --git a/src/modules/keyboardq/ResponsiveBase.qml b/src/modules/keyboardq/ResponsiveBase.qml deleted file mode 100644 index c9f5c7091..000000000 --- a/src/modules/keyboardq/ResponsiveBase.qml +++ /dev/null @@ -1,116 +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: "#333" - - property string subtitle - property string message - - 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 - - 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: "white" - 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: "white" - 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: "white" - 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/keyboard.jpg b/src/modules/keyboardq/keyboard.jpg deleted file mode 100644 index 9c0600fac..000000000 Binary files a/src/modules/keyboardq/keyboard.jpg and /dev/null differ 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/keyboardq/keyboardq.qml b/src/modules/keyboardq/keyboardq.qml index 7474fbdd1..8f8bf05d1 100644 --- a/src/modules/keyboardq/keyboardq.qml +++ b/src/modules/keyboardq/keyboardq.qml @@ -1,195 +1,404 @@ +/* === 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 + 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: control.Kirigami.Theme.backgroundColor - radius: 5 - opacity: 0.8 + color: "#BDC3C7" + radius: 2 + opacity: 0.3 } } } diff --git a/src/modules/keyboardq/keyboardq.qrc b/src/modules/keyboardq/keyboardq.qrc index 69fdb715f..492f6e213 100644 --- a/src/modules/keyboardq/keyboardq.qrc +++ b/src/modules/keyboardq/keyboardq.qrc @@ -3,9 +3,5 @@ ../keyboard/kbd-model-map ../keyboard/images/restore.png keyboardq.qml - ListItemDelegate.qml - ListViewTemplate.qml - ResponsiveBase.qml - keyboard.jpg diff --git a/src/modules/license/CMakeLists.txt b/src/modules/license/CMakeLists.txt index 164233b3b..baaf34b43 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/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index f2b1f4a50..1a92e9ac1 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 dcd3ea7b4..73a62defa 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/license/LicenseViewStep.cpp b/src/modules/license/LicenseViewStep.cpp index 89cddf27f..aca04a1b3 100644 --- a/src/modules/license/LicenseViewStep.cpp +++ b/src/modules/license/LicenseViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 6bfab4246..15e345221 100644 --- a/src/modules/license/LicenseViewStep.h +++ b/src/modules/license/LicenseViewStep.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 09d2230e5..b2e66515d 100644 --- a/src/modules/license/LicenseWidget.cpp +++ b/src/modules/license/LicenseWidget.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 a386ae353..2d810e80a 100644 --- a/src/modules/license/LicenseWidget.h +++ b/src/modules/license/LicenseWidget.h @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/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/license/license.schema.yaml b/src/modules/license/license.schema.yaml index 62bd07035..d933ac15a 100644 --- a/src/modules/license/license.schema.yaml +++ b/src/modules/license/license.schema.yaml @@ -1,17 +1,21 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/license additionalProperties: false type: object properties: - "entries": - type: seq - sequence: - - type: map - mapping: - "id": { type: str } - "name": { type: str } - "vendor": { type: str } - "type": { type: str } - "url": { type: str } - "required": { type: boolean, default: false } + entries: + type: array + items: + type: object + additionalProperties: false + properties: + id: { type: string } + name: { type: string } + vendor: { type: string } + type: { type: string } + url: { type: string } + required: { type: boolean, default: false } + expand: { type: boolean, default: false } diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index a09bde282..3802f92b2 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. @@ -36,7 +42,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 cde0a5e09..1417e5b89 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -1,103 +1,52 @@ -/* === This file is part of Calamares - === +/* === 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 * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 "LCLocaleDialog.h" #include "SetTimezoneJob.h" -#include "timezonewidget/timezonewidget.h" #include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" - +#include "locale/Global.h" #include "locale/Label.h" -#include "locale/TimeZone.h" -#include "utils/CalamaresUtilsGui.h" +#include "modulesystem/ModuleManager.h" +#include "network/Manager.h" #include "utils/Logger.h" -#include "utils/Retranslator.h" +#include "utils/Variant.h" -#include #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 ) +/** @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 ) { - 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; -} - -void -Config::setLocaleInfo( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ) -{ - 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" ) ); - } + 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 - m_localeGenLines.clear(); + localeGenLines.clear(); QFile supported( "/usr/share/i18n/SUPPORTED" ); QByteArray ba; @@ -109,7 +58,7 @@ Config::setLocaleInfo( const QString& initialRegion, const QString& initialZone, const auto lines = ba.split( '\n' ); for ( const QByteArray& line : lines ) { - m_localeGenLines.append( QString::fromLatin1( line.simplified() ) ); + localeGenLines.append( QString::fromLatin1( line.simplified() ) ); } } else @@ -150,11 +99,11 @@ Config::setLocaleInfo( const QString& initialRegion, const QString& initialZone, continue; } - m_localeGenLines.append( lineString ); + localeGenLines.append( lineString ); } } - if ( m_localeGenLines.isEmpty() ) + if ( localeGenLines.isEmpty() ) { cWarning() << "cannot acquire a list of available locales." << "The locale and localecfg modules will be broken as long as this " @@ -164,168 +113,433 @@ Config::setLocaleInfo( const QString& initialRegion, const QString& initialZone, << "* 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. + 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. - 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; - } - } + 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. - for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ++it ) - { - if ( it->endsWith( " UTF-8" ) ) + // Also simplify whitespace. + auto unredundant = []( QString& s ) { + if ( s.endsWith( " UTF-8" ) ) { - it->chop( 6 ); + s.chop( 6 ); } - *it = it->simplified(); + s = s.simplified(); + }; + std::for_each( localeGenLines.begin(), localeGenLines.end(), unredundant ); + + 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 ) +{ + CalamaresUtils::Locale::insertGS( *gs, locale.toMap(), CalamaresUtils::Locale::InsertMode::Overwrite ); +} + +Config::Config( QObject* parent ) + : QObject( parent ) + , 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 + // 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::currentLanguageCodeChanged, [&]() { + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + gs->insert( "locale", m_selectedLocaleConfiguration.toBcp47() ); + } ); + + connect( this, &Config::currentLCCodeChanged, [&]() { + updateGSLocale( Calamares::JobQueue::instance()->globalStorage(), localeConfiguration() ); + } ); + + connect( this, &Config::currentLocationChanged, [&]() { + const bool locationChanged + = updateGSLocation( Calamares::JobQueue::instance()->globalStorage(), currentLocation() ); + + if ( locationChanged && m_adjustLiveTimezone ) + { + QProcess::execute( "timedatectl", // depends on systemd + { "set-timezone", currentTimezoneCode() } ); + } + + emit currentTimezoneCodeChanged( currentTimezoneCode() ); + emit currentTimezoneNameChanged( currentTimezoneName() ); + } ); + + auto prettyStatusNotify = [&]() { emit prettyStatusChanged( prettyStatus() ); }; + connect( this, &Config::currentLanguageStatusChanged, prettyStatusNotify ); + connect( this, &Config::currentLCStatusChanged, prettyStatusNotify ); + connect( this, &Config::currentLocationStatusChanged, prettyStatusNotify ); +} + +Config::~Config() {} + +void +Config::setCurrentLocation() +{ + if ( !m_currentLocation && m_startingTimezone.isValid() ) + { + setCurrentLocation( m_startingTimezone.first, m_startingTimezone.second ); } - updateGlobalStorage(); - updateLocaleLabels(); } void -Config::updateGlobalLocale() +Config::setCurrentLocation( const QString& regionzone ) { - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); - gs->insert( "locale", bcp47 ); + auto r = CalamaresUtils::GeoIP::splitTZString( regionzone ); + if ( r.isValid() ) + { + setCurrentLocation( r.first, r.second ); + } } void -Config::updateGlobalStorage() +Config::setCurrentLocation( const QString& regionName, const QString& zoneName ) { - 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 ) + using namespace CalamaresUtils::Locale; + auto* zone = m_zonesModel->find( regionName, zoneName ); + if ( zone ) { - cDebug() << "Location changed" << gs->value( "locationRegion" ) << ',' << gs->value( "locationZone" ) << "to" - << location->region() << ',' << location->zone(); + setCurrentLocation( 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() ) + else { - QProcess::execute( "timedatectl", // depends on systemd - { "set-timezone", location->region() + '/' + location->zone() } ); + // Recursive, but America/New_York always exists. + setCurrentLocation( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); } -#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() +Config::setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* location ) { - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; - auto labels = prettyLocaleStatus( lc ); - emit prettyStatusChanged(); -} + 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() ); + emit currentLanguageStatusChanged( currentLanguageStatus() ); + } + 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; - -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; + emit currentLCStatusChanged( currentLCStatus() ); + } + emit currentLocationChanged( m_currentLocation ); + // Other signals come from the LocationChanged signal + } } LocaleConfiguration -Config::guessLocaleConfiguration() const +Config::automaticLocaleConfiguration() const { + // Special case: no location has been set at **all** + if ( !currentLocation() ) + { + return LocaleConfiguration(); + } return LocaleConfiguration::fromLanguageAndLocation( - QLocale().name(), m_localeGenLines, currentLocation() ? currentLocation()->country() : "" ); + QLocale().name(), supportedLocales(), currentLocation()->country() ); } -QMap< QString, QString > -Config::localesMap() +LocaleConfiguration +Config::localeConfiguration() const { - return m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().toMap() - : m_selectedLocaleConfiguration.toMap(); + return m_selectedLocaleConfiguration.isEmpty() ? automaticLocaleConfiguration() : m_selectedLocaleConfiguration; +} + +void +Config::setLanguageExplicitly( const QString& language ) +{ + m_selectedLocaleConfiguration.setLanguage( language ); + m_selectedLocaleConfiguration.explicit_lang = true; + + emit currentLanguageStatusChanged( currentLanguageStatus() ); + emit currentLanguageCodeChanged( currentLanguageCode() ); +} + +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; + + emit currentLCStatusChanged( currentLCStatus() ); + emit currentLCCodeChanged( currentLCCode() ); +} + +QString +Config::currentLocationStatus() const +{ + return tr( "Set timezone to %1/%2." ) + .arg( m_currentLocation ? m_currentLocation->region() : QString(), + 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 ) +{ + using CalamaresUtils::Locale::Label; + + 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 ) ); } 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; + QStringList l { currentLocationStatus(), currentLanguageStatus(), currentLCStatus() }; + return l.join( QStringLiteral( "
" ) ); } - -const CalamaresUtils::Locale::TZZone* -Config::currentLocation() const +static inline void +getLocaleGenLines( const QVariantMap& configurationMap, QStringList& localeGenLines ) { - return static_cast< const CalamaresUtils::Locale::TZZone* >( m_zonesModel->item( m_zonesModel->currentIndex() ) ); + QString localeGenPath = CalamaresUtils::getString( configurationMap, "localeGenPath" ); + if ( localeGenPath.isEmpty() ) + { + localeGenPath = QStringLiteral( "/etc/locale.gen" ); + } + localeGenLines = loadLocales( localeGenPath ); +} + +static inline void +getAdjustLiveTimezone( const QVariantMap& configurationMap, bool& adjustLiveTimezone ) +{ + adjustLiveTimezone = CalamaresUtils::getBool( + configurationMap, "adjustLiveTimezone", Calamares::Settings::instance()->doChroot() ); +#ifdef DEBUG_TIMEZONES + if ( adjustLiveTimezone ) + { + cWarning() << "Turning off live-timezone adjustments because debugging is on."; + adjustLiveTimezone = false; + } +#endif +#ifdef __FreeBSD__ + if ( adjustLiveTimezone ) + { + cWarning() << "Turning off live-timezone adjustments on FreeBSD."; + 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() ) + { + startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( region, zone ); + } + else + { + 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() ) + { + 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 ); + +#ifndef BUILD_AS_TEST + if ( m_geoip && m_geoip->isValid() ) + { + connect( + Calamares::ModuleManager::instance(), &Calamares::ModuleManager::modulesLoaded, this, &Config::startGeoIP ); + } +#endif +} + +Calamares::JobList +Config::createJobs() +{ + Calamares::JobList list; + const auto* location = currentLocation(); + + if ( location ) + { + Calamares::Job* j = new SetTimezoneJob( location->region(), location->zone() ); + list.append( Calamares::job_ptr( j ) ); + } + + return list; +} + +void +Config::finalizeGlobalStorage() const +{ + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + updateGSLocale( gs, localeConfiguration() ); + updateGSLocation( gs, currentLocation() ); +} + + +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 cfbed7bae..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 - === * - * Copyright 2019-2020, Adriaan de Groot - * Copyright 2020, Camilo Higuita + * 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 @@ -23,9 +13,11 @@ #include "LocaleConfiguration.h" #include "Job.h" +#include "geoip/Handler.h" +#include "geoip/Interface.h" #include "locale/TimeZone.h" -#include +#include #include #include @@ -33,53 +25,163 @@ 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( const QStringList& supportedLocales READ supportedLocales 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( + CalamaresUtils::Locale::TimeZoneData* currentLocation READ currentLocation_c 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 ) + // 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 ) + + // 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(); - CalamaresUtils::Locale::CStringListModel* regionModel() const; - CalamaresUtils::Locale::CStringListModel* zonesModel() const; - - void setLocaleInfo( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ); + void setConfigurationMap( const QVariantMap& ); + void finalizeGlobalStorage() const; Calamares::JobList createJobs(); - QMap< QString, QString > localesMap(); + + /// 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; + + /// 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; } + // 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(); + private: - CalamaresUtils::Locale::CStringPairList m_regionList; - CalamaresUtils::Locale::CStringListModel* m_regionModel; - CalamaresUtils::Locale::CStringListModel* m_zonesModel; + CalamaresUtils::Locale::TimeZoneData* currentLocation_c() const + { + return const_cast< CalamaresUtils::Locale::TimeZoneData* >( m_currentLocation ); + } - LocaleConfiguration m_selectedLocaleConfiguration; +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 ); - 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. + /** @brief Sets a location by full name * - * This uses whatever is set in m_selectedLocaleConfiguration as the language, - * and writes it to GS *locale* key (as a string, in BCP47 format). + * @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 updateGlobalLocale(); - void updateGlobalStorage(); - void updateLocaleLabels(); + 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. + */ + void setCurrentLocation( const QString& region, const QString& zone ); - const CalamaresUtils::Locale::TZZone* currentLocation() const; + /** @brief Sets a location by pointer to zone data. + * + */ + void setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* tz ); + + QString currentLanguageCode() const { return localeConfiguration().language(); } + QString currentLCCode() const { return localeConfiguration().lc_numeric; } + QString currentTimezoneName() const; // human-readable + QString currentTimezoneCode() const; signals: - void prettyStatusChanged(); + void currentLocationChanged( const CalamaresUtils::Locale::TimeZoneData* location ) const; + 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; + void currentTimezoneCodeChanged( const QString& ) const; + void currentTimezoneNameChanged( const QString& ) const; + +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::RegionsModel > m_regionModel; + std::unique_ptr< CalamaresUtils::Locale::ZonesModel > m_zonesModel; + std::unique_ptr< CalamaresUtils::Locale::RegionalZonesModel > m_regionalZonesModel; + + const CalamaresUtils::Locale::TimeZoneData* 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; + + /** @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; + + /** @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; + + // 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/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index db33f0c3d..efa85c536 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 81e4cb547..2d1869a62 100644 --- a/src/modules/locale/LCLocaleDialog.h +++ b/src/modules/locale/LCLocaleDialog.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f1810fb83..c208dc02d 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -37,7 +28,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 +74,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..acd80953c 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -26,36 +17,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; diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 53d97ea02..7a6ed8b15 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,55 +1,39 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#include "SetTimezoneJob.h" +#include "Config.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" #include "utils/Retranslator.h" #include #include -#include #include -#include +#include #include -LocalePage::LocalePage( QWidget* parent ) +LocalePage::LocalePage( Config* config, QWidget* parent ) : QWidget( parent ) - , m_regionList( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) - , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( m_regionList ) ) + , m_config( config ) , m_blockTzWidgetSet( false ) { QBoxLayout* mainLayout = new QVBoxLayout; QBoxLayout* tzwLayout = new QHBoxLayout; - m_tzWidget = new TimeZoneWidget( this ); + m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this ); tzwLayout->addStretch(); tzwLayout->addWidget( m_tzWidget ); tzwLayout->addStretch(); @@ -105,9 +89,25 @@ LocalePage::LocalePage( 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() ); + m_zoneCombo->setModel( m_config->regionalZonesModel() ); + 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 ); + connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged ); + connect( m_tzWidget, + &TimeZoneWidget::locationChanged, + config, + 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 ); - connect( m_tzWidget, &TimeZoneWidget::locationChanged, this, &LocalePage::locationChanged ); + connect( m_localeChangeButton, &QPushButton::clicked, this, &LocalePage::changeLocale ); connect( m_formatsChangeButton, &QPushButton::clicked, this, &LocalePage::changeFormats ); @@ -115,10 +115,7 @@ LocalePage::LocalePage( QWidget* parent ) } -LocalePage::~LocalePage() -{ - qDeleteAll( m_regionList ); -} +LocalePage::~LocalePage() {} void @@ -128,175 +125,8 @@ LocalePage::updateLocaleLabels() m_zoneLabel->setText( tr( "Zone:" ) ); m_localeChangeButton->setText( tr( "&Change..." ) ); m_formatsChangeButton->setText( tr( "&Change..." ) ); - - LocaleConfiguration lc - = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; - auto labels = prettyLocaleStatus( lc ); - m_localeLabel->setText( labels.first ); - m_formatsLabel->setText( labels.second ); -} - -void -LocalePage::init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ) -{ - using namespace CalamaresUtils::Locale; - - m_regionCombo->setModel( m_regionModel.get() ); - m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - - auto* region = m_regionList.find< TZRegion >( initialRegion ); - if ( region && region->zones().find< TZZone >( initialZone ) ) - { - m_tzWidget->setCurrentLocation( initialRegion, initialZone ); - } - else - { - 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(); -} - -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_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; - auto labels = prettyLocaleStatus( lc ); - status += labels.first + "
"; - status += labels.second + "
"; - - return status; -} - - -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() -{ - return m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().toMap() - : m_selectedLocaleConfiguration.toMap(); + m_localeLabel->setText( m_config->currentLanguageStatus() ); + m_formatsLabel->setText( m_config->currentLCStatus() ); } @@ -304,117 +134,41 @@ 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_localeGenLines, m_tzWidget->currentLocation()->country() ); -} - - -void -LocalePage::updateGlobalLocale() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); - gs->insert( "locale", bcp47 ); -} - - -void -LocalePage::updateGlobalStorage() -{ - auto* gs = Calamares::JobQueue::instance()->globalStorage(); - - const auto* location = m_tzWidget->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 - - // 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 LocalePage::regionChanged( int currentIndex ) { using namespace CalamaresUtils::Locale; - Q_UNUSED( currentIndex ) - QString selectedRegion = m_regionCombo->currentData().toString(); - - TZRegion* region = m_regionList.find< TZRegion >( selectedRegion ); - if ( !region ) + QString selectedRegion = m_regionCombo->itemData( currentIndex ).toString(); { - return; + cSignalBlocker z( m_zoneCombo ); + m_config->regionalZonesModel()->setRegion( selectedRegion ); } - - m_zoneCombo->blockSignals( true ); - m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); - m_zoneCombo->blockSignals( false ); - m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); + m_zoneCombo->currentIndexChanged( 0 ); } void LocalePage::zoneChanged( int currentIndex ) { - Q_UNUSED( currentIndex ) if ( !m_blockTzWidgetSet ) - m_tzWidget->setCurrentLocation( m_regionCombo->currentData().toString(), - m_zoneCombo->currentData().toString() ); - - updateGlobalStorage(); + { + 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 ) { - m_blockTzWidgetSet = true; + if ( !location ) + { + return; + } + cBoolSetter< true > b( m_blockTzWidgetSet ); // Set region index int index = m_regionCombo->findData( location->region() ); @@ -433,58 +187,35 @@ LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) } m_zoneCombo->setCurrentIndex( index ); - - m_blockTzWidgetSet = false; - - updateGlobalStorage(); } void LocalePage::changeLocale() { - LCLocaleDialog* dlg - = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().language() - : m_selectedLocaleConfiguration.language(), - m_localeGenLines, - 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_selectedLocaleConfiguration.setLanguage( dlg->selectedLCLocale() ); - m_selectedLocaleConfiguration.explicit_lang = true; - this->updateGlobalLocale(); - this->updateLocaleLabels(); + m_config->setLanguageExplicitly( dlg->selectedLCLocale() ); + updateLocaleLabels(); } - dlg->deleteLater(); + delete dlg; } void LocalePage::changeFormats() { - LCLocaleDialog* dlg - = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().lc_numeric - : m_selectedLocaleConfiguration.lc_numeric, - m_localeGenLines, - 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() ) { - // 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(); + delete dlg; } diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index f31d81fb6..c8b80e906 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -32,51 +23,31 @@ 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 ); - - QString prettyStatus() const; - - Calamares::JobList createJobs(); - - QMap< QString, QString > localesMap(); - void onActivate(); 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; - - /** @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 ); void zoneChanged( int currentIndex ); - void locationChanged( const CalamaresUtils::Locale::TZZone* location ); + void locationChanged( const CalamaresUtils::Locale::TimeZoneData* location ); void changeLocale(); void changeFormats(); - // Dynamically, QList< TZRegion* > - CalamaresUtils::Locale::CStringPairList m_regionList; - std::unique_ptr< CalamaresUtils::Locale::CStringListModel > m_regionModel; - TimeZoneWidget* m_tzWidget; QComboBox* m_regionCombo; QComboBox* m_zoneCombo; @@ -88,9 +59,6 @@ private: QLabel* m_formatsLabel; QPushButton* m_formatsChangeButton; - LocaleConfiguration m_selectedLocaleConfiguration; - - QStringList m_localeGenLines; bool m_blockTzWidgetSet; }; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 3a8c37673..2145ad201 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -34,7 +25,6 @@ #include #include -#include CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleViewStepFactory, registerPlugin< LocaleViewStep >(); ) @@ -44,7 +34,7 @@ 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; m_widget->setLayout( mainLayout ); @@ -66,11 +56,11 @@ LocaleViewStep::~LocaleViewStep() void LocaleViewStep::setUpPage() { + m_config->setCurrentLocation(); 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 ); ensureSize( m_actualWidget->sizeHint() ); @@ -80,20 +70,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 { @@ -104,7 +80,7 @@ LocaleViewStep::prettyName() const QString LocaleViewStep::prettyStatus() const { - return m_prettyStatus; + return m_config->prettyStatus(); } @@ -146,13 +122,14 @@ LocaleViewStep::isAtEnd() const Calamares::JobList LocaleViewStep::jobs() const { - return m_jobs; + return m_config->createJobs(); } void LocaleViewStep::onActivate() { + m_config->setCurrentLocation(); // Finalize the location if ( !m_actualWidget ) { setUpPage(); @@ -164,83 +141,12 @@ LocaleViewStep::onActivate() void LocaleViewStep::onLeave() { - if ( m_actualWidget ) - { - m_jobs = m_actualWidget->createJobs(); - m_prettyStatus = m_actualWidget->prettyStatus(); - - auto map = m_actualWidget->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" ); - } + m_config->finalizeGlobalStorage(); } 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" ) ); - } - - 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."; - } - } -} - -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(); + m_config->setConfigurationMap( configurationMap ); } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 841aba97f..fd9c00796 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,34 +1,21 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define LOCALEVIEWSTEP_H -#include "geoip/Handler.h" -#include "geoip/Interface.h" -#include "utils/PluginFactory.h" -#include "viewpages/ViewStep.h" +#include "Config.h" #include "DllMacro.h" - -#include -#include +#include "utils/PluginFactory.h" +#include "viewpages/ViewStep.h" #include @@ -60,25 +47,16 @@ 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; - QString m_prettyStatus; - CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; - QString m_localeGenPath; - - Calamares::JobList m_jobs; - std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; + std::unique_ptr< Config > m_config; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( LocaleViewStepFactory ) diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index aa8c4c241..675cca8af 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7b93770bb..d51171256 100644 --- a/src/modules/locale/SetTimezoneJob.h +++ b/src/modules/locale/SetTimezoneJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 af37a664b..6fe9d5662 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -1,32 +1,47 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" +#include "Config.h" #include "LocaleConfiguration.h" #include "timezonewidget/TimeZoneImage.h" #include "locale/TimeZone.h" +#include "utils/Logger.h" #include #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 testTZSanity(); + void testTZImages(); // No overlaps in images + void testTZLocations(); // No overlaps in locations + void testSpecificLocations(); + + // Check the Config loading + void testConfigInitialization(); +}; + QTEST_MAIN( LocaleTests ) @@ -83,6 +98,18 @@ LocaleTests::testSplitLocaleConfiguration() QCOMPARE( lc3.lc_numeric, QStringLiteral( "de_DE.UTF-8" ) ); } +void +LocaleTests::testTZSanity() +{ + // Data source for all TZ info + QVERIFY( QFile( "/usr/share/zoneinfo/zone.tab" ).exists() ); + + // Contains a sensible number of total zones + const CalamaresUtils::Locale::ZonesModel zones; + QVERIFY( zones.rowCount( QModelIndex() ) > 100 ); +} + + void LocaleTests::testTZImages() { @@ -115,37 +142,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 +193,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 +215,37 @@ void LocaleTests::testTZLocations() { using namespace CalamaresUtils::Locale; - const CStringPairList& regions = TZRegion::fromZoneTab(); + ZonesModel zones; + + QVERIFY( zones.rowCount( QModelIndex() ) > 100 ); int overlapcount = 0; - for ( const auto* pr : regions ) + std::set< QPoint > occupied; + for ( auto it = zones.begin(); it; ++it ) { - const TZRegion* region = dynamic_cast< const TZRegion* >( pr ); - QVERIFY( region ); + const auto* zone = *it; + QVERIFY( zone ); - 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 ) + auto pos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ); + if ( occupied.find( pos ) != occupied.end() ) { - const TZZone* zone = dynamic_cast< const TZZone* >( pz ); - 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 ); + 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 ); @@ -268,3 +257,17 @@ LocaleTests::testSpecificLocations() QEXPECT_FAIL( "", "Gibraltar and Ceuta are really close", Continue ); 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" 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 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/orig/bg.png b/src/modules/locale/images/orig/bg.png deleted file mode 100644 index d7479bf96..000000000 Binary files a/src/modules/locale/images/orig/bg.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-1.0.png b/src/modules/locale/images/orig/timezone_-1.0.png deleted file mode 100644 index fb00d83c5..000000000 Binary files a/src/modules/locale/images/orig/timezone_-1.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-10.0.png b/src/modules/locale/images/orig/timezone_-10.0.png deleted file mode 100644 index 472eb888a..000000000 Binary files a/src/modules/locale/images/orig/timezone_-10.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-11.0.png b/src/modules/locale/images/orig/timezone_-11.0.png deleted file mode 100644 index 5f8c5d6f9..000000000 Binary files a/src/modules/locale/images/orig/timezone_-11.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-2.0.png b/src/modules/locale/images/orig/timezone_-2.0.png deleted file mode 100644 index 30a1ec738..000000000 Binary files a/src/modules/locale/images/orig/timezone_-2.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-3.0.png b/src/modules/locale/images/orig/timezone_-3.0.png deleted file mode 100644 index c22dbb64a..000000000 Binary files a/src/modules/locale/images/orig/timezone_-3.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-3.5.png b/src/modules/locale/images/orig/timezone_-3.5.png deleted file mode 100644 index c1df00b9b..000000000 Binary files a/src/modules/locale/images/orig/timezone_-3.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-4.0.png b/src/modules/locale/images/orig/timezone_-4.0.png deleted file mode 100644 index 4b5a4318c..000000000 Binary files a/src/modules/locale/images/orig/timezone_-4.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-4.5.png b/src/modules/locale/images/orig/timezone_-4.5.png deleted file mode 100644 index 9e3c13459..000000000 Binary files a/src/modules/locale/images/orig/timezone_-4.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-5.0.png b/src/modules/locale/images/orig/timezone_-5.0.png deleted file mode 100644 index 06c15e697..000000000 Binary files a/src/modules/locale/images/orig/timezone_-5.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-5.5.png b/src/modules/locale/images/orig/timezone_-5.5.png deleted file mode 100644 index b1c788dc8..000000000 Binary files a/src/modules/locale/images/orig/timezone_-5.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-6.0.png b/src/modules/locale/images/orig/timezone_-6.0.png deleted file mode 100644 index 8505fb1f7..000000000 Binary files a/src/modules/locale/images/orig/timezone_-6.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-7.0.png b/src/modules/locale/images/orig/timezone_-7.0.png deleted file mode 100644 index fec235da4..000000000 Binary files a/src/modules/locale/images/orig/timezone_-7.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-8.0.png b/src/modules/locale/images/orig/timezone_-8.0.png deleted file mode 100644 index bdad7bf50..000000000 Binary files a/src/modules/locale/images/orig/timezone_-8.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-9.0.png b/src/modules/locale/images/orig/timezone_-9.0.png deleted file mode 100644 index 04cb3cb8b..000000000 Binary files a/src/modules/locale/images/orig/timezone_-9.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_-9.5.png b/src/modules/locale/images/orig/timezone_-9.5.png deleted file mode 100644 index b1c788dc8..000000000 Binary files a/src/modules/locale/images/orig/timezone_-9.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_0.0.png b/src/modules/locale/images/orig/timezone_0.0.png deleted file mode 100644 index e59b773ca..000000000 Binary files a/src/modules/locale/images/orig/timezone_0.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_1.0.png b/src/modules/locale/images/orig/timezone_1.0.png deleted file mode 100644 index 2053b7e2e..000000000 Binary files a/src/modules/locale/images/orig/timezone_1.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_10.0.png b/src/modules/locale/images/orig/timezone_10.0.png deleted file mode 100644 index 475dcf43a..000000000 Binary files a/src/modules/locale/images/orig/timezone_10.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_10.5.png b/src/modules/locale/images/orig/timezone_10.5.png deleted file mode 100644 index 6ec7f9fa9..000000000 Binary files a/src/modules/locale/images/orig/timezone_10.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_11.0.png b/src/modules/locale/images/orig/timezone_11.0.png deleted file mode 100644 index 6168aa2ba..000000000 Binary files a/src/modules/locale/images/orig/timezone_11.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_11.5.png b/src/modules/locale/images/orig/timezone_11.5.png deleted file mode 100644 index afdedd7e0..000000000 Binary files a/src/modules/locale/images/orig/timezone_11.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_12.0.png b/src/modules/locale/images/orig/timezone_12.0.png deleted file mode 100644 index d0b35317e..000000000 Binary files a/src/modules/locale/images/orig/timezone_12.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_12.75.png b/src/modules/locale/images/orig/timezone_12.75.png deleted file mode 100644 index 4f74a8582..000000000 Binary files a/src/modules/locale/images/orig/timezone_12.75.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_13.0.png b/src/modules/locale/images/orig/timezone_13.0.png deleted file mode 100644 index fe2f134cd..000000000 Binary files a/src/modules/locale/images/orig/timezone_13.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_2.0.png b/src/modules/locale/images/orig/timezone_2.0.png deleted file mode 100644 index ec1e87401..000000000 Binary files a/src/modules/locale/images/orig/timezone_2.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_3.0.png b/src/modules/locale/images/orig/timezone_3.0.png deleted file mode 100644 index eda59dce1..000000000 Binary files a/src/modules/locale/images/orig/timezone_3.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_3.5.png b/src/modules/locale/images/orig/timezone_3.5.png deleted file mode 100644 index 2dc7399a8..000000000 Binary files a/src/modules/locale/images/orig/timezone_3.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_4.0.png b/src/modules/locale/images/orig/timezone_4.0.png deleted file mode 100644 index 483dc5342..000000000 Binary files a/src/modules/locale/images/orig/timezone_4.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_4.5.png b/src/modules/locale/images/orig/timezone_4.5.png deleted file mode 100644 index e09ed90bb..000000000 Binary files a/src/modules/locale/images/orig/timezone_4.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_5.0.png b/src/modules/locale/images/orig/timezone_5.0.png deleted file mode 100644 index 1bb6d20f3..000000000 Binary files a/src/modules/locale/images/orig/timezone_5.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_5.5.png b/src/modules/locale/images/orig/timezone_5.5.png deleted file mode 100644 index f904cc298..000000000 Binary files a/src/modules/locale/images/orig/timezone_5.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_5.75.png b/src/modules/locale/images/orig/timezone_5.75.png deleted file mode 100644 index 827ce1a45..000000000 Binary files a/src/modules/locale/images/orig/timezone_5.75.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_6.0.png b/src/modules/locale/images/orig/timezone_6.0.png deleted file mode 100644 index 460f9cf11..000000000 Binary files a/src/modules/locale/images/orig/timezone_6.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_6.5.png b/src/modules/locale/images/orig/timezone_6.5.png deleted file mode 100644 index d307bf310..000000000 Binary files a/src/modules/locale/images/orig/timezone_6.5.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_7.0.png b/src/modules/locale/images/orig/timezone_7.0.png deleted file mode 100644 index 239115af9..000000000 Binary files a/src/modules/locale/images/orig/timezone_7.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_8.0.png b/src/modules/locale/images/orig/timezone_8.0.png deleted file mode 100644 index 3627686fd..000000000 Binary files a/src/modules/locale/images/orig/timezone_8.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_9.0.png b/src/modules/locale/images/orig/timezone_9.0.png deleted file mode 100644 index 65d2e46dd..000000000 Binary files a/src/modules/locale/images/orig/timezone_9.0.png and /dev/null differ diff --git a/src/modules/locale/images/orig/timezone_9.5.png b/src/modules/locale/images/orig/timezone_9.5.png deleted file mode 100644 index 1c3290c08..000000000 Binary files a/src/modules/locale/images/orig/timezone_9.5.png and /dev/null differ 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/locale.conf b/src/modules/locale/locale.conf index dc68a050f..4463f7a94 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,5 +1,8 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# --- -# 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. # @@ -11,20 +14,41 @@ # 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 +# 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..7aa781127 100644 --- a/src/modules/locale/locale.schema.yaml +++ b/src/modules/locale/locale.schema.yaml @@ -1,10 +1,40 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $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 } + useSystemTimezone: { type: boolean, default: false } + + 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 ] diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index a60c9b7d7..54aa1afd5 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -25,9 +16,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" ); diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.h b/src/modules/locale/timezonewidget/TimeZoneImage.h index ee02bfbfd..c36f4e2f7 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.h +++ b/src/modules/locale/timezonewidget/TimeZoneImage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b81e0414c..9ad9f2d3f 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,24 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 * 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" @@ -34,9 +26,17 @@ #define ZONE_NAME QStringLiteral( "zone" ) #endif -TimeZoneWidget::TimeZoneWidget( QWidget* parent ) +static QPoint +getLocationPosition( const CalamaresUtils::Locale::TimeZoneData* l ) +{ + return TimeZoneImageList::getLocationPosition( l->longitude(), l->latitude() ); +} + + +TimeZoneWidget::TimeZoneWidget( const CalamaresUtils::Locale::ZonesModel* zones, QWidget* parent ) : QWidget( parent ) , timeZoneImages( TimeZoneImageList::fromQRC() ) + , m_zonesData( zones ) { setMouseTracking( false ); setCursor( Qt::PointingHandCursor ); @@ -57,27 +57,13 @@ TimeZoneWidget::TimeZoneWidget( QWidget* parent ) void -TimeZoneWidget::setCurrentLocation( QString regionName, QString zoneName ) +TimeZoneWidget::setCurrentLocation( const TimeZoneData* location ) { - using namespace CalamaresUtils::Locale; - const auto& regions = TZRegion::fromZoneTab(); - auto* region = regions.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 @@ -93,7 +79,6 @@ TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* locati // Repaint widget repaint(); - emit locationChanged( m_currentLocation ); } @@ -101,11 +86,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 ); @@ -116,6 +108,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 @@ -175,8 +172,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(); } @@ -188,40 +183,19 @@ 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 : TZRegion::fromZoneTab() ) - { - const auto* region = dynamic_cast< const TZRegion* >( region_p ); - if ( region ) - { - 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() ); - - 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 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 afebbfd7b..3a2911597 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -1,24 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 @@ -31,32 +23,48 @@ #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 public: - using TZZone = CalamaresUtils::Locale::TZZone; + using TimeZoneData = CalamaresUtils::Locale::TimeZoneData; - explicit TimeZoneWidget( QWidget* parent = nullptr ); - - void setCurrentLocation( QString region, QString zone ); - void setCurrentLocation( const TZZone* location ); - const TZZone* currentLocation() { return m_currentLocation; } + 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 TimeZoneData* location ); signals: - void locationChanged( const TZZone* location ); + /** @brief The location has changed by mouse click */ + void locationChanged( const TimeZoneData* location ); private: QFont font; QImage background, pin, currentZoneImage; TimeZoneImageList timeZoneImages; - const TZZone* m_currentLocation = nullptr; // Not owned by me - QPoint getLocationPosition( const TZZone* l ) - { - return timeZoneImages.getLocationPosition( l->longitude(), l->latitude() ); - } + const CalamaresUtils::Locale::ZonesModel* m_zonesData; + const TimeZoneData* m_currentLocation = nullptr; // Not owned by me void paintEvent( QPaintEvent* event ); void mousePressEvent( QMouseEvent* event ); diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 9e50fb448..8f0edcd17 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -1,26 +1,17 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/localeq/CMakeLists.txt index c9ed1cd55..55c16091c 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/localeq/LocaleQmlViewStep.cpp b/src/modules/localeq/LocaleQmlViewStep.cpp index fd5e72734..6139d3a45 100644 --- a/src/modules/localeq/LocaleQmlViewStep.cpp +++ b/src/modules/localeq/LocaleQmlViewStep.cpp @@ -1,92 +1,29 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#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 ); } 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 @@ -95,17 +32,21 @@ LocaleQmlViewStep::prettyName() const return tr( "Location" ); } +QString +LocaleQmlViewStep::prettyStatus() const +{ + return m_config->prettyStatus(); +} + 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 +54,6 @@ LocaleQmlViewStep::isBackEnabled() const bool LocaleQmlViewStep::isAtBeginning() const { - // TODO: adjust to "pages" in the QML return true; } @@ -121,79 +61,31 @@ 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::onActivate() { - // TODO no sure if it is needed at all or for the abstract class to start something + m_config->setCurrentLocation(); // Finalize the location + QmlViewStep::onActivate(); } -void LocaleQmlViewStep::onLeave() +void +LocaleQmlViewStep::onLeave() { - 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" ); - } + m_config->finalizeGlobalStorage(); } -void LocaleQmlViewStep::setConfigurationMap(const QVariantMap& configurationMap) +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 ); + QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last } diff --git a/src/modules/localeq/LocaleQmlViewStep.h b/src/modules/localeq/LocaleQmlViewStep.h index 0639274d6..ca70ca5d9 100644 --- a/src/modules/localeq/LocaleQmlViewStep.h +++ b/src/modules/localeq/LocaleQmlViewStep.h @@ -1,33 +1,20 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #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 @@ -39,6 +26,7 @@ public: explicit LocaleQmlViewStep( QObject* parent = nullptr ); QString prettyName() const override; + QString prettyStatus() const override; bool isNextEnabled() const override; bool isBackEnabled() const override; @@ -46,29 +34,16 @@ public: bool isAtBeginning() const override; bool isAtEnd() const override; + virtual void onActivate() override; + virtual void onLeave() 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 ) diff --git a/src/modules/localeq/Map.qml b/src/modules/localeq/Map.qml index 023de6d1b..845f16ea3 100644 --- a/src/modules/localeq/Map.qml +++ b/src/modules/localeq/Map.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -29,19 +20,19 @@ 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() { + /* 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() { @@ -51,9 +42,10 @@ Column { var ct = responseJSON.city var cy = responseJSON.country - tzText.text = "Timezone: " + tz cityName = ct countryName = cy + + config.setCurrentLocation(tz) } } @@ -63,7 +55,25 @@ Column { xhr.send() } - function getTz() { + /* 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 + * 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,15 +83,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 @@ -126,7 +150,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 @@ -155,9 +179,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(); } } } @@ -199,7 +222,7 @@ Column { } Rectangle { - width: parent.width + width: parent.width height: 100 anchors.horizontalCenter: parent.horizontalCenter @@ -217,13 +240,16 @@ 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 } - 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/Offline.qml b/src/modules/localeq/Offline.qml index 8e9d91280..5a0d4eb3f 100644 --- a/src/modules/localeq/Offline.qml +++ b/src/modules/localeq/Offline.qml @@ -1,21 +1,15 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -23,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 } @@ -67,6 +218,7 @@ Column { } Text { + anchors.top: location.bottom anchors.topMargin: 20 padding: 10 @@ -74,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/i18n.qml b/src/modules/localeq/i18n.qml index a806d0174..63cad8bf5 100644 --- a/src/modules/localeq/i18n.qml +++ b/src/modules/localeq/i18n.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -32,10 +23,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 +44,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,10 +63,9 @@ 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 + currentIndex: -1 highlight: Rectangle { color: Kirigami.Theme.highlightColor } @@ -95,17 +81,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 +104,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 } } @@ -138,10 +124,9 @@ Item { width: 180; height: 200 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 + currentIndex: -1 highlight: Rectangle { color: Kirigami.Theme.highlightColor } @@ -154,11 +139,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/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 b/src/modules/localeq/img/locale.svg new file mode 100755 index 000000000..20c21e562 --- /dev/null +++ b/src/modules/localeq/img/locale.svg @@ -0,0 +1,5720 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 b/src/modules/localeq/img/worldmap.png deleted file mode 100644 index c5c181985..000000000 Binary files a/src/modules/localeq/img/worldmap.png and /dev/null differ 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/localeq/localeq.qml b/src/modules/localeq/localeq.qml index ffd87f5b5..dbaa09034 100644 --- a/src/modules/localeq/localeq.qml +++ b/src/modules/localeq/localeq.qml @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -29,35 +20,12 @@ Page { width: 800 height: 550 - 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(); + 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 { @@ -65,7 +33,8 @@ Page { anchors.horizontalCenter: parent.horizontalCenter width: parent.width height: parent.height / 1.28 - source: (hasInternet) ? "Map.qml" : "Offline.qml" + // Network is in io.calamares.core + source: Network.hasInternet ? "Map.qml" : "Offline.qml" } RowLayout { @@ -85,8 +54,8 @@ Page { rowSpacing: Kirigami.Units.largeSpacing columnSpacing: Kirigami.Units.largeSpacing - Kirigami.Icon { - source: "application-x-gettext-translation" + Image { + source: "img/locale.svg" Layout.fillHeight: true Layout.maximumHeight: Kirigami.Units.iconSizes.medium Layout.preferredWidth: height @@ -95,7 +64,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 @@ -103,7 +72,7 @@ Page { Label { Layout.fillWidth: true wrapMode: Text.WordWrap - text: qsTr("Numbers and dates locale set to %1").arg(confLocale) + text: config.currentLCStatus } } Button { diff --git a/src/modules/localeq/localeq.qrc b/src/modules/localeq/localeq.qrc index 591b83452..a3f8dec9d 100644 --- a/src/modules/localeq/localeq.qrc +++ b/src/modules/localeq/localeq.qrc @@ -4,10 +4,10 @@ localeq.qml Map.qml Offline.qml + img/locale.svg img/minus.png img/pin.svg img/plus.png img/chevron-left-solid.svg - img/worldmap.png
diff --git a/src/modules/luksbootkeyfile/CMakeLists.txt b/src/modules/luksbootkeyfile/CMakeLists.txt index 5e69d3acb..1782e7e0e 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/luksbootkeyfile/LuksBootKeyFileJob.cpp b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp index 90d64d5a6..9bd2f66da 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp @@ -1,19 +1,8 @@ -/* === This file is part of Calamares - === +/* === 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..d78a7ecdc 100644 --- a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h @@ -1,19 +1,8 @@ -/* === This file is part of Calamares - === +/* === 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/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/luksopenswaphookcfg.schema.yaml b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml index 660e06d0b..ed2ae7971 100644 --- a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml +++ b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml @@ -1,7 +1,10 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/luksopenswaphookcfg additionalProperties: false type: object properties: - "configFilePath": { type: string, required: true } + configFilePath: { type: string } +required: [ configFilePath ] diff --git a/src/modules/luksopenswaphookcfg/main.py b/src/modules/luksopenswaphookcfg/main.py index a30ae999b..ec09a631b 100644 --- a/src/modules/luksopenswaphookcfg/main.py +++ b/src/modules/luksopenswaphookcfg/main.py @@ -1,24 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/machineid/CMakeLists.txt index 4a916334c..360c0cc8a 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/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp index fc535e356..302e8c308 100644 --- a/src/modules/machineid/MachineIdJob.cpp +++ b/src/modules/machineid/MachineIdJob.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 08943392a..b58d2f4dd 100644 --- a/src/modules/machineid/MachineIdJob.h +++ b/src/modules/machineid/MachineIdJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2b6a9b1d1..45f0e6954 100644 --- a/src/modules/machineid/Tests.cpp +++ b/src/modules/machineid/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -130,7 +121,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 +155,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..79d075c86 100644 --- a/src/modules/machineid/Workers.cpp +++ b/src/modules/machineid/Workers.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 8cb8d74ff..51c9d526d 100644 --- a/src/modules/machineid/Workers.h +++ b/src/modules/machineid/Workers.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/machineid/machineid.conf b/src/modules/machineid/machineid.conf index 97bd10a06..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: @@ -15,8 +18,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..8b84f1d22 100644 --- a/src/modules/machineid/machineid.schema.yaml +++ b/src/modules/machineid/machineid.schema.yaml @@ -1,9 +1,15 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $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 } diff --git a/src/modules/mkinitfs/main.py b/src/modules/mkinitfs/main.py new file mode 100644 index 000000000..e3e6e176a --- /dev/null +++ b/src/modules/mkinitfs/main.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# 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: see the License-Identifier above. +# + +import libcalamares +from libcalamares.utils import target_env_call + + +import gettext +_ = gettext.translation("calamares-python", + localedir=libcalamares.utils.gettext_path(), + languages=libcalamares.utils.gettext_languages(), + fallback=True).gettext + + +def pretty_name(): + return _("Creating initramfs with mkinitfs.") + + +def run_mkinitfs(): + """ + Creates initramfs, even when initramfs already exists. + + :return: + """ + return target_env_call(['mkinitfs']) + + +def run(): + """ + Starts routine to create initramfs. It passes back the exit code + if it fails. + + :return: + """ + return_code = run_mkinitfs() + + if return_code != 0: + return ( _("Failed to run mkinitfs on the target"), + _("The exit code was {}").format(return_code) ) diff --git a/src/modules/mkinitfs/module.desc b/src/modules/mkinitfs/module.desc new file mode 100644 index 000000000..decc3259f --- /dev/null +++ b/src/modules/mkinitfs/module.desc @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +--- +type: "job" +name: "mkinitfs" +interface: "python" +script: "main.py" diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index 4e16b43c3..01c0650bf 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/mount/mount.schema.yaml b/src/modules/mount/mount.schema.yaml index 8a81d9462..2d5e4d4a0 100644 --- a/src/modules/mount/mount.schema.yaml +++ b/src/modules/mount/mount.schema.yaml @@ -1,24 +1,31 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/mount additionalProperties: false type: object properties: - "extraMounts": - type: seq - sequence: - - type: map - mapping: - "device": { type: string, required: true } - "fs": { type: str } - "mountPoint": { type: string, required: true } - "options": { type: str } - "extraMountsEfi": - type: seq - sequence: - - type: map - mapping: - "device": { type: string, required: true } - "fs": { type: str } - "mountPoint": { type: string, required: true } - "options": { type: str } + # TODO: share the schema definition, since these are identical + extraMounts: + type: array + items: + type: object + additionalProperties: false + properties: + device: { type: string } + fs: { type: string } + mountPoint: { type: string } + options: { type: string } + required: [ device, mountPoint ] + extraMountsEfi: + type: array + items: + type: object + additionalProperties: false + properties: + device: { type: string } + fs: { type: string } + mountPoint: { type: string } + options: { type: string } + required: [ device, mountPoint ] 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/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 762e92985..4500a314f 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 @@ -9,8 +14,6 @@ calamares_add_plugin( netinstall PackageModel.cpp UI page_netinst.ui - RESOURCES - netinstall.qrc LINK_PRIVATE_LIBRARIES calamaresui Qt5::Network diff --git a/src/modules/netinstall/Config.cpp b/src/modules/netinstall/Config.cpp index 062518221..ddbb36fcc 100644 --- a/src/modules/netinstall/Config.cpp +++ b/src/modules/netinstall/Config.cpp @@ -1,22 +1,13 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 781c9be5d..56cbd784b 100644 --- a/src/modules/netinstall/Config.h +++ b/src/modules/netinstall/Config.h @@ -1,21 +1,12 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0d8dc5960..75175a941 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -1,22 +1,13 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -46,7 +37,7 @@ NetInstallPage::NetInstallPage( Config* c, QWidget* parent ) connect( c, &Config::statusReady, this, &NetInstallPage::expandGroups ); setPageTitle( nullptr ); - CALAMARES_RETRANSLATE_SLOT( &NetInstallPage::retranslate ); + CALAMARES_RETRANSLATE_SLOT( &NetInstallPage::retranslate ) } NetInstallPage::~NetInstallPage() {} diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 13a106eaf..167f9807f 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -1,21 +1,12 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e99b43830..beb295c32 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -1,21 +1,12 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 d2114a346..cd79e7a4a 100644 --- a/src/modules/netinstall/NetInstallViewStep.h +++ b/src/modules/netinstall/NetInstallViewStep.h @@ -1,20 +1,11 @@ /* - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 dd5047129..beb094d2d 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b4e8fc102..998f42c38 100644 --- a/src/modules/netinstall/PackageModel.h +++ b/src/modules/netinstall/PackageModel.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 30a57ac2a..b30cdf915 100644 --- a/src/modules/netinstall/PackageTreeItem.cpp +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0b2d506d7..c04b9a21d 100644 --- a/src/modules/netinstall/PackageTreeItem.h +++ b/src/modules/netinstall/PackageTreeItem.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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..569d47d15 100644 --- a/src/modules/netinstall/Tests.cpp +++ b/src/modules/netinstall/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/netinstall/netinstall.schema.yaml b/src/modules/netinstall/netinstall.schema.yaml index 8420ea501..a66c877d1 100644 --- a/src/modules/netinstall/netinstall.schema.yaml +++ b/src/modules/netinstall/netinstall.schema.yaml @@ -1,7 +1,18 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/netinstall additionalProperties: false type: object properties: - groupsUrl: { type: string, required: true } + groupsUrl: { type: string } + required: { type: boolean, default: false } + label: # Translatable labels + type: object + additionalProperties: true + properties: + sidebar: { type: string } + title: { type: string } + groups: { type: array } # TODO: the schema for the whole groups file +required: [ groupsUrl ] 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/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/networkcfg/main.py b/src/modules/networkcfg/main.py index 00a264f53..608cfd288 100644 --- a/src/modules/networkcfg/main.py +++ b/src/modules/networkcfg/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/networkcfg/module.desc b/src/modules/networkcfg/module.desc index c02305db2..cbafe8cd5 100644 --- a/src/modules/networkcfg/module.desc +++ b/src/modules/networkcfg/module.desc @@ -1,7 +1,8 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "networkcfg" interface: "python" -requires: [] script: "main.py" noconfig: true diff --git a/src/modules/notesqml/CMakeLists.txt b/src/modules/notesqml/CMakeLists.txt index 7ac808fa7..a5edc7d04 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/notesqml/NotesQmlViewStep.cpp b/src/modules/notesqml/NotesQmlViewStep.cpp index 5a6bbc494..9f57eb615 100644 --- a/src/modules/notesqml/NotesQmlViewStep.cpp +++ b/src/modules/notesqml/NotesQmlViewStep.cpp @@ -1,20 +1,9 @@ -/* === This file is part of Calamares - === +/* === 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..10f249a88 100644 --- a/src/modules/notesqml/NotesQmlViewStep.h +++ b/src/modules/notesqml/NotesQmlViewStep.h @@ -1,20 +1,9 @@ -/* === This file is part of Calamares - === +/* === 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..782ae404e 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 - === +/* === 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.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/notesqml/notesqml.qml b/src/modules/notesqml/notesqml.qml index 374d9c399..7805f27fa 100644 --- a/src/modules/notesqml/notesqml.qml +++ b/src/modules/notesqml/notesqml.qml @@ -1,20 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * * 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/CMakeLists.txt b/src/modules/oemid/CMakeLists.txt index 0c4ad03ad..68a1b653e 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/oemid/IDJob.cpp b/src/modules/oemid/IDJob.cpp index 16461b191..ccda86057 100644 --- a/src/modules/oemid/IDJob.cpp +++ b/src/modules/oemid/IDJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -27,52 +18,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 +77,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..17d97b4ee 100644 --- a/src/modules/oemid/IDJob.h +++ b/src/modules/oemid/IDJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -36,7 +27,7 @@ private: Calamares::JobResult writeId( const QString&, const QString&, const QString& ); QString m_batchIdentifier; -} ; +}; #endif 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/oemid/OEMViewStep.cpp b/src/modules/oemid/OEMViewStep.cpp index 8a12bd17c..7405c6e3a 100644 --- a/src/modules/oemid/OEMViewStep.cpp +++ b/src/modules/oemid/OEMViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -38,22 +29,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 +50,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..c07cb7971 100644 --- a/src/modules/oemid/OEMViewStep.h +++ b/src/modules/oemid/OEMViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/main.py b/src/modules/openrcdmcryptcfg/main.py index 522d623bc..d350aade0 100644 --- a/src/modules/openrcdmcryptcfg/main.py +++ b/src/modules/openrcdmcryptcfg/main.py @@ -1,23 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/CMakeLists.txt b/src/modules/packagechooser/CMakeLists.txt index d949829de..ad9cc8527 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/packagechooser/ItemAppData.cpp b/src/modules/packagechooser/ItemAppData.cpp index ed0ba9223..dd1eb1fb7 100644 --- a/src/modules/packagechooser/ItemAppData.cpp +++ b/src/modules/packagechooser/ItemAppData.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 72617ff0c..92d81220d 100644 --- a/src/modules/packagechooser/ItemAppData.h +++ b/src/modules/packagechooser/ItemAppData.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 83837a9ca..787db0b3f 100644 --- a/src/modules/packagechooser/ItemAppStream.cpp +++ b/src/modules/packagechooser/ItemAppStream.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 c44b84b06..9fa3608c3 100644 --- a/src/modules/packagechooser/ItemAppStream.h +++ b/src/modules/packagechooser/ItemAppStream.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 16f50abab..0d5df8177 100644 --- a/src/modules/packagechooser/PackageChooserPage.cpp +++ b/src/modules/packagechooser/PackageChooserPage.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b4ef2169b..4f485c890 100644 --- a/src/modules/packagechooser/PackageChooserPage.h +++ b/src/modules/packagechooser/PackageChooserPage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 759c6eeab..f162c074b 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.cpp +++ b/src/modules/packagechooser/PackageChooserViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9e9087971..2a10ce270 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.h +++ b/src/modules/packagechooser/PackageChooserViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 12995fad5..1072b8b3b 100644 --- a/src/modules/packagechooser/PackageModel.cpp +++ b/src/modules/packagechooser/PackageModel.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 ee3b30185..b8fc9a4ce 100644 --- a/src/modules/packagechooser/PackageModel.h +++ b/src/modules/packagechooser/PackageModel.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 da355dc96..c303f0488 100644 --- a/src/modules/packagechooser/Tests.cpp +++ b/src/modules/packagechooser/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -77,7 +68,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 +77,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..34ac2f682 100644 --- a/src/modules/packagechooser/Tests.h +++ b/src/modules/packagechooser/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/packagechooser/packagechooser.conf b/src/modules/packagechooser/packagechooser.conf index 90611a64b..88f23ecf9 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/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/packages/main.py b/src/modules/packages/main.py index 4f746dccc..9d912da72 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -1,27 +1,18 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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 @@ -161,101 +152,28 @@ class PackageManager(metaclass=abc.ABCMeta): self.run(packagedata["post-script"]) -class PMPackageKit(PackageManager): - backend = "packagekit" +### PACKAGE MANAGER IMPLEMENTATIONS +# +# Keep these alphabetical (presumably both by class name and backend name), +# even the Dummy implementation. +# + +class PMApk(PackageManager): + backend = "apk" def install(self, pkgs, from_local=False): for pkg in pkgs: - check_target_env_call(["pkcon", "-py", "install", pkg]) + check_target_env_call(["apk", "add", pkg]) def remove(self, pkgs): for pkg in pkgs: - check_target_env_call(["pkcon", "-py", "remove", pkg]) + check_target_env_call(["apk", "del", pkg]) def update_db(self): - check_target_env_call(["pkcon", "refresh"]) + check_target_env_call(["apk", "update"]) def update_system(self): - check_target_env_call(["pkcon", "-py", "update"]) - - -class PMZypp(PackageManager): - backend = "zypp" - - def install(self, pkgs, from_local=False): - check_target_env_call(["zypper", "--non-interactive", - "--quiet-install", "install", - "--auto-agree-with-licenses", - "install"] + pkgs) - - def remove(self, pkgs): - check_target_env_call(["zypper", "--non-interactive", - "remove"] + pkgs) - - def update_db(self): - check_target_env_call(["zypper", "--non-interactive", "update"]) - - def update_system(self): - # Doesn't need to update the system explicitly - pass - - -class PMYum(PackageManager): - backend = "yum" - - def install(self, pkgs, from_local=False): - check_target_env_call(["yum", "-y", "install"] + pkgs) - - def remove(self, pkgs): - check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", - "remove"] + pkgs) - - def update_db(self): - # Doesn't need updates - pass - - def update_system(self): - check_target_env_call(["yum", "-y", "upgrade"]) - - -class PMDnf(PackageManager): - backend = "dnf" - - def install(self, pkgs, from_local=False): - check_target_env_call(["dnf", "-y", "install"] + pkgs) - - def remove(self, pkgs): - # ignore the error code for now because dnf thinks removing a - # nonexistent package is an error - target_env_call(["dnf", "--disablerepo=*", "-C", "-y", - "remove"] + pkgs) - - def update_db(self): - # Doesn't need updates - pass - - def update_system(self): - check_target_env_call(["dnf", "-y", "upgrade"]) - - -class PMUrpmi(PackageManager): - backend = "urpmi" - - def install(self, pkgs, from_local=False): - check_target_env_call(["urpmi", "--download-all", "--no-suggests", - "--no-verify-rpm", "--fastunsafe", - "--ignoresize", "--nolock", - "--auto"] + pkgs) - - def remove(self, pkgs): - check_target_env_call(["urpme", "--auto"] + pkgs) - - def update_db(self): - check_target_env_call(["urpmi.update", "-a"]) - - def update_system(self): - # Doesn't need to update the system explicitly - pass + check_target_env_call(["apk", "upgrade", "--available"]) class PMApt(PackageManager): @@ -278,20 +196,82 @@ class PMApt(PackageManager): pass -class PMXbps(PackageManager): - backend = "xbps" +class PMDnf(PackageManager): + backend = "dnf" def install(self, pkgs, from_local=False): - check_target_env_call(["xbps-install", "-Sy"] + pkgs) + check_target_env_call(["dnf", "-y", "install"] + pkgs) def remove(self, pkgs): - check_target_env_call(["xbps-remove", "-Ry", "--noconfirm"] + pkgs) + # ignore the error code for now because dnf thinks removing a + # nonexistent package is an error + target_env_call(["dnf", "--disablerepo=*", "-C", "-y", + "remove"] + pkgs) def update_db(self): - check_target_env_call(["xbps-install", "-S"]) + # Doesn't need updates + pass def update_system(self): - check_target_env_call(["xbps", "-Suy"]) + check_target_env_call(["dnf", "-y", "upgrade"]) + + +class PMDummy(PackageManager): + backend = "dummy" + + def install(self, pkgs, from_local=False): + from time import sleep + libcalamares.utils.debug("Dummy backend: Installing " + str(pkgs)) + sleep(3) + + def remove(self, pkgs): + from time import sleep + libcalamares.utils.debug("Dummy backend: Removing " + str(pkgs)) + sleep(3) + + def update_db(self): + libcalamares.utils.debug("Dummy backend: Updating DB") + + def update_system(self): + libcalamares.utils.debug("Dummy backend: Updating System") + + def run(self, script): + libcalamares.utils.debug("Dummy backend: Running script '" + str(script) + "'") + + +class PMEntropy(PackageManager): + backend = "entropy" + + def install(self, pkgs, from_local=False): + check_target_env_call(["equo", "i"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["equo", "rm"] + pkgs) + + def update_db(self): + check_target_env_call(["equo", "update"]) + + def update_system(self): + # Doesn't need to update the system explicitly + pass + + +class PMPackageKit(PackageManager): + backend = "packagekit" + + def install(self, pkgs, from_local=False): + for pkg in pkgs: + check_target_env_call(["pkcon", "-py", "install", pkg]) + + def remove(self, pkgs): + for pkg in pkgs: + check_target_env_call(["pkcon", "-py", "remove", pkg]) + + def update_db(self): + check_target_env_call(["pkcon", "refresh"]) + + def update_system(self): + check_target_env_call(["pkcon", "-py", "update"]) class PMPacman(PackageManager): @@ -341,6 +321,23 @@ class PMPamac(PackageManager): check_target_env_call([self.backend, "upgrade", "--no-confirm"]) +class PMPisi(PackageManager): + backend = "pisi" + + def install(self, pkgs, from_local=False): + check_target_env_call(["pisi", "install" "-y"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["pisi", "remove", "-y"] + pkgs) + + def update_db(self): + check_target_env_call(["pisi", "update-repo"]) + + def update_system(self): + # Doesn't need to update the system explicitly + pass + + class PMPortage(PackageManager): backend = "portage" @@ -359,81 +356,81 @@ class PMPortage(PackageManager): pass -class PMEntropy(PackageManager): - backend = "entropy" +class PMUrpmi(PackageManager): + backend = "urpmi" def install(self, pkgs, from_local=False): - check_target_env_call(["equo", "i"] + pkgs) + check_target_env_call(["urpmi", "--download-all", "--no-suggests", + "--no-verify-rpm", "--fastunsafe", + "--ignoresize", "--nolock", + "--auto"] + pkgs) def remove(self, pkgs): - check_target_env_call(["equo", "rm"] + pkgs) + check_target_env_call(["urpme", "--auto"] + pkgs) def update_db(self): - check_target_env_call(["equo", "update"]) + check_target_env_call(["urpmi.update", "-a"]) def update_system(self): # Doesn't need to update the system explicitly pass -class PMDummy(PackageManager): - backend = "dummy" +class PMXbps(PackageManager): + backend = "xbps" def install(self, pkgs, from_local=False): - from time import sleep - libcalamares.utils.debug("Dummy backend: Installing " + str(pkgs)) - sleep(3) + check_target_env_call(["xbps-install", "-Sy"] + pkgs) def remove(self, pkgs): - from time import sleep - libcalamares.utils.debug("Dummy backend: Removing " + str(pkgs)) - sleep(3) + check_target_env_call(["xbps-remove", "-Ry", "--noconfirm"] + pkgs) def update_db(self): - libcalamares.utils.debug("Dummy backend: Updating DB") + check_target_env_call(["xbps-install", "-S"]) def update_system(self): - libcalamares.utils.debug("Dummy backend: Updating System") - - def run(self, script): - libcalamares.utils.debug("Dummy backend: Running script '" + str(script) + "'") + check_target_env_call(["xbps", "-Suy"]) -class PMPisi(PackageManager): - backend = "pisi" +class PMYum(PackageManager): + backend = "yum" def install(self, pkgs, from_local=False): - check_target_env_call(["pisi", "install" "-y"] + pkgs) + check_target_env_call(["yum", "-y", "install"] + pkgs) def remove(self, pkgs): - check_target_env_call(["pisi", "remove", "-y"] + pkgs) + check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", + "remove"] + pkgs) def update_db(self): - check_target_env_call(["pisi", "update-repo"]) + # Doesn't need updates + pass + + def update_system(self): + check_target_env_call(["yum", "-y", "upgrade"]) + + +class PMZypp(PackageManager): + backend = "zypp" + + def install(self, pkgs, from_local=False): + check_target_env_call(["zypper", "--non-interactive", + "--quiet-install", "install", + "--auto-agree-with-licenses", + "install"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["zypper", "--non-interactive", + "remove"] + pkgs) + + def update_db(self): + check_target_env_call(["zypper", "--non-interactive", "update"]) def update_system(self): # Doesn't need to update the system explicitly pass -class PMApk(PackageManager): - backend = "apk" - - def install(self, pkgs, from_local=False): - for pkg in pkgs: - check_target_env_call(["apk", "add", pkg]) - - def remove(self, pkgs): - for pkg in pkgs: - check_target_env_call(["apk", "del", pkg]) - - def update_db(self): - check_target_env_call(["apk", "update"]) - - def update_system(self): - check_target_env_call(["apk", "upgrade", "--available"]) - - # Collect all the subclasses of PackageManager defined above, # and index them based on the backend property of each class. backend_managers = [ 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/packages/packages.schema.yaml b/src/modules/packages/packages.schema.yaml index ea0addd10..79f5f21c8 100644 --- a/src/modules/packages/packages.schema.yaml +++ b/src/modules/packages/packages.schema.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/packages 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/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index d40bbcd1c..f3ffcb9c7 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 @@ -56,6 +62,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/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..f9743291f 100644 --- a/src/modules/partition/core/BootLoaderModel.cpp +++ b/src/modules/partition/core/BootLoaderModel.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 8daa8ca04..47e6ccb95 100644 --- a/src/modules/partition/core/BootLoaderModel.h +++ b/src/modules/partition/core/BootLoaderModel.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 d04c4110d..fb613e240 100644 --- a/src/modules/partition/core/ColorUtils.cpp +++ b/src/modules/partition/core/ColorUtils.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 3c65b75b2..9ebce580b 100644 --- a/src/modules/partition/core/ColorUtils.h +++ b/src/modules/partition/core/ColorUtils.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 new file mode 100644 index 000000000..6dcad2d66 --- /dev/null +++ b/src/modules/partition/core/Config.cpp @@ -0,0 +1,132 @@ +/* === 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 "Config.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/Logger.h" +#include "utils/Variant.h" + +Config::Config( QObject* parent ) + : QObject( parent ) +{ +} + +static PartitionActions::Choices::SwapChoiceSet +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 ); + + PartitionActions::Choices::SwapChoiceSet 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::swapChoiceNames().find( 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 ) ) \ + { \ + bool bogus = false; \ + cWarning() << unsupportedSetting << PartitionActions::Choices::swapChoiceNames().find( x, bogus ); \ + 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 ); + + 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 +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 new file mode 100644 index 000000000..f2ba9cf58 --- /dev/null +++ b/src/modules/partition/core/Config.h @@ -0,0 +1,45 @@ +/* === 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. + * + */ + +#ifndef PARTITION_CONFIG_H +#define PARTITION_CONFIG_H + +#include "core/PartitionActions.h" + +#include +#include + +class Config : public QObject +{ + Q_OBJECT + +public: + Config( QObject* parent ); + virtual ~Config() = default; + + void setConfigurationMap( const QVariantMap& ); + void updateGlobalStorage() const; + + 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 +}; + + +#endif diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp index 041801b9e..2fce62e9d 100644 --- a/src/modules/partition/core/DeviceList.cpp +++ b/src/modules/partition/core/DeviceList.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 306d90739..b76a31a6b 100644 --- a/src/modules/partition/core/DeviceList.h +++ b/src/modules/partition/core/DeviceList.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f881d265b..bf5541756 100644 --- a/src/modules/partition/core/DeviceModel.cpp +++ b/src/modules/partition/core/DeviceModel.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 29d1598ad..71918f64d 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 730d1d9af..e9e69456d 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 326993362..ad25689f3 100644 --- a/src/modules/partition/core/KPMHelpers.h +++ b/src/modules/partition/core/KPMHelpers.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 1e1fd0eca..a358e4285 100644 --- a/src/modules/partition/core/OsproberEntry.h +++ b/src/modules/partition/core/OsproberEntry.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 4dd3dcbf3..099cdf299 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -459,7 +450,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 +460,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..f5ca0ddaa 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7f8dafb8f..748df2d95 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -257,8 +248,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 }, @@ -270,18 +261,37 @@ nameTable() } SwapChoice -nameToChoice( QString name, bool& ok ) +pickOne( const SwapChoiceSet& s ) { - return nameTable().find( name, ok ); + 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() ); } -QString -choiceToName( SwapChoice c ) +const NamedEnumTable< InstallChoice >& +installChoiceNames() { - bool ok = false; - return nameTable().find( c, ok ); + 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 ed7045822..d86e51048 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -1,24 +1,18 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define PARTITIONACTIONS_H +#include "utils/NamedEnum.h" + +#include #include class PartitionCoreModule; @@ -33,7 +27,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 @@ -42,9 +36,26 @@ enum SwapChoice FullSwap, // ensureSuspendToDisk -- at least RAM size SwapFile // use a file (if supported) }; +using SwapChoiceSet = QSet< SwapChoice >; +const NamedEnumTable< SwapChoice >& swapChoiceNames(); -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 ); + +enum InstallChoice +{ + NoChoice, + Alongside, + Erase, + Replace, + Manual +}; +const NamedEnumTable< InstallChoice >& installChoiceNames(); struct ReplacePartitionOptions { diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 8856778b3..d78ef70c7 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -1,23 +1,14 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f88544ae8..f84bee291 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 fe38bf2d6..87aa03b66 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9f9cd2d1e..19b66180a 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 367b7487a..aceda2d72 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 da691d200..79dff1697 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 1135f5719..9a8f4d96c 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7066aa5a5..f91479adc 100644 --- a/src/modules/partition/core/PartitionModel.h +++ b/src/modules/partition/core/PartitionModel.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 696628c37..5d9dcf8b5 100644 --- a/src/modules/partition/gui/BootInfoWidget.cpp +++ b/src/modules/partition/gui/BootInfoWidget.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -24,16 +15,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 +37,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 +90,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..6be3f6e7b 100644 --- a/src/modules/partition/gui/BootInfoWidget.h +++ b/src/modules/partition/gui/BootInfoWidget.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -38,4 +29,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 69a740d20..6b4b8b659 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,35 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#include "core/BootLoaderModel.h" -#include "core/DeviceModel.h" -#include "core/KPMHelpers.h" -#include "core/OsproberEntry.h" -#include "core/PartUtils.h" -#include "core/PartitionActions.h" -#include "core/PartitionCoreModule.h" -#include "core/PartitionInfo.h" -#include "core/PartitionModel.h" - #include "BootInfoWidget.h" #include "DeviceInfoWidget.h" #include "PartitionBarsView.h" @@ -37,6 +18,16 @@ #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" +#include "core/PartUtils.h" +#include "core/PartitionActions.h" +#include "core/PartitionCoreModule.h" +#include "core/PartitionInfo.h" +#include "core/PartitionModel.h" #include "Branding.h" #include "GlobalStorage.h" @@ -59,45 +50,28 @@ #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; - -/** @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() ); -} +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 * 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 ) + , m_choice( InstallChoice::NoChoice ) , m_isEfi( false ) , m_grp( nullptr ) , m_alongsideButton( nullptr ) @@ -111,8 +85,8 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent ) , m_bootloaderComboBox( nullptr ) , m_lastSelectedDeviceIndex( -1 ) , m_enableEncryptionWidget( true ) - , m_availableSwapChoices( swapChoices ) - , m_eraseSwapChoice( pickOne( swapChoices ) ) + , m_availableSwapChoices( config->swapChoices() ) + , m_eraseSwapChoice( PartitionActions::Choices::pickOne( m_availableSwapChoices ) ) , m_allowManualPartitioning( true ) { setupUi( this ); @@ -124,7 +98,9 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, 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 ); @@ -151,12 +127,9 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, 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 ); @@ -168,8 +141,7 @@ ChoicePage::ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent ) } -ChoicePage::~ChoicePage() -{} +ChoicePage::~ChoicePage() {} void @@ -182,9 +154,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 ); } ); @@ -192,12 +162,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(); } @@ -212,13 +181,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; } @@ -250,31 +227,27 @@ 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->addToGroup( m_grp, Alongside ); + 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->addToGroup( m_grp, Erase ); + 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->addToGroup( m_grp, Replace ); + m_replaceButton->setIcon( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionReplaceOs, CalamaresUtils::Original, iconSize ) ); + m_replaceButton->addToGroup( m_grp, InstallChoice::Replace ); // Fill up swap options // .. TODO: only if enabled in the config @@ -290,17 +263,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, Manual ); + 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 ); @@ -308,11 +278,12 @@ 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. - m_choice = NoChoice; + { + // set m_choice to NoChoice and reset previews. + m_choice = InstallChoice::NoChoice; updateNextEnabled(); emit actionChosen(); @@ -324,19 +295,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." - " 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." ) ); - updateSwapChoicesTr( m_eraseSwapChoiceComboBox ); - ) + CALAMARES_RETRANSLATE( m_somethingElseButton->setText( tr( "Manual partitioning
" + "You can create or resize partitions yourself." ) ); + updateSwapChoicesTr( m_eraseSwapChoiceComboBox ); ) } @@ -350,9 +318,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; } @@ -386,16 +353,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 { @@ -445,7 +409,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(); } } @@ -453,89 +418,89 @@ 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 Erase: + 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; - case Replace: + 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 Alongside: + 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 NoChoice: - case Manual: + case InstallChoice::NoChoice: + case InstallChoice::Manual: break; } updateActionChoicePreview( choice ); @@ -543,19 +508,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 ) @@ -564,21 +534,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."; @@ -590,22 +559,19 @@ 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 ) - { - if ( m_beforePartitionBarsView && - m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() && - ( state == EncryptWidget::Encryption::Confirmed || - state == EncryptWidget::Encryption::Disabled ) ) + if ( state == EncryptWidget::Encryption::Confirmed || state == EncryptWidget::Encryption::Disabled ) { - doReplaceSelectedPartition( m_beforePartitionBarsView-> - selectionModel()-> - currentIndex() ); + 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 ) ) + { + doReplaceSelectedPartition( m_beforePartitionBarsView->selectionModel()->currentIndex() ); } } updateNextEnabled(); @@ -615,12 +581,10 @@ ChoicePage::onEncryptWidgetStateChanged() void ChoicePage::onHomeCheckBoxStateChanged() { - if ( currentChoice() == 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() ); } } @@ -628,36 +592,33 @@ 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 ) { 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 ) { @@ -665,15 +626,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() ); } } @@ -685,13 +652,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 ) @@ -702,15 +670,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; @@ -720,12 +689,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 ); @@ -738,111 +708,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 ); } @@ -866,17 +839,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 ); @@ -894,12 +869,14 @@ ChoicePage::updateDeviceStatePreview() auto sm = m_beforePartitionLabelsView->selectionModel(); m_beforePartitionLabelsView->setSelectionModel( m_beforePartitionBarsView->selectionModel() ); if ( sm ) + { sm->deleteLater(); + } switch ( m_choice ) { - case Replace: - case Alongside: + case InstallChoice::Replace: + case InstallChoice::Alongside: m_beforePartitionBarsView->setSelectionMode( QAbstractItemView::SingleSelection ); m_beforePartitionLabelsView->setSelectionMode( QAbstractItemView::SingleSelection ); break; @@ -933,156 +910,164 @@ 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 ); switch ( choice ) { - case Alongside: + 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 Erase: - case 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 == 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; - } - case NoChoice: - case Manual: + break; + } + case InstallChoice::NoChoice: + case InstallChoice::Manual: m_selectLabel->hide(); m_previewAfterFrame->hide(); m_previewBeforeLabel->setText( tr( "Current:" ) ); @@ -1091,7 +1076,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 ); @@ -1108,8 +1093,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: @@ -1129,22 +1114,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 { @@ -1156,9 +1139,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 ); + } } } } @@ -1171,15 +1155,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() ); } } ); @@ -1189,7 +1173,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 ); @@ -1198,7 +1182,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; @@ -1214,21 +1198,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; @@ -1236,16 +1227,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 ) ) { @@ -1257,7 +1247,7 @@ ChoicePage::setupActions() cDebug() << Logger::SubEntry << "contains replaceable" << it; atLeastOneCanBeReplaced = true; } - if ( (*it)->isMounted() ) + if ( ( *it )->isMounted() ) { atLeastOneIsMounted = true; } @@ -1278,12 +1268,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(); @@ -1304,11 +1293,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 " @@ -1317,8 +1306,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 { @@ -1331,7 +1319,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 " @@ -1339,8 +1327,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 @@ -1357,7 +1344,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 " @@ -1365,8 +1352,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 @@ -1380,7 +1366,9 @@ ChoicePage::setupActions() #endif if ( atLeastOneCanBeReplaced ) + { m_replaceButton->show(); + } else { cDebug() << "Replace button suppressed because none can be replaced."; @@ -1388,7 +1376,9 @@ ChoicePage::setupActions() } if ( atLeastOneCanBeResized ) + { m_alongsideButton->show(); + } else { cDebug() << "Alongside button suppressed because none can be resized."; @@ -1396,12 +1386,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 ); } @@ -1411,7 +1402,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(); } @@ -1425,7 +1416,9 @@ ChoicePage::getOsproberEntriesForDevice( Device* device ) const for ( const OsproberEntry& entry : m_core->osproberEntries() ) { if ( entry.path.startsWith( device->deviceNode() ) ) + { eList.append( entry ); + } } return eList; } @@ -1444,55 +1437,86 @@ 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; + case InstallChoice::NoChoice: + cDebug() << "No partitioning choice"; + return false; + case InstallChoice::Replace: + case InstallChoice::Alongside: + if ( !( sm_p && sm_p->currentIndex().isValid() ) ) + { + cDebug() << "No partition selected"; + return false; + } + enabled = true; break; - case Replace: - case Alongside: - enabled = sm_p && sm_p->currentIndex().isValid(); - break; - case Erase: - case Manual: + case InstallChoice::Erase: + case InstallChoice::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 == InstallChoice::Alongside || m_choice == InstallChoice::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 != InstallChoice::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 -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; @@ -1500,28 +1524,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 1ff8f0d40..7c364cc1f 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -42,11 +33,12 @@ namespace Calamares class PrettyRadioButton; } +class Config; +class DeviceInfoWidget; class PartitionBarsView; class PartitionSplitterWidget; class PartitionLabelsView; class PartitionCoreModule; -class DeviceInfoWidget; class Device; @@ -61,16 +53,9 @@ class ChoicePage : public QWidget, private Ui::ChoicePage { Q_OBJECT public: - enum InstallChoice - { - NoChoice, - Alongside, - Erase, - Replace, - Manual - }; + using InstallChoice = PartitionActions::Choices::InstallChoice; - explicit ChoicePage( const SwapChoiceSet& swapChoices, QWidget* parent = nullptr ); + explicit ChoicePage( Config* config, QWidget* parent = nullptr ); virtual ~ChoicePage(); /** @@ -126,6 +111,7 @@ private slots: void onEraseSwapChoiceChanged(); private: + bool calculateNextEnabled() const; void updateNextEnabled(); void setupChoices(); QComboBox* createBootloaderComboBox( QWidget* parentButton ); @@ -146,6 +132,7 @@ private: // Translations support void updateSwapChoicesTr( QComboBox* box ); + Config* m_config; bool m_nextEnabled; PartitionCoreModule* m_core; 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.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index a73441bc3..3b51010b8 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -1,39 +1,30 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #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 +44,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 +66,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 +108,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 +124,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 +167,9 @@ CreatePartitionDialog::initMbrPartitionTypeUi() } if ( fixedPartitionString.isEmpty() ) + { m_ui->fixedPartitionLabel->hide(); + } else { m_ui->fixedPartitionLabel->setText( fixedPartitionString ); @@ -188,44 +192,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 +237,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 +252,9 @@ CreatePartitionDialog::updateMountPointUi() m_ui->mountPointLabel->setEnabled( enabled ); m_ui->mountPointComboBox->setEnabled( enabled ); if ( !enabled ) + { m_ui->mountPointComboBox->setCurrentText( QString() ); + } } void @@ -282,8 +276,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..dc756d352 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -49,7 +40,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/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/CreateVolumeGroupDialog.cpp b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp index a255e9902..d0eacb725 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 02ca6410c..4712a9106 100644 --- a/src/modules/partition/gui/CreateVolumeGroupDialog.h +++ b/src/modules/partition/gui/CreateVolumeGroupDialog.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -39,4 +30,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..80eacd05b 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.cpp +++ b/src/modules/partition/gui/DeviceInfoWidget.cpp @@ -1,33 +1,24 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 "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 +30,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 +40,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 +96,7 @@ DeviceInfoWidget::retranslateUi() QString toolTipString = tr( "This device has a %1 partition " "table." ) - .arg( typeString ); + .arg( typeString ); switch ( m_tableType ) { @@ -149,11 +138,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..a69251be1 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.h +++ b/src/modules/partition/gui/DeviceInfoWidget.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -43,4 +34,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..1e66c539c 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -1,34 +1,25 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #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 +39,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 +51,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 +102,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 +143,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 +167,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 +184,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 +209,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 +250,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 +259,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..96cc2c4c4 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -41,7 +32,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/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.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 42a073db7..3ac56575b 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -91,9 +82,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 +140,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,24 +148,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() ) - { - m_ui->m_iconLabel->clear(); - } - else if ( p1 == p2 ) - { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::Yes ); - } - else - { - applyPixmap( m_ui->m_iconLabel, CalamaresUtils::No ); - m_ui->m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); - } - updateState(); } diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h index 79beb1fa7..5c24d68e6 100644 --- a/src/modules/partition/gui/EncryptWidget.h +++ b/src/modules/partition/gui/EncryptWidget.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ @@ -25,7 +16,7 @@ namespace Ui { - class EncryptWidget; +class EncryptWidget; } class EncryptWidget : public QWidget 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/ListPhysicalVolumeWidgetItem.cpp b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp index cd480aa55..1e8a9e573 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -21,11 +12,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..6e0b1c85a 100644 --- a/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h +++ b/src/modules/partition/gui/ListPhysicalVolumeWidgetItem.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -34,4 +25,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..81f518acc 100644 --- a/src/modules/partition/gui/PartitionBarsView.cpp +++ b/src/modules/partition/gui/PartitionBarsView.cpp @@ -1,25 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#include "core/PartitionModel.h" #include "core/ColorUtils.h" +#include "core/PartitionModel.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" @@ -32,8 +23,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 +37,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 +47,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 +105,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 +119,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 +144,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 +159,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 +170,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 +196,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 +210,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 +248,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 +266,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 +291,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 +311,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 +329,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 +399,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 +445,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 +471,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 +501,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 +528,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 +549,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 +560,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..4dacaaae5 100644 --- a/src/modules/partition/gui/PartitionBarsView.h +++ b/src/modules/partition/gui/PartitionBarsView.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 112d12cea..c5c35279d 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -32,16 +23,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 +42,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 +74,7 @@ setSelectedMountPoint(QComboBox& combo, const QString& selected) return; } combo.addItem( selected ); - combo.setCurrentIndex( combo.count() - 1); + combo.setCurrentIndex( combo.count() - 1 ); } } @@ -89,8 +86,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 +106,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..7761004b5 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -54,10 +45,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..7e861d994 100644 --- a/src/modules/partition/gui/PartitionLabelsView.cpp +++ b/src/modules/partition/gui/PartitionLabelsView.cpp @@ -1,26 +1,17 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#include "core/PartitionModel.h" #include "core/ColorUtils.h" +#include "core/PartitionModel.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" @@ -39,8 +30,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 +53,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 +68,6 @@ PartitionLabelsView::minimumSizeHint() const } - QSize PartitionLabelsView::sizeHint() const { @@ -150,7 +137,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 +149,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 +184,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 +265,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 +289,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 +311,9 @@ PartitionLabelsView::sizeForAllLabels( int maxLineWidth ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QSize(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -337,15 +339,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 +362,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 +380,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 +405,9 @@ PartitionLabelsView::indexAt( const QPoint& point ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QModelIndex(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -420,7 +420,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 +428,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 +444,9 @@ PartitionLabelsView::visualRect( const QModelIndex& idx ) const { PartitionModel* modl = qobject_cast< PartitionModel* >( model() ); if ( !modl ) + { return QRect(); + } const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); @@ -455,14 +459,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 +520,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 +562,9 @@ PartitionLabelsView::setSelection( const QRect& rect, QItemSelectionModel::Selec { QModelIndex eventIndex = indexAt( rect.topLeft() ); if ( m_canBeSelected( eventIndex ) ) + { selectionModel()->select( eventIndex, flags ); + } } @@ -582,9 +586,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 +618,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..ac7a272ad 100644 --- a/src/modules/partition/gui/PartitionLabelsView.h +++ b/src/modules/partition/gui/PartitionLabelsView.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -79,8 +70,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 +81,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..b9930504f 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -1,24 +1,15 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -26,19 +17,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 +49,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 +84,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 +120,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 +159,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 +183,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 +191,9 @@ PartitionPage::updateButtons() isVGdeactivated = m_core->isVGdeactivated( lvmDevice ); if ( isVGdeactivated ) + { m_ui->revertButton->setEnabled( true ); + } } } @@ -205,14 +213,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 +243,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 +277,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 +298,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 +315,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 +335,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 +387,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 +411,13 @@ PartitionPage::onEditClicked() Q_ASSERT( partition ); if ( CalamaresUtils::Partition::isPartitionNew( partition ) ) + { updatePartitionToCreate( model->device(), partition ); + } else + { editExistingPartition( model->device(), partition ); - + } } void @@ -419,18 +438,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 +461,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 +476,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 +491,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 +509,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 +522,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 +545,7 @@ PartitionPage::updateSelectedBootLoaderIndex() void PartitionPage::restoreSelectedBootLoader() { - Calamares::restoreSelectedBootLoader( *(m_ui->bootLoaderComboBox), m_core->bootLoaderInstallPath() ); + Calamares::restoreSelectedBootLoader( *( m_ui->bootLoaderComboBox ), m_core->bootLoaderInstallPath() ); } @@ -525,13 +554,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 +573,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 +590,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 +611,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 +629,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 +638,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 +651,9 @@ PartitionPage::getCurrentUsedMountpoints() { const QString& mountPoint = PartitionInfo::mountPoint( partition ); if ( !mountPoint.isEmpty() ) + { mountPoints << mountPoint; + } } return mountPoints; @@ -630,7 +666,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..26c7dbccf 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -1,29 +1,20 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define PARTITIONPAGE_H -#include -#include #include +#include +#include class PartitionCoreModule; class Ui_PartitionPage; @@ -90,8 +81,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/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/PartitionSizeController.cpp b/src/modules/partition/gui/PartitionSizeController.cpp index 39879dab9..b7757c32d 100644 --- a/src/modules/partition/gui/PartitionSizeController.cpp +++ b/src/modules/partition/gui/PartitionSizeController.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -36,7 +27,8 @@ PartitionSizeController::PartitionSizeController( QObject* parent ) : QObject( parent ) -{} +{ +} void PartitionSizeController::init( Device* device, Partition* partition, const QColor& color ) @@ -58,7 +50,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 +102,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 +114,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 +130,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 +150,7 @@ PartitionSizeController::updatePartResizerWidget() } void -PartitionSizeController::doAlignAndUpdatePartResizerWidget( qint64 firstSector, - qint64 lastSector ) +PartitionSizeController::doAlignAndUpdatePartResizerWidget( qint64 firstSector, qint64 lastSector ) { if ( lastSector > m_partResizerWidget->maximumLastSector() ) { @@ -176,7 +177,9 @@ void PartitionSizeController::updateSpinBox() { if ( m_updating ) + { return; + } m_updating = true; doUpdateSpinBox(); m_updating = false; @@ -186,12 +189,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..69cf2ef21 100644 --- a/src/modules/partition/gui/PartitionSizeController.h +++ b/src/modules/partition/gui/PartitionSizeController.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b8a8017ab..93c77bb69 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.cpp +++ b/src/modules/partition/gui/PartitionSplitterWidget.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 ed4f0d112..474ea313e 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.h +++ b/src/modules/partition/gui/PartitionSplitterWidget.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -57,10 +48,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 +68,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 +97,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..fc2f5bcb3 100644 --- a/src/modules/partition/gui/PartitionViewSelectionFilter.h +++ b/src/modules/partition/gui/PartitionViewSelectionFilter.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -25,4 +16,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 b0142a82a..1b70124dd 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -1,27 +1,19 @@ -/* === This file is part of Calamares - === +/* === 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 . */ #include "gui/PartitionViewStep.h" +#include "core/Config.h" #include "core/DeviceModel.h" #include "core/KPMHelpers.h" #include "core/OsproberEntry.h" @@ -64,11 +56,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 ); @@ -93,7 +85,7 @@ void PartitionViewStep::continueLoading() { Q_ASSERT( !m_choicePage ); - m_choicePage = new ChoicePage( m_swapChoices ); + m_choicePage = new ChoicePage( m_config ); m_choicePage->init( m_core ); m_widget->addWidget( m_choicePage ); @@ -107,8 +99,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 ); } @@ -166,20 +158,18 @@ 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: - modeText - = tr( "Erase disk and install %1." ).arg( branding->shortVersionedName() ); + case ChoicePage::InstallChoice::Erase: + modeText = tr( "Erase disk and install %1." ).arg( branding->shortVersionedName() ); break; - case ChoicePage::Replace: - modeText - = tr( "Replace a partition with %1." ).arg( branding->shortVersionedName() ); + 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 ); @@ -192,27 +182,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 ); @@ -258,7 +248,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 ); @@ -295,7 +286,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 ) { @@ -348,6 +339,11 @@ PartitionViewStep::isNextEnabled() const return false; } +void +PartitionViewStep::nextPossiblyChanged( bool ) +{ + emit nextStatusChanged( isNextEnabled() ); +} bool PartitionViewStep::isBackEnabled() const @@ -372,8 +368,9 @@ 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; } @@ -386,18 +383,13 @@ 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 ) + 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? } @@ -475,17 +467,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 ); } @@ -526,6 +518,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(); @@ -553,97 +547,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; - - // 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 ); - 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 63d11c816..6ece9a2b1 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -26,18 +17,18 @@ #include "DllMacro.h" -#include "core/PartitionActions.h" - #include #include class ChoicePage; +class Config; class PartitionPage; class PartitionCoreModule; class QStackedWidget; class WaitingWidget; -template class QFutureWatcher; +template < typename T > +class QFutureWatcher; /** * The starting point of the module. Instantiates PartitionCoreModule, @@ -78,19 +69,20 @@ private: void initPartitionCoreModule(); void continueLoading(); + /// "slot" for changes to next-status from the KPMCore and ChoicePage + void nextPossiblyChanged( bool ); + + 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; - - QSet< PartitionActions::Choices::SwapChoice > m_swapChoices; - - qreal m_requiredStorageGiB; // May duplicate setting in the welcome module + 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..7e4fb48d6 100644 --- a/src/modules/partition/gui/ReplaceWidget.cpp +++ b/src/modules/partition/gui/ReplaceWidget.cpp @@ -1,29 +1,20 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #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 +32,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 +46,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 +85,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 +112,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 +129,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 +152,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 +162,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 +170,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 +186,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 +214,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 +237,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 +247,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 +263,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 +274,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 +288,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 +302,9 @@ void ReplaceWidget::setNextEnabled( bool enabled ) { if ( enabled == m_nextEnabled ) + { return; + } m_nextEnabled = enabled; emit nextStatusChanged( enabled ); @@ -333,27 +315,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 +352,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 +366,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..5277e5626 100644 --- a/src/modules/partition/gui/ReplaceWidget.h +++ b/src/modules/partition/gui/ReplaceWidget.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -23,8 +14,8 @@ #include "utils/CalamaresUtilsGui.h" -#include #include +#include class Ui_ReplaceWidget; class QComboBox; @@ -35,9 +26,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 +58,4 @@ private: void onPartitionModelReset(); }; -#endif // REPLACEWIDGET_H +#endif // REPLACEWIDGET_H 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/ResizeVolumeGroupDialog.cpp b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp index 2de999360..d0103954d 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -29,7 +20,7 @@ #include #include -ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice *device, +ResizeVolumeGroupDialog::ResizeVolumeGroupDialog( LvmDevice* device, const PartitionVector& availablePVs, PartitionVector& selectedPVs, QWidget* parent ) @@ -39,12 +30,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..7b8ecf6d6 100644 --- a/src/modules/partition/gui/ResizeVolumeGroupDialog.h +++ b/src/modules/partition/gui/ResizeVolumeGroupDialog.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -30,7 +21,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 +32,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..cd22bb861 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -22,14 +13,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 +31,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 +43,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 +59,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..757b94eb6 100644 --- a/src/modules/partition/gui/ScanningDialog.h +++ b/src/modules/partition/gui/ScanningDialog.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -28,19 +19,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 +40,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..6277c30e5 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.cpp +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -30,46 +21,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 +69,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 +91,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 +100,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 +114,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 +131,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..253160d97 100644 --- a/src/modules/partition/gui/VolumeGroupBaseDialog.h +++ b/src/modules/partition/gui/VolumeGroupBaseDialog.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -23,7 +14,8 @@ #include -namespace Ui { +namespace Ui +{ class VolumeGroupBaseDialog; } @@ -37,9 +29,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 +68,4 @@ private: qint64 m_usedSizeValue; }; -#endif // VOLUMEGROUPBASEDIALOG_H +#endif // VOLUMEGROUPBASEDIALOG_H 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/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index 29f00ebd2..825c82ec1 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2accc652d..99a7b4844 100644 --- a/src/modules/partition/jobs/ClearMountsJob.h +++ b/src/modules/partition/jobs/ClearMountsJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 cf2c71f0c..2f90278fe 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.cpp +++ b/src/modules/partition/jobs/ClearTempMountsJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 433cfd8ad..0726975c7 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.h +++ b/src/modules/partition/jobs/ClearTempMountsJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 fd322a94e..a4fa195ee 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f315e24fb..3d6199804 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.h +++ b/src/modules/partition/jobs/CreatePartitionJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 79675c324..0913a1cfc 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionTableJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e0ed6f918..ee1ba0a38 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.h +++ b/src/modules/partition/jobs/CreatePartitionTableJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 28a08f5ad..af9997df6 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9ed5e24e2..e9682043c 100644 --- a/src/modules/partition/jobs/CreateVolumeGroupJob.h +++ b/src/modules/partition/jobs/CreateVolumeGroupJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 77df64e3d..92086015d 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7b1c9c473..a6bdd4ddb 100644 --- a/src/modules/partition/jobs/DeactivateVolumeGroupJob.h +++ b/src/modules/partition/jobs/DeactivateVolumeGroupJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9b2d4f37d..913fd8cd6 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.cpp +++ b/src/modules/partition/jobs/DeletePartitionJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f68a4ea8f..6d5ff1377 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.h +++ b/src/modules/partition/jobs/DeletePartitionJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e3f696bbc..f26b70a97 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp +++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e3850da37..c1256de12 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.h +++ b/src/modules/partition/jobs/FillGlobalStorageJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 45e851baf..4dadacf9c 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.cpp +++ b/src/modules/partition/jobs/FormatPartitionJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 2031efc78..38b2ee1a9 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.h +++ b/src/modules/partition/jobs/FormatPartitionJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 6b8dc9034..3bdb05ebd 100644 --- a/src/modules/partition/jobs/PartitionJob.cpp +++ b/src/modules/partition/jobs/PartitionJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 eef6aaa4c..5222cf4d3 100644 --- a/src/modules/partition/jobs/PartitionJob.h +++ b/src/modules/partition/jobs/PartitionJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 ed8353e72..a3b5b8d73 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0a52a837e..03f52135b 100644 --- a/src/modules/partition/jobs/RemoveVolumeGroupJob.h +++ b/src/modules/partition/jobs/RemoveVolumeGroupJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9ebd4ce7e..87b87c1c0 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.cpp +++ b/src/modules/partition/jobs/ResizePartitionJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f8413f214..9e24b2d04 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.h +++ b/src/modules/partition/jobs/ResizePartitionJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b44fd017b..0c017877e 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 808c39d32..9e3f038c2 100644 --- a/src/modules/partition/jobs/ResizeVolumeGroupJob.h +++ b/src/modules/partition/jobs/ResizeVolumeGroupJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 3c9403b50..7b6101241 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp @@ -1,23 +1,14 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 41b01ecde..eb6d9586c 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.h +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.h @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/partition.conf b/src/modules/partition/partition.conf index 51dc70e99..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. @@ -34,10 +37,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 @@ -49,6 +52,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 @@ -86,16 +112,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 198123dd5..770b8a645 100644 --- a/src/modules/partition/partition.schema.yaml +++ b/src/modules/partition/partition.schema.yaml @@ -1,11 +1,29 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $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 + initialPartitioningChoice: { type: string, enum: [ none, erase, replace, alongside, manual ] } + + requiredStorage: { type: number } +required: + - efiSystemPartition + - userSwapChoices diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index 0bd559fd1..dd4e41068 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/partition/tests/ClearMountsJobTests.cpp b/src/modules/partition/tests/ClearMountsJobTests.cpp index 17ff48945..e05af4897 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.cpp +++ b/src/modules/partition/tests/ClearMountsJobTests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -26,19 +17,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 +44,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" ); diff --git a/src/modules/partition/tests/ClearMountsJobTests.h b/src/modules/partition/tests/ClearMountsJobTests.h index 0cc2b5c78..4b13fdc3d 100644 --- a/src/modules/partition/tests/ClearMountsJobTests.h +++ b/src/modules/partition/tests/ClearMountsJobTests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 de6f0d7bb..94eec8496 100644 --- a/src/modules/partition/tests/PartitionJobTests.cpp +++ b/src/modules/partition/tests/PartitionJobTests.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Copyright 2014, Aurélien Gâteau - * Copyright 2018, Philip Müller - * Copyright 2017, 2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2014 Aurélien Gâteau + * SPDX-FileCopyrightText: 2018, Philip Müller + * 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" @@ -224,7 +215,7 @@ PartitionJobTests::queuePartitionTableCreation( PartitionTable::TableType type ) { auto job = new CreatePartitionTableJob( m_device.data(), type ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); } CreatePartitionJob* @@ -276,7 +267,7 @@ PartitionJobTests::testCreatePartition() Partition* partition1 = job->partition(); QVERIFY( partition1 ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); @@ -284,7 +275,7 @@ PartitionJobTests::testCreatePartition() Partition* partition2 = job->partition(); QVERIFY( partition2 ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); @@ -292,7 +283,7 @@ PartitionJobTests::testCreatePartition() Partition* partition3 = job->partition(); QVERIFY( partition3 ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); QVERIFY( m_runner.run() ); @@ -317,14 +308,14 @@ PartitionJobTests::testCreatePartitionExtended() Partition* partition1 = job->partition(); QVERIFY( partition1 ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Extended ), FileSystem::Extended, 10_MiB ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); Partition* extendedPartition = job->partition(); freePartition = firstFreePartition( extendedPartition ); @@ -333,7 +324,7 @@ PartitionJobTests::testCreatePartitionExtended() Partition* partition2 = job->partition(); QVERIFY( partition2 ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); QVERIFY( m_runner.run() ); @@ -395,7 +386,7 @@ PartitionJobTests::testResizePartition() KPM_PARTITION_FLAG( None ) ); CreatePartitionJob* job = new CreatePartitionJob( m_device.data(), partition ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); QVERIFY( m_runner.run() ); } @@ -419,7 +410,7 @@ PartitionJobTests::testResizePartition() // Resize ResizePartitionJob* job = new ResizePartitionJob( m_device.data(), partition, newFirst, newLast ); job->updatePreview(); - m_queue.enqueue( job_ptr( job ) ); + m_queue.enqueue( 1, JobList() << job_ptr( job ) ); QVERIFY( m_runner.run() ); QCOMPARE( partition->firstSector(), newFirst ); diff --git a/src/modules/partition/tests/PartitionJobTests.h b/src/modules/partition/tests/PartitionJobTests.h index 4ce064ec7..364213f54 100644 --- a/src/modules/partition/tests/PartitionJobTests.h +++ b/src/modules/partition/tests/PartitionJobTests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 93c88b291..15c836b5b 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/plasmalnf/PlasmaLnfJob.cpp b/src/modules/plasmalnf/PlasmaLnfJob.cpp index d5db8ae4c..0721bcd88 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.cpp +++ b/src/modules/plasmalnf/PlasmaLnfJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -30,9 +21,7 @@ PlasmaLnfJob::PlasmaLnfJob( const QString& lnfPath, const QString& id ) } -PlasmaLnfJob::~PlasmaLnfJob() -{ -} +PlasmaLnfJob::~PlasmaLnfJob() {} QString @@ -42,12 +31,7 @@ PlasmaLnfJob::prettyName() const } QString -PlasmaLnfJob::prettyDescription() const -{ - return prettyName(); -} - -QString PlasmaLnfJob::prettyStatusMessage() const +PlasmaLnfJob::prettyStatusMessage() const { return prettyName(); } @@ -61,18 +45,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 ef9ee1257..314070c0c 100644 --- a/src/modules/plasmalnf/PlasmaLnfJob.h +++ b/src/modules/plasmalnf/PlasmaLnfJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -33,7 +24,6 @@ public: virtual ~PlasmaLnfJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; @@ -43,4 +33,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..a44620074 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -1,29 +1,20 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #include "ui_page_plasmalnf.h" +#include "Settings.h" #include "utils/Logger.h" #include "utils/Retranslator.h" -#include "Settings.h" #include @@ -38,17 +29,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 +55,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 +79,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 +88,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 +111,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 +131,8 @@ void PlasmaLnfPage::updateThemeNames() } } -void PlasmaLnfPage::winnowThemes() +void +PlasmaLnfPage::winnowThemes() { auto plasmaThemes = plasma_themes(); bool winnowed = true; @@ -167,7 +161,8 @@ void PlasmaLnfPage::winnowThemes() } } -void PlasmaLnfPage::fillUi() +void +PlasmaLnfPage::fillUi() { if ( m_enabledThemes.isEmpty() ) { @@ -180,7 +175,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 +183,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..287da8b29 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -75,8 +66,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..9bda0164b 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -32,7 +23,7 @@ #include #endif -CALAMARES_PLUGIN_FACTORY_DEFINITION( PlasmaLnfViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( PlasmaLnfViewStepFactory, registerPlugin< PlasmaLnfViewStep >(); ) static QString currentPlasmaTheme() @@ -58,7 +49,9 @@ PlasmaLnfViewStep::PlasmaLnfViewStep( QObject* parent ) PlasmaLnfViewStep::~PlasmaLnfViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -104,7 +97,8 @@ PlasmaLnfViewStep::isAtEnd() const } -void PlasmaLnfViewStep::onLeave() +void +PlasmaLnfViewStep::onLeave() { } @@ -118,9 +112,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 +131,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 +163,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 +191,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 +207,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..a98ec4bf5 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,27 +1,18 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define PLASMALNFVIEWSTEP_H +#include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" -#include "DllMacro.h" #include #include @@ -60,9 +51,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..6848fb8c3 100644 --- a/src/modules/plasmalnf/ThemeInfo.h +++ b/src/modules/plasmalnf/ThemeInfo.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -42,7 +33,8 @@ struct ThemeInfo ThemeInfo() : widget( nullptr ) - {} + { + } explicit ThemeInfo( const QString& _id ) : id( _id ) @@ -54,13 +46,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 +64,9 @@ public: for ( ThemeInfo& i : *this ) { if ( i.id == id ) + { return &i; + } } return nullptr; } @@ -82,16 +77,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..8314544eb 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -1,28 +1,19 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #include "ThemeInfo.h" +#include "Branding.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" -#include "Branding.h" #include #include @@ -38,33 +29,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 +98,9 @@ void ThemeWidget::clicked( bool checked ) { if ( checked ) + { emit themeSelected( m_id ); + } } QAbstractButton* @@ -108,7 +109,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..133dfc2a0 100644 --- a/src/modules/plasmalnf/ThemeWidget.h +++ b/src/modules/plasmalnf/ThemeWidget.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -47,7 +38,6 @@ private: QString m_id; QRadioButton* m_check; QLabel* m_description; -} ; +}; #endif - 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/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/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/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index e224f5df0..c51314e7f 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/plymouthcfg/plymouthcfg.schema.yaml b/src/modules/plymouthcfg/plymouthcfg.schema.yaml index b15db1527..27925ec02 100644 --- a/src/modules/plymouthcfg/plymouthcfg.schema.yaml +++ b/src/modules/plymouthcfg/plymouthcfg.schema.yaml @@ -1,7 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/plymouthcfg additionalProperties: false type: object properties: - plymouth_theme: { type: str } + plymouth_theme: { type: string } diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index f6cd98008..d19645089 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -1,10 +1,14 @@ +# === 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 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..8194b3221 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -1,39 +1,27 @@ -/* === This file is part of Calamares - === +/* === 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 - * 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 +30,13 @@ QString targetPrefix() { QString r = gs->value( "rootMountPoint" ).toString(); if ( !r.isEmpty() ) + { return r; + } else + { cDebug() << "RootMountPoint is empty"; + } } else { @@ -55,16 +47,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 +71,7 @@ PreserveFiles::PreserveFiles( QObject* parent ) { } -PreserveFiles::~PreserveFiles() -{ -} +PreserveFiles::~PreserveFiles() {} QString PreserveFiles::prettyName() const @@ -107,8 +102,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 +110,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,37 +132,34 @@ 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 ) ) + if ( Calamares::JobQueue::instance()->globalStorage()->saveJson( 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 ) ) { 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 ) - 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; + if ( !it.perm.apply( CalamaresUtils::System::instance()->targetPath( bare_dest ) ) ) + { + cWarning() << "Could not set attributes of" << bare_dest; + } } ++count; @@ -171,12 +167,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 +190,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 +202,24 @@ 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, CalamaresUtils::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 +231,16 @@ void 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 + { 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..d2b7373e2 100644 --- a/src/modules/preservefiles/PreserveFiles.h +++ b/src/modules/preservefiles/PreserveFiles.h @@ -1,35 +1,22 @@ -/* === This file is part of Calamares - === +/* === 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 - * 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,15 +27,15 @@ class PLUGINDLLEXPORT PreserveFiles : public Calamares::CppJob Path, Log, Config - } ; + }; struct Item { QString source; QString dest; - Permissions perm; + CalamaresUtils::Permissions perm; ItemType type; - } ; + }; using ItemList = QList< Item >; @@ -68,4 +55,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( PreserveFilesFactory ) -#endif // PRESERVEFILES_H +#endif // PRESERVEFILES_H diff --git a/src/modules/preservefiles/permissions.cpp b/src/modules/preservefiles/permissions.cpp deleted file mode 100644 index a3f8ac136..000000000 --- a/src/modules/preservefiles/permissions.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* === 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 . - * - */ - -#include -#include -#include "permissions.h" - -Permissions::Permissions() : - m_username(), - m_group(), - m_valid(false), - m_value(0) -{ -} - - -Permissions::Permissions(QString p) : Permissions() -{ - parsePermissions(p); -} - -void Permissions::parsePermissions(const QString& p) { - - QStringList segments = p.split(":"); - - if (segments.length() != 3) { - m_valid = false; - return; - } - - if (segments[0].isEmpty() || segments[1].isEmpty()) { - m_valid = false; - return; - } - - bool ok; - int octal = segments[2].toInt(&ok, 8); - if (!ok || octal == 0) { - m_valid = false; - return; - } 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]; - - return; - -} - - - - - - diff --git a/src/modules/preservefiles/permissions.h b/src/modules/preservefiles/permissions.h deleted file mode 100644 index 4cb70a2c2..000000000 --- a/src/modules/preservefiles/permissions.h +++ /dev/null @@ -1,62 +0,0 @@ -/* === 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 . - * - */ - -#ifndef PERMISSIONS_H -#define PERMISSIONS_H - -#include - -/** - * @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 -{ - -public: - - /** @brief Constructor - * - * Splits the string @p at the colon (":") into separate elements for - * , , and (permissions), where is returned as - * an **octal** integer. - */ - Permissions(QString p); - - /** @brief Default constructor of an invalid Permissions. */ - Permissions(); - - bool isValid() const { return m_valid; } - QString username() const { return m_username; } - QString group() const { return m_group; } - int value() const { return m_value; } - QString octal() const { return QString::number( m_value, 8 ); } - -private: - void parsePermissions(QString const &p); - - QString m_username; - QString m_group; - bool m_valid; - int m_value; - -}; - -#endif // PERMISSIONS_H 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/main.py b/src/modules/rawfs/main.py index 68f3c444e..a72ffe19d 100644 --- a/src/modules/rawfs/main.py +++ b/src/modules/rawfs/main.py @@ -1,22 +1,13 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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/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/removeuser/CMakeLists.txt b/src/modules/removeuser/CMakeLists.txt index 55798feac..cf4243e7d 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/removeuser/RemoveUserJob.cpp b/src/modules/removeuser/RemoveUserJob.cpp index 0488d19a4..9475b9bea 100644 --- a/src/modules/removeuser/RemoveUserJob.cpp +++ b/src/modules/removeuser/RemoveUserJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 d13e834f0..8f7de35e0 100644 --- a/src/modules/removeuser/RemoveUserJob.h +++ b/src/modules/removeuser/RemoveUserJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/removeuser/removeuser.schema.yaml b/src/modules/removeuser/removeuser.schema.yaml index 7ed6cfbbe..c28271716 100644 --- a/src/modules/removeuser/removeuser.schema.yaml +++ b/src/modules/removeuser/removeuser.schema.yaml @@ -1,7 +1,10 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/removeuser additionalProperties: false type: object properties: - "username": { type: string, required: true } + username: { type: string } +required: [ username ] diff --git a/src/modules/services-openrc/main.py b/src/modules/services-openrc/main.py index 23591fb84..cb1ae8020 100644 --- a/src/modules/services-openrc/main.py +++ b/src/modules/services-openrc/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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-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/main.py b/src/modules/services-systemd/main.py index cd13d9ce9..e3d3e20a5 100644 --- a/src/modules/services-systemd/main.py +++ b/src/modules/services-systemd/main.py @@ -1,25 +1,16 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/module.desc b/src/modules/services-systemd/module.desc index 4a72b658b..e016c6dcb 100644 --- a/src/modules/services-systemd/module.desc +++ b/src/modules/services-systemd/module.desc @@ -1,6 +1,7 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 --- type: "job" name: "services-systemd" interface: "python" -requires: [] script: "main.py" diff --git a/src/modules/services-systemd/services-systemd.conf b/src/modules/services-systemd/services-systemd.conf index 4d34df7d0..8c7d83c92 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/CMakeLists.txt b/src/modules/shellprocess/CMakeLists.txt index ec1cf0bcf..448be0625 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/shellprocess/ShellProcessJob.cpp b/src/modules/shellprocess/ShellProcessJob.cpp index d0507a732..ab00a0bdd 100644 --- a/src/modules/shellprocess/ShellProcessJob.cpp +++ b/src/modules/shellprocess/ShellProcessJob.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 708a43087..c63a7b91f 100644 --- a/src/modules/shellprocess/ShellProcessJob.h +++ b/src/modules/shellprocess/ShellProcessJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 caf9800c9..77368db48 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 5b4ebebbb..cabeaada2 100644 --- a/src/modules/shellprocess/Tests.h +++ b/src/modules/shellprocess/Tests.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/summary/CMakeLists.txt b/src/modules/summary/CMakeLists.txt index ce71357cd..57dc731cb 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/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp index 2885b1d61..d6917d962 100644 --- a/src/modules/summary/SummaryPage.cpp +++ b/src/modules/summary/SummaryPage.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -45,21 +36,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 +69,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 +77,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 +99,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 +144,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..1adb67017 100644 --- a/src/modules/summary/SummaryPage.h +++ b/src/modules/summary/SummaryPage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -70,4 +61,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..c5b6841ed 100644 --- a/src/modules/summary/SummaryViewStep.cpp +++ b/src/modules/summary/SummaryViewStep.cpp @@ -1,26 +1,17 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" #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 +24,9 @@ SummaryViewStep::SummaryViewStep( QObject* parent ) SummaryViewStep::~SummaryViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -98,4 +91,3 @@ SummaryViewStep::onLeave() { m_widget->createContentWidget(); } - diff --git a/src/modules/summary/SummaryViewStep.h b/src/modules/summary/SummaryViewStep.h index 5b2f49b8e..0a2933d8b 100644 --- a/src/modules/summary/SummaryViewStep.h +++ b/src/modules/summary/SummaryViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -57,4 +48,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( SummaryViewStepFactory ) -#endif // SUMMARYPAGEPLUGIN_H +#endif // SUMMARYPAGEPLUGIN_H diff --git a/src/modules/tracking/CMakeLists.txt b/src/modules/tracking/CMakeLists.txt index 894663426..fe0b315e3 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/tracking/Config.cpp b/src/modules/tracking/Config.cpp index 9e8179905..f1f61edfd 100644 --- a/src/modules/tracking/Config.cpp +++ b/src/modules/tracking/Config.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 ad7d1d4f2..655a71410 100644 --- a/src/modules/tracking/Config.h +++ b/src/modules/tracking/Config.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b7ed57ab1..c3fe90ad1 100644 --- a/src/modules/tracking/Tests.cpp +++ b/src/modules/tracking/Tests.cpp @@ -1,16 +1,15 @@ -/* === 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 - * License-Filename: LICENSE */ #include "Config.h" #include "utils/Logger.h" -#include #include +#include class TrackingTests : public QObject { @@ -29,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/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 00ef06e10..dba6000e1 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -46,12 +37,6 @@ TrackingInstallJob::prettyName() const return tr( "Installation feedback" ); } -QString -TrackingInstallJob::prettyDescription() const -{ - return prettyName(); -} - QString TrackingInstallJob::prettyStatusMessage() const { @@ -86,12 +71,6 @@ TrackingMachineUpdateManagerJob::prettyName() const return tr( "Machine feedback" ); } -QString -TrackingMachineUpdateManagerJob::prettyDescription() const -{ - return prettyName(); -} - QString TrackingMachineUpdateManagerJob::prettyStatusMessage() const { @@ -143,12 +122,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..b58880f00 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -54,7 +45,6 @@ public: ~TrackingInstallJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; @@ -75,7 +65,6 @@ public: ~TrackingMachineUpdateManagerJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; }; @@ -93,7 +82,6 @@ public: ~TrackingKUserFeedbackJob() override; QString prettyName() const override; - QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 618e1bc8f..ffdb8be66 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -37,7 +28,7 @@ TrackingPage::TrackingPage( Config* config, QWidget* parent ) , ui( new Ui::TrackingPage ) { ui->setupUi( this ); - CALAMARES_RETRANSLATE_SLOT( &TrackingPage::retranslate ); + CALAMARES_RETRANSLATE_SLOT( &TrackingPage::retranslate ) ui->noneCheckBox->setChecked( true ); ui->noneCheckBox->setEnabled( false ); diff --git a/src/modules/tracking/TrackingPage.h b/src/modules/tracking/TrackingPage.h index 7df43b846..eb843b755 100644 --- a/src/modules/tracking/TrackingPage.h +++ b/src/modules/tracking/TrackingPage.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 22e3157d6..81af34688 100644 --- a/src/modules/tracking/TrackingType.h +++ b/src/modules/tracking/TrackingType.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 da5d9108d..7955846c3 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 b05f1b053..7b27dbec6 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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/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/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/main.py b/src/modules/umount/main.py index 454222c5c..86ab1599a 100644 --- a/src/modules/umount/main.py +++ b/src/modules/umount/main.py @@ -1,24 +1,15 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/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 22a2e7441..b6d86e353 100644 --- a/src/modules/umount/umount.conf +++ b/src/modules/umount/umount.conf @@ -1,36 +1,19 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# ### Umount Module # # This module represents the last part of the installation, the unmounting # of partitions used for the install. It is also the last place where it -# is possible to copy files to the target system, thus the best place to -# copy an installation log. +# is possible to copy files to the target system. +# +# The "copy log files" functionality is deprecated; use the *preservefiles* +# module instead, which is more flexible. # # This module has two configuration keys: # srcLog location in the live system where the log is # destLog location in the target system to copy the log # -# You can either use the default source path (which is -# `/root/.cache/calamares/session.log` ) to copy the regular log, -# or if you want to use the full output of `sudo calamares -d` you will need -# to redirect standard output, for instance in a launcher script or -# in the desktop file. -# -# Example launcher script: -# -# ``` -# #!/bin/sh -# sudo /usr/bin/calamares -d > installation.log -# ``` -# -# Example desktop line: -# -# ``` -# Exec=sudo /usr/bin/calamares -d > installation.log -# ``` -# -# If no source and destination are set, no copy is attempted. If the -# copy fails for some reason, a warning is printed but the installation -# does not fail. --- # example when using the normal Calamares log: diff --git a/src/modules/umount/umount.schema.yaml b/src/modules/umount/umount.schema.yaml index b76a14ac6..9b81db3d9 100644 --- a/src/modules/umount/umount.schema.yaml +++ b/src/modules/umount/umount.schema.yaml @@ -1,8 +1,10 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/umount additionalProperties: false type: object properties: - "srcLog": { type: str } - "destLog": { type: str } + srcLog: { type: string } + destLog: { type: string } diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 00de4165d..d89607465 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -1,28 +1,19 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Calamares is Free Software: see the License-Identifier above. # -# Calamares is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU 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/unpackfs/module.desc b/src/modules/unpackfs/module.desc index 4b3086e44..2723c3c46 100644 --- a/src/modules/unpackfs/module.desc +++ b/src/modules/unpackfs/module.desc @@ -1,8 +1,10 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 # Syntax is YAML 1.2 --- type: "job" name: "unpackfs" interface: "python" script: "main.py" -requiredModules: - - mount +requiredModules: [ mount ] +weight: 12 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 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: 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/unpackfs/unpackfs.schema.yaml b/src/modules/unpackfs/unpackfs.schema.yaml index 0d6f0955a..66c7c0da8 100644 --- a/src/modules/unpackfs/unpackfs.schema.yaml +++ b/src/modules/unpackfs/unpackfs.schema.yaml @@ -1,14 +1,20 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/unpackfs additionalProperties: false type: object properties: - "unpack": - type: seq - sequence: - - type: map - mapping: - "source": { type: string, required: true } - "sourcefs": { type: str } - "destination": { type: str } + unpack: + type: array + items: + type: object + additionalProperties: false + properties: + source: { type: string } + sourcefs: { type: string } + destination: { type: string } + excludeFile: { type: string } + exclude: { type: array, items: { type: string } } + required: [ source , sourcefs, destination ] diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 1d969a93b..5752ae67a 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 ) @@ -18,16 +23,24 @@ endif() include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) +set( JOB_SRC + CreateUserJob.cpp + SetPasswordJob.cpp + SetHostNameJob.cpp +) +set( CONFIG_SRC + CheckPWQuality.cpp + Config.cpp +) + calamares_add_plugin( users TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES - CreateUserJob.cpp - SetPasswordJob.cpp UsersViewStep.cpp UsersPage.cpp - SetHostNameJob.cpp - CheckPWQuality.cpp + ${JOB_SRC} + ${CONFIG_SRC} UI page_usersetup.ui RESOURCES @@ -43,17 +56,36 @@ calamares_add_plugin( users calamares_add_test( userspasswordtest SOURCES - PasswordTests.cpp + TestPasswordJob.cpp SetPasswordJob.cpp LIBRARIES ${CRYPT_LIBRARIES} ) +calamares_add_test( + userscreatetest + SOURCES + TestCreateUserJob.cpp + CreateUserJob.cpp +) + +calamares_add_test( + usershostnametest + SOURCES + TestSetHostNameJob.cpp + SetHostNameJob.cpp + LIBRARIES + Qt5::DBus # HostName job can use DBus to systemd +) + calamares_add_test( userstest SOURCES Tests.cpp - SetHostNameJob.cpp + ${JOB_SRC} + ${CONFIG_SRC} LIBRARIES - Qt5::DBus + ${USER_EXTRA_LIB} + Qt5::DBus # HostName job can use DBus to systemd + ${CRYPT_LIBRARIES} # SetPassword job uses crypt() ) diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index ab3eed84f..9332c6080 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -1,19 +1,14 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * 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 distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Calamares is Free Software: see the License-Identifier above. * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "CheckPWQuality.h" @@ -22,7 +17,6 @@ #include #include -#include #ifdef HAVE_LIBPWQUALITY #include @@ -55,7 +49,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 +65,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 +343,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/CheckPWQuality.h b/src/modules/users/CheckPWQuality.h index 1aeb34ba8..6d7fb56df 100644 --- a/src/modules/users/CheckPWQuality.h +++ b/src/modules/users/CheckPWQuality.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 new file mode 100644 index 000000000..d0f573286 --- /dev/null +++ b/src/modules/users/Config.cpp @@ -0,0 +1,754 @@ +/* === 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 "Config.h" + +#include "CreateUserJob.h" +#include "SetHostNameJob.h" +#include "SetPasswordJob.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/Logger.h" +#include "utils/String.h" +#include "utils/Variant.h" + +#include +#include +#include + +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; + +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() +{ + // *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 ) +{ + emit readyChanged( m_isReady ); // false + + // Gang together all the changes of status to one readyChanged() signal + connect( this, &Config::hostNameStatusChanged, this, &Config::checkReady ); + connect( this, &Config::loginNameStatusChanged, this, &Config::checkReady ); + connect( this, &Config::fullNameChanged, this, &Config::checkReady ); + connect( this, &Config::userPasswordStatusChanged, this, &Config::checkReady ); + connect( this, &Config::rootPasswordStatusChanged, this, &Config::checkReady ); + connect( this, &Config::reuseUserPasswordForRootChanged, this, &Config::checkReady ); + connect( this, &Config::requireStrongPasswordsChanged, this, &Config::checkReady ); +} + +Config::~Config() {} + +void +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 + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( gs ) + { + gs->insert( "userShell", shell ); + } +} + +static inline void +insertInGlobalStorage( 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 ) +{ + insertInGlobalStorage( QStringLiteral( "autologinGroup" ), group ); + emit autologinGroupChanged( group ); +} + +void +Config::setSudoersGroup( const QString& group ) +{ + insertInGlobalStorage( QStringLiteral( "sudoersGroup" ), group ); + emit sudoersGroupChanged( group ); +} + + +void +Config::setLoginName( const QString& login ) +{ + if ( login != m_loginName ) + { + updateGSAutoLogin( doAutoLogin(), 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(); + } + + 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 ); + } + } + + QRegExp validateFirstLetter( "^[a-z_]" ); + if ( validateFirstLetter.indexIn( m_loginName ) != 0 ) + { + return tr( "Your username must start with a lowercase letter or underscore." ); + } + if ( !USERNAME_RX.exactMatch( m_loginName ) ) + { + return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ); + } + + return QString(); +} + +void +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 ); + 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 ); + } + } + + if ( !HOSTNAME_RX.exactMatch( m_hostName ) ) + { + return tr( "Only letters, numbers, underscore and hyphen are allowed." ); + } + + return QString(); +} + + +/** @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() || parts.first().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(); +} + +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::setFullName( const QString& name ) +{ + 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 fullNameChanged( 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 ) + { + setLoginName( login ); + // It's **still** not custom, though setLoginName() sets that + m_customLoginName = false; + } + } + if ( !m_customHostName ) + { + QString hostname = makeHostnameSuggestion( cleanParts ); + if ( !hostname.isEmpty() && hostname != m_hostName ) + { + setHostName( hostname ); + // Still not custom + m_customHostName = false; + } + } + } +} + +void +Config::setAutoLogin( bool b ) +{ + if ( b != m_doAutoLogin ) + { + updateGSAutoLogin( b, loginName() ); + m_doAutoLogin = b; + emit autoLoginChanged( b ); + } +} + +void +Config::setReuseUserPasswordForRoot( bool reuse ) +{ + if ( reuse != m_reuseUserPasswordForRoot ) + { + m_reuseUserPasswordForRoot = reuse; + emit reuseUserPasswordForRootChanged( reuse ); + { + auto rp = rootPasswordStatus(); + emit rootPasswordStatusChanged( rp.first, rp.second ); + } + } +} + +void +Config::setRequireStrongPasswords( bool strong ) +{ + if ( strong != m_requireStrongPasswords ) + { + m_requireStrongPasswords = strong; + emit requireStrongPasswordsChanged( strong ); + { + auto rp = rootPasswordStatus(); + emit rootPasswordStatusChanged( rp.first, rp.second ); + } + { + auto up = userPasswordStatus(); + emit userPasswordStatusChanged( up.first, up.second ); + } + } +} + +void +Config::setUserPassword( const QString& s ) +{ + if ( s != m_userPassword ) + { + m_userPassword = s; + const auto p = passwordStatus( m_userPassword, m_userPasswordSecondary ); + emit userPasswordStatusChanged( p.first, p.second ); + emit userPasswordChanged( s ); + } +} + +void +Config::setUserPasswordSecondary( const QString& s ) +{ + if ( s != m_userPasswordSecondary ) + { + m_userPasswordSecondary = s; + const auto p = passwordStatus( m_userPassword, m_userPasswordSecondary ); + emit userPasswordStatusChanged( p.first, p.second ); + emit userPasswordSecondaryChanged( s ); + } +} + +/** @brief Checks two copies of the password for validity + * + * Given two copies of the password -- generally the password and + * the secondary fields -- checks them for validity and returns + * a pair of . + * + */ +Config::PasswordStatus +Config::passwordStatus( const QString& pw1, const QString& pw2 ) const +{ + if ( pw1 != pw2 ) + { + return qMakePair( PasswordValidity::Invalid, tr( "Your passwords do not match!" ) ); + } + + bool failureIsFatal = requireStrongPasswords(); + for ( const auto& pc : m_passwordChecks ) + { + QString message = pc.filter( pw1 ); + + if ( !message.isEmpty() ) + { + return qMakePair( failureIsFatal ? PasswordValidity::Invalid : PasswordValidity::Weak, message ); + } + } + + return qMakePair( PasswordValidity::Valid, QString() ); +} + + +Config::PasswordStatus +Config::userPasswordStatus() const +{ + return passwordStatus( m_userPassword, m_userPasswordSecondary ); +} + +int +Config::userPasswordValidity() const +{ + auto p = userPasswordStatus(); + return p.first; +} + +QString +Config::userPasswordMessage() const +{ + auto p = userPasswordStatus(); + return p.second; +} + + +void +Config::setRootPassword( const QString& s ) +{ + if ( writeRootPassword() && s != m_rootPassword ) + { + m_rootPassword = s; + const auto p = passwordStatus( m_rootPassword, m_rootPasswordSecondary ); + emit rootPasswordStatusChanged( p.first, p.second ); + emit rootPasswordChanged( s ); + } +} + +void +Config::setRootPasswordSecondary( const QString& s ) +{ + if ( writeRootPassword() && s != m_rootPasswordSecondary ) + { + m_rootPasswordSecondary = s; + const auto p = passwordStatus( m_rootPassword, m_rootPasswordSecondary ); + emit rootPasswordStatusChanged( p.first, p.second ); + emit rootPasswordSecondaryChanged( 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(); +} + +Config::PasswordStatus +Config::rootPasswordStatus() const +{ + if ( writeRootPassword() && !reuseUserPasswordForRoot() ) + { + return passwordStatus( m_rootPassword, m_rootPasswordSecondary ); + } + else + { + return userPasswordStatus(); + } +} + +int +Config::rootPasswordValidity() const +{ + auto p = rootPasswordStatus(); + return p.first; +} + +QString +Config::rootPasswordMessage() const +{ + auto p = rootPasswordStatus(); + return p.second; +} + +bool +Config::isReady() const +{ + bool readyFullName = !fullName().isEmpty(); // Needs some text + bool readyHostname = hostNameStatus().isEmpty(); // .. no warning message + bool readyUsername = loginNameStatus().isEmpty(); // .. no warning message + bool readyUserPassword = userPasswordValidity() != Config::PasswordValidity::Invalid; + bool readyRootPassword = rootPasswordValidity() != Config::PasswordValidity::Invalid; + return readyFullName && readyHostname && readyUsername && readyUserPassword && readyRootPassword; +} + +/** @brief Update ready status and emit signal + * + * This is a "concentrator" private slot for all the status-changed + * signals, so that readyChanged() is emitted only when needed. + */ +void +Config::checkReady() +{ + bool b = isReady(); + if ( b != m_isReady ) + { + m_isReady = b; + emit readyChanged( b ); + } +} + + +STATICTEST 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" }; + } +} + +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; +} + +/** @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 ) +{ + 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 ); + + 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 ); + + 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 ); + + // 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() ); + + updateGSAutoLogin( doAutoLogin(), loginName() ); + checkReady(); +} + +void +Config::finalizeGlobalStorage() const +{ + updateGSAutoLogin( doAutoLogin(), loginName() ); + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( writeRootPassword() ) + { + gs->insert( "reuseRootPassword", reuseUserPasswordForRoot() ); + } + gs->insert( "password", CalamaresUtils::obscure( userPassword() ) ); +} + +Calamares::JobList +Config::createJobs() const +{ + Calamares::JobList jobs; + + if ( !isReady() ) + { + return jobs; + } + + Calamares::Job* j; + + j = new CreateUserJob( + loginName(), fullName().isEmpty() ? loginName() : fullName(), doAutoLogin(), defaultGroups() ); + jobs.append( Calamares::job_ptr( j ) ); + + j = new SetPasswordJob( loginName(), userPassword() ); + jobs.append( Calamares::job_ptr( j ) ); + + j = new SetPasswordJob( "root", rootPassword() ); + jobs.append( Calamares::job_ptr( j ) ); + + j = new SetHostNameJob( hostName(), hostNameActions() ); + jobs.append( Calamares::job_ptr( j ) ); + + return jobs; +} diff --git a/src/modules/users/Config.h b/src/modules/users/Config.h new file mode 100644 index 000000000..33e82cd89 --- /dev/null +++ b/src/modules/users/Config.h @@ -0,0 +1,275 @@ +/* === 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. + * + */ + +#ifndef USERS_CONFIG_H +#define USERS_CONFIG_H + +#include "CheckPWQuality.h" + +#include "Job.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 + + 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 ) + + 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 ) + + 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( QString userPassword READ userPassword WRITE setUserPassword NOTIFY userPasswordChanged ) + Q_PROPERTY( QString userPasswordSecondary READ userPasswordSecondary WRITE setUserPasswordSecondary NOTIFY + userPasswordSecondaryChanged ) + Q_PROPERTY( int userPasswordValidity READ userPasswordValidity NOTIFY userPasswordStatusChanged STORED false ) + Q_PROPERTY( QString userPasswordMessage READ userPasswordMessage NOTIFY userPasswordStatusChanged STORED false ) + + Q_PROPERTY( QString rootPassword READ rootPassword WRITE setRootPassword NOTIFY rootPasswordChanged ) + Q_PROPERTY( QString rootPasswordSecondary READ rootPasswordSecondary WRITE setRootPasswordSecondary NOTIFY + rootPasswordSecondaryChanged ) + Q_PROPERTY( int rootPasswordValidity READ rootPasswordValidity NOTIFY rootPasswordStatusChanged STORED false ) + Q_PROPERTY( QString rootPasswordMessage READ rootPasswordMessage NOTIFY rootPasswordStatusChanged STORED false ) + + 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 ) + + Q_PROPERTY( bool ready READ isReady NOTIFY readyChanged STORED false ) + +public: + /** @brief Validity (status) of a password + * + * Valid passwords are: + * - primary and secondary are equal **and** + * - all the password-strength checks pass + * Weak passwords: + * - primary and secondary are equal **and** + * - not all the checks pass **and** + * - permitWeakPasswords is @c true **and** + * - requireStrongPasswords is @c false + * Invalid passwords (all other cases): + * - the primary and secondary values are not equal **or** + * - not all the checks pass and weak passwords are not permitted + */ + enum PasswordValidity + { + Valid = 0, + Weak = 1, + Invalid = 2 + }; + + /** @brief Full password status + * + * A password's status is in two parts: + * - a validity (valid, weak or invalid) + * - a message describing that validity + * The message is empty when the password is valid, but + * weak and invalid passwords have an explanatory message. + */ + using PasswordStatus = QPair< PasswordValidity, QString >; + + Config( QObject* parent = nullptr ); + ~Config(); + + void setConfigurationMap( const QVariantMap& ); + + /** @brief Fill Global Storage with some settings + * + * This should be called when moving on from the view step, + * and copies some things to GS that otherwise would not. + */ + void finalizeGlobalStorage() const; + + /** @brief Jobs for creating user, setting passwords + * + * If the Config object isn't ready yet, returns an empty list. + */ + Calamares::JobList createJobs() const; + + /** @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; } + + /// 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; } + + /// The full (GECOS) name of the user + 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; } + /// 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; } + /// 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; } + + // The user enters a password (and again in a separate UI element) + QString userPassword() const { return m_userPassword; } + QString userPasswordSecondary() const { return m_userPasswordSecondary; } + int userPasswordValidity() const; + QString userPasswordMessage() const; + PasswordStatus userPasswordStatus() const; + + // 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; + int rootPasswordValidity() const; + QString rootPasswordMessage() const; + PasswordStatus rootPasswordStatus() const; + + bool isReady() const; + + static const QStringList& forbiddenLoginNames(); + static const QStringList& forbiddenHostNames(); + +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 ); + + /// Sets the autologin group; empty is ignored + void setAutologinGroup( const QString& group ); + /// Sets the sudoer group; empty is ignored + void setSudoersGroup( const QString& group ); + + /// Sets the full name, may guess a loginName + void setFullName( const QString& name ); + /// 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 ); + + /// 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 ); + + 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& ); + void sudoersGroupChanged( const QString& ); + void fullNameChanged( const QString& ); + void loginNameChanged( const QString& ); + void loginNameStatusChanged( const QString& ); + void hostNameChanged( const QString& ); + void hostNameStatusChanged( const QString& ); + void autoLoginChanged( bool ); + void reuseUserPasswordForRootChanged( bool ); + void requireStrongPasswordsChanged( bool ); + void userPasswordChanged( const QString& ); + void userPasswordSecondaryChanged( const QString& ); + void userPasswordStatusChanged( int, const QString& ); + void rootPasswordChanged( const QString& ); + void rootPasswordSecondaryChanged( const QString& ); + void rootPasswordStatusChanged( int, const QString& ); + void readyChanged( bool ) const; + +private: + PasswordStatus passwordStatus( const QString&, const QString& ) const; + void checkReady(); + + QStringList m_defaultGroups; + QString m_userShell; + QString m_autologinGroup; + QString m_sudoersGroup; + 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; + bool m_reuseUserPasswordForRoot = false; + + bool m_permitWeakPasswords = false; + bool m_requireStrongPasswords = true; + + bool m_customLoginName = false; + bool m_customHostName = false; + + bool m_isReady = false; ///< Used to reduce readyChanged signals + + HostNameActions m_hostNameActions; + PasswordCheckList m_passwordChecks; +}; + +#endif diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 776b45ce9..24b0f36d1 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -1,9 +1,8 @@ -/* === 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 - * License-Filename: LICENSE */ #include "CreateUserJob.h" @@ -12,6 +11,7 @@ #include "JobQueue.h" #include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" +#include "utils/Permissions.h" #include #include @@ -54,6 +54,109 @@ CreateUserJob::prettyStatusMessage() const return tr( "Creating user %1." ).arg( m_userName ); } +STATICTEST 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' ); + 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; +} + +static void +ensureGroupsExistInTarget( const QStringList& wantedGroups, const QStringList& availableGroups ) +{ + for ( const QString& group : wantedGroups ) + { + if ( !availableGroups.contains( group ) ) + { +#ifdef __FreeBSD__ + CalamaresUtils::System::instance()->targetEnvCall( { "pw", "groupadd", "-n", group } ); +#else + CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", group } ); +#endif + } + } +} + +static Calamares::JobResult +createUser( const QString& loginName, const QString& fullName, const QString& shell ) +{ + 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() ) + { + useraddCommand << "-s" << shell; + } + useraddCommand << "-c" << fullName; + useraddCommand << loginName; +#endif + + auto commandResult = CalamaresUtils::System::instance()->targetEnvCommand( useraddCommand ); + if ( commandResult.getExitCode() ) + { + cError() << "useradd failed" << commandResult.getExitCode(); + return commandResult.explainProcess( useraddCommand, std::chrono::seconds( 10 ) /* bogus timeout */ ); + } + return Calamares::JobResult::ok(); +} + +static Calamares::JobResult +setUserGroups( const QString& loginName, const QStringList& groups ) +{ + 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( setgroupsCommand, std::chrono::seconds( 10 ) /* bogus timeout */ ); + } + return Calamares::JobResult::ok(); +} + Calamares::JobResult CreateUserJob::exec() @@ -65,65 +168,37 @@ 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 ( !CalamaresUtils::Permissions::apply( fileResult.path(), 0440 ) ) + { + 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"; - QFileInfo groupsFi( destDir.absoluteFilePath( "etc/group" ) ); - QFile groupsFile( groupsFi.absoluteFilePath() ); - if ( !groupsFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + QStringList availableGroups = groupsInTargetSystem( destDir ); + QStringList groupsForThisUser = m_defaultGroups; + if ( m_autologin && gs->contains( "autologinGroup" ) && !gs->value( "autologinGroup" ).toString().isEmpty() ) { - 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 ); + groupsForThisUser << gs->value( "autologinGroup" ).toString(); } + ensureGroupsExistInTarget( groupsForThisUser, availableGroups ); - for ( const QString& group : m_defaultGroups ) - { - if ( !groupsLines.contains( group ) ) - { - CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", group } ); - } - } - - 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 } ); - defaultGroups.append( QString( ",%1" ).arg( autologinGroup ) ); - } - } - - // 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; @@ -133,6 +208,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 } ); } @@ -140,33 +216,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(); diff --git a/src/modules/users/CreateUserJob.h b/src/modules/users/CreateUserJob.h index f2239307e..0a46198b9 100644 --- a/src/modules/users/CreateUserJob.h +++ b/src/modules/users/CreateUserJob.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/PasswordTests.cpp b/src/modules/users/PasswordTests.cpp deleted file mode 100644 index b33526162..000000000 --- a/src/modules/users/PasswordTests.cpp +++ /dev/null @@ -1,50 +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 . - */ - -#include "SetPasswordJob.h" - -#include "PasswordTests.h" - -#include - -QTEST_GUILESS_MAIN( PasswordTests ) - -PasswordTests::PasswordTests() { } - -PasswordTests::~PasswordTests() { } - -void -PasswordTests::initTestCase() -{ -} - -void -PasswordTests::testSalt() -{ - QString s = SetPasswordJob::make_salt( 8 ); - QCOMPARE( s.length(), 4 + 8 ); // 8 salt chars, plus $6$, plus trailing $ - QVERIFY( s.startsWith( "$6$" ) ); - QVERIFY( s.endsWith( '$' ) ); - qDebug() << "Obtained salt" << s; - - s = SetPasswordJob::make_salt( 11 ); - QCOMPARE( s.length(), 4 + 11 ); - QVERIFY( s.startsWith( "$6$" ) ); - QVERIFY( s.endsWith( '$' ) ); - qDebug() << "Obtained salt" << s; -} diff --git a/src/modules/users/PasswordTests.h b/src/modules/users/PasswordTests.h deleted file mode 100644 index 3b4b5d201..000000000 --- a/src/modules/users/PasswordTests.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/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 555fcdc7d..9f81ddfb5 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -25,15 +16,15 @@ #include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" +#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 +129,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 +138,7 @@ SetHostNameJob::exec() } } - if ( m_actions & Action::WriteEtcHosts ) + if ( m_actions & HostNameAction::WriteEtcHosts ) { if ( !writeFileEtcHosts( m_hostname ) ) { @@ -156,7 +147,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..9d44579cb 100644 --- a/src/modules/users/SetHostNameJob.h +++ b/src/modules/users/SetHostNameJob.h @@ -1,43 +1,26 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #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 +28,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/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 3199a0a76..dd2fdc244 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 cf5b2f585..aa75a86e1 100644 --- a/src/modules/users/SetPasswordJob.h +++ b/src/modules/users/SetPasswordJob.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 new file mode 100644 index 000000000..a801baf45 --- /dev/null +++ b/src/modules/users/TestCreateUserJob.cpp @@ -0,0 +1,72 @@ +/* === 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 "CreateUserJob.h" + +#include "utils/Logger.h" + +#include +#include + +// Implementation details +extern QStringList groupsInTargetSystem( const QDir& targetRoot ); // CreateUserJob + +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 + // openSUSE doesn't have "sys" + // QVERIFY( groups.contains( QStringLiteral( "sys" ) ) ); + QVERIFY( groups.contains( QStringLiteral( "nogroup" ) ) ); + QVERIFY( groups.contains( QStringLiteral( "tty" ) ) ); + + for ( const QString& s : groups ) + { + QVERIFY( !s.isEmpty() ); + QVERIFY( !s.contains( '#' ) ); + } +} + +QTEST_GUILESS_MAIN( CreateUserTests ) + +#include "utils/moc-warnings.h" + +#include "TestCreateUserJob.moc" diff --git a/src/modules/users/TestPasswordJob.cpp b/src/modules/users/TestPasswordJob.cpp new file mode 100644 index 000000000..1409e37b6 --- /dev/null +++ b/src/modules/users/TestPasswordJob.cpp @@ -0,0 +1,55 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2017 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + */ + +#include "SetPasswordJob.h" + +#include + +class PasswordTests : public QObject +{ + Q_OBJECT +public: + PasswordTests(); + ~PasswordTests() override; + +private Q_SLOTS: + void initTestCase(); + void testSalt(); +}; + +PasswordTests::PasswordTests() {} + +PasswordTests::~PasswordTests() {} + +void +PasswordTests::initTestCase() +{ +} + +void +PasswordTests::testSalt() +{ + QString s = SetPasswordJob::make_salt( 8 ); + QCOMPARE( s.length(), 4 + 8 ); // 8 salt chars, plus $6$, plus trailing $ + QVERIFY( s.startsWith( "$6$" ) ); + QVERIFY( s.endsWith( '$' ) ); + qDebug() << "Obtained salt" << s; + + s = SetPasswordJob::make_salt( 11 ); + QCOMPARE( s.length(), 4 + 11 ); + QVERIFY( s.startsWith( "$6$" ) ); + 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/TestSetHostNameJob.cpp b/src/modules/users/TestSetHostNameJob.cpp new file mode 100644 index 000000000..17061037f --- /dev/null +++ b/src/modules/users/TestSetHostNameJob.cpp @@ -0,0 +1,136 @@ +/* === 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 "SetHostNameJob.h" + +// Implementation details +extern bool setFileHostname( const QString& ); +extern bool writeFileEtcHosts( const QString& ); +extern bool setSystemdHostname( const QString& ); + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/Yaml.h" + +#include +#include + +class UsersTests : public QObject +{ + Q_OBJECT +public: + UsersTests(); + virtual ~UsersTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testEtcHostname(); + void testEtcHosts(); + void testHostnamed(); + + void cleanup(); + +private: + QTemporaryDir m_dir; +}; + +UsersTests::UsersTests() + : m_dir( QStringLiteral( "/tmp/calamares-usertest" ) ) +{ +} + +void +UsersTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << "Users test started."; + cDebug() << "Test dir" << m_dir.path(); + + // Ensure we have a system object, expect it to be a "bogus" one + CalamaresUtils::System* system = CalamaresUtils::System::instance(); + QVERIFY( system ); + QVERIFY( system->doChroot() ); + + // Ensure we have a system-wide GlobalStorage with /tmp as root + if ( !Calamares::JobQueue::instance() ) + { + cDebug() << "Creating new JobQueue"; + (void)new Calamares::JobQueue(); + } + Calamares::GlobalStorage* gs + = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; + QVERIFY( gs ); + gs->insert( "rootMountPoint", m_dir.path() ); +} + +void +UsersTests::testEtcHostname() +{ + cDebug() << "Test dir" << m_dir.path(); + + QVERIFY( QFile::exists( m_dir.path() ) ); + QVERIFY( !QFile::exists( m_dir.filePath( "etc" ) ) ); + + // Doesn't create intermediate directories + QVERIFY( !setFileHostname( QStringLiteral( "tubophone.calamares.io" ) ) ); + + QVERIFY( CalamaresUtils::System::instance()->createTargetDirs( "/etc" ) ); + QVERIFY( QFile::exists( m_dir.filePath( "etc" ) ) ); + + // Does write the file + QVERIFY( setFileHostname( QStringLiteral( "tubophone.calamares.io" ) ) ); + QVERIFY( QFile::exists( m_dir.filePath( "etc/hostname" ) ) ); + + // 22 for the test string, above, and 1 for the newline + QCOMPARE( QFileInfo( m_dir.filePath( "etc/hostname" ) ).size(), 22 + 1 ); +} + +void +UsersTests::testEtcHosts() +{ + // Assume previous tests did their work + QVERIFY( QFile::exists( m_dir.path() ) ); + QVERIFY( QFile::exists( m_dir.filePath( "etc" ) ) ); + + QVERIFY( writeFileEtcHosts( QStringLiteral( "tubophone.calamares.io" ) ) ); + QVERIFY( QFile::exists( m_dir.filePath( "etc/hosts" ) ) ); + // The skeleton contains %1 which has the hostname substituted in, so we lose two, + // and the rest of the blabla is 150 (according to Python) + QCOMPARE( QFileInfo( m_dir.filePath( "etc/hosts" ) ).size(), 150 + 22 - 2 ); +} + +void +UsersTests::testHostnamed() +{ + // Since the service might not be running (e.g. non-systemd systems, + // FreeBSD, docker, ..) we're not going to fail a test here. + // There's also the permissions problem to think of. + QEXPECT_FAIL( "", "Hostname changes are access-controlled", Continue ); + QVERIFY( setSystemdHostname( "tubophone.calamares.io" ) ); +} + + +void +UsersTests::cleanup() +{ + if ( QTest::currentTestFailed() ) + { + m_dir.setAutoRemove( false ); + } +} + + +QTEST_GUILESS_MAIN( UsersTests ) + +#include "utils/moc-warnings.h" + +#include "TestSetHostNameJob.moc" diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index 75c5e6d5f..78fa74780 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -1,144 +1,279 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" +#include "Config.h" -// Implementation details -extern bool setFileHostname( const QString& ); -extern bool writeFileEtcHosts( const QString& ); -extern bool setSystemdHostname( const QString& ); - -#include "GlobalStorage.h" #include "JobQueue.h" -#include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" #include "utils/Yaml.h" -#include #include -class UsersTests : public QObject +// 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 + * + */ +class UserTests : public QObject { Q_OBJECT public: - UsersTests(); - virtual ~UsersTests() { } + UserTests(); + virtual ~UserTests() {} private Q_SLOTS: void initTestCase(); - void testEtcHostname(); - void testEtcHosts(); - void testHostnamed(); + void testDefaultGroups(); + void testDefaultGroupsYAML_data(); + void testDefaultGroupsYAML(); - void cleanup(); - -private: - QTemporaryDir m_dir; + void testHostActions_data(); + void testHostActions(); + void testPasswordChecks(); + void testUserPassword(); }; -UsersTests::UsersTests() - : m_dir( QStringLiteral( "/tmp/calamares-usertest" ) ) -{ -} +UserTests::UserTests() {} void -UsersTests::initTestCase() +UserTests::initTestCase() { Logger::setupLogLevel( Logger::LOGDEBUG ); cDebug() << "Users test started."; - cDebug() << "Test dir" << m_dir.path(); +} - // Ensure we have a system object, expect it to be a "bogus" one - CalamaresUtils::System* system = CalamaresUtils::System::instance(); - QVERIFY( system ); - QVERIFY( system->doChroot() ); +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" ) ); + } - // Ensure we have a system-wide GlobalStorage with /tmp as root + { + 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" ) ); + } +} + +void +UserTests::testDefaultGroupsYAML_data() +{ + QTest::addColumn< QString >( "filename" ); + 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"; +} + +void +UserTests::testDefaultGroupsYAML() +{ if ( !Calamares::JobQueue::instance() ) { - cDebug() << "Creating new JobQueue"; (void)new Calamares::JobQueue(); } - Calamares::GlobalStorage* gs - = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; - QVERIFY( gs ); - gs->insert( "rootMountPoint", m_dir.path() ); -} -void -UsersTests::testEtcHostname() -{ - cDebug() << "Test dir" << m_dir.path(); + QFETCH( QString, filename ); + QFETCH( int, count ); + QFETCH( QString, group ); - QVERIFY( QFile::exists( m_dir.path() ) ); - QVERIFY( !QFile::exists( m_dir.filePath( "etc" ) ) ); + QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) ); + QVERIFY( fi.exists() ); - // Doesn't create intermediate directories - QVERIFY( !setFileHostname( QStringLiteral( "tubophone.calamares.io" ) ) ); + bool ok = false; + const auto map = CalamaresUtils::loadYaml( fi, &ok ); + QVERIFY( ok ); + QVERIFY( map.count() > 0 ); - QVERIFY( CalamaresUtils::System::instance()->createTargetDirs( "/etc" ) ); - QVERIFY( QFile::exists( m_dir.filePath( "etc" ) ) ); + Config c; + c.setConfigurationMap( map ); - // Does write the file - QVERIFY( setFileHostname( QStringLiteral( "tubophone.calamares.io" ) ) ); - QVERIFY( QFile::exists( m_dir.filePath( "etc/hostname" ) ) ); - - // 22 for the test string, above, and 1 for the newline - QCOMPARE( QFileInfo( m_dir.filePath( "etc/hostname" ) ).size(), 22 + 1 ); -} - -void -UsersTests::testEtcHosts() -{ - // Assume previous tests did their work - QVERIFY( QFile::exists( m_dir.path() ) ); - QVERIFY( QFile::exists( m_dir.filePath( "etc" ) ) ); - - QVERIFY( writeFileEtcHosts( QStringLiteral( "tubophone.calamares.io" ) ) ); - QVERIFY( QFile::exists( m_dir.filePath( "etc/hosts" ) ) ); - // The skeleton contains %1 which has the hostname substituted in, so we lose two, - // and the rest of the blabla is 150 (according to Python) - QCOMPARE( QFileInfo( m_dir.filePath( "etc/hosts" ) ).size(), 150 + 22 - 2 ); -} - -void -UsersTests::testHostnamed() -{ - // Since the service might not be running (e.g. non-systemd systems, - // FreeBSD, docker, ..) we're not going to fail a test here. - // There's also the permissions problem to think of. - QEXPECT_FAIL( "", "Hostname changes are access-controlled", Continue ); - QVERIFY( setSystemdHostname( "tubophone.calamares.io" ) ); + QCOMPARE( c.defaultGroups().count(), count ); + QVERIFY( c.defaultGroups().contains( group ) ); } void -UsersTests::cleanup() +UserTests::testHostActions_data() { - if ( QTest::currentTestFailed() ) + 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_dir.setAutoRemove( false ); + 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 ); +} + +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 ); + } +} + +void +UserTests::testUserPassword() +{ + if ( !Calamares::JobQueue::instance() ) + { + (void)new Calamares::JobQueue( nullptr ); + } + + { + Config c; + + QVERIFY( c.userPassword().isEmpty() ); + QVERIFY( c.userPasswordSecondary().isEmpty() ); + // There are no validity checks, so no check for nonempty + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); + + c.setUserPassword( "bogus" ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Invalid ); + QCOMPARE( c.userPassword(), "bogus" ); + c.setUserPasswordSecondary( "bogus" ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); + } + + { + Config c; + + QVariantMap m; + m.insert( "allowWeakPasswords", true ); + m.insert( "allowWeakPasswordsDefault", true ); + m.insert( "defaultGroups", QStringList { "wheel" } ); + + QVariantMap pwreq; + pwreq.insert( "nonempty", true ); + pwreq.insert( "minLength", 6 ); + m.insert( "passwordRequirements", pwreq ); + + c.setConfigurationMap( m ); + + QVERIFY( c.userPassword().isEmpty() ); + QVERIFY( c.userPasswordSecondary().isEmpty() ); + // There is now a nonempty check, but weak passwords are ok + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Weak ) ); + + c.setUserPassword( "bogus" ); + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Invalid ) ); + c.setUserPasswordSecondary( "bogus" ); + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Weak ) ); + + QVERIFY( !c.requireStrongPasswords() ); + c.setRequireStrongPasswords( true ); + QVERIFY( c.requireStrongPasswords() ); + // Now changed requirements make the password invalid + QCOMPARE( c.userPassword(), "bogus" ); + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Invalid ) ); + } + + { + Config c; + QVERIFY( c.userPassword().isEmpty() ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); + + QSignalSpy spy_pwChanged( &c, &Config::userPasswordChanged ); + QSignalSpy spy_pwSecondaryChanged( &c, &Config::userPasswordSecondaryChanged ); + QSignalSpy spy_pwStatusChanged( &c, &Config::userPasswordStatusChanged ); + + c.setUserPassword( "bogus" ); + c.setUserPassword( "bogus" ); + QCOMPARE( spy_pwChanged.count(), 1 ); + QCOMPARE( spy_pwStatusChanged.count(), 1 ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Invalid ); + c.setUserPassword( "sugob" ); + c.setUserPasswordSecondary( "sugob" ); + QCOMPARE( spy_pwChanged.count(), 2 ); + QCOMPARE( spy_pwSecondaryChanged.count(), 1 ); + QCOMPARE( spy_pwStatusChanged.count(), 3 ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); } } -QTEST_GUILESS_MAIN( UsersTests ) +QTEST_GUILESS_MAIN( UserTests ) #include "utils/moc-warnings.h" diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9c7ce6f7b..6ea03f8ef 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,40 +1,27 @@ -/* === This file is part of Calamares - === +/* === 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 * 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" +#include "Config.h" #include "ui_page_usersetup.h" -#include "CreateUserJob.h" -#include "SetHostNameJob.h" -#include "SetPasswordJob.h" - #include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" - #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Retranslator.h" @@ -44,95 +31,115 @@ #include #include #include -#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; -static constexpr const int HOSTNAME_MAX_LENGTH = 63; - -/** @brief How bad is the error for labelError() ? */ -enum class Badness -{ - Fatal, - Warning -}; - -/** Add an error message and pixmap to a label. */ +/** @brief 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, CalamaresUtils::ImageType icon, const QString& message ) { label->setText( message ); - pix->setPixmap( CalamaresUtils::defaultPixmap( ( bad == Badness::Fatal ) ? CalamaresUtils::StatusError - : CalamaresUtils::StatusWarning, - CalamaresUtils::Original, - label->size() ) ); + pix->setPixmap( CalamaresUtils::defaultPixmap( icon, CalamaresUtils::Original, label->size() ) ); } -/** Clear error, indicate OK on a label. */ +/** @brief Clear error, set happy pixmap on a label to indicate "ok". */ static inline void labelOk( QLabel* pix, QLabel* label ) { label->clear(); - pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, label->size() ) ); + pix->setPixmap( + CalamaresUtils::defaultPixmap( CalamaresUtils::StatusOk, CalamaresUtils::Original, label->size() ) ); } -UsersPage::UsersPage( QWidget* parent ) +/** @brief Sets error or ok on a label depending on @p status and @p value + * + * - An **empty** @p value gets no message and no icon. + * - A non-empty @p value, with an **empty** @p status gets an "ok". + * - A non-empty @p value with a non-empty @p status gets an error indicator. + */ +static inline void +labelStatus( QLabel* pix, QLabel* label, const QString& value, const QString& status ) +{ + if ( status.isEmpty() ) + { + if ( value.isEmpty() ) + { + // This is different from labelOK() because no checkmark is shown + label->clear(); + pix->clear(); + } + else + { + labelOk( pix, label ); + } + } + else + { + labelError( pix, label, CalamaresUtils::ImageType::StatusError, status ); + } +} + +UsersPage::UsersPage( Config* config, QWidget* parent ) : QWidget( parent ) , ui( new Ui::Page_UserSetup ) - , m_readyFullName( false ) - , m_readyUsername( false ) - , m_readyHostname( false ) - , m_readyPassword( false ) - , m_readyRootPassword( false ) - , m_writeRootPassword( true ) + , m_config( config ) { ui->setupUi( this ); // 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 ); - connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged, this, &UsersPage::onRootPasswordTextChanged ); - 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 ) { - /* 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 ); - checkReady( isReady() ); + ui->textBoxUserPassword->setText( config->userPassword() ); + connect( ui->textBoxUserPassword, &QLineEdit::textChanged, config, &Config::setUserPassword ); + connect( config, &Config::userPasswordChanged, ui->textBoxUserPassword, &QLineEdit::setText ); + ui->textBoxUserVerifiedPassword->setText( config->userPasswordSecondary() ); + connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, config, &Config::setUserPasswordSecondary ); + connect( config, &Config::userPasswordSecondaryChanged, ui->textBoxUserVerifiedPassword, &QLineEdit::setText ); + connect( config, &Config::userPasswordStatusChanged, this, &UsersPage::reportUserPasswordStatus ); + + ui->textBoxRootPassword->setText( config->rootPassword() ); + connect( ui->textBoxRootPassword, &QLineEdit::textChanged, config, &Config::setRootPassword ); + connect( config, &Config::rootPasswordChanged, ui->textBoxRootPassword, &QLineEdit::setText ); + ui->textBoxVerifiedRootPassword->setText( config->rootPasswordSecondary() ); + connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged, config, &Config::setRootPasswordSecondary ); + connect( config, &Config::rootPasswordSecondaryChanged, ui->textBoxVerifiedRootPassword, &QLineEdit::setText ); + connect( config, &Config::rootPasswordStatusChanged, this, &UsersPage::reportRootPasswordStatus ); + + 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::hostNameStatusChanged, this, &UsersPage::reportHostNameStatus ); + + connect( ui->textBoxLoginName, &QLineEdit::textEdited, config, &Config::setLoginName ); + 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 ); } ); + connect( config, &Config::autoLoginChanged, ui->checkBoxDoAutoLogin, &QCheckBox::setChecked ); - m_customUsername = false; - m_customHostname = false; + ui->checkBoxReusePassword->setVisible( m_config->writeRootPassword() ); + ui->checkBoxReusePassword->setChecked( m_config->reuseUserPasswordForRoot() ); + if ( m_config->writeRootPassword() ) + { + connect( config, &Config::reuseUserPasswordForRootChanged, ui->checkBoxReusePassword, &QCheckBox::setChecked ); + connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, &UsersPage::onReuseUserPasswordChanged ); + } - setWriteRootPassword( true ); - ui->checkBoxReusePassword->setChecked( true ); - ui->checkBoxValidatePassword->setChecked( true ); + 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 ); + } - setPasswordCheckboxVisible( false ); + CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ) - CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ); + onReuseUserPasswordChanged( m_config->reuseUserPasswordForRoot() ); } UsersPage::~UsersPage() @@ -146,101 +153,21 @@ UsersPage::retranslate() ui->retranslateUi( this ); if ( Calamares::Settings::instance()->isSetupMode() ) { - ui->textBoxUsername->setToolTip( tr( "If more than one person will " - "use this computer, you can create multiple " - "accounts after setup." ) ); + 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 " - "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, - // not from their parameters. - onPasswordTextChanged( QString() ); - onRootPasswordTextChanged( QString() ); -} - - -bool -UsersPage::isReady() -{ - bool readyFields = m_readyFullName && m_readyHostname && m_readyPassword && m_readyUsername; - if ( !m_writeRootPassword || ui->checkBoxReusePassword->isChecked() ) - { - return readyFields; + ui->textBoxLoginName->setToolTip( tr( "If more than one person will " + "use this computer, you can create multiple " + "accounts after installation." ) ); } - return readyFields && m_readyRootPassword; -} - -QString -UsersPage::getHostname() const -{ - return ui->textBoxHostname->text(); -} - -QString -UsersPage::getRootPassword() const -{ - if ( m_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 >( ui->textBoxUsername->text(), ui->textBoxUserPassword->text() ); -} - -QList< Calamares::job_ptr > -UsersPage::createJobs( const QStringList& defaultGroupsList ) -{ - QList< Calamares::job_ptr > list; - if ( !isReady() ) - { - return list; - } - - 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(), - ui->checkBoxAutoLogin->isChecked(), - defaultGroupsList ); - list.append( Calamares::job_ptr( j ) ); - - if ( m_writeRootPassword ) - { - gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); - } - gs->insert( "hostname", ui->textBoxHostname->text() ); - if ( ui->checkBoxAutoLogin->isChecked() ) - { - gs->insert( "autologinUser", ui->textBoxUsername->text() ); - } - - gs->insert( "username", ui->textBoxUsername->text() ); - gs->insert( "password", CalamaresUtils::obscure( ui->textBoxUserPassword->text() ) ); - - return list; + const auto up = m_config->userPasswordStatus(); + reportUserPasswordStatus( up.first, up.second ); + const auto rp = m_config->rootPasswordStatus(); + reportRootPasswordStatus( rp.first, rp.second ); } @@ -248,349 +175,81 @@ void UsersPage::onActivate() { ui->textBoxFullName->setFocus(); - onPasswordTextChanged( QString() ); - onRootPasswordTextChanged( QString() ); + const auto up = m_config->userPasswordStatus(); + reportUserPasswordStatus( up.first, up.second ); + const auto rp = m_config->rootPasswordStatus(); + reportRootPasswordStatus( rp.first, rp.second ); } void -UsersPage::setWriteRootPassword( bool write ) +UsersPage::onFullNameTextEdited( const QString& fullName ) { - m_writeRootPassword = write; - ui->checkBoxReusePassword->setVisible( write ); -} - - -void -UsersPage::onFullNameTextEdited( const QString& textRef ) -{ - if ( textRef.isEmpty() ) - { - ui->labelFullNameError->clear(); - ui->labelFullName->clear(); - if ( !m_customUsername ) - { - ui->textBoxUsername->clear(); - } - if ( !m_customHostname ) - { - ui->textBoxHostname->clear(); - } - m_readyFullName = false; - } - else - { - 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; + labelStatus( ui->labelFullName, ui->labelFullNameError, fullName, QString() ); } void -UsersPage::fillSuggestions() +UsersPage::reportLoginNameStatus( const QString& status ) { - 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; - } - } - } + labelStatus( ui->labelUsername, ui->labelUsernameError, m_config->loginName(), status ); } - void -UsersPage::onUsernameTextEdited( const QString& textRef ) +UsersPage::reportHostNameStatus( const QString& status ) { - m_customUsername = true; - validateUsernameText( textRef ); + labelStatus( ui->labelHostname, ui->labelHostnameError, m_config->hostName(), status ); } - -void -UsersPage::validateUsernameText( const QString& textRef ) +static inline void +passwordStatus( QLabel* iconLabel, QLabel* messageLabel, int validity, const QString& message ) { - 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() ) + switch ( validity ) { - 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 - { - labelOk( ui->labelUsername, ui->labelUsernameError ); - m_readyUsername = true; - } - - emit checkReady( isReady() ); -} - - -void -UsersPage::onHostnameTextEdited( const QString& textRef ) -{ - m_customHostname = true; - validateHostnameText( textRef ); -} - - -void -UsersPage::validateHostnameText( const QString& textRef ) -{ - 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; - } - - emit checkReady( isReady() ); -} - -bool -UsersPage::checkPasswordAcceptance( const QString& pw1, const QString& pw2, QLabel* badge, QLabel* message ) -{ - if ( pw1 != pw2 ) - { - labelError( badge, message, tr( "Your passwords do not match!" ) ); - return false; - } - else - { - bool failureIsFatal = ui->checkBoxValidatePassword->isChecked(); - bool failureFound = false; - - if ( m_passwordChecksChanged ) - { - std::sort( m_passwordChecks.begin(), m_passwordChecks.end() ); - m_passwordChecksChanged = false; - } - - for ( auto pc : m_passwordChecks ) - { - QString s = pc.filter( pw1 ); - - if ( !s.isEmpty() ) - { - labelError( badge, message, s, failureIsFatal ? Badness::Fatal : Badness::Warning ); - failureFound = true; - if ( failureIsFatal ) - { - return false; - } - } - } - - if ( !failureFound ) - { - 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; + case Config::PasswordValidity::Valid: + labelOk( iconLabel, messageLabel ); + break; + case Config::PasswordValidity::Weak: + labelError( iconLabel, messageLabel, CalamaresUtils::StatusWarning, message ); + break; + case Config::PasswordValidity::Invalid: + default: + labelError( iconLabel, messageLabel, CalamaresUtils::StatusError, message ); + break; } } void -UsersPage::onPasswordTextChanged( const QString& ) +UsersPage::reportRootPasswordStatus( int validity, const QString& message ) { - m_readyPassword = checkPasswordAcceptance( ui->textBoxUserPassword->text(), - ui->textBoxUserVerifiedPassword->text(), - ui->labelUserPassword, - ui->labelUserPasswordError ); - - emit checkReady( isReady() ); + passwordStatus( ui->labelRootPassword, ui->labelRootPasswordError, validity, message ); } void -UsersPage::onRootPasswordTextChanged( const QString& ) +UsersPage::reportUserPasswordStatus( int validity, const QString& message ) { - m_readyRootPassword = checkPasswordAcceptance( ui->textBoxRootPassword->text(), - ui->textBoxVerifiedRootPassword->text(), - ui->labelRootPassword, - ui->labelRootPasswordError ); - emit checkReady( isReady() ); + passwordStatus( ui->labelUserPassword, ui->labelUserPasswordError, validity, message ); } 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::setAutologinDefault( bool checked ) -{ - ui->checkBoxAutoLogin->setChecked( checked ); - emit checkReady( isReady() ); -} - -void -UsersPage::setReusePasswordDefault( bool checked ) -{ - ui->checkBoxReusePassword->setChecked( checked ); - emit 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; - } + // 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 + * 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 ); } diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 3382e9335..f4d2c47d4 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,34 +1,25 @@ -/* === This file is part of Calamares - === +/* === 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 * 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 #define USERSPAGE_H -#include "CheckPWQuality.h" -#include "Job.h" - #include +class Config; + class QLabel; namespace Ui @@ -40,74 +31,24 @@ class UsersPage : public QWidget { Q_OBJECT public: - explicit UsersPage( QWidget* parent = nullptr ); + explicit UsersPage( Config* config, QWidget* parent = nullptr ); virtual ~UsersPage(); - bool isReady(); - - Calamares::JobList createJobs( const QStringList& defaultGroupsList ); - void onActivate(); - 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 - * - * 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 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 - QPair< QString, QString > getUserPassword() const; - 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& ); - -signals: - void checkReady( bool ); + void reportLoginNameStatus( const QString& ); + void reportHostNameStatus( const QString& ); + void onReuseUserPasswordChanged( const int ); + void reportUserPasswordStatus( int, const QString& ); + void reportRootPasswordStatus( int, const QString& ); private: - /** @brief Is the password acceptable? - * - * Checks the two copies of the password and places error messages in the - * given QLabels. Returns true (and clears the error messages) if the - * password is acceptable. - */ - bool checkPasswordAcceptance( const QString& pw1, const QString& pw2, QLabel* badge, QLabel* message ); - void retranslate(); Ui::Page_UserSetup* ui; - - PasswordCheckList m_passwordChecks; - bool m_passwordChecksChanged = false; - - bool m_readyFullName; - bool m_readyUsername; - bool m_customUsername; - bool m_readyHostname; - bool m_customHostname; - bool m_readyPassword; - bool m_readyRootPassword; - - bool m_writeRootPassword; + Config* m_config; }; #endif // USERSPAGE_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index fe633b1c2..df823df06 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,63 +1,35 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" -#include "SetHostNameJob.h" -#include "SetPasswordJob.h" +#include "Config.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 >& -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( new UsersPage() ) - , m_actions( SetHostNameJob::Action::None ) + , m_widget( nullptr ) + , m_config( new Config( this ) ) { - emit nextStatusChanged( true ); - connect( m_widget, &UsersPage::checkReady, this, &UsersViewStep::nextStatusChanged ); + connect( m_config, &Config::readyChanged, this, &UsersViewStep::nextStatusChanged ); + + emit nextStatusChanged( m_config->isReady() ); } @@ -80,6 +52,10 @@ UsersViewStep::prettyName() const QWidget* UsersViewStep::widget() { + if ( !m_widget ) + { + m_widget = new UsersPage( m_config ); + } return m_widget; } @@ -87,7 +63,7 @@ UsersViewStep::widget() bool UsersViewStep::isNextEnabled() const { - return m_widget->isReady(); + return m_config->isReady(); } @@ -122,104 +98,23 @@ UsersViewStep::jobs() const void UsersViewStep::onActivate() { - m_widget->onActivate(); + if ( m_widget ) + { + m_widget->onActivate(); + } } void UsersViewStep::onLeave() { - m_jobs.clear(); - m_jobs.append( m_widget->createJobs( m_defaultGroups ) ); - - Calamares::Job* j; - - auto userPW = m_widget->getUserPassword(); - j = new SetPasswordJob( userPW.first, userPW.second ); - m_jobs.append( Calamares::job_ptr( j ) ); - - j = new SetPasswordJob( "root", m_widget->getRootPassword() ); - m_jobs.append( Calamares::job_ptr( j ) ); - - j = new SetHostNameJob( m_widget->getHostname(), m_actions ); - m_jobs.append( Calamares::job_ptr( j ) ); + m_jobs = m_config->createJobs(); + m_config->finalizeGlobalStorage(); } void UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - 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" }; - } - - 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 ); - - m_widget->setWriteRootPassword( setRootPassword ); - m_widget->setAutologinDefault( getBool( configurationMap, "doAutologin", false ) ); - m_widget->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) ); - - 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() ); - } - } - - 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" ); - 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; + m_config->setConfigurationMap( configurationMap ); } diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index 03cc83819..a03948adf 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -1,27 +1,16 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #define USERSPAGEPLUGIN_H -#include "SetHostNameJob.h" - #include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" @@ -29,6 +18,7 @@ #include #include +class Config; class UsersPage; class PLUGINDLLEXPORT UsersViewStep : public Calamares::ViewStep @@ -58,10 +48,9 @@ public: private: UsersPage* m_widget; - QList< Calamares::job_ptr > m_jobs; + Calamares::JobList m_jobs; - QStringList m_defaultGroups; - SetHostNameJob::Actions m_actions; + Config* m_config; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( UsersViewStepFactory ) 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/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index b778647d8..ba1c0bc7d 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 @@ -127,7 +131,7 @@ - + 0 @@ -226,7 +230,7 @@ - + 0 @@ -446,7 +450,7 @@ - + When this box is checked, password-strength checking is done and you will not be able to use a weak password. @@ -456,7 +460,7 @@ - + Log in automatically without asking for the password. diff --git a/src/modules/users/tests/3-wing.conf b/src/modules/users/tests/3-wing.conf new file mode 100644 index 000000000..4fc760fa8 --- /dev/null +++ b/src/modules/users/tests/3-wing.conf @@ -0,0 +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 new file mode 100644 index 000000000..1280bc207 --- /dev/null +++ b/src/modules/users/tests/4-audio.conf @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +--- +defaultGroups: + - users + - lp + - wheel + - audio diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 32f74978a..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 @@ -138,4 +141,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 diff --git a/src/modules/users/users.schema.yaml b/src/modules/users/users.schema.yaml index 44cb9f71c..310df350f 100644 --- a/src/modules/users/users.schema.yaml +++ b/src/modules/users/users.schema.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/users diff --git a/src/modules/usersq/CMakeLists.txt b/src/modules/usersq/CMakeLists.txt new file mode 100644 index 000000000..26c270bfb --- /dev/null +++ b/src/modules/usersq/CMakeLists.txt @@ -0,0 +1,50 @@ +# === 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() +endif() + +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core DBus Network ) +find_package( Crypt REQUIRED ) + +# Add optional libraries here +set( USER_EXTRA_LIB ) +set( _users ${CMAKE_CURRENT_SOURCE_DIR}/../users ) + +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ${CMAKE_CURRENT_SOURCE_DIR}/../../libcalamares ${_users} ) + +find_package( LibPWQuality ) +set_package_properties( + LibPWQuality PROPERTIES + PURPOSE "Extra checks of password quality" +) + +if( LibPWQuality_FOUND ) + list( APPEND USER_EXTRA_LIB ${LibPWQuality_LIBRARIES} ) + include_directories( ${LibPWQuality_INCLUDE_DIRS} ) + add_definitions( -DCHECK_PWQUALITY -DHAVE_LIBPWQUALITY ) +endif() + +calamares_add_plugin( usersq + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + ${_users}/Config.cpp + ${_users}/CreateUserJob.cpp + ${_users}/SetPasswordJob.cpp + UsersQmlViewStep.cpp + ${_users}/SetHostNameJob.cpp + ${_users}/CheckPWQuality.cpp + RESOURCES + usersq.qrc + LINK_PRIVATE_LIBRARIES + calamaresui + ${CRYPT_LIBRARIES} + ${USER_EXTRA_LIB} + Qt5::DBus + SHARED_LIB +) diff --git a/src/modules/usersq/UsersQmlViewStep.cpp b/src/modules/usersq/UsersQmlViewStep.cpp new file mode 100644 index 000000000..b83c66f45 --- /dev/null +++ b/src/modules/usersq/UsersQmlViewStep.cpp @@ -0,0 +1,101 @@ +/* === 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-FileCopyrightText: 2020 Camilo Higuita + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + */ + +#include "UsersQmlViewStep.h" + +#include "SetHostNameJob.h" +#include "SetPasswordJob.h" + +#include "utils/Logger.h" +#include "utils/NamedEnum.h" +#include "utils/Variant.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" + +CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersQmlViewStepFactory, registerPlugin< UsersQmlViewStep >(); ) + +UsersQmlViewStep::UsersQmlViewStep( QObject* parent ) + : Calamares::QmlViewStep( parent ) + , m_config( new Config( this ) ) +{ + connect( m_config, &Config::readyChanged, this, &UsersQmlViewStep::nextStatusChanged ); + + emit nextStatusChanged( true ); +} + +QString +UsersQmlViewStep::prettyName() const +{ + return tr( "Users" ); +} + +bool +UsersQmlViewStep::isNextEnabled() const +{ + return m_config->isReady(); + //return true; +} + + +bool +UsersQmlViewStep::isBackEnabled() const +{ + return true; +} + + +bool +UsersQmlViewStep::isAtBeginning() const +{ + return true; +} + + +bool +UsersQmlViewStep::isAtEnd() const +{ + return true; +} + + +QList< Calamares::job_ptr > +UsersQmlViewStep::jobs() const +{ + return m_jobs; +} + + +void +UsersQmlViewStep::onActivate() +{ + //m_config->onActivate(); + //QmlViewStep::onActivate(); +} + + +void +UsersQmlViewStep::onLeave() +{ + m_jobs = m_config->createJobs(); + m_config->finalizeGlobalStorage(); +} + + +void +UsersQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) +{ + m_config->setConfigurationMap( configurationMap ); + + 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 new file mode 100644 index 000000000..33a1f5754 --- /dev/null +++ b/src/modules/usersq/UsersQmlViewStep.h @@ -0,0 +1,56 @@ +/* === 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: see the License-Identifier above. + * + */ + +#ifndef USERSQMLVIEWSTEP_H +#define USERSQMLVIEWSTEP_H + +#include + +#include +#include + +#include + +#include "Config.h" +#include + +class PLUGINDLLEXPORT UsersQmlViewStep : public Calamares::QmlViewStep +{ + Q_OBJECT + +public: + explicit UsersQmlViewStep( QObject* parent = nullptr ); + + QString prettyName() const override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + QList< Calamares::job_ptr > jobs() const override; + + void onActivate() override; + void onLeave() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + + QObject* getConfig() override { return m_config; } + +private: + Config* m_config; + Calamares::JobList m_jobs; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( UsersQmlViewStepFactory ) + +#endif // USERSQMLVIEWSTEP_H diff --git a/src/modules/usersq/usersq.conf b/src/modules/usersq/usersq.conf new file mode 100644 index 000000000..19a30bd02 --- /dev/null +++ b/src/modules/usersq/usersq.conf @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# For documentation see Users Module users.conf +# +--- +# Used as default groups for the created user. +# Adjust to your Distribution defaults. +defaultGroups: + - users + - lp + - video + - network + - storage + - wheel + - audio + - lpadmin + +autologinGroup: autologin + +doAutologin: true + +sudoersGroup: wheel + +setRootPassword: true + +doReusePassword: true + +passwordRequirements: + nonempty: true + minLength: -1 # Password at least this many characters + maxLength: -1 # Password at most this many characters + libpwquality: + - minlen=0 + - minclass=0 + +allowWeakPasswords: false + +allowWeakPasswordsDefault: false + +userShell: /bin/bash + +setHostname: EtcFile + +writeHostsFile: true diff --git a/src/modules/usersq/usersq.qml b/src/modules/usersq/usersq.qml new file mode 100644 index 000000000..dcc4aa76a --- /dev/null +++ b/src/modules/usersq/usersq.qml @@ -0,0 +1,325 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Anke Boersma + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + */ + +import io.calamares.core 1.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 +import QtGraphicalEffects 1.0 +import QtQuick.Window 2.3 + +Kirigami.ScrollablePage { + + width: parent.width + height: parent.height + + Kirigami.Theme.backgroundColor: "#EFF0F1" + Kirigami.Theme.textColor: "#1F1F1F" + + header: Kirigami.Heading { + + Layout.fillWidth: true + height: 50 + horizontalAlignment: Qt.AlignHCenter + color: Kirigami.Theme.textColor + font.weight: Font.Medium + font.pointSize: 12 + text: qsTr("Pick your user name and credentials to login and perform admin tasks") + } + + ColumnLayout { + + id: _formLayout + spacing: Kirigami.Units.smallSpacing + + Column { + + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Label { + + width: parent.width + text: qsTr("What is your name?") + } + + TextField { + + id: _userNameField + width: parent.width + placeholderText: qsTr("Your Full Name") + onTextChanged: config.fullNameChanged(text) + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + radius: 2 + opacity: 0.9 + //border.color: _userNameField.text === "" ? Kirigami.Theme.backgroundColor : ( config.fullNameReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _userNameField.text === "" ? "#FBFBFB" : ( config.fullNameChanged ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + } + + Column { + + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Label { + + width: parent.width + text: qsTr("What name do you want to use to log in?") + } + + TextField { + + id: _userLoginField + width: parent.width + placeholderText: qsTr("Login Name") + //text: config.userName + onTextEdited: config.loginNameStatusChanged(text) + + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _userLoginField.text === "" ? Kirigami.Theme.backgroundColor : ( config.userNameReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _userLoginField.text === "" ? "#FBFBFB" : ( config.loginNameStatusChanged ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + + Label { + + width: parent.width + text: qsTr("If more than one person will use this computer, you can create multiple accounts after installation.") + font.weight: Font.Thin + font.pointSize: 8 + color: "#6D6D6D" + } + } + + Column { + + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Label { + + width: parent.width + text: qsTr("What is the name of this computer?") + } + + TextField { + + id: _hostName + width: parent.width + placeholderText: qsTr("Computer Name") + text: config.hostName + onTextEdited: config.hostNameStatusChanged(text) + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _hostName.text === "" ? Kirigami.Theme.backgroundColor : ( config.hostNameStatusChanged ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _hostName.text === "" ? "#FBFBFB" : ( config.hostNameStatusChanged ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + + Label { + + width: parent.width + text: qsTr("This name will be used if you make the computer visible to others on a network.") + font.weight: Font.Thin + font.pointSize: 8 + color: "#6D6D6D" + } + } + + Column { + + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Label { + + width: parent.width + text: qsTr("Choose a password to keep your account safe.") + } + + Row { + width: parent.width + spacing: 20 + + TextField { + + id: _passwordField + width: parent.width / 2 - 10 + placeholderText: qsTr("Password") + echoMode: TextInput.Password + passwordMaskDelay: 300 + inputMethodHints: Qt.ImhNoAutoUppercase + onTextChanged: config.userPasswordStatusChanged(text, _verificationPasswordField.text) + + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _passwordField.text === "" ? Kirigami.Theme.backgroundColor : ( config.passwordReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _passwordField.text === "" ? "#FBFBFB" : ( config.userPasswordStatusChanged ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + + TextField { + + id: _verificationPasswordField + width: parent.width / 2 - 10 + placeholderText: qsTr("Repeat Password") + echoMode: TextInput.Password + passwordMaskDelay: 300 + inputMethodHints: Qt.ImhNoAutoUppercase + onTextChanged: config.userPasswordSecondaryChanged(_passwordField.text, text) + + background: Rectangle { + + color: "#FBFBFB" //Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _verificationpasswordField.text === "" ? Kirigami.Theme.backgroundColor : ( config.passwordReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _verificationPasswordField.text === "" ? "#FBFBFB" : ( config.userPasswordSecondaryChanged ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + } + + Label { + + width: parent.width + text: qsTr("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.") + font.weight: Font.Thin + font.pointSize: 8 + wrapMode: Text.WordWrap + color: "#6D6D6D" + } + } + + CheckBox { + + visible: config.allowWeakPasswords + //visible: false + text: qsTr("Validate passwords quality") + checked: config.allowWeakPasswordsDefault + onToggled: config.allowWeakPasswordsDefault = !config.allowWeakPasswordsDefault + } + + Label { + + visible: config.allowWeakPasswords + //visible: false + width: parent.width + text: qsTr("When this box is checked, password-strength checking is done and you will not be able to use a weak password..") + font.weight: Font.Thin + font.pointSize: 8 + color: "#6D6D6D" + } + + CheckBox { + + text: qsTr("Log in automatically without asking for the password") + checked: config.doAutologin + onToggled: config.doAutologin = !config.doAutologin + } + + CheckBox { + + id: root + visible: config.doReusePassword + text: qsTr("Reuse user password as root password") + checked: config.reuseUserPasswordForRoot + //checked: false + onToggled: config.reuseUserPasswordForRoot = !config.reuseUserPasswordForRoot + } + + Label { + + visible: root.checked + width: parent.width + text: qsTr("Use the same password for the administrator account.") + font.weight: Font.Thin + font.pointSize: 8 + color: "#6D6D6D" + } + + Column { + + visible: ! root.checked + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Label { + + width: parent.width + text: qsTr("Choose a root password to keep your account safe.") + } + + Row { + width: parent.width + spacing: 20 + + TextField { + + id: _rootPasswordField + width: parent.width / 2 -10 + placeholderText: qsTr("Root Password") + echoMode: TextInput.Password + passwordMaskDelay: 300 + inputMethodHints: Qt.ImhNoAutoUppercase + onTextChanged: config.rootPasswordChanged(text, _verificationRootPasswordField.text) + + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _rootPasswordField.text === "" ? Kirigami.Theme.backgroundColor : ( config.rootPasswordReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _rootPasswordField.text === "" ? "#FBFBFB" : ( config.rootPasswordReady ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + + TextField { + + id: _verificationRootPasswordField + width: parent.width / 2 -10 + placeholderText: qsTr("Repeat Root Password") + echoMode: TextInput.Password + passwordMaskDelay: 300 + inputMethodHints: Qt.ImhNoAutoUppercase + onTextChanged: config.rootPasswordSecondaryChanged(_rootPasswordField.text, text) + + background: Rectangle { + + color: "#FBFBFB" // Kirigami.Theme.backgroundColor + opacity: 0.9 + //border.color: _verificationRootPasswordField.text === "" ? Kirigami.Theme.backgroundColor : ( config.rootPasswordReady ? Kirigami.Theme.backgroundColor : Kirigami.Theme.negativeTextColor) + border.color: _verificationRootPasswordField.text === "" ? "#FBFBFB" : ( config.rootPasswordReady ? "#FBFBFB" : Kirigami.Theme.negativeTextColor) + } + } + } + + Label { + + visible: ! root.checked + width: parent.width + text: qsTr("Enter the same password twice, so that it can be checked for typing errors.") + font.weight: Font.Thin + font.pointSize: 8 + color: "#6D6D6D" + } + } + } +} diff --git a/src/modules/usersq/usersq.qrc b/src/modules/usersq/usersq.qrc new file mode 100644 index 000000000..8c1c4f986 --- /dev/null +++ b/src/modules/usersq/usersq.qrc @@ -0,0 +1,5 @@ + + + usersq.qml + + diff --git a/src/modules/webview/CMakeLists.txt b/src/modules/webview/CMakeLists.txt index 48c707783..8de5e690c 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/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 50c270b09..8e7c48f1a 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 "WebViewStep.h" @@ -28,7 +19,7 @@ #include #endif -CALAMARES_PLUGIN_FACTORY_DEFINITION( WebViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( WebViewStepFactory, registerPlugin< WebViewStep >(); ) WebViewStep::WebViewStep( QObject* parent ) : Calamares::ViewStep( parent ) @@ -40,13 +31,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 } @@ -54,7 +41,9 @@ WebViewStep::WebViewStep( QObject* parent ) WebViewStep::~WebViewStep() { if ( m_view && m_view->parent() == nullptr ) + { m_view->deleteLater(); + } } @@ -99,10 +88,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 > @@ -115,11 +105,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..691672211 100644 --- a/src/modules/webview/WebViewStep.h +++ b/src/modules/webview/WebViewStep.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -23,17 +14,23 @@ #include "WebViewConfig.h" +#include "DllMacro.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" -#include "DllMacro.h" - #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; @@ -63,11 +60,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/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/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index 9700b1601..a468af102 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/welcome/Config.cpp b/src/modules/welcome/Config.cpp index 2bf418ff1..72e1cfc3b 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -1,26 +1,20 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 "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" @@ -195,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 ); } diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index 6d14097c5..a3f1276a6 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 0c4f44c95..aa9e9d7bb 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -48,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/WelcomePage.h b/src/modules/welcome/WelcomePage.h index 17fedc812..04c17d25f 100644 --- a/src/modules/welcome/WelcomePage.h +++ b/src/modules/welcome/WelcomePage.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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/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 diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index cad5349a9..2a0d57bc4 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f4874dc16..16eec6d29 100644 --- a/src/modules/welcome/WelcomeViewStep.h +++ b/src/modules/welcome/WelcomeViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 11ae9c7c3..0dcd820a3 100644 --- a/src/modules/welcome/checker/CheckerContainer.cpp +++ b/src/modules/welcome/checker/CheckerContainer.cpp @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9744ecc77..c721f2b36 100644 --- a/src/modules/welcome/checker/CheckerContainer.h +++ b/src/modules/welcome/checker/CheckerContainer.h @@ -1,21 +1,12 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e7994f9a0..a10585af9 100644 --- a/src/modules/welcome/checker/GeneralRequirements.cpp +++ b/src/modules/welcome/checker/GeneralRequirements.cpp @@ -1,22 +1,13 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -155,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, @@ -168,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 ); }, @@ -358,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/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h index ce3abec83..b6646da11 100644 --- a/src/modules/welcome/checker/GeneralRequirements.h +++ b/src/modules/welcome/checker/GeneralRequirements.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 5da120a2a..ef3a7fdc1 100644 --- a/src/modules/welcome/checker/ResultWidget.cpp +++ b/src/modules/welcome/checker/ResultWidget.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 f84310bb6..d77c0d9bb 100644 --- a/src/modules/welcome/checker/ResultWidget.h +++ b/src/modules/welcome/checker/ResultWidget.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 afde9f08d..1ad2c1b29 100644 --- a/src/modules/welcome/checker/ResultsListWidget.cpp +++ b/src/modules/welcome/checker/ResultsListWidget.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 3f21955ba..aa6c62258 100644 --- a/src/modules/welcome/checker/ResultsListWidget.h +++ b/src/modules/welcome/checker/ResultsListWidget.h @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 4fd3dd4c0..7cde7a86d 100644 --- a/src/modules/welcome/checker/partman_devices.c +++ b/src/modules/welcome/checker/partman_devices.c @@ -1,24 +1,19 @@ -/* === This file is part of Calamares - === +/* === 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. * * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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. */ +/* *INDENT-OFF* */ +/* clang-format off */ + #include "partman_devices.h" #include diff --git a/src/modules/welcome/checker/partman_devices.h b/src/modules/welcome/checker/partman_devices.h index 9f7695ee9..c894f6534 100644 --- a/src/modules/welcome/checker/partman_devices.h +++ b/src/modules/welcome/checker/partman_devices.h @@ -1,32 +1,24 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 #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/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/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/welcome/welcome.schema.yaml b/src/modules/welcome/welcome.schema.yaml index 56a79be06..fbebcd968 100644 --- a/src/modules/welcome/welcome.schema.yaml +++ b/src/modules/welcome/welcome.schema.yaml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: GPL-3.0-or-later --- $schema: https://json-schema.org/schema# $id: https://calamares.io/schemas/welcome diff --git a/src/modules/welcomeq/CMakeLists.txt b/src/modules/welcomeq/CMakeLists.txt index 4a040344e..c9cafe7a8 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/modules/welcomeq/Recommended.qml b/src/modules/welcomeq/Recommended.qml index 5a6c1316d..1afc60950 100644 --- a/src/modules/welcomeq/Recommended.qml +++ b/src/modules/welcomeq/Recommended.qml @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 e7835d868..159d88446 100644 --- a/src/modules/welcomeq/Requirements.qml +++ b/src/modules/welcomeq/Requirements.qml @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 42944f20d..af32f2992 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.cpp +++ b/src/modules/welcomeq/WelcomeQmlViewStep.cpp @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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" @@ -38,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 ); } diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.h b/src/modules/welcomeq/WelcomeQmlViewStep.h index 78999986c..4c68ea2ae 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.h +++ b/src/modules/welcomeq/WelcomeQmlViewStep.h @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 7fa6fb462..21050c4ea 100644 --- a/src/modules/welcomeq/about.qml +++ b/src/modules/welcomeq/about.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -26,7 +17,7 @@ Item { width: parent.width height: parent.height focus: true - + property var appName: "Calamares" property var appVersion: "3.2.24" @@ -36,19 +27,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 +49,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..6da5bc7c9 100644 --- a/src/modules/welcomeq/release_notes.qml +++ b/src/modules/welcomeq/release_notes.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -33,9 +24,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.conf b/src/modules/welcomeq/welcomeq.conf index 32be7fcb5..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 @@ -33,3 +36,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..02b5424c7 100644 --- a/src/modules/welcomeq/welcomeq.qml +++ b/src/modules/welcomeq/welcomeq.qml @@ -1,20 +1,11 @@ -/* === This file is part of Calamares - === +/* === 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 Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -144,16 +135,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 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..d74e79ea0 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" ) diff --git a/src/qml/calamares/slideshow/BackButton.qml b/src/qml/calamares/slideshow/BackButton.qml index 2d5f4dd5e..4e420e064 100644 --- a/src/qml/calamares/slideshow/BackButton.qml +++ b/src/qml/calamares/slideshow/BackButton.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 9f6fecf8e..7838fab3b 100644 --- a/src/qml/calamares/slideshow/ForwardButton.qml +++ b/src/qml/calamares/slideshow/ForwardButton.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 33d8cad77..bdb2f402e 100644 --- a/src/qml/calamares/slideshow/NavButton.qml +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 @@ -27,14 +18,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 +34,7 @@ Image { duration: 500 running: false } - + OpacityAnimator { id: fadeOut target: fade @@ -52,7 +43,7 @@ Image { duration: 250 running: false } - + MouseArea { anchors.fill: parent hoverEnabled: true diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index 405055b56..1eed2e842 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 - === +/* === 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..9cb9e7381 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 - === +/* === 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 */ /**************************************************************************** diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml index e59476f5c..d5b2de7be 100644 --- a/src/qml/calamares/slideshow/SlideCounter.qml +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -1,19 +1,10 @@ -/* === This file is part of Calamares - === +/* === 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Calamares is Free Software: see the License-Identifier above. * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU 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 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